The Linux Keyboard HOWTO Andries Brouwer, aeb@cwi.nl v2.5, 27 sierpie 1997 Wersja polska: Gwidon S. Naskrent naskrent@hoth.amu.edu.pl v1.1, 29 X 1997 Notka ta zawiera informacje na temat klawiatury i konsoli w Linuxie, oraz uywania znakw spoza ASCII. Opisuje ona wersj 2.0 Linuxa. Doku- ment ten zosta napisany w standardzie ISO-8859-2. Orygina tego doku- mentu znajduje si pod adresem ______________________________________________________________________ Spis treci 1. Uyteczne programy 2. Oglnie o klawiaturze 3. Oglnie o konsoli 4. Kasowanie terminala 4.1 Sprztowe kasowanie klawiatury 5. Delete i Backzspace 5.1 Jak powiedzie Unixowi jakiego znaku chcesz uywa eby skasowa ostatnio napisany znak? 5.1.1 "Kiedy getty dobrze oddawao DEL i BS, ale teraz si popsuo" 5.1.2 "Login zachowuje si inaczej przy pierwszej i drugiej prbie logowania" 5.2 Jak powiedziec Linuxowi jaki kod wysya po naciniciu klawisza 5.2.1 Dlaczego klawisz Backspace nie wysya domylnie wstecznej spacji? 5.3 Jak nakaza X zamian Delete i Backspace 5.4 Jak powiedzie emacsowi co robi gdy otrzyma Delete lub wsteczn spacj 5.5 Jak nakaza emacsowi zamienienie Delete i Backspace 5.6 Jak nakaza kermitowi zamienienie Delete i Backspace 5.7 Jak poinformowa xterm o twoich ulubionych trybach tty 5.8 Jak poinformowa xmosaic e klawisz Backspace wypisuje Del 5.9 Lepsze rozwizanie dla programw uywajcych Motifa, jak netscape 5.10 Co z termcap i terminfo? 6. Zestawy znakw konsoli 7. Przeczanie konsoli 7.1 Zmiana numeru Wirtualnych Konsoli 8. Ctrl-Alt-Del i inne specjalne kombinacje klawiszy 8.1 Ctrl-Alt-Del (przeadowanie) 8.2 Inne kombinacje 8.3 Kombinacje w X 8.4 Kombinacje Dosemu 8.5 Skadanie symboli 9. Rne waciwoci konsoli 10. Jak wyj z trybu surowego 11. Diody na klawiaturze 12. Zmienna TERM 12.1 Terminfo 13. Jak zmusi inne programy do dziaania ze znakami spoza ASCII 14. Co dokadnie robi XFree86-2.1 podczas inicjalizacji ukadu klawiatury? 15. Niecodzienne klawisze i klawiatury 16. Przykady uycia loadkeys i xmodmap 16.1 "Mog uywa tylko jednego palca do pisania" 17. Zmiana trybu ekranowego 17.1 Instrukcje co do uywania resizecons 18. Zmiana czstoci powtarzania klawiszy 19. Przewijanie 20. Wygaszanie ekranu 21. Zrzuty ekranu 22. Niektre waciwoci vt100 - tryb klawiszy aplikacji 23. Niekompatybilo sprztowa ______________________________________________________________________ 1. Uyteczne programy Ponisze pakiety zawieraj programy odnoszce si do klawiatury lub konsoli: kbd-0.90.tar.gz zawiera loadkeys, dumpkeys, showkey, setmetamode, setleds, setfont, showfont, mapscrn, kbd_mode, chvt, resizecons, disalloc, getkeycodes, setkeycodes. util-linux-2.6 zawiera setterm, kbdrate. (Tak, more w util-linux 2.6 zrzuca core z powodu konfliktu nazw. Zachowaj swoj star kopi, albo uywaj util-linux-2.5, albo zmie 'savetty' na shutils-1.12 zawiera stty. open-1.4.tgz zawiera open (ktre powinno si przemianowa na openvt. Patrz te dynamic-vc-1.1.tar.gz). SVGATextMode-1.6.tar.gz zawiera SVGATextMode, program ktry zastpuje stare resizecons Dystrybucja X zawiera xmodmap, xset, kbd_mode (patrz te X386keybd(1) co do sytuacji pod XFree86 1.3, oraz Xserver(1) co do rozszerzenia XKEYBOARD pod X11R6). termcap-2.0.8.tar.gz zawiera termcap, star baz danych waciwoci terminala. ncurses-1.9.9e.tar.gz zawiera baz termlib ktra zastpuje termcap (wiele programw jednak cigle uywa termcap). Patrz loadkeys(1), setleds(1), setmetamode(1) co do kodw wysyanych przez rne klawisze i ustawiania diod poza X. Pod X, uyj xmodmap(1). Patrz setfont(8) co do adowania czcionek konsoli. Wielu ludzi woli zaadowa jak czcionk w rodzaju iso01.f16, poniewa domylna jest czcionk sprztow karty graficznej, i czsto jest to czcionka "Code Page 437", w ktrej brakuje akcentowanych znakw i innych symboli z zestawu Latin-1. Patrz setterm(1), kbdrate(8) co do waciwoci takich jak kolory ta i pisma, wygaszanie ekranu, szybko powtarzania klawiszy - wszystko poza X. Pod X, patrz xset(1), te co do dwiku przy naciniciu klawisza i gonoci dzwonka. Plik /etc/termcap definiuje Esc-sekwencje dla wielu programw ktre odnosz si do konsoli (lub innego terminala). Bardziej nowoczesna wersja znajduje si w /usr/lib/terminfo. (Patrz terminfo(5). Pliki terminfo s kompilowane kompilatorem terminfo /usr/lib/terminfo/tic, patrz tic(1). Ich zawarto obejrze mona uywajc programu infocmp, patrz infocmp(1). Sekwencje konsoli linuxowej opisane s w console_codes(4). 2. Oglnie o klawiaturze Naciskasz klawisz, a kontroler klawiatury wysya kody skanowe do sterownika klawiatury jdra. Niektre klawiatury mona programowa, ale przewanie kody klawiszy odpowiadajce klawiszom s stae. Sterownik klawiatury jdra przesya po prostu cokolwiek otrzymuje do programu aplikacji, gdy ta jest w trybie skanowania kodw, na przykad podczas dziaania X. W przeciwnym razie przekada on strumie kodw skanowych na kody klawiszy, odpowiadajce zdarzeniom nacinicia i zwolnienia klawisza (pojedyncze nacinicie klawisza moe wytworzy do szeciu kodw skanowych). Kody te [klawiszy] s przesyane do programu aplikacji gdy znajduje si on w trybie kodw klawiszy (uywane, na przykad, przez showkey). W przeciwnym razie, owe kody klawiszy porwnywane s z rozkadem klawiatury, i znaleziony tam znak lub cig znakw jest przesyany do aplikacji, bd nastpuje wykonanie opisanej tam czynnoci. (Na przykad, jeli nacinie si i zwolni klawisz a, klawiatura wysya kody skanowe 0x1e i 0x9e, przeksztacane s one na kody klawiszy 30 i 158, a potem przesyane jako 0141, kod ASCII lub Latin-1 litery 'a'; jeli nacinie si i zwolni Delete, klawiatura wysya kody skanowe 0xe0 0x53 0xe0 0xd3, przeksztacane na kody klawiszy 111 i 239, a potem przesyane jako czterosymbolowa sekwencja ESC [ 3 ~, wszystko to zakadajc amerykaski ukad klawiatury jako domylny (przykadem kombinacji klawiszy ktrej przypisana jest czynno jest Ctrl-Alt-Del). Tumaczenia pomidzy nieczstymi kodami skanowymi i klawiszy mona dokona uywajc narzdzia setkeycodes - tylko bardzo nieliczni bd go potrzebowa. Tumaczenia pomidzy kodami klawiszy i znakami bd cigami znakw lub czynnoci, to jest ukadem klawiatury, dokonuje si przy pomocy narzdzia loadkeys. Po szczegy patrz getkeycodes(8), setkeycodes(8), dumpkeys(1), loadkeys(1). Tam gdzie w powyszym opisie pisz "przesane do aplikacji", znaczy to rzeczywicie "przesane do sterownika terminala". To jest, dalsze przetwarzanie jest bardzo podobne do przetwarzania tekstu ktry odbierany jest na zczu szeregowym. Szczegy tego przetwarzania ustala program . 3. Oglnie o konsoli I odwrotnie, kiedy wypisujesz co na konsol, najpierw podpada to pod standardowe przetwarzanie tty, a potem dostarczane jest sterownikowi konsoli. Sterownik konsoli emuluje vt100 i przekada dane wejciowe aby rozpozna Esc-sekwencje vt100 (ruchu kursora, czyszczenia ekranu itp.) Znaki ktre nie s czci Esc-sekwencji s najpierw przetwarzane na Unicode, uywajc jednej z czterech tablic odwzorowa jeli konsola nie bya od pocztku w trybie UTF-8, potem odnoszone do tabeli opisujcej zaleno midzy wartociami Unicode i pozycjami w czcionce, a uzyskane omio- lub dziewiciobitowe indeksy zapisywane s w pamici ekranu, gdzie powoduj wywietlenie ksztatw znakw znalezionych w ROMie znakowym karty graficznej. Do ROMu znakowego mona zaadowa wasne czcionki uywajc setfont, zaadowa odpowiadajc tablic odwzorowa Unicode uywajc loadunimap, i zaadowa tablic odwzorowa uytkownika uywajc mapscrn. Wicej szczegw poniej. Istnieje wiele konsol (zwanych Wirtualnymi Konsolami lub Wirtualnymi Terminalami) ktre dziel ten sam ekran. Moesz ich uywa jako oddzielnych urzdze, albo uruchamiajc na nich oddzielne sesje logowania, albo po prostu przesyajc na nie jakie dane wyjciowe z pocztku czy koca system log. Patrz niej ("Przeczanie konsol") co do tego jak je ustawia i przecza si midzy nimi. 4. Kasowanie terminala Na ekranie s mieci, a wszystkie nacinicia klawiszy daj w efekcie znaki do rysowania ramek. Co robi? Wiele programw przerysuje ekran po naciniciu ^L. Moe to pomc w sytuacji gdy na ekranie znajduj si mieci z modemu lub nadany komunikat. Komenda clear czyci ekran. Komenda reset kasuje sterownik konsoli. Pomaga to w sytuacji gdy ekran peen jest dziwnych znakw graficznych, a take jeli skurczy si do jednej linii na dole. Jeli nie masz tej komendy, bd jeli robi ona co innego, stwrz wasn dodajc ponisze dwie linie do pliku wykonywalnego reset w swojej ciece: #!/bin/sh echo -e \\033c to jest, masz zamiar posa dwa znaki: Esc-c, na konsol. Dlaczego ekran czasami si miesza i wywietlane jest 24 lub jedna linia, zamiast zwykych 25? C, gwnym winowajc jest tutaj TERM=vt100 (albo jaki inny terminal z 24 liniami) zamiast TERM= linux przy czeniu si zdalnie. Jeli stanie si to na /dev/tty2 napisz: % cat > /dev/tty2 ^[c ^D na jakie innej WK (gdzie wpisujesz cztery symbole do cat: Esc, c, Enter, Ctrl-D) i odwie ekran na /dev/tty2 (moliwie uywajc ^L), co przywrci porzdek. Oczywicie staym rozwizaniem jest uywanie odpowiedniego kawaka termcap lub terminfo. Dlaczego tak si dzieje e czasami dostajesz mas znakw do rysowania ramek, np. po wysaniu na ekran pliku binarnego za pomoc cat ? Istnieje wiele Esc-sekwencji ktre zmieniaj zestaw znakw, a twj plik moe przypadkiem zawiera niektre z nich. Esc c to oglne przekasowanie, lekarstwo na wszystko, ale jeeli wiesz dokadnie co poszo nie tak, moesz to naprawi b...
Porozmawiajmy.TV