Le tastiere inviano eventi al computer. Un evento dice "scan code nnn down" o "scan code nnn up". All'altra estremità della catena, le applicazioni in esecuzione in un terminale si aspettano input sotto forma di una sequenza di caratteri. (A meno che non abbiano richiesto l'accesso non elaborato, come fa il server X.) Quando si preme A, la tastiera invia l'informazione "scan code 38 down". Il driver della console cerca la mappa dei tasti e la trasforma in "carattere a
" (se non viene premuto alcun tasto modificatore).
Quando si preme un tasto o una combinazione di tasti che non genera un carattere, le informazioni devono essere codificate in termini di caratteri. Alcune chiavi e combinazioni di tasti hanno caratteri di controllo corrispondenti, ad es. Ctrl+ AInvia il carattere ␁
(valore byte 1), Returninvia il carattere ␍
(Ctrl + M, valore byte 13), ecc. La maggior parte dei tasti funzione non ha un carattere corrispondente e invece invia una sequenza di caratteri che inizia con il carattere ␛
(escape, valore byte 27). Ad esempio, la chiave Upviene tradotta nella sequenza di escape ␛[A
(tre caratteri: escape, parentesi aperta, maiuscola A).
Il prompt dei nomi utente sulla console è stupido e non comprende la maggior parte delle sequenze di escape. Non ha le funzionalità di edizione della linea e cronologia a cui sei abituato: sono fornite dalla shell e fino a quando non accedi non hai una shell. Quindi visualizza semplicemente la sequenza di escape. Non esiste un glifo per il ␛
personaggio, quindi viene visualizzato come ^[
. Il ^
segno è tradizionalmente usato come prefisso per i caratteri di controllo e escape è ^[
dovuto al suo valore di byte: è il valore di byte di [
, meno 64.
Se si preme Upal prompt della shell, questo invia la stessa sequenza di 3 caratteri alla shell. La shell lo interpreta come una sequenza di comandi (in genere per richiamare l'elemento della cronologia precedente). Se si preme Ctrl+ Vquindi Upal prompt della shell, questo inserisce la sequenza di escape al prompt: Ctrl+ Vè un comando per inserire il carattere successivo letteralmente invece di interpretarlo come comando, quindi il ␛
carattere non viene interpretato come l'inizio di una sequenza di escape .
Alcuni tasti sono solo modificatori e non vengono trasmessi ad applicazioni terminali. Ad esempio, quando si preme Shift, queste informazioni rimangono nel driver del terminale e vengono prese in considerazione se si preme A, quindi il driver invia A
all'applicazione anziché a
.
Inoltre, alcuni tasti funzione potrebbero non essere mappati nella tua console.
Per una vista simile nella GUI, vedi Qual è la meta chiave di bash?
getty
ologin
, anche se non sono sicuro del perché. Immaginazione istruita dice che lo schermo di stampa è interpretato appositamente dal kernel per ragioni storiche. Non sono sicuro al 100% su nessuno, tranne i modificatori.