web-dev-qa-db-fra.com

Après avoir échangé Ctrl et les majuscules dans xmodmap, comment puis-je faire fonctionner Ctrl correctement pour les combinaisons multi-modificateurs?

J'ai troqué Left Ctrl et Caps Lock en créant ~/.Xmodmap

keycode 66 = Control_L
keycode 37 = Caps_Lock
clear Lock
clear Control
add Lock    = Caps_Lock
add Control = Control_L Control_R

puis exécutez $ xmodmap ~/.Xmodmap. En appuyant sur Left Ctrl travaux clés comme prévu, basculement Caps Lock. En appuyant sur Caps Lock travaux clés en général pour les raccourcis simples, tels que Ctrl+N.

Cependant, lorsque plusieurs touches de modification sont requises (par ex. Alt+Ctrl+I), cela ne fonctionne que si j'appuie sur la touche Alt clé en premier. Si j'appuie sur Caps Lock clé d'abord, il n'y a aucun effet.

Je peux réinitialiser la disposition du clavier avec $ setxkbmap -layout us, Et le raccourci ci-dessus fonctionnera bien. Si je lance à nouveau $ xmodmap ~/.Xmodmap, J'ai le même problème.

Je trouve également que même pour les combinaisons à un seul modificateur, je dois maintenir la Caps Lock touche pour une fraction de seconde de plus que je le faisais avec la vanille Ctrl clé pour qu'il s'enregistre. C'est probablement de l'ordre de 0,01 seconde, mais il est assez notable que des signaux incorrects sont envoyés une fois sur dix.

Aussi, si j'échange Ctrl et Caps Lock en utilisant $ setxkbmap -layout us -option 'ctrl:swapcaps', je ne remarque plus le problème avec les multiples modificateurs. Cependant, je veux toujours résoudre le problème avec la solution xmodmap, car je reçois bientôt un nouveau clavier et devra échanger Ctrl avec une clé différente.

= EDIT = J'ai essayé un autre clavier (Das Keyboard) et il semble que le deuxième problème de devoir maintenir enfoncé Caps Lock pendant une fraction de seconde de plus que je ne l'ai fait avec Ctrl est probablement un problème matériel avec le clavier d'origine (un clavier filaire en aluminium Apple filaire). Cependant, le premier problème avec plusieurs modificateurs est toujours présent.

= EDIT = J'ai testé différentes séquences de touches dans xev. En portant Alt puis en appuyant sur Caps Lock résultats de la clé dans keycode 66 (keysym 0x0, NoSymbol), par opposition à keycode 66 (keysym 0xffe3, Control_L) lorsque Alt n'est pas détenu.

3
Sparhawk

Apparemment, le code xmodmap ci-dessus n'est pas suffisant pour échanger le Ctrl+L et Caps Lock clés.

keycode 66 = Control_L

devrait être

keycode 66 = Control_L Control_L

pour permettre une fonctionnalité correcte lorsque Ctrl est enfoncé après un autre modificateur. Je ne trouve pas de bonnes références à cette solution mais apparemment la deuxième entrée concerne Shift+Key. Je ne sais pas pourquoi ici, cela semble également s'appliquer à Alt+Key.

(En outre, FWIW, d'autres sources indiquent qu'il y a jusqu'à huit colonnes, plutôt que les six mentionnées dans le lien.)

2
Sparhawk