Remappage du verrouillage des majuscules pour contrôler et échapper (pas de la manière habituelle)

28

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

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

Y a-t-il une combinaison de xkb, xmodmap et autre chose qui pourrait faire en sorte que le verrouillage des majuscules se comporte de cette façon dans X?

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

user372737
la source

Réponses:

-2

Vous pouvez faire le premier (mappage Caps Locksur Esc) mais vous ne pouvez pas faire le second.

Explication simple: Caps Lock n'est tout simplement pas conçu pour faire quelque chose lorsqu'il est pressé.

Explication détaillée: il existe de nombreux types de clés. Deux d'entre eux sont les touches de modification et les touches de verrouillage .

Caps Lockest un verrouillage des touches alors que les clés tels que Ctrl, Altet Shiftsont touches de modification .

Il ressort de leurs noms que les touches de modification modifient la fonction de la ou des touches suivantes enfoncées, et les touches de verrouillage agissent comme un interrupteur à bascule pour activer ou désactiver une fonction particulière.

Maintenant, puisqu'il Caps Lock s'agit d'une clé de verrouillage , vous ne pouvez pas la faire se comporter comme une touche de modification sans la mapper à une. Caps Locken soi ne peut pas fonctionner comme touche de modification .

vert
la source
Merci d'avoir confirmé que X n'est pas conçu pour faire ce que je veux. Si un gourou X veut pirater quelque chose pour le faire fonctionner, veuillez me contacter.
user372737
4
Comme réponse non acceptée ci-dessous, vous pouvez certainement faire la deuxième partie avec de nombreux utilitaires tels que xcape ou At-Home-Modifier.
Sparhawk
35

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

Eh bien, ça fonctionne maintenant. Merci tungd de m'avoir ponté vers 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é 'Verrouillage des majuscules 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 Esc lorsqu'il est pressé seul (il y a un léger retard de quelques centaines de millisecondes, comme indiqué sur le fichier README de xcape, il n'est donc pas aussi optimal que la solution Mac qui utilise KeyRemap4MacBook.)

Vic Goldfeld
la source
4
Je l' ai utilisé gnome-tweak-toolpour la carte Caps Lockà Ctrlcar il n'y a pas Keyboard layoutdans System SettingsUbuntu 14.04. Alors xcape -e 'Control_L=Escape'ne marchait pas, mais après avoir utilisé xcape -dje l' ai découvert que Caps Lockgénère keycode 66 et remappés il respectivement xcape -e '#66=Escape'.
Sergiy Belozorov
3
Selon ce billet 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
Cela aurait vraiment dû être la réponse acceptée @ user372737
Assaf Lavie
@LouisSimoneau ça mille fois ça.
Spencer Boucher
1
Des progrès avec le problème de retard?
Toothrot
6

Je le cherche aussi. Il y a une semaine, j'ai trouvé moi-même 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 à la fois Escape et Ctrl en même temps lorsque j'appuie sur CapsLock, mais j'en ai été satisfait pendant un certain temps.

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

tungd
la source
Une autre option est At-Home-Modifier. Il n'est pas en développement actif et diffère légèrement de xcape par l'installation à la racine. Cependant, il se déclenche via xorg.conf et ne peut donc agir que sur des claviers spécifiques, tout en utilisant d'autres claviers simultanément.
Sparhawk
4

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

Selon les 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 mis la ligne de code suivante dans mon .xprofilefichier dans mon répertoire personnel.

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

Le suivi et met la commande xcape en arrière-plan afin qu'elle ne bloque pas votre session. Setxkbmap effectue sa modification 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. 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

dragon788
la source
3

Installer 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

Remarquez la partie -t 100, si vous ne la définissez pas, vous pouvez remarquer un retard dans Esc si vous utilisez vim.

Searene
la source
sudo apt-get install xcape(faute de frappe)
David Shaked
1

J'ai créé un outil en C spécialement à cet effet qui résout de nombreux problèmes avec la solution xcape / xmodmap :

pepper_chico
la source
Existe-t-il un moyen de désactiver le "swap" de Esc en majuscules, je préfère ne pas avoir de majuscules du tout et garder l'ancien et le nouveau Esc se comportant tous les deux comme Escape.
dragon788
Merci, je vais devoir mettre un lien pour compiler automatiquement ceci dans mes fichiers dot. Je peux également imprimer le fichier README.md car sur Ubuntu 16.04, il fallait libudev-dev et libevdev-dev pour compiler.
dragon788
@ dragon788 vient à Arch (vous pouvez même essayer Antergos). J'ai quitté Ubuntu il y a des années et je n'y retournerai jamais, c'est bien mieux.
pepper_chico