
Beim Programmieren vertausche ich gerne diese Tasten:
Esc↔ Tab Ctrl↔CapsLock
In ~/.xmodmap
habe ich diese Neuzuordnungen angegeben:
keycode 66 = Control_L
keycode 37 = Caps_Lock
keycode 23 = Escape
keycode 9 = Tab
Die Schlüssel Escape
und Tab
werden vertauscht, kein Problem, aber anstatt Caps_Lock
und Control_L
zu 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_L
oder 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 remove
und 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 keycode
Version 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