无法使用 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。

如何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 键盘中,重新映射的键和原始键都可以保留为修饰键。

相关内容