As teclas modificadoras não podem ser mapeadas para teclas regulares no teclado USB com o udev

2

Usando um arquivo hwdb, /etc/udev/hwdb.d/99-keyboard.hwdb , eu posso remapear a tecla esquerda Alt no meu teclado USB como a tecla Ctrl :

keyboard:usb:v*p*
 KEYBOARD_KEY_700e2=leftctrl

Isso também funciona quando tento remapear a tecla esquerda Shift como tecla Ctrl .

Mas ao tentar remapear Caps Lock como a tecla Ctrl , não funciona:

keyboard:usb:v*p*
 KEYBOARD_KEY_70039=leftctrl

A execução de evtest indica que deve 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 ------------

Ele também não funciona em outras teclas não modificadoras que eu tentei, como Z .

Eu também tentei mapear Caps Lock para a tecla esquerda Ctrl em um teclado não-USB, como tal:

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

Isso funciona perfeitamente. Eu tentei as versões 208 e 212 do udev com alguns teclados USB e não-USB diferentes, no Fedora 20 e no Arch Linux.

Como posso remapear uma tecla não modificadora como Caps Lock para uma tecla modificadora como Ctrl em um teclado USB usando udev ?

Atualizar

Se a tecla esquerda Ctrl for remapeada para outra tecla, a tecla remapeada começa a funcionar como a tecla esquerda Ctrl . Por exemplo:

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

Esse comportamento é diferente de um teclado não USB, em que tanto a tecla remapeada quanto a chave original podem permanecer como um modificador.

    
por Ed. 07.05.2014 / 07:18

0 respostas