Las teclas modificadoras no se pueden asignar a teclas normales en un teclado USB con udev

Las teclas modificadoras no se pueden asignar a teclas normales en un teclado USB con udev

Usando un archivo hwdb, /etc/udev/hwdb.d/99-keyboard.hwdbpuedo reasignar la Alttecla izquierda de mi teclado USB como la Ctrltecla:

keyboard:usb:v*p*
 KEYBOARD_KEY_700e2=leftctrl

Esto también funciona cuando intento reasignar la Shifttecla izquierda como Ctrlclave.

Pero al intentar reasignar Caps Lockcomo Ctrlclave, no funciona:

keyboard:usb:v*p*
 KEYBOARD_KEY_70039=leftctrl

Ejecutar evtestindica que debería estar funcionando:

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 ------------

Tampoco funciona en otras claves no modificadoras que probé, como Z.

También intenté asignar Caps Lockla Ctrltecla izquierda en un teclado que no sea USB, como tal:

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

Esto funciona perfectamente. Probé las versiones 208 y 212 de udev con algunos teclados USB y no USB diferentes, en Fedora 20 y Arch Linux.

¿Cómo puedo reasignar una tecla no modificadora, como Caps Lockuna tecla modificadora, como Ctrlen un teclado USB, usandoudev?

Actualizar

Si la izquierda Ctrlse reasigna a otra clave, entonces la clave reasignada comienza a funcionar como la Ctrltecla izquierda. Por ejemplo:

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

Este comportamiento es diferente de un teclado que no es USB, donde tanto la tecla reasignada como la tecla original pueden permanecer como modificador.

información relacionada