Estou tentando encontrar uma maneira de remapear as teclas do teclado com força.
Eu tentei usar xmodmap e setxkbmap, mas eles não funcionam para um aplicativo específico. Tais comandos funcionam para outros aplicativos / janelas normais no X tho.
Eu acho que o aplicativo pode estar lendo os dados brutos do teclado e ignorando a entrada X?
Então, como remapear chaves sem usar xmodmap e setxkbmap? se for possível fazê-lo usando algum software.
Também tentei xkeycaps, xkbcomp, mas não tentei o loadkeys, pois está sendo executado no X.
Descobri aqui que poderia tentar "setkeycodes
, porque depois de atribuir o código da chave do kernel, o botão deve funcionar no xorg" , mas também descobri que "você não pode usar 'setkeycodes' nos teclados USB" " , é o meu caso (estou interessado em alguém faz funcionar no ps2, pois acho que poderia usar um adaptador).
Isso parecia promissor "Mapear scancodes para códigos-chave" , mas após alguns testes nada mudou, eis aqui:
Encontrei o código-chave "36" (tecla "j") na vt1 com o showkey
scancode "7e" (teclado ".") Em vt1 comshowkey --scancodes
$cat >/etc/udev/hwdb.d/90-custom-keyboard.hwdb
keyboard:usb:v*p*
keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
KEYBOARD_KEY_7e=36
$udevadm hwdb --update #updates file: /lib/udev/hwdb.bin
$udevadm trigger #should apply the changes but nothing happened
$cat /lib/udev/hwdb.bin |egrep "KEYBOARD_KEY_7e.{10}" -ao
KEYBOARD_KEY_7eleftmeta
$#that cat on hwdb.bin did not change after the commands..
Obs .: também não funcionou com: KEYBOARD_KEY_7e=j
Algumas maneiras mais alternativas (por @ vinc17) de encontrar as chaves:
evtest /dev/input/by-id/...
ou
input-kbd 3
(coloque o índice de identificação encontrado em ls -l /dev/input/by-id/*
ex. Event3)
PS .: * Se você estiver interessado em testar a si mesmo, o tópico relacionado ao aplicativo é o seguinte: http://forums.thedarkmod.com/topic/14266-keyboard-issue-in-new-version-108/ Os problemas que têm são os mesmos: algumas chaves (KP_Decimal, DownArrow, UpArrow, RightArrow) são ignoradas e consideradas todas com o mesmo valor "0x00"
showkey --scancodes
não dá os scancodes que o udev espera (os valores são diferentes); o input-kbd
utilitário fornece os scancodes corretos.
evtest
utilitário também deve fornecer os scancodes corretos: depois de digitar uma tecla, você deve obter 2 linhas e a primeira deve terminar com algo do formulário code 4 (MSC_SCAN), value xxx
, onde xxx
está o scancode. Mas o driver do meu teclado é de buggy, e eu não entendo essa MSC_SCAN
linha para algumas teclas que eu queria remapear. Foi por isso que usei input-kbd
, que lista todos os códigos de escâner do dispositivo selecionado.
/etc/udev/hwdb.bin
, não/lib/udev/hwdb.bin
. Mas, embora esse arquivo seja atualizado corretamente, isso também não funciona para mim, mesmo após uma reinicialização. Talvez algo esteja faltando na documentação. Sobre isso: bugs.freedesktop.org/show_bug.cgi?id=82311