無法使用 udev 將修飾鍵對應到 USB 鍵盤上的常規鍵

無法使用 udev 將修飾鍵對應到 USB 鍵盤上的常規鍵

使用 hwdb 文件/etc/udev/hwdb.d/99-keyboard.hwdb,我可以將AltUSB 鍵盤上的左鍵重新映射為 Ctrl鍵:

keyboard:usb:v*p*
 KEYBOARD_KEY_700e2=leftctrl

當我嘗試將左鍵重新映射ShiftCtrl鍵時,這也有效。

但是當嘗試重新映射Caps LockCtrl鍵時,它不起作用:

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 LockCtrl

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 鍵盤中,重新映射的鍵和原始鍵都可以保留為修飾符。

相關內容