目的
-
實現
Caps
和L_Ctrl
交換 -
實現自定義功能鍵:
-
R_Alt + H
->Left
-
R_Alt + J
->Down
-
R_Alt + K
->Up
-
R_Alt + L
->Right
-
R_Alt + 4
->End
-
R_Alt + 6
->Home
-
R_Alt + F
->Prior
-
R_Alt + N
->Next
-
以上按鍵對映主要是為了適應Vim
,因為R_Alt
我最不常用,固將其用作功能鍵。 關於Xkb
是什麼這裡不做贅述,簡單來說Xkb
是X-Window
的一個負責鍵盤對映的庫。
步驟
-
檢視當前使用的鍵盤佈局,終端執行
setxkbmap -print
xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us+inet(evdev)+group(alt_shift_toggle)" }; xkb_geometry { include "pc(pc105)" }; };
xkb_symbols
屬性後面的pc
和us
即下面我們需要修改檔案。 -
備份配置檔案
以下操作有風險,請在有linux
作業系統使用經驗的情況下操作
切換到目錄/usr/share/X11/xkb
,執行sudo tar -cvf symbols.tar symbols
打包原有的配置檔案,然後進入目錄symbols
。 -
Caps
和L_Ctrl
交換
概念:每一個鍵配置(大括號)裡面的方括號表示一個組,每個方括號裡面用逗號隔開的內容表示不同的等級。 使用`Shift`建可以切換等級,使用`Mode_switch`可以切換組。
編輯
pc
檔案,修改xkb_symbols "pc105"
段,->
表示前面的內容修改為後面的內容key <CAPS> { [ Caps_Lock ] }; -> key <CAPS> { [ Control_L ] }; key <LCTL> { [ Control_L ] }; -> key <LCTL> { [ Caps_Lock ] };
儲存登出從新登入生效。
-
設定
R_Alt
為自定義功能鍵
從pc
檔案中的內容include "altwin(meta_alt)"
可以看出R_Alt
鍵的修改並不在pc
檔案中。
我們編輯altwin
檔案。修改xkb_symbols "meta_alt"
段,將R_Alt
對映為Mode_switch
key <RALT> { type[Group1] = "TWO_LEVEL", symbols[Group1] = [ Alt_R, Meta_R ] }; -> key <RALT> { type[Group1] = "TWO_LEVEL", symbols[Group1] = [ Mode_switch ] };
-
自定義
R_Alt
的功能
修改us
檔案。編輯xkb_symbols "basic"
段,修改以下內容key <AE04> { [ 4, dollar ] }; -> key <AE04> { [ 4, dollar ], [ End ] }; key <AE06> { [ 6, asciicircum ] }; -> key <AE06> { [ 6, asciicircum ], [ Home ] }; key <AC04> { [ f, F ] }; -> key <AC04> { [ f, F ], [ Prior ] }; 以下類推修改為: key <AC06> { [ h, H ], [ Left ] }; key <AC07> { [ j, J ], [ Down ] }; key <AC08> { [ k, K ], [ Up ] }; key <AC09> { [ l, L ], [ Right ] }; key <AB06> { [ n, N ], [ Next ] };
登出從新登入有效