xkb
xkb = X keyboard extension, způsob, jakým se mapuje klávesnice v systému X11.
Debian
[editovat]Podstránky
[editovat]- Xkb/symbols – různé mapy v adresáři symbols
- Xkb/xfce – v xfce je to zase jinak
Nastavení vlastní klávesové mapy
[editovat]Soubory:
- /usr/include/X11/keysymdef.h – zde naleznu seznam symbolů, které pak mohu použít v souboru:
- /usr/share/X11/xkb/symbols/mojemapa – zde si nadefinuji vlastní mapu
Vlastní klávesovou mapu pak aktivuji příkazem:
setxkbmap mojemapa
Příklad
[editovat]Typograficky korektní je používat pomlčku (tam, kde patří, a nepoužívat namísto ní rozdělovník). Můžeme si ji namapovat na klávesu "minus", stisknutou s druhým modifikátorem. Navíc si namapujeme matematické mínus na tu samou klávesu s oběma modifikátory:
key <AE11> { [ minus, underscore, endash, U2212 ] };
Seznamy
[editovat]Ta mapa by asi měla být uvedená ještě v seznamech:
- /usr/share/X11/xkb/symbols.dir
Ale tenhle soubor se dá něčím generovat.
A dále:
- rules/base.lst: mojemapa
- rules/xfree86.lst: mojemapa
- rules/xorg.lst: mojemapa
Příklady
[editovat]Ubuntu
[editovat]Mám problém zjistit, jak si regulérně nainstalovat vlastní rozložení klávesnice v Ubuntu. Snažím se najít nějaké utility. Co třeba:
- graphviz = to s tím vůbec asi nesouvisí
- keyboard-mapper = asi jen přepíná mapy
- xfkc = keyboard layout configuration tool = asi jen nahrazuje ruční vytváření xorg.conf, což je teď už stejně k ničemu
- xkb-data
- xkeyboard-config = podle mě pouze zobrazuje, některý ze seznamů
Vlastní postup
[editovat]Umožní změnit klávesnici pomocí setxkbmap, ale má to drobnou chybu: už se to nepromítne do nastavení gnome a tím pádem se to také nenastaví automaticky při přihlášení uživatele.
- soubory třeba cz_robot, cz_rob, cz_rob_nos do adresáře /usr/share/X11/xkb/symbols
- symbols.dir: -dp----- a------- cz_rob(basic)
- do /usr/share/xkb/rules/base přidat cz-rob mezi seznam klávesnic "layouts with 3rd and 4th groups" (??)
- do /usr/share/xkb/rules/base.lst přidat tyto názvy do sekce !layouts
- přidat sekci layout do /etc/X11/xkb/base.xml
- a co do /usr/share/X11/xkb/rules/evdev.xml ?
Vytvoření patchů:
diff -c symbols.dir.000 symbols.dir > symbols.dir.diff cd rules diff -c base.lst.000 base.lst > base.lst.diff diff -c evdev.xml.000 evdev.xml > evdev.xml.diff
Aplikace patchů:
patch -l -b -Vt -F2 symbols.dir < symbols.dir.diff patch -l -b -Vt -F2 evdev.xml < evdev.xml.diff patch -l -b -Vt -F2 base.lst < base.lst.diff
Howto
[editovat]Vyjdeme z článku:
- help.ubuntu.com: Howto: Custom keyboard layout definitions
Souhrn:
- /usr/share/X11/xkb - defaultní adresář
- /usr/share/X11/xkb/symbols - v tomto adresáři vytvoříme soubor s vlastním rozložením
- /usr/share/X11/xkb/rules/evdev.html - do tohoto souboru je nutno vlastní rozložení také přidat; problém je, že takový soubor tu neexistuje. Nejspíš se bude jednat o soubor /usr/share/X11/xkb/rules/evdev.xml
- /usr/share/X11/xkb/symbols.dir - sem se to musí také dopsat, aby o tom věděl zbytek systému X11 (někde se tvrdí, že to není nutné), symbols.dir, ale nemusí existovat
- /usr/share/X11/xkb/rules/evdev - sem se také musí dopsat příslušná řádka do sekce !layouts
- poznámka: To load changes to the layouts menu simply close out of gnome-keyboard-preferences and reload, relaunching the windows manager should not be necessary.
Příjde mi to trochu složitý postup, neexistuje na to nějaká utilita?
Další reference:
- swiss.ubuntuforums.org: Creating a custom keyboard layout
- bugs.launchpad.net: /etc/X11/xkb/base.xml is ignored
- abclinuxu.cz: Dotaz: Vlastní rozložení klávesnice v Ubuntu
- imega.cz: Set rozložení klávesnice pro "české a slovenské programátory" pro Linux
- people.uleth.ca (Daniel Paul O'Donnell): Custom Keyboard in Linux/X11
Tam je zmíněny ještě (zejména XML) soubory:
- /usr/share/X11/xkb/rules/base.lst - sem se také musí dopsat příslušná řádka do sekce !layouts (pravděpodobně tato pasáž není už nutná)
- /usr/share/X11/xkb/rules/base.xml - sem se také musí dopsat příslušná řádka do sekce !layouts (tady to asi bude nutné)
- /usr/share/X11/xkb/rules/evdev.xml - sem se také musí dopsat příslušná řádka do sekce !layouts (tady to asi bude nutné)
Problémy
[editovat]V Ubuntu/Lucid se mi najednou stává, že edituji /usr/share/X11/xkb/symbols/něco (něco=klávesová mapa, kterou jsem už předtím používal), načtu mapu pomocí setxkbmap, ale změny se nikterak neprojeví. Přitom dle pts [http://ptspts.blogspot.com/2010/06/how-to-create-custom-keyboard-layout.html As soon as you save your changes, you are able to load the new layout with setxkbmap 'us(my_layout)'.
Je to asi blbě napsané, aby se nová klávesnice projevila, je zapotřebí restartovat X-ka. Což je trochu problém, v nových instalacích Ubuntu je zakázána možnost restartu trojkombinací Ctrl-Alt-Backspace. Znovuzprovoznění viz forum.ubuntu.cz: index.php?topic=33956.0 ctrl+alt+backspace. Diskutované možnosti:
xorg.conf
[editovat]Section "ServerFlags" Option "DontZap" "false" EndSection
Problém je v tom, že současná verze X-ek už vůbec žádný xorg.conf nepoužívá
Anebo už není v /etc/X11/xorg.conf, ale je rozkouskovaný jen v: /usr/lib/X11/xorg.conf.d
dontzap
[editovat]- balík a utilita dontzap:
- sudo dontzap --enable – Ctrl+Alt+Backspace nedělá nic
- sudo dontzap --disable – Ctrl+Alt+Backspace restartuje X-server
Tato utilita už v Ubuntu/Lucid neexistuje. Důvod je zřejmě v tom, že This is due to the fact that “DontZap” is no longer an option in the X server and has become an option in XKB instead.
klikátko
[editovat]- Systém -> Předvolby -> Klávesnice
- Rozložení možnosti -> Pořadí kláves zabíjejících server X
- Ctrl+Alt+Backspace
- Rozložení možnosti -> Pořadí kláves zabíjejících server X
příkazový řádek
[editovat]setxkbmap -option terminate:ctrl_alt_bksp
Hint
[editovat]Aby se nemusela pokaždé restartovat X-ka, je možné si novou klávesnici otevřít v nové instanci X:
sudo xinit -- :2
(Skončí se to opět Ctrl+Alt+Backspace)
Keyboard failed to initialize for relative axes
[editovat]Předtím jsem tímto způsobem nastartoval alternativní instanci X. Ale teď:
(EE) Microsoft Natural® Ergonomic Keyboard 4000: failed to initialize for relative axes.
Kde se to řeší:
- USB Keyboard stops working - Ubuntu Forums
- rada: this is a bios issue. you need to enter your bios and ENABLE Legacy USB for the keyboard.
Skutečně nutné restartovat X-ka?
[editovat]Protože si nepamatuji, že bych takové věci v minulosti musel dělat. Pokaždé to zabralo hned i běz restartu. Jen matně vzpomínám, že jsem něco dělal s kompilací klívesové mapy.
Error activating XKB configuration
[editovat]- špatně napsaný zroják:
- chyběl mi v kódu středník
- měl jsem napsány špatně komentáře ty začínají znaky
//
a končí koncem řádky- zkusil jsem to opravit podle vzoru, ale nepomohlo to
- podle chatGPT mohu zahrnout klávesnici, která zahrne jinou klávesnici a to moje rozložení to všechno přepíše, takže by to mělo být OK
- špatné práva ke zdrojáku: OK
- chyba s X serverem či XKB komponenty:
- x-server verze: 21.1.4 (aktuální 21.1.8)
- XKB:
.xinitrc
[editovat]Své oblíbené příkazy pro nastavení klávesnice si uložím do ~/.xinitrc
Permanentně
[editovat]Když dám
setxkbmap cz_robot
tak mi to každou chvíli "někdo" sám od sebe změní. Tak to dle rady na Persistent remapping of keys with setxkbmap or Xorg configuration zkusím dát do:
/etc/default/keyboard
# KEYBOARD CONFIGURATION FILE # Consult the keyboard(5) manual page. XKBMODEL="pc105" #XKBLAYOUT="cz" #XKBVARIANT="qwerty" XKBLAYOUT="cz_robot" XKBOPTIONS="" BACKSPACE="guess"
Zvláštní znaky
[editovat]Unicode
[editovat]Ctrl-Shift-u, pak napíšu unicode kód hexadecimálně a odentruju
w: Compose key
[editovat]⎄
Systém → Volby → Klávesnice → Možnosti rozložení nastavím, která klávesa funguje jako Compose key
setxkbmap -option compose:rctrl anebo lctrl, ralt, lalt apod.
U X-Windows je obvyklá kombinace Shift+AltGr (tj. pravý Alt)
Tabulky:
Odkazy
[editovat]- Česká programátorská klávesnice v XOrg
- forum.ubuntu.cz:
- 2007-11-15: Česká programátorská klávesnice
- 2010-01-08: Vlastní rozložení klávesnice
- ubuntuforums.org
- 2009-11-10: Kexik: Nové rozložení klávesnice pro programátory
- abclinuxu:
- 2004-01-26: Zdeněk Štěpánek: Multimediální a jinak vylepšené klávesnice
- 2005-11-23: Rastislav Stanik: Klávesnice v X
- 2006-04-20: Jiří Mlíka: Konfigurace multimediální klávesnice v X
- 2006-12-06: Petr Písař: Česká typografická klávesnice
- ROOT
- 2004-03-01 Jan Švec Upravte si klávesnici
- Upravte si klávesnici - dokončení
- daniel.odonnell: Custom Keyboard in Linux/X11
- http://ptspts.blogspot.com/2010/06/how-to-create-custom-keyboard-layout.html
- wiki.ubuntu.com: X/Config/DontZap