7 votes

Envoi de Control+Alt+ <char> au terminal dans iTerm2

Lorsque j'appuie sur Control + Command + i Je voudrais qu'iTerm2 envoie le raccourci sous la forme suivante C-M-i (c'est-à-dire ctrl + alt + i ) à mon terminal.

J'ai

Comment puis-je faire cela ?

J'ai essayé les solutions suivantes sans succès : enter image description here

Comment faire pour que cela fonctionne ?

Mise à jour :

Je lis ce qui suit aquí :

To have iTerm2 send "C-M-Space" to the terminal:
1) Open: Preferences > Profiles > some session you wish to edit > Keys.
2) Add a new key binding by pressing the "+" button.
3) Select the "Keyboard Shortcut" field, and press ctrl + option + space.
4) Select "Send Hex Code" in the "Action" list.
5) Type "0x1b 0x00" to the field below the list.
6) Click OK and close the preferences window.

Je me demande si je peux suivre la même approche pour mon problème. Comment puis-je savoir quel code hexadécimal je dois envoyer pour Control+Command+i ?

Mise à jour 2

Après avoir lu ce fil J'ai installé Key Codes et a trouvé les informations suivantes pour Control + Command + i . Qu'est-ce que je suis censé inscrire en tant que hex code dans iTerm2 pour que cela fonctionne ?

                                enter image description here

2voto

King110 Points 29

La méthode la plus simple pour envoyer des combinaisons de touches au terminal est d'activer le paramètre +Esc is Key.

iTerm2 > Préférences > Profil > Touches > changer "option key acts" de normal à +Esc

1voto

Zhora Points 635

(La théorie est exposée dans les trois paragraphes suivants et la réponse la plus probable est développée dans le reste de cette longue explication. Le spoiler est notre estimation de 0x89 comme réponse à la question posée. Si ce n'est pas le cas, vous devrez probablement lire une grande partie du reste et faire quelques recherches par vous-même pour savoir exactement ce que vous devez envoyer et comment. J'espère que cela vous aidera).

Pour résoudre ce problème, il faut tout d'abord se rendre compte que C-M-i n'est pas la même chose que Control + Command + I sauf lorsque (dans un contexte spécifique tel qu'un système d'exploitation ou un programme) le Command est définie comme étant la touche Meta clé. Dans iTerm, les choix pour la touche Meta sont l'une ou l'autre des touches Option (Alt). Dans iTerm, on ne peut pas parler de la touche Commande comme de la touche Meta, bien qu'il soit possible de capturer l'appui sur la touche Commande en la définissant comme une touche iTerm raccourci clavier. Que signifie donc, dans iTerm, le fait d'appuyer sur Control + Command + i ? Il n'est pas défini ; il n'envoie aucun caractère visible ou invisible. (La meilleure façon de s'en rendre compte est d'invoquer cat -v , vis -o ou tout autre programme permettant d'afficher visiblement les codes invisibles et d'essayer différentes frappes de clavier.)

Mais l'idée de presser C-M-i est quelque peu défini et comprend souvent le Meta avec une autre combinaison de touches équivaut à appuyer sur la touche ESCape suivie de la même combinaison de touches. Il semble que ce soit ce que vous essayiez de faire en définissant une touche pour sortir la séquence d'échappement : ESC + ^i . Si cela n'a pas fonctionné, nous devons savoir quelle chaîne de caractères/octets est réellement souhaitée par le programme que vous essayez de contrôler. En suivant l'exemple que vous avez donné, j'ai créé une séquence hexagonale de 0x1B 0x09 ce qui produit le même résultat que votre séquence ESC. (Hex 1B ou 0x1B = Binaire 000110111 = Octal 033 ou \033 = Décimale 27 valeur de 27 pas 2 suivi de 7 ; au bout d'un certain temps, ces chiffres particuliers commencent à signifier ESCape (et de l'autre côté de l'Atlantique), il n'y a pas d'autre solution que de s'en débarrasser.

