Rozložení klávesnice v Linuxu
Aktualizováno Čtvrtek, 18 Březen 2010 10:34 Napsal uživatel Vladimír Dvořák
Rozložení klávesnice v Linuxu aneb klávesové mapy
Při stisknutí klávesy na vaší klávesnici je vygenerován kód klávesy (KeyCode, někdy též zvaný scancode). Ten je zjistitelný v Xorg systému pomocí příkazu:
xev
Tento příkaz vrací obsah události systému Xorg. Více o xev(1) v jeho manuálové stránce.
Stisknutím klávesy malého "a" pak vyvoláme následující událost:
KeyPress event, serial 32, synthetic NO, window 0x2800001,
root 0x66, subw 0x0, time 12065234, (65,109), root:(803,128),
state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XmbLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
Jakmile klávesu uvolníme, vyvolá se druhá událost:
KeyRelease event, serial 35, synthetic NO, window 0x2800001
root 0x66, subw 0x0, time 12065347, (65,109), root:(803,128),
state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
X server vrací aplikacím události typu KeyPress a KeyRelease. Stejně tak se přenášejí informace o pohybu myši. Jakmile pohneme kurzorem (mouse pointer), X server generuje MotionNotify události jednu za druhou. U pohybu myši ale není granularita pohybu garantována; to znamená, že pro aplikaci (klient), která čeká na tuto událost, je garantována alespoň jedna událost MotionNotify.
Druhým důležitým pojmem je KeySym, symboly kláves. Narozdíl od KeyCode kóduje KeySym symbol klávesy, který je uveden přímo na dané klávese. Klávesová mapa (v terminologii Xorg) je tedy množina [KeyCode,KeySym]. KeySym kódy jsou 29-bitová čísla, která identifikují znaky nebo funkce, které jsou asociovány s KeyCode. KeySym definice je plně kompatibilní s ISO 10646, resp. Unicode standardem. Níže uvedené schéma znázorňuje schématický postup pro zobrazení znaku po stisku klávesy:
Stisk klávesy -> (KeyCode -> KeySym) -> Znak
Všechny dostupné modely klávesnice, jejich rozvržení (layouts), varianty rozvržení (layout variants), které je schopen Xorg obsluhovat, můžete nalézt zde:
/usr/share/X11/xkb/rules/xorg.lst
Je nutné zmínit, že klávesová mapa (keyboard layout) je mírně odlišný pojem od pojmu modelu klávesnice (v terminologii Xorg). Tyto pojmy jsou často zaměňovány. Rozdíl mezi modelem klávesnice a klávesovou mapou (rozložením) je následující. Mapa je tedy "spárování" KeyCode (fyzických kódů jednotlivých kláves) s KeySym (s interní Unicode, resp. ISO 10646 reprezentací v Xorg). Model klávesnice je most mezi fyzickým kódem a interní reprezentací daného kódu v Xorg. Model klávesnice je definován např. zde:
/usr/share/X11/xkb/keycodes/xfree86
Xorg může detekovat vaši klávesnici chybně. To způsobí, že rozložení klávesnice a nastavení modelu klávesnice nebude správné. Lépe řečeno - logické rozložení klávesnice nemusí korespondovat s fyzickým rozložením. Nejprve je tedy nutné mít vybrán správný model klávesnice, který pasuje s hardwarovým zařízením, poté je možné manipulovat s klávesovou mapou.
Způsoby přepínání klávesnice
sexkbmap
Tímto příkazem je možné "ručně" měnit rozložení klávesnice.
Jakým způsobem ale vyvolat změnu rozložení klávesnice bez nepohodlného spouštění setxkbmap?









