Precedente de combinaciones de teclas de terminal para la tecla Cmd de Windows o Mac

Precedente de combinaciones de teclas de terminal para la tecla Cmd de Windows o Mac

Los terminales Unix envían códigos ASCII por debajo de 32 para Ctrl+ otra clave, y tienen al menos dos formas de enviar "meta" (es decir, anteponer el código 27 o configurar el bit alto de un carácter ASCII). ¿Existe un precedente de una forma de codificar el uso de otras teclas modificadoras, como "super" o la tecla del logotipo de Windows o Cmdla tecla Mac?

Me gustaría asignar Cmd+ teclas de flecha en iTerm2, pero no sé qué códigos asignarles. Ya estoy usando la Optionclave para "meta" con las teclas de flecha.

Respuesta1

La convención de establecer el octavo bit cuando se presiona meta es bastante arcaica y ya no se usa mucho, o incluso no se usa en ningún terminal moderno que admita más caracteres además de ASCII. La convención de anteponer ESC también es poco común hoy en día.

De hecho, los 32 caracteres de control ASCII se envían como caracteres de control ASCII (puntos de código inferiores a 32), pero eso solo cubre Ctrl-@, Ctrl-A hasta Ctrl-Z, ESC, Ctrl-\, Ctrl-], Ctrl-^ y Control-_. Cualquier otra cosa, como por ejemplo Ctrl-4, no existe en ASCII y no existe ninguna convención para enviarlo a través de una terminal.

Básicamente, la conclusión es la siguiente: cualquier cosa que no pueda enviarse como un carácter simple (es decir, que exista en Unicode para terminales modernos que admiten Unicode) debe enviarse como una secuencia de escape. Las secuencias de escape están definidas por el protocolo de emulación de terminal vigente. Casi todos los protocolos de emulación de terminal utilizados hoy en día se derivan de VT100 o son similares, y las secuencias de escape están disponibles para teclas comunes que se encuentran en teclados que no existen como caracteres: teclas de flecha, teclas de función, etc.

VT100 y los protocolos de emulación de terminal relacionados no contienen convenciones para transmitir pulsaciones de teclas modificadoras, ni siquiera las estándar como Shift y Control. El software que se ejecuta en un tty no puede distinguir entre presionar la tecla Enter y presionar la tecla Shift-Enter. Ni siquiera puede distinguir entre presionar la tecla Enter y presionar la tecla Control-M.

El hecho de que estas secuencias modificadoras no puedan transmitirse a través de un terminal puede considerarse algo bueno. Por ejemplo, la aplicación de terminal MacOS puede reclamar la pulsación de tecla ⌘V para su propio uso (pegar) porque de todos modos no se puede enviar al tty.

información relacionada