Remappage des clés dans iterm2

15

J'essaie de remapper certaines des combinaisons de touches par défaut dans iTerm2, et j'aimerais comprendre ce qui se passe lorsque je lie des clés à "Envoyer des codes hexadécimaux".

Un article précédent m'a aidé à commencer à remapper les combinaisons de touches ctrl-a et ctrl-e en cmd-gauche et cmd-droite, respectivement, mais je voudrais également remapper d'autres combinaisons de touches. ( Lien vers le post précédent de Stackoverflow ).

J'ai une vague compréhension qu'il y a des codes hexadécimaux impliqués, mais je suis à un point où je ne peux pas comprendre où aller ensuite pour comprendre ce qui se passe ou quoi faire.

Communauté
la source
N'a rien à voir avec bash. Balise supprimée.

Réponses:

16

Ces codes hexadécimaux ne sont que des séquences d'octets. Par exemple, mapper une combinaison de touches pour la 0x66 0x6f 0x6ffaire insérer foo. 0xc3 0xa4insérerait ä si vous utilisez UTF-8. 0x1b 0x1b 0x5b 0x43signifie escape escape [ C.

Certaines séquences d'octets comme les séquences d'échappement ANSI et même les octets uniques comme les caractères de contrôle ASCII ont des significations spéciales dans les terminaux.

Pour faire passer ⌘ ← et ⌘ → au début et à la fin de la ligne, vous pouvez les affecter à 0x01 (^ A en notation caret) et 0x05 (^ E en notation caret):

  • ⌘ ←: Envoyer des codes hexadécimaux: 0x01
  • ⌘ →: envoyer des codes hexadécimaux: 0x05

Vous pouvez faire ⌥⌦ supprimer un mot en avant en l'attribuant à \ed:

  • ⌥⌦: Envoyer ^ [d

Changer ⌥ ← et ⌥ → vers \ebet \efdans les préférences d'iTerm les changerait également dans les programmes qui ne prennent pas en charge les raccourcis clavier readline ou emacs. Une autre option consiste à ajouter ceci à ~ / .inputrc :

"\e\e[D": backward-word
"\e\e[C": forward-word

Vous pouvez exécuter readet appuyer sur des combinaisons de touches pour voir quels caractères ils insèrent. Par exemple, ⌥ ← insère ^[^[[Dpar défaut, où ^[est escape en notation caret .

Voir également http://code.google.com/p/iterm2/wiki/Keybindings .

Lri
la source
Merci. Je rencontre cette réponse lors de la recherche d'une solution à ma question ici . Comment puis-je rechercher le code hexadécimal pour une combinaison de touches spécifique? (dans mon cas , je suis intéressé par les combinaisons Ctrl+Alt+<char>avec <char>être i, j, k, let u)
Amelio Vazquez-Reina
6

Je vous suggère d'installer des codes clés (0 $) par Many Tricks et de découvrir les raccourcis par vous-même.

Par exemple, si vous souhaitez remapper le raccourci par défaut pour (en avant) supprimer un caractère - qui est Ctrl-D ( ⌃D) - pour être aussi simple que d'appuyer sur la touche de suppression en avant ( ), vous feriez ...

  1. Ouvrez l'application et appuyez sur Ctrl-D

    Exemple de codes clés

  2. De retour dans iTerm 2, ajoutez le raccourci Unicode dans iTerm> Préférences> Clés

    iTerm Send Hex Codes

Remarque: ne le copiez pas et ne le collez pas, saisissez simplement l'Unicode sans espaces.

patrick
la source
2

La meilleure façon que j'ai trouvée était soit d'envoyer des codes clés (comme décrit par @pattulus ou d'utiliser des raccourcis clavier vim.

Remarque sur les codes clés: en fait, vous ne pouvez pas le faire fonctionner en envoyant la chaîne unicode comme décrit ci-dessus, vous devez envoyer à la fois le modificateur et la clé en cas de Control+ Dvous devez envoyer cela comme code: 0x840101 0x40x840101est le modificateur de la touche de contrôle et peut être obtenu via Key Code .

Remarque sur l'envoi en tant que séquence vim : Comme décrit dans la documentation iTerm2 , vous pouvez envoyer un code clé au format vim-bindings tel que \<C-d>pour l'envoi Control+ D(notez que \c'est important).

Personnellement, je préfère la liaison de clés vim car elle est plus lisible et vous comprendrez plus tard ce que vous avez fait.

ExistMe
la source
1

Découvrez Karabiner .

Dans cet outil, vous pouvez créer des mappages personnalisés clés spécifiques aux applications. Il est livré avec quelques outils pour vous aider.

bdecaf
la source