Das Neuzuordnen der Feststelltaste mit xmodmap funktioniert nicht

Das Neuzuordnen der Feststelltaste mit xmodmap funktioniert nicht

Beim Programmieren vertausche ich gerne diese Tasten:

EscTab CtrlCapsLock

In ~/.xmodmaphabe ich diese Neuzuordnungen angegeben:

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

Die Schlüssel Escapeund Tabwerden vertauscht, kein Problem, aber anstatt Caps_Lockund Control_Lzu vertauschen, werden diese beiden Schlüssel zu Caps_Lock.

Was auch immer ich versuche, die Strg-Tasten werden nicht zugewiesen Caps_Lock(Tastencode 66). Wenn ich die Taste lasse keycode 66 =, ist die Taste nicht zugewiesen, aber wenn ich Control_Loder zuweise Control_R, funktioniert es einfach nicht. Wenn ich jedoch eine andere Taste zuweise, z. B. keycode 66 = Tab, wird sie zugewiesen, kein Problem.

Es ist, als ob xmodmap einfach nicht möchte, dass die Feststelltaste und die Strg-Taste vertauscht werden. Wirklich frustrierend. Jede Hilfe/jeder Hinweis wäre wirklich hilfreich.

PS: Ich verwende Archlinux.

Antwort1

Derman-Seite für xmodmap(1)hat ein Beispiel für genau das

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

aber wenn Sie es so beenden möchten, wie Sie begonnen haben, müssen Sie meiner Meinung nach mindestens die Zeilen removeund hinzufügen.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

Ich vermute, dass dies der Fall ist, basierend auf diesem Absatz

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

Das klingt so, als würden Änderungen an den Modifikatoren (Umschalt, Strg usw.) erst angewendet, wenn Sie das auch ausführen.

(Und logischerweise dasselbe mit remove)

Die keycodeVersion hat den Vorteil, dass sie idempotent ist, was bedeutet, dass sich der Effekt nicht ändert, wenn xmodmap mehrmals ausgeführt wird.

Antwort2

Eine lose verwandte Antwort: Ich wollte die Feststelltaste auf die linke Steuerungstaste umlegen und die eigentliche linke Steuerung unverändert lassen. Die Manpage von xmodmap bietet auch die Lösung:

    keycode 66 = Control_L
    clear Lock
    add Control = Control_L

verwandte Informationen