使用 hwdb 文件/etc/udev/hwdb.d/99-keyboard.hwdb
,我可以將AltUSB 鍵盤上的左鍵重新映射為 Ctrl鍵:
keyboard:usb:v*p*
KEYBOARD_KEY_700e2=leftctrl
當我嘗試將左鍵重新映射Shift為Ctrl鍵時,這也有效。
但是當嘗試重新映射Caps Lock為Ctrl鍵時,它不起作用:
keyboard:usb:v*p*
KEYBOARD_KEY_70039=leftctrl
運行evtest
表明它應該正在工作:
Event: time 1399438713.757082, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039
Event: time 1399438713.757082, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 1
Event: time 1399438713.757082, -------------- SYN_REPORT ------------
Event: time 1399438713.885078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1399438713.885078, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
Event: time 1399438713.885078, -------------- SYN_REPORT ------------
它也不適用於我嘗試過的其他非修飾鍵,例如Z.
我還嘗試映射到非 USB 鍵盤上的左鍵,如下所示Caps Lock:Ctrl
keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
KEYBOARD_KEY_3a=leftctrl
這非常有效。我在 Fedora 20 和 Arch Linux 上使用一些不同的 USB 和非 USB 鍵盤嘗試了 udev 版本 208 和 212。
如何使用下列指令將非修飾鍵(例如USB 鍵盤上的Caps Lock修飾鍵)重新對應為修飾鍵Ctrl烏德夫?
更新
如果左鍵Ctrl本身重新映射到另一個鍵,則重新映射的鍵開始充當左鍵Ctrl。例如:
keyboard:usb:v*p*
KEYBOARD_KEY_700e0=grave
KEYBOARD_KEY_70035=esc
KEYBOARD_KEY_70039=leftctrl
KEYBOARD_KEY_70029=capslock
此行為與非 USB 鍵盤不同,在非 USB 鍵盤中,重新映射的鍵和原始鍵都可以保留為修飾符。