Provided by:
manpages-pl_20051117-1_all 
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 tych 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 następuje za tymi znakami jest ignorowane. Zauważ, ż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
include "pathname"
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 Latin1 lub ciągi znaków, przełączanie konsol lub tablic
klawiaturowych, bootowanie 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 taplicą.
To, która z akcji dla danego klawisza jest wybierana podczas jego
wciśnięcia zależy od modyfikatorów, które są czynne w danej chwili.
Sterownik klawiatury wspiera 8 modyfikatorów. Modyfikatory te są
oznaczone (zdecydowanie arbitralnie) jako Shift, AltGr, Control Alt,
ShiftL, ShiftR, CtrlL, CtrlR. Z każdym z tych modyfikatorów związana
jest waga będąca potegą dwójki, wg następującej tabeli:
modyfikator waga
Shift 1
AltGr 2
Control 4
Alt 8
ShiftL 16
ShiftR 32
CtrlL 64
CtrlR 128
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 np.
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.
Np. 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 symboliczna jest podobna do tej z
xmodmap(1). Zauważalne różnicei 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 twoja wersja
loadkeys(1) nie posiada 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. (Np: 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 ilość 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. Np. 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
brak 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 talica 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
Użycie "plain" zdefiniuje tylko podstawowy wpis klawisza (np. ten, przy
którym nie są włączone żadne modyfikatory), bez dotykania powiązań
innych kombinacji tego klawisza.
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:
łańcuch keysym = "tekst"
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ę
compose 'znak' 'znak' to 'znak'
i opisują, w jaki sposób dwa bajty są połączone tworząc trzeci (gdy
jest uywany samodzielny akcent lub klawisz kombinowany). Wykorzystuje
się to do liter akcentowanych i podobnych znaków na standardowej
klawiaturze.
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
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
loadkeys(1), dumpkeys(1), showkey(1), xmodmap(1)
24 kwietnia 1998 KEYMAPS(5)