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