Klawiatury wysyłają zdarzenia do komputera. Wydarzenie mówi „skanuj kod nnn w dół” lub „skanuj kod nnn w górę”. Na drugim końcu łańcucha aplikacje działające w terminalu oczekują danych wejściowych w postaci sekwencji znaków. (Chyba że zażądali surowego dostępu, tak jak robi to serwer X.) Po naciśnięciu Aklawiatura wysyła informację „skanuj kod 38 w dół”. Sterownik konsoli wyszukuje mapę klawiszy i przekształca ją w „znak a
” (jeśli nie zostanie naciśnięty żaden klawisz modyfikujący).
Po naciśnięciu klawisza lub kombinacji klawiszy, która nie daje znaku, informacja musi zostać zakodowana w postaci znaków. Kilka klawiszy i kombinacji klawiszy ma odpowiadające znaki sterujące, np. Ctrl+ AWysyła znak ␁
(wartość bajtu 1), Returnwysyła znak ␍
(Ctrl + M, wartość bajtu 13) itp. Większość klawiszy funkcyjnych nie ma odpowiedniego znaku i zamiast tego wysyła sekwencja znaków rozpoczynająca się od znaku ␛
(ucieczka, wartość bajtu 27). Na przykład klucz Upjest tłumaczony na sekwencję zmiany znaczenia ␛[A
(trzy znaki: escape, otwarty nawias, wielka litera A).
Monit o nazwę użytkownika w konsoli jest głupi i nie rozumie większości sekwencji specjalnych. Nie ma funkcji edycji linii i historii, do których jesteś przyzwyczajony: są one dostarczane przez powłokę i dopóki się nie zalogujesz, nie masz powłoki. Więc po prostu wyświetla sekwencję ucieczki. Dla ␛
znaku nie ma glifu , więc jest wyświetlany jako ^[
. ^
Znak jest tradycyjnie stosowany jako przedrostek dla znaków sterujących, a ucieczka jest ^[
ze względu na jej wartość bajtów: to wartość bajt [
, minus 64.
Jeśli naciśniesz Uppo znaku zachęty powłoki, spowoduje to wysłanie tej samej 3-znakowej sekwencji do powłoki. Powłoka interpretuje to jako sekwencję poleceń (zwykle w celu przywołania poprzedniego elementu historii). Jeśli naciśniesz Ctrl+ Vwtedy Uppo znaku zachęty powłoki, wstawi to sekwencję zmiany znaczenia w wierszu polecenia: Ctrl+ Vto polecenie, aby wstawić dosłownie następny znak zamiast interpretować go jako polecenie, więc ␛
znak nie jest interpretowany jako początek sekwencji ucieczki .
Niektóre klucze są jedynie modyfikatorami i nie są przesyłane do aplikacji terminalowych. Na przykład po naciśnięciu Shiftta informacja pozostaje w sterowniku terminalu i jest brana pod uwagę, jeśli następnie naciśniesz A, więc sterownik A
zamiast tego przesyła do aplikacji a
.
Ponadto niektóre klawisze funkcyjne mogą nie być mapowane w konsoli.
Aby zobaczyć podobny widok w GUI, zobacz Co to jest meta-klucz bash?
getty
lublogin
, chociaż nie jestem pewna dlaczego. Uczone zgadywanie mówi, że ekran drukowania jest interpretowany specjalnie przez jądro ze względów historycznych. Nie jestem jednak w 100% pewien, z wyjątkiem modyfikatorów.