Acontece que o kernel o pegou, mas continuou reclamando que não é reconhecido.
Para qualquer pessoa que tenha esse problema ou queira mapear uma chave que não é lida pelo sistema operacional, continue lendo.
Abra um terminal e corra dmesg | grep -A 1 -i setkeycodes
. Isso fornecerá várias entradas como esta:
[ 9.307463] atkbd serio0: Unknown key pressed (translated set 2, code 0xbe on isa0060/serio0).
[ 9.307476] atkbd serio0: Use 'setkeycodes e03e <keycode>' to make it known.
O que nos interessa é o valor hexadecimal após "setkeycodes", neste caso é e03e
. Se você tiver vários deles, poderá executar tail -f /var/log/kern.log
. Depois de fazer isso, você pode tocar no botão que procura, e isso fornecerá a mesma linha acima e, novamente, precisamos apenas do valor hexadecimal. Anote isso.
Agora execute xmodmap -pke | less
e encontre o mapeamento apropriado. No meu caso, eu precisava mapear isso para alternar meu touch pad, o que significa que estava interessado na seguinte linha:
keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
Se você não encontrar o que está interessado, leia a resposta do @Gilles também, como também pode definir mapeamentos personalizados e continue a ler (se o kernel lê, você não precisará adicioná-lo ao xorg.conf. d)
Agora eu corri o seguinte comando: sudo setkeycodes [hexadecimal] [keycode]
, então no meu caso que se tornou: setkeycodes e03e 199
.
Agora você pode usar a seguinte linha para testar se funcionou e / ou possui o mapeamento correto:
xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
Ao executar este comando, você precisa focar na janela recém-aberta ( xev
) e verificar a saída do console. No meu caso, é o seguinte:
207 NoSymbol
Obviamente, isso estava errado, como solicitei o código da chave 199
, por isso é mapeado para XF86TouchpadToggle
. Eu verifiquei xmodmap -pke
novamente e notei que keycode 207
realmente está mapeado para NoSymbol
, e notei que havia uma diferença de deslocamento de 8, então tentei o setkeycodes
comando novamente, mas a chave está mapeada para keycode 191
.
sudo setkeycodes e03e 191
Isso funcionou perfeitamente.
EDIT - a solução que eu forneci para trabalhar na inicialização não funciona. Eu vou descobrir isso amanhã e atualizar esta resposta. Por enquanto, suponho que você possa executar isso ao iniciar manualmente.
Pelo que parece, o dispositivo é um teclado (reconhecido no software como separado do teclado “principal”), mas o servidor X não está ouvindo.
Tente adicionar uma seção de entrada em
/etc/X11/xorg.conf.d
. Ou seja, crie um diretório/etc/X11/xorg.conf.d
se ele ainda não existir e crie um arquivoextra-keyboard-buttons
nesse diretório que contenhaNão tenho certeza sobre essa
MatchProduct
linha; se não funcionar, tente mexer nasMatchXXX
diretivas .Depois que esse arquivo é configurado corretamente, quando você inicia o servidor X, ele deve processar eventos deste teclado e você deve ver eventos em
xev
e em outros lugares. Observe o código de chave (não tenho certeza se o código de chave X11 será o mesmo que o código de chave de hardware nesse caso) e associe um código de chave a ele. Você pode fazer isso através de um arquivo chamado.Xmodmap
em seu diretório pessoal contendoAgora você pode definir atalhos de teclado usando essas teclas.
Para alternar o touchpad, use o comando
xinput
. Corraxinput list
para ver quais dispositivos de entrada estão disponíveis e anote o nome do seu touchpad (chamareiTouchpad
abaixo). Executexinput list-props Touchpad
para listar suas propriedades; um deles deve ser chamado de "Dispositivo ativado" com um número ao lado (por exemplo, 135). O script a seguir alternará o touchpad:Salve isso em um arquivo
~/bin/toggle-touchpad
e torne-o executável (chmod +x ~/bin/toggle-touchpad
). Para vinculá-lo a uma chave, instale xbindkeys e configure-o para executar seu script, colocando as seguintes linhas~/.xbindkeysrc
:fonte