.\" {PTM/PB/0.1/28-09-1998/"opis tabeli klawiatury dla loadkeys i dumpkeys"}
.\" Translation (c) 1998 Przemek Borys <pborys@p-soft.silesia.linux.org.pl>
.\" Aktualizacja do wersji kbd-1.06 - listopad 2001
.\"              Andrzej Krzysztofowicz <ankry@mif.pg.gda.pl>
.\" @(#)keymaps.5 1.10 940130 aeb
.TH KEYMAPS 5 "24 kwietnia 1998"
.SH NAZWA
keymaps \- opisy tablic klawiaturowych dla loadkeys i dumpkeys
.SH OPIS
\fI Uwaga! To tłumaczenie może być nieaktualne!\fP
.PP
Pliki te są używane przez
.BR loadkeys (1)
do modyfikowania tablic translacji używanych przez sterownik klawiatury.
Pliki te mogą być generowane na podstawie tablic translacji przez program
.BR dumpkeys (1).
.LP
Format tych plików jest dość podobny do formatu
.BR xmodmap (1).
Plik składa się z linii charsetu, definicji klawiszy lub napisów,
przeplecionych komentarzami.
.LP
Komentarze rozpoczynają się od znaków
.B !
lub
.B #
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
.BR xmodmap (1).
.LP
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 (\\).
.SH "PLIKI WŁĄCZANE"
Tablica klawiaturowa może włączać do siebie inne tablice klawiaturowe przy
użyciu składni
.LP
.RS
include "pathname"
.RE
.LP
.SH "DEFINICJE CHARSETÓW"
Linia definiująca zestaw znaków (charset) ma postać:
.LP
.RS
.EX
charset "iso-8859-x"
.EE
.RE
.LP
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.
.SH "PEŁNE DEFINICJE KODÓW KLAWISZY"
.LP
Pełna linii definicji kodów klawisza ma postać:
.LP
.RS
.nf
.BI keycode " keynumber " = " keysym keysym keysym" \fR...
.fi
.RE
.LP
.I keynumber
jest wewnętrznym numerem identyfikującym klawisz, na ogół odpowiadającym
jego kodowi scancode.
.I keynumber
może zostać podany w postaci dziesiętnej, ósemkowej lub szesnastkowej.
Postać ósemkowa jest poprzedzona zerem, a szesnastkowa prefiksem
.BR 0x .
.LP
Każdy z symboli
.I 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
.BR "dumpkeys -l" .)
.LP
Każdy z symboli
.I 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
.LP
.RS
.nf
.BI "keycode 30 = +a  A"
.fi
.RE
.LP
w pliku z taplicą.
.LP
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:
.LP
.RS
.TP 24
.I modyfikator
.I waga
.TP 24
Shift
  1
.PD 0
.TP 24
AltGr
  2
.TP 24
Control
  4
.TP 24
Alt
  8
.TP 24
ShiftL
 16
.TP 24
ShiftR
 32
.TP 24
CtrlL
 64
.TP 24
CtrlR
128
.PD
.RE
.LP
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).
.LP
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.)
.LP
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.
.LP
Symbole
.I keysym
mogą być podawane w notacji dziesiętnej, ósemkowej, szesnastkowej, lub
symbolicznej. Numeryczne notacje używają tego samego formatu co
.IR keynumber .
Notacja symboliczna jest podobna do tej z
.BR xmodmap (1).
Zauważalne różnicei występują dla symboli numerycznych. Symbole '0', ..., '9' w
.BR xmodmap (1)
są zamieniane na odpowiadające słowa 'zero', 'one', ..., 'nine' aby zapobiec
niejednoznacznościom z notacją numeryczną.
.LP
Powinno się zaznaczyć, że używanie notacji numerycznej dla symboli
.I 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
.BR loadkeys (1)
nie posiada nazwy symbolicznej.
.LP
Jest wiele notacji skrótowych, poprawiających czytelność, a redukujących
pracochłonność i prawdopodobieństwo błędów przy wpisywaniu.
.LP
Przede wszystkim, można podać linię specyfikacji tablicy w postaci
.LP
.RS
.EX
keymaps 0-2,4-5,8,12
.EE
.RE
.LP
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.
.LP
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ć
.LP
.RS
.nf
keycode  30 = a	A
.fi
.RE
.LP
zamiast bardziej "gadatliwego"
.LP
.RS
.nf
keycode  30 = a	A	VoidSymbol	VoidSymbol \\
		VoidSymbol VoidSymbol VoidSymbol ...
