Następna strona Poprzednia strona Spis treści

2. Ogólnie o klawiaturze

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 .


Następna strona Poprzednia strona Spis treści