É possível remapear as teclas Voltar / Avançar de um teclado USB do Thinkpad no Linux?

8

No meu laptop Thinkpad, posso alterar facilmente as teclas Voltar / Avançar para outra coisa (geralmente mapeio-as para PageDown / PageUp), pois elas têm seu próprio código de chave (166 e 167):

xmodmap -e 'keycode 166=Prior'
xmodmap -e 'keycode 167=Next'

No entanto, no meu teclado USB do Thinkpad, as teclas Voltar / Avançar parecem estar mapeadas para Alt + Esquerda e Alt + Direita, respectivamente, portanto, não posso usar o xmodmap para remapear. Existe alguma outra maneira de remapear eles? Eu já tentei xautomation, mas isso não funcionou.

Isto é o que 'xev' me mostra quando pressiono a tecla Avançar:

KeyPress event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023191, (16,-20), root:(641,33),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023191, (16,-20), root:(641,33),
    state 0x8, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023271, (16,-20), root:(641,33),
    state 0x8, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023271, (16,-20), root:(641,33),
    state 0x0, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
Guilherme Salgado
fonte
11
Se as chaves tiverem código, podem ser remapeadas, certo? É diferente da tecla caps lock? Esta página remapeia bem, parece. Eu não tentei. Apenas sugerindo. efod.se/writings/linuxbook/html/caps-lock-to-ctrl.html
Bibhas
O problema é exatamente que ele não tem um código de acesso e em vez disso é hard-wired para alt-esquerda / alt-direita
Guilherme Salgado

Respostas:

0
  1. Instale o xdotool
  2. Crie um alias de script ou shell para o comando keypress que você deseja executar ( xdotool key --clearmodifiers Page_Down)
  3. Vincule esse script / alias ao combo enviado (Alt + Esquerda) na configuração de Teclas de Atalho / Atalho do seu ambiente de área de trabalho.

Observe que no gnome-control-center não parece possível atribuir os botões Voltar / Avançar do teclado USB a um atalho (você pode atribuí-los de fato, mas o comando / ação que você mapeou para ele nunca será chamado / aconteceu), então você pode precisar usar outra coisa, como o plug-in Commands do compiz.

SleighBoy
fonte
11
Obrigado pela sugestão @sleighboy. Eu tentei isso com xautomation , mas não funcionou. Veja minha própria resposta, abaixo, sobre o porquê
Guilherme Salgado
11
Na verdade, essa deve ser a resposta final e vou explicar aqui por que não funcionou. O comando a ser executado deve ser, xdotool key --clearmodifiers Page_Upe por algum motivo, atribuir o botão Voltar / Avançar, pois o acelerador de um atalho no gnome-control-center não parece funcionar, mas se você usar o plug-in '' Commands '' do compiz, ele funcionará.
Guilherme Salgado
0

Coloquei isso no meu .bashrc:

# this maps the previous and next page buttons to pgup and pgdown 
xmodmap -e "keycode 167 = Next" 
xmodmap -e "keycode 166 = Prior"

funciona muito bem, mas não parece cortá-lo no virtualbox 6 por algum motivo.

Stu
fonte