Si mantengo pulsadas las teclas Shift y Ctrl del teclado y pulso las teclas de flecha, aparecen en la pantalla las combinaciones de caracteres: ;6D;6A;6C;6B
¿Cuál es el significado de estos caracteres ;NumberLetter?
Si mantengo pulsadas las teclas Shift y Ctrl del teclado y pulso las teclas de flecha, aparecen en la pantalla las combinaciones de caracteres: ;6D;6A;6C;6B
¿Cuál es el significado de estos caracteres ;NumberLetter?
La entrada en un terminal es una secuencia de caracteres (o más exactamente una secuencia de bytes). Las entradas no imprimibles, como las teclas de función y de flecha, deben codificarse como uno o varios caracteres. Algunas teclas se codifican como caracteres de control por ejemplo ^I
(HT, Ctrl+I) para el Tab llave. Pero no hay suficientes caracteres de control para codificar todas las combinaciones de teclas. Por ello, las teclas de función y las del cursor se codifican como secuencias de varios caracteres. En la práctica, todos los terminales utilizan secuencias de escape que comienzan con el carácter ESC (Escape, ^[
) seguido de algunos caracteres imprimibles. Los detalles de la codificación pueden variar entre terminales y pueden depender de la configuración del terminal.
Las secuencias de escape tienen una longitud variable, por lo que la única forma de saber cuándo termina una es conocer cómo está construida. Si la aplicación que se ejecuta en el terminal (por ejemplo el shell) reconoce la secuencia de escape como un acorde de teclas, invoca cualquier funcionalidad que esté vinculada a ese acorde de teclas. Si la aplicación no reconoce la secuencia de escape, hay un punto en el que se rinde y trata los caracteres subsiguientes como caracteres ordinarios.
La codificación estándar de facto para las teclas del cursor es la siguiente Up envía ^[[A
(donde ^[
significa un carácter de escape, no la secuencia de dos caracteres circunflejo-corchete), Down envía ^[[B
, Right envía ^[[C
y Left envía ^[[D
. Los modificadores se indican con un punto y coma y un número, y en el caso de las teclas del cursor, con un 1
antes del punto y coma. El número 6
indica los modificadores Ctrl + Shift . Ver esta respuesta para más detalles.
Al pulsar Ctrl+Shift+Left el terminal envía ^[[1;6D
(recordemos que ^[
es un carácter de escape). El intérprete de comandos lee ^[[1
y, en ese momento, se da cuenta de que ninguno de sus enlaces de teclas comienza con estos tres caracteres. Así que se da por vencido (y puede emitir un pitido si está configurado para emitir un pitido cuando recibe una entrada no válida). Sigue leyendo y ve ;6D
que son caracteres de impresión ordinarios.
Para ver qué secuencia de escape envía su terminal para una determinada tecla o acorde de teclas, pulse Ctrl+V y luego el acorde clave. Ctrl+V ( ^V
) es una vinculación de teclas en los shells y otras aplicaciones de terminal que significa "tratar el siguiente carácter literalmente", y que hace que el carácter de escape principal de la secuencia de escape se inserte literalmente, seguido de los demás caracteres de la secuencia de escape (que son caracteres de impresión ordinarios). Si quieres enlazar ese acorde de teclas en tu shell u otra aplicación de terminal, necesitas enlazar esta secuencia de escape.
Como he señalado anteriormente, hay diferencias entre los terminales. Hay una norma de facto para los casos sencillos, pero no tanto cuando hay modificadores de por medio. Además, muchos terminales simplemente ignoran ciertos modificadores en determinadas teclas. Por ejemplo, en el terminal Big Sur, Ctrl+Shift+<em>cursor key</em> es indistinguible de <em>cursor key</em> por defecto; esto puede configurarse en las preferencias ("Perfiles" > "Teclado")). Iterm2 viene con más secuencias de escape fuera de la caja, incluyendo Ctrl+Shift+<em>cursor key</em> .
Más información:
AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.