Le remappage du verrouillage des majuscules avec xmodmap ne fonctionne pas

10

Lorsque je programme, j'aime échanger ces clés:

EscTab CtrlCapsLock

Dans ~/.xmodmap, j'ai spécifié ces remappages:

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

L' échange de clés Escapeet Tab, aucun problème, mais au lieu de Caps_Locket l' Control_Léchange, ces deux clés deviennent Caps_Lock.

Quoi que j'essaie de faire, les touches de contrôle ne sont pas affectées à Caps_Lock(code de clé 66). Si je quitte le keycode 66 =, la clé n'est pas affectée, mais lorsque j'attribue Control_Lou Control_R, cela ne fonctionne tout simplement pas. Mais, si j'attribue une autre clé, par exemple keycode 66 = Tab, elle est attribuée, pas de problème.

Son comme xmodmap ne veut tout simplement pas que les touches de verrouillage des majuscules et de contrôle soient échangées. Vraiment frustrant. Toute aide / pointeurs serait vraiment utile.

PS: J'utilise Archlinux.

Aby James
la source

Réponses:

8

La page de manuel xmodmap (1) contient un exemple pour cela

   !
   ! 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

mais si vous voulez finir de le faire comme vous avez commencé, je pense que vous devez ajouter au moins les lignes removeetadd

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

Je suppose que c'est le cas sur la base de ce paragraphe

   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).

ce qui donne l'impression que les changements de modificateurs (décalage, contrôle, etc.) ne sont pas appliqués jusqu'à ce que vous exécutiez cela aussi.

(Et logiquement la même chose avec remove)

Mikel
la source
J'ai lu la page de manuel et réaffecté les touches Caps_Lock et Control_L en suivant l'exemple. Mais, j'étais curieux de savoir pourquoi le remappage des clés de la manière mentionnée dans l'OP ne fonctionne pas. Est-ce un bug ou quelque chose?
Aby James
Semble que c'est juste la façon dont il est censé fonctionner. Voir ma réponse mise à jour.
Mikel
4

Réponse vaguement liée: je voulais remapper la touche de verrouillage des majuscules sur le contrôle gauche, en laissant le contrôle gauche réel intact. La page de manuel xmodmap propose également la solution:

    keycode 66 = Control_L
    clear Lock
    add Control = Control_L
Clément B.
la source