Konsola Do spisu tresci tematu 7

Konsola

Konsola (ang. console) jest jednym z 4 rodzajow sterownikow (ang. drivers) urzadzen terminalowych zaimplementowanych w Linux'ie. Jest to sterownik najbardziej zlozony z 2 powodow: Autorzy Linux'a z drugim problemem poradzili sobie w nastepujacy sposob. Otoz najpierw stworzyli bardzo "regularne" kody klawiszy. Ich regularnosc polega na tym, ze najstarsze bity kodu klawisza opisuja jego typ. Ponadto w jest zdefiniowana 16-elementowa tablica wskaznikow do funkcji, kazda funkcja w tej tablicy odpowiada typowi klawisza. Dodatkowo jest zdefiniowana tablica odwzorowan kodow pozycycjnych (ang. scan code) w kody 2-bajtowe. W ten sposob my mozemy dokonac wstepnej obrobki klawiszy zanim stana sie one widoczne gdziekolwiek indziej. Tak wiec algorytm odczytwania klawisza jest nastepujacy:
  1. Nacisnelismy klawisz
  2. Zostalo zgloszone przerwanie klawiatury
  3. keysym= key_map[keycode]
  4. Wez typ klawisza o kodzie keysym
  5. Wywolaj odpowiednia funkcje zalezna od kodu podajac jej jako parametr keysym
Zwykle funkcja wymieniona w ostatnim punkcie robi bardzo niewiele i (prawie) zawsze wstawia dodatkowa struktur do kolejki "tqueue" (patrz wczesniej - tam, gdzie sa opisane procedury obslugi przerwan w tym temacie) i dopiero funkcja z tej struktury robi wlasciwa obsluge przerwan.

Przyznam sie szczerze, ze jedynym powodem omawiania konsoli byla ciekawosc wlasnie tego jak Linux' potrafi ukryc te specjalne klawisze przed reszta swiata nie tracac niz z elastycznosci - prosze zauwazyc ze, gdy pracujemy pod systemem X-Windows,uzywajac fvwm , to klawisze Alt-Fn maja inne znaczenie, niz gdy pracujemy z normalna konsola, po prostu wtedy jest uzywana inna tablica odwzorowan.


Autor: K.Jonca