Remapear Caps Lock com xmodmap não funciona

9

Quando eu programo, gosto de trocar essas chaves:

Esc ↔ Guia Ctrl CapsLock

Em ~/.xmodmap , especifiquei esses remapeamentos:

keycode 66 = Control_L
keycode 37 = Caps_Lock
keycode 23 = Escape
keycode 9 = Tab

As chaves Escape e Tab trocam, sem problemas, mas em vez de Caps_Lock e Control_L trocar, ambas as chaves tornam-se Caps_Lock .

Não importa o que eu tente fazer, as teclas Control não são atribuídas a Caps_Lock (código-chave 66). Se eu deixar o keycode 66 = , a chave não será atribuída, mas quando eu atribuir Control_L ou Control_R , simplesmente não funcionará. Mas, se eu atribuir outra chave, por exemplo, keycode 66 = Tab , ela será atribuída, sem problemas.

Parece que o xmodmap não quer que as teclas Caps Lock e Control sejam trocadas. Realmente frustrante. Qualquer ajuda / ponteiros seria realmente útil.

P.S: Estou usando o Archlinux.

    
por Aby James 12.04.2012 / 08:33

2 respostas

7

A página do manual xmodmap (1) tem um exemplo exatamente para isso

   !
   ! Swap Caps_Lock and Control_L
   !
   remove Lock = Caps_Lock
   remove Control = Control_L
   keysym Control_L = Caps_Lock
   keysym Caps_Lock = Control_L
   add Lock = Caps_Lock
   add Control = Control_L

mas se você quiser terminar de fazer do jeito que começou, acho que precisa adicionar pelo menos as linhas remove e add

   remove Lock = Caps_Lock
   remove Control = Control_L
   keycode 37 = Caps_Lock
   keycode 66 = Control_L
   add Lock = Caps_Lock
   add Control = Control_L

Suponho que esse seja o caso com base neste parágrafo

   add MODIFIERNAME = KEYSYMNAME ...
           This adds all keys containing the given keysyms  to  the  indi‐
           cated  modifier  map.  The keysym names are evaluated after all
           input expressions are read to make it easy to write expressions
           to swap keys (see the EXAMPLES section).

que faz parecer que mudanças de modificadores (shift, controle, etc.) não são aplicadas até que você execute isso também.

(e logicamente o mesmo com remove )

    
por 12.04.2012 / 08:44
2

Resposta frouxamente relacionada: Eu queria remapear a tecla caps lock para o controle da esquerda, deixando o controle real da esquerda intocado. A página man do xmodmap também oferece a solução:

    keycode 66 = Control_L
    clear Lock
    add Control = Control_L
    
por 17.04.2013 / 21:37