(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.