La reasignación del bloqueo de mayúsculas con xmodmap no funciona

10

Cuando programo me gusta intercambiar estas teclas:

EscTab CtrlCapsLock

En ~/.xmodmap, he especificado estas reasignaciones:

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

El Escapey Tabteclas permutas, no hay problema, pero en lugar de Caps_Locky de Control_Lintercambio, de estas dos teclas se convierte Caps_Lock.

Independientemente de lo que intente hacer, las teclas de control no se asignan a Caps_Lock(código clave 66). Si dejo el keycode 66 =, la clave no está asignada, pero cuando asigno Control_Lo Control_R, simplemente no funciona. Pero, si asigno alguna otra tecla, por ejemplo keycode 66 = Tab, se asigna, no hay problema.

Es como xmodmap simplemente no quiere que se intercambien las teclas Bloq Mayús y Control. Muy frustrante Cualquier ayuda / punteros sería realmente útil.

PD: estoy usando Archlinux.

Aby James
fuente

Respuestas:

8

La página del comando man xmodmap (1) tiene un ejemplo exactamente para 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 debes agregar al menos las líneas removeyadd

   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 basado en 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 también lo ejecute.

(Y lógicamente lo mismo con remove)

Mikel
fuente
Leí la página de manual y reasigné las teclas Caps_Lock y Control_L siguiendo el ejemplo. Pero tenía curiosidad de por qué no reasignar las teclas de la manera mencionada en el OP. ¿Es un error o algo?
Aby James
Parece que es así como se supone que debe funcionar. Ver mi respuesta actualizada.
Mikel
4

Respuesta poco 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
Clément B.
fuente