KEYMAPS(5) | File Formats Manual | KEYMAPS(5) |
NAZWA¶
keymaps - opisy tablic klawiaturowych dla loadkeys i dumpkeys
OPIS¶
Pliki te są używane przez loadkeys(1) do modyfikowania tablic translacji używanych przez sterownik klawiatury. Pliki te mogą być generowane na podstawie tablic translacji przez program dumpkeys(1).
Format plików jest dość podobny do formatu xmodmap(1). Plik składa się z linii charsetu, definicji klawiszy lub napisów, przeplecionych komentarzami.
Komentarze rozpoczynają się od znaków ! lub # i trwają do końca linii. Wszystko, co występuje po tych znakach, ignorowane. Proszę zauważyć, że komentarze nie muszą zaczynać się w pierwszej kolumnie jak w xmodmap(1).
Składnia tablicy klawiszy jest zorientowana liniowo; cała definicja musi zmieścić się w pojedynczej linii logicznej. Jednak linie logiczne mogą dzielić się na wiele linii fizycznych dzięki zastosowaniu znaku odwrotnego ukośnika (\).
PLIKI WŁĄCZANE¶
Tablica klawiaturowa może włączać do siebie inne tablice klawiaturowe przy użyciu składni
DEFINICJE CHARSETÓW¶
Linia definiująca zestaw znaków (charset) ma postać:
charset "iso-8859-x"
Definiuje ona, w jaki sposób interpretować następujące po niej symbole akcji klawiaturowych (keysym). Na przykład w iso-8859-1 symbol mu (lub micro) ma kod 0265, podczas gdy w iso-8859-7 litera mu ma kod 0354.
PEŁNE DEFINICJE KODÓW KLAWISZY¶
Pełna linii definicji kodów klawisza ma postać:
keycode keynumber = keysym keysym keysym...
keynumber jest wewnętrznym numerem identyfikującym klawisz, na ogół odpowiadającym jego kodowi scancode. keynumber może zostać podany w postaci dziesiętnej, ósemkowej lub szesnastkowej. Postać ósemkowa jest poprzedzona zerem, a szesnastkowa prefiksem 0x.
Każdy z symboli keysym reprezentuje akcję klawiaturową. Do pojedynczego klawisza można podwiązać do 256 takich akcji. Dostępne akcje zawierają kody znaków lub ciągi znaków, przełączanie konsol lub tablic klawiaturowych, restartowanie maszyny, itd. (pełną listę można uzyskać z dumpkeys(1) przez wydanie polecenia dumpkeys -l).
Każdy z symboli keysym może zostać poprzedzony znakiem |"+" (plus). W tym wypadku keysym jest traktowany jako "litera", i na jego wartość "CapsLock" wpływa w ten sam sposób jak "Shift" (dokładniej, CapsLock odwraca stan Shift). Znaki ASCII ("a"-"z" i "A"-"Z") są domyślnie CapsLock-owalne. Jeśli Shift+CapsLock nie powinny produkować "małych" liter, należy użyć linii o następującej semantyce
keycode 30 = +a A
w pliku z tablicą.
To, która z akcji dla danego klawisza jest wybierana podczas jego wciśnięcia, zależy od modyfikatorów, które są aktywne w danej chwili. Sterownik klawiatury wspiera 9 modyfikatorów. Modyfikatory te są oznaczone (zdecydowanie arbitralnie) jako Shift, AltGr, Control, Alt, ShiftL, ShiftR, CtrlL, CtrlR oraz CapsShift. Z każdym z tych modyfikatorów związana jest waga będąca potęgą dwójki, według następującej 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 modyfikatorów. Domyślnie żaden z nich nie jest używany, więc podczas naciskania lub zwalniania klawisza pobierana jest akcja numer zero, czyli ta w pierwszej kolumnie linii definicji klawisza. Gdy użyto na przykład klawiszy Shift+Alt, użyta zostaje akcja numer 9 (z 10 kolumny).
Zmiana stanu używanych modyfikatorów może być osiągnięta przez powiązanie odpowiednich akcji klawiszowych z odpowiednimi klawiszami. Na przykład przypisanie symbolu Shift do klawisza ustawia modyfikator Shift podczas naciskania tego klawisza i unieważnia działanie tego modyfikatora podczas zwolnienia klawisza. Przypisanie AltGr_Lock do klawisza ustawia AltGr po naciśnięciu tego klawisza, a anuluje po ponownym jego naciśnięciu. (Domyślnie, Shift, AltGr, Control i Alt są przypisane do klawiszy, które mają podobne oznaczenia; AltGr może oznaczać prawy klawisz Alt).
Należy zauważyć, że powinno się zachować daleko posuniętą ostrożność podczas przypisywania modyfikatorów do klawiszy. W przeciwnym wypadku może się to skończyć nieużywalną tablicą klawiaturową. Jeśli na przykład zdefiniuje się klawisz jako Control w pierwszej kolumnie a zostawi resztę kolumn jako puste symbole (VoidSymbols), pojawi się problem. Problem wystąpi dlatego, że naciśnięcie klawisza włącza modyfikator Control, a następne akcje będą pobierane z piątej kolumny (zobacz tabelę powyżej). Tak więc, jeśli klawisz zostanie zwolniony, pobierana będzie akcja z piątej kolumny. Jest ona pustym symbolem, więc nic się nie dzieje. Oznacza to, że modyfikator Control jest wciąż aktywny, chociaż klawisz został puszczony. Ponowne naciskanie i zwalnianie klawisza nie daje żadnych rezultatów. Aby temu zapobiec, należy zawsze definiować wszystkie kolumny tak, aby miały ten sam symbol modyfikujący. Istnieje do tego poręczna skrótowa notacja, o której niżej.
Symbole keysym mogą być podawane w notacji dziesiętnej, ósemkowej, szesnastkowej lub symbolicznej. Numeryczne notacje używają tego samego formatu co keynumber. Notacja unikodowa składa się z "U+", po którym występują cyfry szesnastkowe. Notacja symboliczna jest podobna do tej z xmodmap(1). Zauważalne różnice występują dla symboli numerycznych. Symbole "0", ..., "9" w xmodmap(1) są zamieniane na odpowiadające słowa "zero", "one", ..., "nine", aby zapobiec niejednoznacznościom z notacją numeryczną.
Powinno się zaznaczyć, że używanie notacji numerycznej dla symboli keysym jest wybitnie nieprzenośne, jako że numery akcji klawiszy mogą się różnić z jednej wersji jądra na drugą, z czego wynika powyższe. Notacja ta może być używana tylko jeśli wiadomo, że istnieje określona akcja klawiaturowa w używanym jądrze, dla której bieżąca wersja loadkeys(1) nie ma nazwy symbolicznej.
Jest wiele notacji skrótowych, poprawiających czytelność, a redukujących pracochłonność i prawdopodobieństwo błędów przy wpisywaniu.
Przede wszystkim można podać linię specyfikacji tablicy w postaci
keymaps 0-2,4-5,8,12
aby wskazać, że te linie tablicy klawiaturowej nie będą wyszczególniały wszystkich 256 kolumn, lecz tylko jedną ze wskazanych. (Na przykład sam Shift, AltGr, Control, Control+Shift, Alt i Control+Alt, czyli 7 zamiast 256 kolumn). Jeśli nie poda się takiej linii, zdefiniowane będą tablice klawiaturowe 0-M, gdzie M+1 to maksymalna liczba wpisów w jakiejkolwiek linii definicyjnej.
Następnie można porzucić wszelkie końcowe wpisy pustych symboli z definicji klawisza. Pusty symbol oznacza akcję klawiaturową, która nie powoduje efektu. Na przykład, aby zdefiniować klawisz numer 30 do wyprowadzania 'a' bez shiftu i 'A' z shiftem, niczego zaś przy wciśniętym AltGr i innych modyfikatorach, można napisać
keycode 30 = a A
zamiast bardziej "gadatliwego"
keycode 30 = a A VoidSymbol VoidSymbol \ VoidSymbol VoidSymbol VoidSymbol ...
Jako dodatkowe udogodnienie, zwykle możnz używać jeszcze innych definicji. Jeśli wprowadzona zostanie linia definicji klawisza z tylko jednym kodem akcji po znaku równości, to ma to specjalne znaczenie. Jeśli kod (numeryczny lub symboliczny) nie jest literą ASCII, znaczy to, że kod jest w drodze wyjątku powielany na wszystkie zdefiniowane kolumny. Jeśli, z drugiej strony, kod jest znakiem ASCII w zakresie 'a', ..., 'z' lub 'A', ..., 'Z', to tworzone są następujące definicje dla różnych kombinacji modyfikatorów. (Tabela pokazuje dwa możliwe przypadki: zarówno z pojedynczym kodem akcji dla małej litery, oznaczonej przez 'x', jak i dla dużej litery, oznaczonej przez 'Y'.)
- modyfikator
- symbol
- none
- x Y
- Shift
- X y
- AltGr
- x Y
- Shift+AltGr
- X y
- Control
- Control_x Control_y
- Shift+Control
- Control_x Control_y
- AltGr+Control
- Control_x Control_y
- Shift+AltGr+Control
- Control_x Control_y
- Alt
- Meta_x Meta_Y
- Shift+Alt
- Meta_X Meta_y
- AltGr+Alt
- Meta_x Meta_Y
- Shift+AltGr+Alt
- Meta_X Meta_y
- 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 MODYFIKATORÓW¶
Wszystkie poprzednie postacie linii definicji klawiszy zawsze definiowały wszystkie M+1 możliwych kombinacji modyfikatorów, niezależnie od tego, czy taką ilość rzeczywistych kodów akcji, czy nie. Istnieje jednak wariant składni definicji służący do definiowania pojedynczych akcji dla konkretnej kombinacji modyfikatorów klawisza. Jest to szczególnie przydatne, jeśli ładowana jest tablica klawiaturową, która nie odpowiada potrzebom jedynie przy niektórych kombinacjach modyfikatorów, jak np. AltGr+klawisze funkcyjne. Można wówczas utworzyć mały lokalny plik przedefiniowujący tylko te kombinacje modyfikatorów i ładować go po załadowaniu pliku głównego. Składnia tego formatu jest następująca:
{ plain | <ciąg modyfikatorów> } keycode keynumber = keysym
n.p.,
plain keycode 14 = BackSpace control alt keycode 83 = Boot alt keycode 105 = Decr_Console alt keycode 106 = Incr_Console
DEFINICJE ŁAŃCUCHÓW¶
Oprócz komentarzy i linii definicji klawiszy, pliki tablic klawiaturowych mogą zawierać definicje napisów. Są one używane do definiowania kodów akcji wysyłanych przez poszczególne klawisze funkcyjne. Składnia definicji napisu to:
tekst może zawierać literalne znaki, kody ósemkowe w formacie odwrotnego ukośnika, za którym występuje do trzech cyfr ósemkowych, a także trzy sekwencje eskejpowe \n, \\, i \", odpowiednio, dla nowej linii, odwrotnego ukośnika i cytatu.
DEFINICJE ZŁOŻONE¶
Mogą również występować definicje złożone. Mają one składnię
SKRÓTY¶
Z kbd-0.96 i późniejszymi można używać różnych skrótów.
- strings as usual
- Definiuje zwykłe wartości dla łańcuchów (ale nie dla klawiszy, do których są one przypisane.
- compose as usual for "iso-8859-1"
- Definiuje zwykłe kombinacje złożone.
Aby znaleźć, które symbole keysym są dostępne do użytku w tablicach klawiaturowych, należy użyć polecenia
dumpkeys --long-info
Niestety, obecnie nie ma opisu, co który symbol robi. Trzeba to zgadywać z nazwy, wydedukowanej ze źródeł jądra.
PRZYKŁADY¶
(Trzeba uważać, by użyć linii "keymaps", takiej jak "keymaps 0-15" albo pierwsza linia w `dumpkeys` itp.)
Następujący 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.
Następujący wpis ustawia milsze zachowanie klawiszy Shift i Caps Lock, jak w starych maszynach do pisania. To znaczy, wciśnięcie klawiszu Caps Lock jeden, lub więcej razy, włącza klawiaturę w stan CapsLock, a wciśnięcie dowolnego z Shiftów wyłącza go.
keycode 42 = Uncaps_Shift keycode 54 = Uncaps_Shift keycode 58 = Caps_On
Następujący wpis ustawia układ bloku edycyjnego na rozszerzonych klawiaturach, aby były 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 przykład na przypisanie napisu "du\ndf\n" do klawisza AltGr-D. Używamy "wolnego" kodu akcji F100, nie przypisywanego normalnie do żadnego klawisza.
altgr keycode 32 = F100 string F100 = "du\ndf\n"
ZOBACZ TAKŻE¶
TŁUMACZENIE¶
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
24 kwietnia 1998 | kbd |