Remapper CapsLock au système d'évacuation et de contrôle à l'échelle


18

Est-il possible de remapper le système de touches CapsLock à l'échelle de telle sorte que lorsque le bouton CapsLock est enfoncé seul, il agit comme la touche d'échappement et lorsqu'il est pressé avec une autre touche, il agit comme la touche de contrôle?


5
Cela semble être très difficile. Par exemple, il n'a pas pu générer d'événements de touche enfoncée, car vous ne savez pas quelle touche vient d'être enfoncée. S'il est relâché sans appuyer sur une autre touche, alors c'était Escape, sinon c'était Control.
cjm

Réponses:


16

J'ai trouvé une très bonne solution appelée xcape . Du README:

xcape s'exécute en tant que démon et intercepte la clé de contrôle. Si la touche Ctrl est enfoncée et relâchée d'elle-même, elle générera un événement de touche d'échappement.

Cela a plus de sens si vous avez remappé votre touche de verrouillage des majuscules sur Contrôle. Les futures versions de ce programme pourraient faire cette cartographie pour vous, mais pour l'instant c'est quelque chose que vous devez faire vous-même.


J'ai fait un script hacky pour ce faire: github.com/cmatheson/super-caps
cam

6

J'ai mappé Caps à Escape pour être plus à l'aise de taper dans Vim. J'ai utilisé xmodmapet mis ça ~/.Xmodmap.

clear Lock
keycode 0x42 = Escape

Pour appliquer: xmodmap ~/.Xmodmap. Vous pouvez le mettre dans un fichier tel que ~ / .bash_profile (je l'ai mis dans ~ / .xinitrc, car je n'utilise pas de gestionnaire de connexion.

Pour mapper CapsLock + [une autre clé], envisagez d'utiliser xbindkeys.


4

Une solution Linux uniquement pour le remappage des clés à l'échelle du système consiste à écrire une règle udev simple. Il ne dépendra pas de X, fonctionnera sur n'importe quel terminal ou application et est portable entre toutes les installations Linux récentes en copiant simplement deux fichiers.

Vous devez écrire 2 fichiers: un contenant la règle udev qui indique au noyau de remapper les clés et un contenant les mappages réels dont vous avez besoin.

En utilisant cette méthode, j'ai remappé tout mon clavier, peut-être que le code est utile comme source d'inspiration http://git.adirat.com/carpalx-keyboard


le lien est mort, pourriez-vous le mettre à jour? Merci!
qed

Je l'ai mis à jour, désolé pour le retard
gimmesudo

Bitbucket dit "Vous n'avez pas accès à ce référentiel". Pouvez-vous le rendre à nouveau public? Merci!
Tianyi Cui

@TianyiCui vérifier le lien maintenant
gimmesudo

1
Le lien est mort ou bloqué pour moi. Y a-t-il une chance que vous puissiez mettre les fichiers réels dans votre réponse?
labyrinthe le


1

J'ai rencontré une question libellée différemment sur AskUbuntu qui avait une bonne réponse , mais j'ai dû la modifier légèrement pour travailler sur mes systèmes.

Selon les commentaires de Louis et Sergiy, j'ai trouvé cette solution qui fonctionne pour moi sur Ubuntu 16.04 (Xenial) et je vais l'apporter avec moi sur les autres systèmes Linux que j'utilise.

J'ai installé xcape et mis les lignes de code suivantes dans mon.profile fichier dans mon répertoire personnel.

MÉTHODE MISE À JOUR:

En raison des divers gestionnaires d'affichage (gdm / kdm / sddm / etc) se comportant de manière étrange et réinitialisant la setxbmapsuspension / reprise ou le verrouillage / déverrouillage après, j'ai découvert comment définir les options de manière à en hériter et à ne pas '' t le réinitialiser tout le temps. Parce que je suspendais et reprenais beaucoup de choses, je devais m'assurer de ne pas obtenir beaucoup de copies dexcape course, ce qui est résolu dans le nouveau script ci-dessous.

Modifiez d'abord la configuration du clavier avec sudo gedit /etc/default/keyboardet définissez XKBOPTIONS="ctrl:nocaps"puis dans votre ~/.xprofilemettre la seule ligne ci-dessous.

ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &

Espérons que les différentes sections du script vous feront gagner du temps et vous éviteront des connexions bloquées. Tout d'abord, il vérifie si une instance est déjà en cours d'exécution et la tue, car la seule chose à xcapefaire est de mapper Ctrl à Esc, cela est sûr, puis la hashpartie garantit que vous avez xcape installé sinon votre système pourrait se bloquer lorsque vous tentez de vous connecter car tout démarrage les scripts devraient se terminer proprement.

À l'ancienne:

setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'

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. 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 clé 66 et l'a remappé respectivement: xcape -e '# 66 = Escape'. - Sergiy Byelozyorov 4 septembre 2014 à 10h08

Louis:

Selon 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 4 août 15 à 10:06

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.