(La teoría se encuentra en los siguientes 3 párrafos y la mejor respuesta se desarrolla en el resto de esta larga explicación. El alerón es nuestra suposición educada de 0x89
como respuesta a la pregunta dada. Si no es así, probablemente tendrás que leer gran parte del resto y hacer algunas búsquedas por tu cuenta para saber exactamente qué debes enviar y cómo. Espero que esto le ayude).
Para solucionar esto lo primero es darse cuenta de que C-M-i
no es lo mismo que Control + Command + I
excepto cuando (en un contexto específico como un SO o un programa) el Command
está configurado para ser el Meta
clave. En iTerm las opciones para el Meta
son una u otra de las teclas de Opción (Alt). En iTerm no se puede hablar de la tecla Comando como la tecla Meta aunque es posible capturar la pulsación de la tecla Comando definiéndola como un iTerm
atajo de teclado. Entonces, ¿qué significa en iTerm pulsar Control + Command + i
? No está definido; no envía ningún carácter visible o invisible. (Esto se ve mejor invocando cat -v
, vis -o
u otro programa que muestre visiblemente los códigos invisibles y que intente varias pulsaciones de teclas)\N-.
Pero la idea de presionar C-M-i
está algo definida y a menudo incluye el Meta
con otra combinación de teclas equivale a pulsar la tecla ESCape
seguido de la misma combinación de teclas. Eso parece ser lo que intentabas hacer al establecer una tecla para que saliera la secuencia de escape: ESC + ^i
. Si eso no funcionó, entonces necesitamos saber qué cadena de caracteres/bytes es la que realmente quiere el programa que está tratando de controlar. Siguiendo el ejemplo que has señalado he creado una secuencia hexadecimal de 0x1B 0x09
que produjo la misma salida que tu secuencia ESC. (Hex 1B
o 0x1B
= Binario 000110111
= Octal 033
o \033 = Decimal 27
valor de 27
no 2
seguido de 7
después de un tiempo estos números particulares empiezan a significar ESCape
carácter cuando uno los ve).
Ahora, Key Codes
fue un buen intento siendo el mismo tipo de idea que usar cat
o vis
para visualizar los caracteres que se envían. El problema es que Key Codes
no está funcionando dentro de iTerm
pero está funcionando dentro de OS X.
Se podría decir que el Command
La clave es OS X's
Meta
pero esa línea de pensamiento no es útil ya que OS X
define la función de su Meta
clave bastante diferente de cómo iTerm
define su Meta
llave. Si entra en Key Codes
y prueba a pulsar Control + i
con y sin el Command
verás que la diferencia está en los modificadores resultantes; pero los modificadores son banderas internas dentro de OS X
que OS X
crea examinando qué teclas se pulsan. El código de salida real es el más cercano al carácter Unicode mostrado ( 0x09
) y verás que tanto con como sin el Command
recibes el mismo carácter. Pero eso es ilusorio de todos modos ya que lo que realmente sucede es que OS X
obtiene el código de la llave y los valores de los modificadores e interpreta esos códigos como quiere. Control + i
es lo más parecido a "enviar" un ^i
pero añade el Command
y, si el Finder
es la recepción de los resultados, se obtiene uno de los varios Get Info
comandos; otro programa puede interpretarlo como quiera. Se trata de tortugas sobre tortugas sobre tortugas hasta el final, es decir, lo que se empieza puede acabar haciendo muchas cosas diferentes dependiendo de lo que se reinterprete, etc.
Ahora tengo que intentar darte una respuesta que te sirva, pero lo anterior era necesario para mostrar por qué no puedo asegurarlo. Pero puedo hacer una conjetura. En primer lugar, el contexto es iTerm
y supongo que está ejecutando un programa en iTerm que hace algo en respuesta a lo que se dice C-M-i.
Si, en iTerm
Configuro una tecla Opción/Alt para que sea la tecla Meta y luego presiono esa tecla con el ^i
teclas esperaremos que ocurra lo que queremos que ocurra. Así que averigüemos qué se envía al hacer eso. Si usas Key Caps
no dirá nada diferente ya que estás de nuevo fuera de iTerm.
Pero cuando uso el cat -v
que hace todo lo posible para que lo invisible sea visible en la pantalla y pulse C-M-i,
entonces junto con un extraño carácter en forma de diamante obtengo la cadena M-^i
que parece ser una forma de decir M-C-i
. Eso se ve bien.
Ahora salgo del cat
programa y vaya a la vis -o
que intentará darme algunos valores octales para algunos de los caracteres invisibles. Ahora presionando C-M-i
me da un valor octal (después de pulsar return) de \211
así como ese divertido diamante. (Octal 211
o \211
= Binario 10001001
= Hex 89
o 0x89;
lo cual es alentador ya que cuando antes encendí el Meta
clave en iTerm
me dio un aviso a que Meta
se solía utilizar en los sistemas más antiguos y los nuevos sistemas suelen utilizar el +ESC
secuencia de códigos ¡de vuelta al punto de partida! También he visto que lo que el Meta
era dar salida al carácter imprimible de 7 bits ASCII con su bit de orden superior (el bit más a la izquierda, normalmente a cero) a 1. Si se quita el 1 más a la izquierda de la codificación binaria de lo que recibimos, nos queda un 1001
binario = ¡Decimal 9! 9
es el carácter que presiona ^i
"manda fuera". Eso se ve bien.
Para cerrar el círculo y comprobarlo más a fondo puedo volver a iTerm,
asegurarme de que he apagado mi Meta
(por si acaso) y definir un nuevo atajo de teclado a alguna tecla que envíe un 0x89
(Hex 89
). A continuación, abra una nueva ventana para que los cambios estén activos y pulse la tecla que asignó al 0x89
con vis -o
corriendo para interpretar a sus personajes. Sale la misma graciosa forma de diamante y la cadena octal \211
. Así que parece que hemos configurado una tecla de acceso directo para producir C-M-i
a lo mejor de lo que sabemos.
Que esa tecla haga lo que quieres depende de que el programa que quiere ese código de teclado maneje lo que le hemos dado. Sin saber más esto es una conjetura. Si falla entonces hay que profundizar en el programa final que se está controlando [me atrevería a decir que Emacs
pero, Hola Utilizo vi
así que qué sé yo ;-] Espero que algunas de las técnicas e ideas presentadas aquí le ayuden a determinar cómo enviar los códigos correctos una vez que los haya encontrado. Espero que esto funcione para usted. Tenga en cuenta que sin todo el alboroto se puede obtener una idea bastante buena de que va a funcionar o no va a funcionar mediante la activación de un Meta
clave en iTerm
y presionando C-M-i
para ver si funciona; si es así, proceda a definir su tecla de acceso directo.