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/.