Модифицирующие клавиши не могут быть сопоставлены с обычными клавишами на USB-клавиатуре с помощью udev

Модифицирующие клавиши не могут быть сопоставлены с обычными клавишами на USB-клавиатуре с помощью udev

Используя файл hwdb, /etc/udev/hwdb.d/99-keyboard.hwdbя могу переназначить левую Altклавишу на моей USB-клавиатуре в качестве 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.

Я также пробовал назначить Caps Lockлевую Ctrlклавишу на не-USB-клавиатуре, например:

keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
 KEYBOARD_KEY_3a=leftctrl

Это работает отлично. Я пробовал версии udev 208 и 212 с несколькими разными клавиатурами USB и не-USB, на Fedora 20 и на Arch Linux.

Как переназначить клавишу, не являющуюся модификатором, например, Caps Lockна клавишу-модификатор, например, Ctrlна USB-клавиатуре, используяудев?

Обновлять

Если левая клавиша Ctrlсама переназначена на другую клавишу, то переназначенная клавиша начинает работать как левая Ctrlклавиша. Например:

keyboard:usb:v*p*
 KEYBOARD_KEY_700e0=grave
 KEYBOARD_KEY_70035=esc
 KEYBOARD_KEY_70039=leftctrl
 KEYBOARD_KEY_70029=capslock

Такое поведение отличается от поведения не-USB-клавиатуры, где как переназначенная клавиша, так и исходная клавиша могут оставаться модификаторами.

Связанный контент