
Cuando programo me gusta intercambiar estas claves:
Esc↔ Tab Ctrl↔CapsLock
En ~/.xmodmap
, he especificado estas reasignaciones:
keycode 66 = Control_L
keycode 37 = Caps_Lock
keycode 23 = Escape
keycode 9 = Tab
Las claves Escape
y Tab
se intercambian, no hay problema, pero en lugar de Caps_Lock
intercambiarse Control_L
, ambas claves se convierten en Caps_Lock
.
Independientemente de lo que intento hacer, las teclas de Control no se asignan Caps_Lock
(código clave 66). Si dejo el keycode 66 =
, la clave no está asignada, pero cuando asigno Control_L
o Control_R
, simplemente no funciona. Pero si asigno alguna otra clave, por ejemplo, keycode 66 = Tab
se asigna, no hay problema.
Es como si xmodmap simplemente no quisiera que se intercambiaran las teclas Bloq Mayús y Control. Realmente frustrante. Cualquier ayuda/consejo sería realmente útil.
PD: estoy usando Archlinux.
Respuesta1
Elpágina de manual xmodmap(1)tiene un ejemplo para exactamente esto
!
! 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
pero si quieres terminar de hacerlo como empezaste, creo que necesitas agregar al menos las líneas remove
yadd
remove Lock = Caps_Lock
remove Control = Control_L
keycode 37 = Caps_Lock
keycode 66 = Control_L
add Lock = Caps_Lock
add Control = Control_L
Supongo que ese es el caso según este párrafo.
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).
lo que hace que parezca que los cambios de modificador (shift, control, etc.) no se aplican hasta que lo ejecutes también.
(Y lógicamente lo mismo con remove
)
La keycode
versión tiene la ventaja de ser idempotente, lo que significa que el efecto no cambiará si xmodmap se ejecuta varias veces.
Respuesta2
Respuesta vagamente relacionada: quería reasignar la tecla de bloqueo de mayúsculas al control izquierdo, dejando intacto el control izquierdo real. La página de manual de xmodmap también ofrece la solución:
keycode 66 = Control_L
clear Lock
add Control = Control_L