Remapear as chaves do teclado para modificadores

0

Eu fiz algumas pesquisas, mas não consegui encontrar uma solução de trabalho: Como posso fazer os botões do teclado: KP_1 , KP_2 , KP_3 funcionarem exatamente da mesma forma que Shift_L , < kbd> Alt_L e Control_L ?

Eu uso o Linux Mint 17 Canela.

Eu quero que as novas chaves funcionem no jogo Dota 2 (mas eu não me importo se elas funcionarem globalmente). Eu tentei coisas diferentes, mas nada disso funcionou como esperado:

xmodmap

Eu corro no terminal:

xmodmap -e "keycode 87 = Shift_L"
xmodmap -e "keycode 88 = Alt_L"
xmodmap -e "keycode 89 = Control_L"

Resultados:

  • OS: KP_1 e KP_2 funcionam como deveriam (como Shift e Alt ), mas de alguma forma < kbd> kp_3 não funciona como Ctrl
  • Dota 2: nenhum dos kp_1 , kp_2 , kp_3 funciona como Shift / Alt / Ctrl (porquê?)

remap.inc file

Adicionei as seguintes linhas a /etc/console-setup/remap.inc

keycode  79 = Shift
keycode  80 = Alt
keycode  81 = Control

e, em seguida, execute

sudo dpkg-reconfigure console-setup -phigh

Resultados: não funciona em lugar algum. Eu não sei porque esses códigos de teclas são diferentes do que o "xev" retorna, mas é o que eu encontrei usando dumpkeys:

sudo dumpkeys | egrep "^keycode.*KP_[123]"
keycode  79 = KP_1            
keycode  80 = KP_2            
keycode  81 = KP_3 

xbindkeys + xte

Eu adicionei essas linhas a ~/.xbindkeysrc :

"xte 'key Shift_L'"
    Mod2 + KP_End

e correu "xbindkeys" no terminal.
Resultados: não funciona em lugar nenhum (provavelmente porque Shift_L é pressionado apenas uma vez - eu gostaria que fosse mantido pressionado quando eu continuasse pressionando KP_1 , assim como o normal Shift botão).

    
por Kossak 19.08.2014 / 23:05

1 resposta

3

Se você quiser mapear novas chaves como modificadores (como Shift, Ctrl, Alt), usar keycode com xmodmap não é suficiente. Você precisa fazer algo como:

keycode 87 = Shift_L
clear shift
add shift = Shift_L

keycode 88 = Alt_L
clear mod1
add mod1 = Alt_L

keycode 89 = Control_L
clear control
add control = Control_L

Você tem alguns exemplos na página xmodmap(1) man. Você pode colocar esses comandos em um arquivo xmodmaprc e executar xmodmap xmodmaprc (em vez de várias xmodmap -e invocações).

    
por 20.08.2014 / 01:17