linux733 XMGGOSN223NUEXGYMT4POGUEYRI2NO6W2GMNNHA



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:
Jest on blisko zwiazany ze sprzetem, dlatego tez, przy odczytwaniu pojedynczego klawisza musimy wykonac duzo sprawdzen w rodzaju czy jest nacisniety Shift, stan klawisza NumLock,CapsLock,w przypadku innych klawiatur rowniez klawisz Meta itp. Podobnie przy wyprowadzaniu znakow na ekran.
Drugi powod to fakt, ze tworcy Linux'a chcieli dac uzytkownikowi mozliwosc uzywania wirtualnych konsol (lub, jak kto woli, wirtualnych terminali). Pojawil sie od razu problem, w jaki sposob przelaczac sie miedzy owymi konsolami tak aby bylo to niezauwazalne gdziekolwiek indziej. To (tzn. rozpoznanie znakow ktore np. maja spowodowac zmiane konsoli) powinno byc robione nawet wczesniej niz dane trafia do dyscypliny linii,bo my wlasciwie nie wiemy co dyscplina linii zrobi z odczytanymi znaczkami.

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:
Nacisnelismy klawisz
Zostalo zgloszone przerwanie klawiatury
keysym= key_map[keycode]
Wez typ klawisza o kodzie keysym
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














Wyszukiwarka

Podobne podstrony:
Linux714 (3)
Linux714
Linux735
linux721
Linux712 (4)
Linux736 (4)
Linux736 (3)
Linux722 (4)
Linux713 (2)

więcej podobnych podstron