.fi
.RE
.LP
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'.)
.LP
.RS 4
.TP 24
.I modyfikator
.I symbol
.TP 24
brak
x			Y
.PD 0
.TP 24
Shift
X			y
.TP 24
AltGr
x			Y
.TP 24
Shift+AltGr
X			y
.TP 24
Control
Control_x		Control_y
.TP 24
Shift+Control
Control_x		Control_y
.TP 24
AltGr+Control
Control_x		Control_y
.TP 24
Shift+AltGr+Control
Control_x		Control_y
.TP 24
Alt
Meta_x		Meta_Y
.TP 24
Shift+Alt
Meta_X		Meta_y
.TP 24
AltGr+Alt
Meta_x		Meta_Y
.TP 24
Shift+AltGr+Alt
Meta_X		Meta_y
.TP 24
Control+Alt
Meta_Control_x	Meta_Control_y
.TP 24
Shift+Control+Alt
Meta_Control_x	Meta_Control_y
.TP 24
AltGr+Control+Alt
Meta_Control_x	Meta_Control_y
.TP 24
Shift+AltGr+Control+Alt
Meta_Control_x	Meta_Control_y
.PD
.RE
.LP
.SH "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:
.LP
.BR "" { " plain " "| <ciąg modyfikatorów> } " keycode
.I keynumber
.B =
.I keysym
.LP
n.p.,
.RS
.EX
.nf
plain keycode 14 = BackSpace
control alt keycode 83 = Boot
alt keycode 105 = Decr_Console
alt keycode 106 = Incr_Console
.fi
.EE
.RE
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.
.SH "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:
.LP
.RS
.B łańcuch
.I keysym
.B =
.BI
"tekst"
.RE
.LP
.I 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
\fB\\n\fP, \fB\\\\\fP, i \fB\\"\fP, odpowiednio, dla nowej linii, odwrotnego
ukośnika i cytatu.
.SH "DEFINICJE ZŁOŻONE"
Mogą również występować definicje złożone. Mają one składnię
.LP
.RS
.BI "compose '" znak "' '" znak "' to '" znak "'"
.RE
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.
.SH SKRÓTY
Z kbd-0.96 i późniejszymi można używać różnych skrótów.
.B "strings as usual"
Definiuje zwykłe wartości dla łańcuchów (ale nie dla klawiszy, do których
są one przypisane.
.TP
\fBcompose as usual for "iso-8859-1"\fP
Definiuje zwykłe kombinacje złożone.
.LP
Aby znaleźć, które symbole
.I keysym
są dostępne do użytku w tablicach klawiaturowych, należy użyć polecenia
.LP
.RS
.nf
.B dumpkeys --long-info
.fi
.RE
.LP
Niestety, obecnie nie ma opisu, co który symbol robi. Trzeba to zgadywać z
nazwy, wydedukowanej ze źródeł jądra.
.LP
.SH PRZYKŁADY
Następujący wpis zamienia lewy klawisz Control i CapsLock:
.LP
.RS
.nf
keycode  58 = Control
keycode  29 = Caps_Lock
.fi
.RE
.LP
Klawisz o numerze 58 jest normalnie Caps Lockiem, a klawisz numer 29 jest
zwykle klawiszem Control.
.LP
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.
.LP
.RS
.nf
keycode  42 = Uncaps_Shift
keycode  54 = Uncaps_Shift
keycode  58 = Caps_On
.fi
.RE
.LP
Następujący wpis ustawia układ bloku edycyjnego na rozszerzonych
klawiaturach, aby były bardziej podobne do terminali serii VT200:
.LP
.RS
.nf
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
.fi
.RE
.LP
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.
.LP
.RS
.nf
altgr keycode 32 = F100
string F100 = "du\\ndf\\n"
.LP
.SH "ZOBACZ TAKŻE"
.BR loadkeys (1),
.BR dumpkeys (1),
.BR showkey (1),
.BR xmodmap (1)
.SH "INFORMACJE O TŁUMACZENIU"
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i 
\fImoże nie być aktualne\fR. 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:
.IP
man \-\-locale=C 5 keymaps
.PP
Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod
adresem http://sourceforge.net/projects/manpages\-pl/.
