35 votes

Remplacer Caps Lock par Control et Escape (pas de la manière habituelle)

Je sais comment utiliser xmodmap pour remapper la touche Caps lock afin qu'elle agisse comme une touche Control, ou comme une touche Escape. J'aimerais combiner ces deux fonctions comme suit :

Lorsque j'appuie sur la touche de verrouillage des majuscules, puis que je la relâche, elle envoie Escape. Lorsque je maintiens la touche de verrouillage des majuscules enfoncée et que j'appuie sur une autre touche (par exemple A), le système envoie Control-A.

Existe-t-il une combinaison de xkb, xmodmap et autre chose qui pourrait faire en sorte que le verrouillage des majuscules se comporte de cette manière dans X ?

J'utilise Ubuntu Precise sur un Macbook Air 3,1.

44voto

Vic Goldfeld Points 541

J'ai cette configuration sur mon Mac et j'ai essayé de trouver un moyen pour Ubuntu sans succès.

Eh bien, cela fonctionne maintenant. Merci à tungd de m'avoir orienté vers xcape . Ce que j'ai fait est vraiment simple et direct.

  1. Sous Préférences du système Disposition du clavier Options... Position de la touche Ctrl J'ai vérifié Caps Lock comme Ctrl .

  2. Dans une course terminale :

    xcape -e 'Control_L=Escape' 

Fait, Caps Lock fonctionne comme Ctrl lorsqu'il est utilisé comme modificateur, et comme Esc lorsqu'elle est pressée seule (il y a un léger retard de quelques centaines de millisecondes, comme indiqué sur l'écran du xcape README, donc ce n'est toujours pas aussi optimal que la solution Mac qui utilise KeyRemap4MacBook).

9voto

Searene Points 3390

Instale xcape

sudo apt-get install xcape

Ajoutez les deux lignes dans votre ~/.profile

/usr/bin/setxkbmap -option 'caps:ctrl_modifier'
/usr/bin/xcape -e 'Caps_Lock=Escape' -t 100

Remarquez la partie -t 100 Si vous ne le définissez pas, vous risquez de constater un retard dans l'exécution des tâches de la Esc si vous utilisez vim.

8voto

gokujou Points 123

C'est ce que je cherche aussi. Il y a une semaine, j'ai trouvé une solution partielle en utilisant xmodmap :

add Control = Caps_Lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

Bien sûr, cela ne fonctionne pas parfaitement, cela envoie effectivement Escape et Ctrl en même temps lorsque j'appuie sur CapsLock, mais cela m'a satisfait pendant un certain temps.

Finalement, j'ai trouvé ce petit utilitaire https://github.com/alols/xcape . Je peux donc maintenant simplement remapper CapsLock en Ctrl et laisser xcape faire son travail.

7voto

dragon788 Points 1216

EDIT : Correction pour la plupart des gestionnaires d'affichage intelligents (plus récents).

Suite aux commentaires de Louis et Sergiy, j'ai trouvé cette solution qui fonctionne pour moi sur Ubuntu 16.04 (Xenial) avec LightDM et Unity.

J'ai inséré la ligne de code suivante dans mon .xprofile dans mon répertoire personnel.

setxkbmap -option 'caps:ctrl_modifier' && xcape -e 'Caps_Lock=Escape' &

Le & qui suit place la commande xcape en arrière-plan afin qu'elle ne bloque pas votre session. La commande setxkbmap effectue sa modification immédiatement.

Sergiy :

J'ai utilisé gnome-tweak-tool pour faire correspondre Caps Lock à Ctrl car il n'y a pas de disposition de clavier dans les paramètres du système sur Ubuntu 14.04. Ensuite, xcape -e 'Control_L=Escape' n'a pas fonctionné, mais après avoir utilisé xcape -d, j'ai découvert que Caps Lock génère le code 66 et je l'ai remappé : xcape -e '#66=Escape'. - Sergiy Byelozyorov 4 sep '14 à 10:08

Louis :

D'après cet article de blog, il est possible de le faire avec xcape seul : setxkbmap -option 'caps:ctrl_modifier' xcape -e 'Caps_Lock=Escape' setxkbmap -option 'caps:ctrl_modifier' xcape -e 'Caps_Lock=Escape;Control_L=Escape;Control_R=Escape' - Louis Simoneau Aug 4 '15 at 10:06

1voto

pepper_chico Points 1557

J'ai construit un outil en C spécialement à cette fin, qui permet de surmonter les obstacles suivants de nombreux problèmes liés à la solution xcape/xmodmap :

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X