Los teclados envían eventos a la computadora. Un evento dice "escanear código nnn abajo" o "escanear código nnn arriba". En el otro extremo de la cadena, las aplicaciones que se ejecutan en un terminal esperan una entrada en forma de secuencia de caracteres. (A menos que hayan solicitado acceso sin procesar, como lo hace el servidor X). Cuando presiona A, el teclado envía la información "código de escaneo 38 hacia abajo". El controlador de la consola busca su mapa de teclas y lo transforma en "carácter a
" (si no se presiona ninguna tecla modificadora).
Cuando presiona una tecla o combinación de teclas que no da como resultado un carácter, la información debe codificarse en términos de caracteres. Algunas teclas y combinaciones de teclas tienen los caracteres de control correspondientes, por ejemplo, Ctrl+ Aenvía el carácter ␁
(valor de byte 1), Returnenvía el carácter ␍
(Ctrl + M, valor de byte 13), etc. La mayoría de las teclas de función no tienen un carácter correspondiente y en su lugar envían Una secuencia de caracteres que comienza con el carácter ␛
(escape, byte value 27). Por ejemplo, la clave Upse traduce a la secuencia de escape ␛[A
(tres caracteres: escape, corchete abierto, A mayúscula).
El indicador de nombre de usuario en la consola es tonto y no comprende la mayoría de las secuencias de escape. No tiene las características de edición de línea e historial a las que está acostumbrado: las proporciona el shell, y hasta que inicie sesión, no tiene un shell. Entonces simplemente muestra la secuencia de escape. No hay glifo para el ␛
personaje, por lo que se muestra como ^[
. El ^
signo se usa tradicionalmente como prefijo para los caracteres de control, y escape se ^[
debe a su valor de byte: es el valor de byte [
, menos 64.
Si presiona Upen un indicador de shell, esto envía la misma secuencia de 3 caracteres a su shell. El intérprete interpreta esto como una secuencia de comando (generalmente para recuperar el elemento del historial anterior). Si presiona Ctrl+ y Vluego Upen un indicador de comandos de shell, esto inserta la secuencia de escape en el indicador: Ctrl+ Ves un comando para insertar el siguiente carácter literalmente en lugar de interpretarlo como un comando, por lo que el ␛
carácter no se interpreta como el inicio de una secuencia de escape .
Algunas teclas son solo modificadores y no se transmiten a las aplicaciones de terminal. Por ejemplo, cuando presiona Shift, esta información permanece en el controlador del terminal y se tiene en cuenta si presiona A, por lo que el controlador envía A
a la aplicación en lugar de a
.
Además, algunas teclas de función pueden no estar asignadas en su consola.
Para una vista similar en la GUI, vea ¿Qué es la meta clave de bash?
getty
ologin
, aunque no estoy seguro de por qué. La adivinación educada dice que la pantalla de impresión es interpretada especialmente por el núcleo por razones históricas. Sin embargo, no estoy 100% seguro de ninguno, excepto los modificadores.