KEYMAPS(5) File Formats Manual KEYMAPS(5) NAZWA keymaps - opisy tablic klawiaturowych dla loadkeys i dumpkeys OPIS Pliki te sa uzywane przez loadkeys(1) do modyfikowania tablic translacji uzywanych przez sterownik klawiatury. Pliki te moga byc generowane na podstawie tablic translacji przez program dumpkeys(1). Format plikow jest dosc podobny do formatu xmodmap(1). Plik sklada sie z linii charsetu, definicji klawiszy lub napisow, przeplecionych komentarzami. Komentarze rozpoczynaja sie od znakow ! lub # i trwaja do konca linii. Wszystko, co wystepuje po tych znakach, ignorowane. Prosze zauwazyc, ze komentarze nie musza zaczynac sie w pierwszej kolumnie jak w xmodmap(1). Skladnia tablicy klawiszy jest zorientowana liniowo; cala definicja musi zmiescic sie w pojedynczej linii logicznej. Jednak linie logiczne moga dzielic sie na wiele linii fizycznych dzieki zastosowaniu znaku odwrotnego ukosnika (\). PLIKI WLACZANE Tablica klawiaturowa moze wlaczac do siebie inne tablice klawiaturowe przy uzyciu skladni include "sciezkadopliku" DEFINICJE CHARSETOW Linia definiujaca zestaw znakow (charset) ma postac: charset "iso-8859-x" Definiuje ona, w jaki sposob interpretowac nastepujace po niej symbole akcji klawiaturowych (keysym). Na przyklad w iso-8859-1 symbol mu (lub micro) ma kod 0265, podczas gdy w iso-8859-7 litera mu ma kod 0354. PELNE DEFINICJE KODOW KLAWISZY Pelna linii definicji kodow klawisza ma postac: keycode keynumber = keysym keysym keysym... keynumber jest wewnetrznym numerem identyfikujacym klawisz, na ogol odpowiadajacym jego kodowi scancode. keynumber moze zostac podany w postaci dziesietnej, osemkowej lub szesnastkowej. Postac osemkowa jest poprzedzona zerem, a szesnastkowa prefiksem 0x. Kazdy z symboli keysym reprezentuje akcje klawiaturowa. Do pojedynczego klawisza mozna podwiazac do 256 takich akcji. Dostepne akcje zawieraja kody znakow lub ciagi znakow, przelaczanie konsol lub tablic klawiaturowych, restartowanie maszyny, itd. (pelna liste mozna uzyskac z dumpkeys(1) przez wydanie polecenia dumpkeys -l). Each keysym may be prefixed by a '+' (plus sign), in which case this keysym is treated as a "letter" and therefore affected by the "CapsLock" the same way as by "Shift" (to be correct, the CapsLock inverts the Shift state). The ASCII letters ('a'-'z' and 'A'-'Z') are made CapsLock'able by default. If Shift+CapsLock should not produce a lower case symbol, put lines like keycode 30 = +a A w pliku z tablica. To, ktora z akcji dla danego klawisza jest wybierana podczas jego wcisniecia, zalezy od modyfikatorow, ktore sa aktywne w danej chwili. Sterownik klawiatury wspiera 9 modyfikatorow. Modyfikatory te sa oznaczone (zdecydowanie arbitralnie) jako Shift, AltGr, Control, Alt, ShiftL, ShiftR, CtrlL, CtrlR oraz CapsShift. Z kazdym z tych modyfikatorow zwiazana jest waga bedaca potega dwojki, wedlug nastepujacej tabeli: modyfikator waga Shift 1 AltGr 2 Control 4 Alt 8 ShiftL 16 ShiftR 32 CtrlL 64 CtrlR 128 CapsShift 256 Efektywna akcja klawisza jest znajdywana przez dodawanie wag wszystkich modyfikatorow. Domyslnie zaden z nich nie jest uzywany, wiec podczas naciskania lub zwalniania klawisza pobierana jest akcja numer zero, czyli ta w pierwszej kolumnie linii definicji klawisza. Gdy uzyto na przyklad klawiszy Shift+Alt, uzyta zostaje akcja numer 9 (z 10 kolumny). Zmiana stanu uzywanych modyfikatorow moze byc osiagnieta przez powiazanie odpowiednich akcji klawiszowych z odpowiednimi klawiszami. Na przyklad przypisanie symbolu Shift do klawisza ustawia modyfikator Shift podczas naciskania tego klawisza i uniewaznia dzialanie tego modyfikatora podczas zwolnienia klawisza. Przypisanie AltGr_Lock do klawisza ustawia AltGr po nacisnieciu tego klawisza, a anuluje po ponownym jego nacisnieciu. (Domyslnie, Shift, AltGr, Control i Alt sa przypisane do klawiszy, ktore maja podobne oznaczenia; AltGr moze oznaczac prawy klawisz Alt). Nalezy zauwazyc, ze powinno sie zachowac daleko posunieta ostroznosc podczas przypisywania modyfikatorow do klawiszy. W przeciwnym wypadku moze sie to skonczyc nieuzywalna tablica klawiaturowa. Jesli na przyklad zdefiniuje sie klawisz jako Control w pierwszej kolumnie a zostawi reszte kolumn jako puste symbole (VoidSymbols), pojawi sie problem. Problem wystapi dlatego, ze nacisniecie klawisza wlacza modyfikator Control, a nastepne akcje beda pobierane z piatej kolumny (zobacz tabele powyzej). Tak wiec, jesli klawisz zostanie zwolniony, pobierana bedzie akcja z piatej kolumny. Jest ona pustym symbolem, wiec nic sie nie dzieje. Oznacza to, ze modyfikator Control jest wciaz aktywny, chociaz klawisz zostal puszczony. Ponowne naciskanie i zwalnianie klawisza nie daje zadnych rezultatow. Aby temu zapobiec, nalezy zawsze definiowac wszystkie kolumny tak, aby mialy ten sam symbol modyfikujacy. Istnieje do tego poreczna skrotowa notacja, o ktorej nizej. Symbole keysym moga byc podawane w notacji dziesietnej, osemkowej, szesnastkowej lub symbolicznej. Numeryczne notacje uzywaja tego samego formatu co keynumber. Notacja unikodowa sklada sie z "U+", po ktorym wystepuja cyfry szesnastkowe. Notacja symboliczna jest podobna do tej z xmodmap(1). Zauwazalne roznice wystepuja dla symboli numerycznych. Symbole "0", ..., "9" w xmodmap(1) sa zamieniane na odpowiadajace slowa "zero", "one", ..., "nine", aby zapobiec niejednoznacznosciom z notacja numeryczna. Powinno sie zaznaczyc, ze uzywanie notacji numerycznej dla symboli keysym jest wybitnie nieprzenosne, jako ze numery akcji klawiszy moga sie roznic z jednej wersji jadra na druga, z czego wynika powyzsze. Notacja ta moze byc uzywana tylko jesli wiadomo, ze istnieje okreslona akcja klawiaturowa w uzywanym jadrze, dla ktorej biezaca wersja loadkeys(1) nie ma nazwy symbolicznej. Jest wiele notacji skrotowych, poprawiajacych czytelnosc, a redukujacych pracochlonnosc i prawdopodobienstwo bledow przy wpisywaniu. Przede wszystkim mozna podac linie specyfikacji tablicy w postaci keymaps 0-2,4-5,8,12 aby wskazac, ze te linie tablicy klawiaturowej nie beda wyszczegolnialy wszystkich 256 kolumn, lecz tylko jedna ze wskazanych. (Na przyklad sam Shift, AltGr, Control, Control+Shift, Alt i Control+Alt, czyli 7 zamiast 256 kolumn). Jesli nie poda sie takiej linii, zdefiniowane beda tablice klawiaturowe 0-M, gdzie M+1 to maksymalna liczba wpisow w jakiejkolwiek linii definicyjnej. Nastepnie mozna porzucic wszelkie koncowe wpisy pustych symboli z definicji klawisza. Pusty symbol oznacza akcje klawiaturowa, ktora nie powoduje efektu. Na przyklad, aby zdefiniowac klawisz numer 30 do wyprowadzania 'a' bez shiftu i 'A' z shiftem, niczego zas przy wcisnietym AltGr i innych modyfikatorach, mozna napisac keycode 30 = a A zamiast bardziej "gadatliwego" keycode 30 = a A VoidSymbol VoidSymbol \ VoidSymbol VoidSymbol VoidSymbol ... Jako dodatkowe udogodnienie, zwykle moznz uzywac jeszcze innych definicji. Jesli wprowadzona zostanie linia definicji klawisza z tylko jednym kodem akcji po znaku rownosci, to ma to specjalne znaczenie. Jesli kod (numeryczny lub symboliczny) nie jest litera ASCII, znaczy to, ze kod jest w drodze wyjatku powielany na wszystkie zdefiniowane kolumny. Jesli, z drugiej strony, kod jest znakiem ASCII w zakresie 'a', ..., 'z' lub 'A', ..., 'Z', to tworzone sa nastepujace definicje dla roznych kombinacji modyfikatorow. (Tabela pokazuje dwa mozliwe przypadki: zarowno z pojedynczym kodem akcji dla malej litery, oznaczonej przez 'x', jak i dla duzej litery, oznaczonej przez 'Y'.) modyfikator symbol none x Shift X AltGr x Shift+AltGr X Control Control_x Shift+Control Control_x AltGr+Control Control_x Shift+AltGr+Control Control_x Alt Meta_x Shift+Alt Meta_X AltGr+Alt Meta_x Shift+AltGr+Alt Meta_X Control+Alt Meta_Control_x Meta_Control_y Shift+Control+Alt Meta_Control_x Meta_Control_y AltGr+Control+Alt Meta_Control_x Meta_Control_y Shift+AltGr+Control+Alt Meta_Control_x Meta_Control_y DEFINICJE POJEDYNCZYCH MODYFIKATOROW Wszystkie poprzednie postacie linii definicji klawiszy zawsze definiowaly wszystkie M+1 mozliwych kombinacji modyfikatorow, niezaleznie od tego, czy taka ilosc rzeczywistych kodow akcji, czy nie. Istnieje jednak wariant skladni definicji sluzacy do definiowania pojedynczych akcji dla konkretnej kombinacji modyfikatorow klawisza. Jest to szczegolnie przydatne, jesli ladowana jest tablica klawiaturowa, ktora nie odpowiada potrzebom jedynie przy niektorych kombinacjach modyfikatorow, jak np. AltGr+klawisze funkcyjne. Mozna wowczas utworzyc maly lokalny plik przedefiniowujacy tylko te kombinacje modyfikatorow i ladowac go po zaladowaniu pliku glownego. Skladnia tego formatu jest nastepujaca: { plain | } keycode keynumber = keysym n.p., plain keycode 14 = BackSpace control alt keycode 83 = Boot alt keycode 105 = Decr_Console alt keycode 106 = Incr_Console Uzycie "plain" zdefiniuje tylko podstawowy wpis klawisza (np. ten, przy ktorym nie sa wlaczone zadne modyfikatory), bez dotykania powiazan innych kombinacji tego klawisza. DEFINICJE LANCUCHOW Oprocz komentarzy i linii definicji klawiszy, pliki tablic klawiaturowych moga zawierac definicje napisow. Sa one uzywane do definiowania kodow akcji wysylanych przez poszczegolne klawisze funkcyjne. Skladnia definicji napisu to: string keysym = "text" tekst moze zawierac literalne znaki, kody osemkowe w formacie odwrotnego ukosnika, za ktorym wystepuje do trzech cyfr osemkowych, a takze trzy sekwencje eskejpowe \n, \\, i \", odpowiednio, dla nowej linii, odwrotnego ukosnika i cytatu. DEFINICJE ZLOZONE Moga rowniez wystepowac definicje zlozone. Maja one skladnie compose 'znak' 'znak' to 'znak' i opisuja, w jaki sposob dwa bajty sa polaczone, tworzac trzeci (gdy jest uzywany samodzielny akcent lub klawisz kombinowany). Wykorzystuje sie to do liter akcentowanych i podobnych znakow na standardowej klawiaturze. SKROTY Z kbd-0.96 i pozniejszymi mozna uzywac roznych skrotow. strings as usual Definiuje zwykle wartosci dla lancuchow (ale nie dla klawiszy, do ktorych sa one przypisane. compose as usual for "iso-8859-1" Definiuje zwykle kombinacje zlozone. Aby znalezc, ktore symbole keysym sa dostepne do uzytku w tablicach klawiaturowych, nalezy uzyc polecenia dumpkeys --long-info Niestety, obecnie nie ma opisu, co ktory symbol robi. Trzeba to zgadywac z nazwy, wydedukowanej ze zrodel jadra. PRZYKLADY (Trzeba uwazac, by uzyc linii "keymaps", takiej jak "keymaps 0-15" albo pierwsza linia w `dumpkeys` itp.) Nastepujacy wpis zamienia lewy klawisz Control i CapsLock: keycode 58 = Control keycode 29 = Caps_Lock Klawisz o numerze 58 jest normalnie Caps Lockiem, a klawisz numer 29 jest zwykle klawiszem Control. Nastepujacy wpis ustawia milsze zachowanie klawiszy Shift i Caps Lock, jak w starych maszynach do pisania. To znaczy, wcisniecie klawiszu Caps Lock jeden, lub wiecej razy, wlacza klawiature w stan CapsLock, a wcisniecie dowolnego z Shiftow wylacza go. keycode 42 = Uncaps_Shift keycode 54 = Uncaps_Shift keycode 58 = Caps_On Nastepujacy wpis ustawia uklad bloku edycyjnego na rozszerzonych klawiaturach, aby byly bardziej podobne do terminali serii VT200: keycode 102 = Insert keycode 104 = Remove keycode 107 = Prior shift keycode 107 = Scroll_Backward keycode 110 = Find keycode 111 = Select control alt keycode 111 = Boot control altgr keycode 111 = Boot Oto przyklad na przypisanie napisu "du\ndf\n" do klawisza AltGr-D. Uzywamy "wolnego" kodu akcji F100, nie przypisywanego normalnie do zadnego klawisza. altgr keycode 32 = F100 string F100 = "du\ndf\n" ZOBACZ TAKZE loadkeys(1), dumpkeys(1), showkey(1), xmodmap(1) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Przemek Borys , Andrzej Krzysztofowicz i Robert Luberda Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . kbd 24 kwietnia 1998 KEYMAPS(5)