linux键盘修改工具,Linux 键盘映射的修改(Console)
你沒有過因為字符終端(Console)與 X 之間切換的不一致而煩惱,Console 到 X ,Alt-Fx ,Ctrl-Alt-Fx 都可以。而 X 到 Console 要 Ctrl-Alt-Fx ?重新映射一下鍵盤可以解決這個不一致的問題(當然還可以做其它的事)。下面我簡要介紹一下方法,供有興趣的同學參考。
這里首先說說 Console 下面的按鍵映射。Console 下面按鍵映射,可以用 showkey loadkeys dumpkeys 這三個工具搞定,基本流程是用 showkey 查看按鍵的 keycode, 用 dumpkeys DUMP 當前的 keymap 進行修改,當然也可以從其它地方找來一個 keymap 來改,最后用 loadkeys 來加載新的 keymap。如果把加載的命令放到 /etc/rc.local 里面,啟動后就自動加載了。所有的知識都在 showkey loadkeys dumpkeys 和 keymaps 的 man 手冊里面。這里只結合我的 keymap 進行簡要介紹。
第一行:
keymaps 0-1,4-5,8-9,12
這行很重要,因為 keymap 可以最多有 256 列,所以要先聲明該 keymap 定義哪些列。這里只定義 0-1, 4-5, 8-9, 12 這7行。如果像下面這種定義方式(參見 man keymaps,COMPLETE KEYCODE DEFINITIONS),定義一個 keycode 對應的 keysym,也就是該鍵對應的動作,就要把這7列都注明,定義為 VoidSymbol 表示沒有動作。像這種定義方式,第8列開始,以后沒有提及,就自動定義為 VoidSymbol 了。
keycode ?47 = +v ?+V ?Control_v VoidSymbol Meta_v Meta_V Meta_Control_v
那這7列都代表什么意思呢?
第0列(以0起記)表示純按該鍵的動作(例如,v),第1列表示 Shift-v,第4列表示 Control-v,第5列表示 Control-Shift-v,第8列表示 Alt-v,第9列表示 Alt—Shift-v,第12列表示 Control-Alt-v。
為什么是這樣呢?因為每個 modifier ,就象 Control 這種鍵,都有一個權重 (weight)。分別對應如下:
modifier ? ? ? ? ? ? ? ?weight
Shift ? ? ? ? ? ? ? ? ? 1
AltGr ? ? ? ? ? ? ? ? ? 2
Control ? ? ? ? ? ? ? ? 4
Alt ? ? ? ? ? ? ? ? ? ? 8
ShiftL ? ? ? ? ? ? ? ? ?16
ShiftR ? ? ? ? ? ? ? ? ?32
CtrlL ? ? ? ? ? ? ? ? ? 64
CtrlR ? ? ? ? ? ? ? ? ? 128
CapsShift ? ? ? ? ? ? ? 256
第0列對應權重為0,即不加任何 modifier 純按該鍵(plain)。第1列為1,即 Shift。第5列為5,即 Control+Shift。依次類推直到256。
第二行:
alt_is_meta
表示 alt meta 通用,加上就行了。
再下面就是定義每個鍵對應的動作了。不過再介紹另外一種定義方式(參見 man keymaps,SINGLE MODIFIER DEFINITIONS):
control keycode ? 7 = Control_asciicircum
像這種定義方式,只定義了 Control-7,其他沒有提及的按默認,來自內核。
再回到開頭,怎樣定義切換 Console 與 X 的按鍵呢?我是直接定義 F1-12 為切換 Console_1 - Console_12,而 F1-12 自身的輸入用 Shift-F? 代替。像下面這樣:
keycode ?59 = Console_1 ? ? ? F1
keycode ?60 = Console_2 ? ? ? F2
keycode ?61 = Console_3 ? ? ? F3
keycode ?62 = Console_4 ? ? ? F4
keycode ?63 = Console_5 ? ? ? F5
keycode ?64 = Console_6 ? ? ? F6
keycode ?65 = Console_7 ? ? ? F7
keycode ?66 = Console_8 ? ? ? F8
keycode ?67 = Console_9 ? ? ? F9
keycode ?68 = Console_10 ? ? ? F10
keycode ?87 = Console_11 ? ? ? F11
keycode ?88 = Console_12 ? ? ? F12
另外,為了方便,我把 Escape 和 Caps_Lock 調換了一下,把右 Alt 也定義成 Alt(有些鍵盤默認是定義成 AltGr 的),定義了 AAlt-Shift-v,把它綁定為 scroll-other-window-down。我的 keymap 附后,有興趣的同學自己看吧。
?wl.kmap.txt?
細心的同學可能會發現,那 X 下面不需要設置嗎?需要的,下篇我再簡要說說 X 下面的設置,呵!
閱讀(2398) | 評論(0) | 轉發(0) |
總結
以上是生活随笔為你收集整理的linux键盘修改工具,Linux 键盘映射的修改(Console)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opencv学习笔记[9]:Opencv
- 下一篇: 【转载】KMP算法详解