三種代碼及其獲取方式
首先這里有三個概念:
- 鍵盤物理按鍵代碼
- 操作系統代碼
- 功能代碼
這里以左Ctrl鍵為例。
獲取鍵盤物理按鍵代碼
xmodmap -pke | grep 'Control_L'
可以看到輸出為
keycode 37 = Control_L NoSymbol Control_L
說明左Ctrl鍵的鍵盤物理按鍵代碼為37
獲取操作系統代碼
由上一步可知左Ctrl鍵的操作系統代碼是Control_L
獲取功能代碼
xmodmap
可以看到輸出為
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Overlay1_Enable (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
以上輸出的意思是功能對應操作系統代碼,比如control功能對應操作系統的Control_L和Control_R這兩個代碼。即當操作系統執行Control_L和Control_R兩個命令時,所執行的功能是control這個功能。
修改鍵盤映射
經由上述分析,假如我們想將左Super鍵(133)的功能改為ctrl,那么我們應該先改變鍵盤物理按鍵到操作系統按鍵代碼的映射,再改變操作系統按鍵代碼到實際功能的映射。
xmodmap -e 'keycode 133 = Control_L' && xmodmap -e 'remove mod4 = Control_L' && xmodmap -e 'add control = Control_L'