web-dev-qa-db-fra.com

Remappage du verrouillage des majuscules pour contrôler et échapper (contrairement à la méthode habituelle)

Je sais comment utiliser xmodmap pour remapper la touche de verrouillage majuscule afin qu’elle se comporte comme une touche de contrôle ou une touche d'échappement. Je voudrais combiner les deux fonctionnalités comme suit:

Lorsque j'appuie, puis relâche, la touche de verrouillage des majuscules envoie la touche Échap. Lorsque je maintiens les touches majuscule enfoncées et que j'appuie sur une autre touche (disons A), la commande Ctrl-A est envoyée.

Existe-t-il une combinaison de xkb, xmodmap et de quelque chose d’autre 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.

27
user372737

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

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

  1. Sous Préférences système> Disposition du clavier> Options ...> Position de la touche Ctrl, j'ai coché la case "Verrouillage majuscule en tant que Ctrl".

  2. xcape -e 'Control_L = Escape'

Terminé, le verrouillage des majuscules fonctionne comme Ctrl lorsqu'il est utilisé comme un modificateur, et comme Échap lorsqu'il est appuyé seul (il existe un léger retard de quelques centaines de millisecondes, comme indiqué dans le fichier xcape README, de sorte qu'il n'est toujours pas aussi optimal. en tant que solution Mac utilisant KeyRemap4MacBook.)

34
Vic Goldfeld

Je cherche ça 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, il envoie effectivement les touches Escape et Ctrl en même temps lorsque j'appuie sur CapsLock, mais j'en étais satisfait pendant un certain temps.

Enfin, 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.

6
tungd

EDIT: Correction de ce problème pour la plupart des gestionnaires d’affichage intelligents (les plus récents).

Commentaires de Louis et Sergiy Je propose cette solution qui fonctionne pour moi sur Ubuntu 16.04 (Xenial) avec LightDM et Unity.

Je mets la ligne de code suivante dans mon fichier .xprofile de mon répertoire personnel.

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

La fin et place la commande xcape en arrière-plan afin qu'elle ne bloque pas votre session. Le setxkbmap fait son changement immédiatement.

Sergiy:

J'ai utilisé gnome-Tweak-tool pour mapper le verrouillage des majuscules sur Ctrl car il n'y a pas de disposition de clavier dans les paramètres système sur Ubuntu 14.04. Alors xcape -e 'Control_L = Escape' ne fonctionnait pas, mais après avoir utilisé xcape -d, j'ai découvert que Caps Lock générait le code clé 66 et le remappait respectivement: xcape -e '# 66 = Escape'. - Sergiy Byelozyorov 4 sept. 14 à 10:08

Louis:

Selon ce billet de blog, il est possible de faire cela 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 4 août '15 à 10:06

4
dragon788

Installez xcape

Sudo apt-get install xcape

Ajoutez les deux lignes dans votre ~/.bashrc

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

Notez la partie -t 100. Si vous ne la définissez pas, vous remarquerez peut-être un retard dans Esc si vous utilisez vim.

2
Searene

A cet effet, j'ai créé un outil en C spécialement conçu pour résoudre de nombreux problèmes liés à la solution xcape/xmodmap :

1
pepper_chico