Aujourd'hui, Key Codes était un bon essai, car il s'agit du même type d'idée que l'utilisation de cat ou vis pour visualiser les caractères envoyés. Le problème est que Key Codes n'est pas en cours d'exécution au sein de iTerm mais il est en cours d'exécution à l'intérieur de OS X. On pourrait dire que la Command La clé est OS X's Meta mais ce raisonnement n'est pas utile, car il n'y a pas d'autre solution que d'utiliser la clé de contact. OS X définit la fonction de son Meta de la manière dont l'entreprise a été conçue et mise en œuvre par l'État. iTerm définit son Meta clé. Si vous entrez dans Key Codes et essayez d'appuyer sur Control + i avec et sans le Command vous verrez que la différence se situe au niveau des modificateurs qui en résultent ; mais les modificateurs sont des indicateurs internes au sein de l OS X que OS X crée en examinant les touches pressées. Le code de sortie réel est le plus proche du caractère Unicode indiqué ( 0x09 ) et vous verrez qu'avec et sans l'option Command vous recevez le même caractère. Mais c'est illusoire de toute façon puisque ce qui se passe en réalité, c'est que OS X obtient le code clé et les valeurs des modificateurs et interprète ces codes comme il le souhaite. Control + i se rapproche le plus de l'"envoi" d'un ^i mais ajoutez le Command et, si la touche Finder est la réception des résultats, vous obtenez l'une des différentes options suivantes Get Info un autre programme peut l'interpréter à sa guise. C'est une succession de tortues, c'est-à-dire que ce que vous commencez peut finir par faire beaucoup de choses différentes en fonction de ce qui réinterprète quoi, et ainsi de suite.

Je dois maintenant essayer de vous donner une réponse qui vous conviendra, mais ce qui précède était nécessaire pour montrer pourquoi je ne peux pas l'affirmer avec certitude. Mais je peux faire une supposition éclairée. Premièrement, le contexte est le suivant iTerm et je suppose que vous exécutez un programme dans iTerm qui fait quelque chose en réponse à ce qui est dit être C-M-i. Si, en iTerm Je règle une touche Option/Alt pour qu'elle soit la touche Meta et j'appuie sur cette touche avec la touche ^i Nous nous attendons à ce que ce que nous voulons se produise. Voyons donc ce qui est envoyé en faisant cela. Si vous utilisez Key Caps il ne dira rien de différent puisque vous êtes de retour à l'extérieur de la iTerm. Mais lorsque j'utilise la fonction cat -v qui fait de son mieux pour rendre l'invisible visible à l'écran et appuyer sur C-M-i, puis, en même temps qu'un étrange caractère en forme de diamant, j'obtiens la chaîne suivante M-^i ce qui semble être une façon de dire M-C-i . Cela a l'air bien.

Maintenant, je sors de la cat et se rendre à la page d'accueil du programme vis -o qui essaiera de me donner des valeurs octales pour certains des caractères invisibles. En appuyant maintenant sur C-M-i me donne une valeur octale (après avoir appuyé sur return) de \211 ainsi que ce drôle de diamant. (Octal 211 ou \211 = Binaire 10001001 = Hex 89 ou 0x89; ce qui est encourageant puisque lorsque j'ai allumé le Meta clé en iTerm il m'a donné un avertissement à ce sujet Meta était généralement utilisée sur les anciens systèmes et les nouveaux systèmes utilisent généralement la fonction +ESC séquence de code retour au point de départ ! J'ai également constaté que ce que le Meta a souvent consisté à sortir le caractère imprimable ASCII de 7 bits avec son bit de poids fort (le bit le plus à gauche est généralement mis à zéro) mis à 1. Si vous enlevez le 1 le plus à gauche du codage binaire de ce que nous avons reçu, vous vous retrouvez avec une valeur de 1001 binaire = Décimal 9 ! 9 est le caractère qui appuie sur ^i "envoie". C'est une bonne chose.

Pour faire le tour de la question et la vérifier plus avant, je peux revenir sur le site suivant iTerm, s'assurer que j'ai bien éteint mon Meta (juste au cas où) et définir un nouveau raccourci clavier vers une touche qui envoie un 0x89 (Hex 89 ). Ouvrez ensuite une nouvelle fenêtre pour que les modifications soient actives et appuyez sur la touche à laquelle vous avez attribué la fonction 0x89 con vis -o courir pour interpréter vos personnages. Il en ressort la même forme de diamant amusante et la chaîne octale \211 . Il semble donc que nous ayons mis en place une touche de raccourci pour produire C-M-i au mieux de nos connaissances.

Le fait que cette touche fasse ce que vous voulez dépend de la façon dont le programme qui veut ce code clavier gère ce que nous lui avons donné. N'en sachant pas plus, il s'agit d'une supposition fondée. En cas d'échec, il est nécessaire d'approfondir le programme final qui est contrôlé [je m'y risquerais]. Emacs mais, hey J'utilise vi J'espère que certaines des techniques et des idées présentées ici vous aideront à déterminer comment envoyer les codes corrects une fois que vous les aurez trouvés. J'espère que cela fonctionnera pour vous. Notez que sans toutes ces complications, vous pouvez vous faire une idée assez précise de ce qui fonctionnera ou non en allumant un Meta clé en iTerm et en appuyant sur C-M-i pour voir si cela fonctionne ; si c'est le cas, définissez votre touche de raccourci.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X