When I program I like to swap these keys:
Esc ↔ Tab
Ctrl ↔ CapsLock
In ~/.xmodmap
, I have specified these re-mappings:
keycode 66 = Control_L
keycode 37 = Caps_Lock
keycode 23 = Escape
keycode 9 = Tab
The Escape
and Tab
keys swaps, no problem, but instead of Caps_Lock
and Control_L
swapping, both those keys becomes Caps_Lock
.
Whatever I try to do, the Control keys doesn't get assigned to Caps_Lock
(keycode 66). If I leave the keycode 66 =
, the key is un-assigned, but when I assign Control_L
or Control_R
, it just doesn't work. But, if I assign some other key, for example, keycode 66 = Tab
, it gets assigned, no problem.
Its like xmodmap just doesn't want Caps Lock and Control keys to be swapped. Really frustrating. Any help/pointers would be really helpful.
P.S: I am using Archlinux.
Best Answer
The xmodmap(1) man page has an example for exactly this
but if you want to finish doing it the way you started, I think you need to add at least the
remove
andadd
linesI'm guessing that's the case based on this paragraph
which makes it sound like modifier changes (shift, control, etc.) don't get applied until you run that too.
(And logically the same with
remove
)The
keycode
version has the advantage of being idempotent, meaning that the effect won't change if xmodmap is run multiple times.