Provided by: manpages-pl_20060617-1_all bug

NAZWA

       keytables - opisy tabeli 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 tych tabel przez program dumpkeys(1).

       Format  tych  plików  jest  dośc  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łkowita
       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 (\).

       Linia definiująca zestaw znaków (charset) ma postać:

              charset "iso-8859-x"

       Definiuje w jaki sposób interpretować następujące keysymy.

       Każda kompletna definicja linii ma postać:

              keycode keynumber = keysym keysym keysym...

       keynumber  jest  wewnętrznym  numerem  identyfikującym  klawisz,  mniej
       więcej 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 keysymw reprezentuje akcję  klawiaturową,  z  których  do  256
       można podwiązać do pojedynczego klawisza. Dostępne akcje zawierają kody
       znaków Latin1 lub sekwencje znakowe, przełączanie  konsol  lub  keymap,
       bootowanie  maszyny, itd.  (kompletną listę można uzyskać z dumpkeys(1)
       przez wydanie komendy  dumpkeys -l .)

       Każdy keysym może zostać  poprzedzony  znakiem  '+'  (plus),  w  którym
       wypadku  keysym  jest  traktowany  jako  "litera", czyli znak dotknięty
       przez "CapsLock" w ten sam sposób jak przez "Shift" (aby być dokładnym,
       CapsLock  odwraca  stan  Shift).   Znaki  ASCII  ('a'-'z' i 'A'-'Z') są
       domyślnie CapsLock'owalne. Jesli Shift+CapsLock nie powinny  produkować
       "małych" liter, użyj linii o następującej semantyce

              keycode 30 = +a  A

       w pliku z mapą.

       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,  Controlm  Alt,
       ShiftL,  ShiftR,  CtrlL, CtrlR.  Każdy z tych modyfikatorów ma związaną
       wagę, która jest 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 opuszczania klawisza  pobierana  jest  np.  akcja  numer
       zero;  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 tego, które modyfikatory jak działają  może  być  dokonana
       przez powiązanie odpowiednich akcji klawiszowych z żądanymi klawiszami.
       Np.  przywiązywanie symbolu Shift do klawisza ustawia modyfikator Shift
       podczas  naciskania  klawisza  i unieważnia działanie tego modyfikatora
       podczas  zwolnienia  klawisza.  Przywiązanie  AltGr_Lock  do   klawisza
       ustawia  AltGr  po  naciśnięciu tego klawisza, a anuluje to po ponownym
       naciśnięciu. (Domyślnie, Shift, AltGr, Control i Alt są przywiązane  do
       klawiszy,  które  noszą  podobną  etykietę;  AltGr  może  oznacać prawy
       klawisz Alt.)

       Zauważ, że  powinieneś  być  bardzo  ostrożnym  podczas  przywiązywania
       klawiszy  modyfikujących.  W  przeciwnym  wypadku  może się to skończyć
       bezużyteczną mapą klawiatury. Jeśli na przykład zdefiniujesz Control  w
       jego  pierwszej  kolumnie  i  zostawisz resztę kolumn jako PusteSymbole
       (VoidSymbols), to masz problem.  Dlatego, że naciskanie klawisza włącza
       modyfikator Control, a następne akcje będą podglądane w piątej kolumnie
       (zobacz tabelę powyżej). Tak więc,  jeśli  puścisz  klawisz,  pobierana
       będzie  akcja  z  piątej kolumny. Ma ona na sobie PustySymbol, więc nic
       się nie dzieje.  Znaczy  to,  że  modyfikator  Control  wciąż  pracuje,
       chociaż puściłeś klawisz. Ponowne naciskanie i opuszczanie klawisza nie
       daje  rezultatów.  Aby  temu  zapobiec,  powinieneś  zawsze  definiować
       wszystkie kolumny tak, aby miały ten sam symbol modyfikujący.  Istnieje
       dla tego poręczna notacja short-hand, o której niżej.

       keysymy  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żalnymi różnicami są symbole numeryczne. 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  keysymw
       jest mocno nieportowalne, 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  wiesz,  że  istnieje  określona akcja
       klawiaturowa w twoim jądrze, dla której twoja  wersja  loadkeys(1)  nie
       posiada nazwy symbolicznej.

       Jest wiele notacji short-hand, poprawiających czytelność i redukujących
       pracę i prawdopodobieństwo błędów przy wpisywaniu.

       Przede wszystkim, możesz podać linię specyfikacji mapy w postaci

              keymaps 0-2,4-5,8,12

       aby wskazać, że te linie mapy 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, mapy klawiaturowe 0-M będą
       zdefiniowane.  M+1 to maksymalna ilość wpisów linii definicyjnej.

       Następnie, możesz porzucić  wszelkie  końcowe  wpisy  PustychSymboli  z
       definicji  klawisza.  PustySymbol 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żesz napisać

              keycode  30 = a     A

       zamiast bardziej "gadatliwego"

              keycode  30 = a     A    VoidSymbol     VoidSymbol \
                        VoidSymbol VoidSymbol VoidSymbol ...

       Zwykle możesz użyć jeszcze innych definicji.  Jeśli  wprowadzisz  linię
       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 wyjątkowo replikowany na wszystkie
       zdefiniowane kolumny. Jeśli, z drugiej strony, kod jest znakiem ASCII w
       zasięgu  'a',  ...,  'z'  lub  'A', ..., 'Z', to robione są następujące
       definicje dla różnych kombinacji  modyfikatorów.  (Tabela  listuje  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'.)

           modifier                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

       Wszystkie poprzednie formy linii definicji klawiszy zawsze  definiowały
       wszystkie M+1 możliwych kombinacji modyfikatorów, niezależnie od ilości
       rzeczywistych kodów akcji.  Istnieje jednak wariacja składni  definicji
       dla   definiowania   pojedynczych   akcji  dla  określonych  kombinacji
       modyfikatora i klawisza. Jest to szczególnie użyteczne, jeśli  ładujesz
       talicę  klawiaturową,  która nie odpowiada twoim potrzebom w niektórych
       kombinacjach modyfikatorów, jak np.  AltGr+klawisze  funkcyjne.  Możesz
       utworzyć  wtedy  mały  lokalny  plik, redefiniujący tylko te kombinacje
       modyfikatorów i ładować go po załadowaniu pliku głównego. Składnia tego
       formatu to:

       { plain | <sekwencja 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 ma włączonych modyfikatorów), bez dotykania powiązań  innych
       kombinacji tego klawisza.

       Dodatkowo  do  komentarzy  i  linii  definicji  klawiszy,  pliki tablic
       klawiaturowych mogą zawierać  definicje  napisów.  Są  one  używane  do
       definiowania,   co  wysyła  kod  akcji  każdego  klawisza  funkcyjnego.
       Składnia definicji napisu to:

              string keysym = "tekst"

       tekst  może  zawierać  literalne  znaki,  kody  ósemkowe   w   formacie
       odwrotnego  ukośnika,  za  którym  podąża  do trzech cyfr ósemkowych, a
       także trzy sekwencje eskejpowe \n, \\,  i  \",  odpowiednio  dla  nowej
       linii, odwrotnego ukośnika i cytatu.

       Aby   znaleźć,   które   keysymy   są  dostępne  do  użytku  w  plikach
       klawiaturowych, użyj komendy

              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 wymienia ze sobą 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 przywiązanie napisu  "du\ndf\n"  do  klawisza  AltGr-D.
       Używamy  "wolnego"  kodu  akcji  F100, nie przywiązywanego normalnie do
       żadnego klawisza.

              altgr keycode 32 = F100
              string F100 = "du\ndf\n"

ZOBACZ TAKŻE

       loadkeys(1), dumpkeys(1), showkey(1), xmodmap(1)

                                  30 Jan 1994                     KEYTABLES(5)