Rimappare Caps Lock con xmodmap non funziona


10

Quando programma mi piace scambiare questi tasti:

EscTab CtrlCapsLock

In ~/.xmodmap, ho specificato questi re-mapping:

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

I tasti Escapee si Tabscambiano, nessun problema, ma invece di Caps_Locke Control_Lscambiando, entrambi i tasti diventano Caps_Lock.

Qualunque cosa io provi a fare, i tasti di controllo non vengono assegnati a Caps_Lock(codice chiave 66). Se lascio il keycode 66 =, la chiave non è assegnata, ma quando assegno Control_Lo Control_R, semplicemente non funziona. Ma, se assegno qualche altra chiave, ad esempio, keycode 66 = Tabviene assegnata, nessun problema.

È come xmodmap che non vuole che i tasti BLOC MAIUSC e Control vengano scambiati. Davvero frustrante. Qualsiasi aiuto / puntatore sarebbe davvero utile.

PS: sto usando Archlinux.

Risposte:


8

La pagina man xmodmap (1) ha un esempio proprio per questo

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

ma se si vuole finire farlo nel modo hai iniziato, credo che è necessario aggiungere almeno removee addlinee

   remove Lock = Caps_Lock
   remove Control = Control_L
   keycode 37 = Caps_Lock
   keycode 66 = Control_L
   add Lock = Caps_Lock
   add Control = Control_L

Immagino che sia il caso basato su questo paragrafo

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

il che fa sembrare che i cambiamenti del modificatore (shift, controllo, ecc.) non vengano applicati fino a quando non lo esegui.

(E logicamente lo stesso con remove)


Ho letto la manpage e riassegnato i tasti Caps_Lock e Control_L seguendo l'esempio. Ma ero curioso di sapere perché la mappatura delle chiavi nel modo indicato nell'OP non funziona. È un bug o qualcosa del genere?
Aby James,

Sembra che sia solo il modo in cui dovrebbe funzionare. Vedi la mia risposta aggiornata.
Mikel,

4

Risposta vagamente correlata: volevo rimappare il tasto BLOC MAIUSC sul controllo sinistro, lasciando intatto il controllo sinistro effettivo. La pagina man xmodmap offre anche la soluzione:

    keycode 66 = Control_L
    clear Lock
    add Control = Control_L
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.