web-dev-qa-db-fra.com

comment remapper Ctrl pour Echap si pressé et relâché tout seul

Je veux remapper Control, pour que:

  1. S'il est pressé et relâché sans autre touche, il agit comme Esc.
  2. Si elle est enfoncée et maintenue avec une autre touche, elle agit comme Ctrl (pas de changement de comportement dans ce cas).

Je suis conscient de Comment remapper certaines clés ou certains périphériques? , alors je suppose que cela peut être fait avec xmodmap. Mais cette réponse n'explique pas comment mapper les touches de modification. J'ai examiné les exemples et les sections de grammaire de la page de manuel xmodmap, mais ils n'expliquent pas cela. La réponse dans Remappage des majuscules pour contrôler et échapper (pas de la manière habituelle) mentionne qu'il n'est pas possible de le faire pour Caps Lock, car c’est une touche de verrouillage, mais j’espère que cela sera possible avec Control, qui est une touche mod. Une solution avec quelque chose de différent de xmodmap sera également acceptée. (J'utilise Xmonad dans Ubuntu 12.04, alors peut-être existe-t-il un moyen de le configurer dans xmonad.hs?)

EDIT: Le plus proche que je peux obtenir est:

xmodmap -e 'remove Control = Control_L'
xmodmap -e 'keysym Control_L = Escape'
xmodmap -e 'add Control = Escape'

Avec cela, je reçois Escape lorsque je presse le Left Ctrl clé seule, mais pour obtenir, par exemple, Ctrl+A Je dois appuyer sur le Left Ctrl touche deux fois: CtrlCtrl+A (plutôt que juste Ctrl+A) - je ne sais pas pourquoi je dois appuyer deux fois.

5
psvm

La dernière réponse à Remapping Caps Lock to Control and Escape (pas de la manière habituelle) indique que cet utilitaire fera ce que vous voulez: https://github.com/alols/xcape =

3
ashleyh

Cela peut être fait avec xmodmap, mais sachez que si vous avez configuré certaines choses avec setxkbmap, ce dernier programme remplacera et effacera les réglages xmodmap.

Cependant, pour faire exactement ce que vous voulez avec xmodmap, vous pouvez entrer

xmodmap -e "keysym Control_L control = Escape Control_L" 

Maintenant, si vous regardez xmodmap -pm, Escape a été ajouté au modificateur de contrôle. Cela signifie que lorsque vous appuyez sur le contrôle de gauche, l’échappement sera le résultat, mais lorsque vous appuierez sur le contrôle avec une autre touche (comme dans Ctrl+C), il donnera toujours le même résultat qu'auparavant.

Testez-le en entrant dans le terminal man xmodmap, puis appuyez sur ctrl tout en regardant la page de manuel. Le mot de passe "ech" s’affiche, mais lorsque vous appuyez sur Ctrl+Z il va suspendre la page.

Si vous souhaitez réinitialiser vos expérimentations avec xmodmap, déconnectez-vous et reconnectez-vous, et si vous souhaitez définir la commande _ ci-dessus xmodmap comme élément de démarrage, consultez ma réponse ici:

1
user76204