Naciskasz klawisz, a kontroler klawiatury wysyła kody skanowe do
sterownika klawiatury jądra. Niektóre klawiatury można programować,
ale przeważnie kody klawiszy odpowiadające klawiszom są stałe.
Sterownik klawiatury jądra przesyła po prostu cokolwiek otrzymuje
do programu aplikacji, gdy ta jest w trybie skanowania kodów,
na przykład podczas działania X. W przeciwnym razie przekłada
on strumień kodów skanowych na kody klawiszy, odpowiadające zdarzeniom
naciśnięcia i zwolnienia klawisza (pojedyncze naciśnięcie klawisza
może wytworzyć do sześciu kodów skanowych).
Kody te [klawiszy] są przesyłane do programu aplikacji gdy znajduje
się on w trybie kodów klawiszy (używane, na przykład, przez
showkey). W przeciwnym razie, owe kody klawiszy porównywane są
z rozkładem klawiatury, i znaleziony tam znak lub ciąg znaków jest
przesyłany do aplikacji, bądź następuje wykonanie opisanej tam
czynności.
(Na przykład, jeśli naciśnie się i zwolni klawisz a, klawiatura
wysyła kody skanowe 0x1e i 0x9e, przekształcane są one na kody klawiszy
30 i 158, a potem przesyłane jako 0141, kod ASCII lub Latin-1 litery 'a';
jeśli naciśnie się i zwolni Delete, klawiatura wysyła kody skanowe
0xe0 0x53 0xe0 0xd3, przekształcane na kody klawiszy 111 i 239, a potem
przesyłane jako czterosymbolowa sekwencja ESC [ 3 ~, wszystko
to zakładając amerykański układ klawiatury jako domyślny (przykładem
kombinacji klawiszy której przypisana jest czynność jest Ctrl-Alt-Del).
Tłumaczenia pomiędzy nieczęstymi kodami skanowymi i klawiszy można
dokonać używając narzędzia setkeycodes - tylko bardzo nieliczni
będą go potrzebować. Tłumaczenia pomiędzy kodami klawiszy i znakami bądź
ciągami znaków lub czynności, to jest układem klawiatury, dokonuje się
przy pomocy narzędzia loadkeys.
Po szczegóły patrz getkeycodes(8), setkeycodes(8), dumpkeys(1), loadkeys(1).
Tam gdzie w powyższym opisie piszę "przesłane do aplikacji", znaczy to rzeczywiście "przesłane do sterownika terminala". To jest, dalsze przetwarzanie jest bardzo podobne do przetwarzania tekstu który odbierany jest na złączu szeregowym. Szczegóły tego przetwarzania ustala program .