NAZWA¶
keymaps - opisy tablic klawiaturowych dla loadkeys i dumpkeys
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
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ć:
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
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
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ć
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
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)
Powyższe tłumaczenie pochodzi z nieistniejącego już
Projektu Tłumaczenia Manuali i
może nie być
aktualne. W razie zauważenia różnic między
powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub
funkcji, prosimy o zapoznanie się z oryginalną
(angielską) wersją strony podręcznika za pomocą
polecenia:
- man --locale=C 5 keymaps
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.