Byl jsem schopen změnit rozložení/mapování klávesnice, když běží X Window System pomocí ~/.Xmodmap (a předpokládám, že byste to mohli také udělat přímo prostřednictvím protokolu X, např. pomocí libxcb jako obalu kolem volání protokolu X).
Dokázal jsem udělat totéž (poněkud) na konzoli/tty (tj. když X neběží) pomocí loadkeys .
Existuje způsob, jak upravit rozložení klávesnice podobně, ale z jediného zdroje , a to tak, že to ovlivní X i konzoli, tzn. způsobem, který je „Agnostik X-and-console“?
(Jediný způsob, který mě napadá, je napsat „ovladač klávesnice“, který komunikuje se vstupním rozhraním jádra, evdev a odešle požadovaný vstup (prostřednictvím uinput ?), nebo tak něco, ale nevím, jestli to má smysl, nebo jestli existuje jednodušší způsob.)
Přijatá odpověď:
Ano, existuje způsob a skutečně to dělá balíček pro nastavení konzole Debianu.
- Rozvržení klávesnice určuje v podmínkách XKB (model, rozvržení, varianta a možnosti) správce v souboru s názvem
keyboard, obvykle/etc/default/keyboard. Toto je jediný zdroj. Lze jej upravit pomocí textového editoru. setxkbmapprogram dostane stejná nastavení XKB a podle toho nakonfiguruje X11 server.- Skript správce po instalaci balíčku pro konfiguraci klávesnice spustí
setxkbmappřímo pomocí/etc/default/keyboardnastavení, pokud se ocitne s displejem X11. Tedydpkg-reconfigure keyboard-configurationspuštění z emulátoru terminálu X11 GUI ovlivní rozložení klávesnice X11.
- Skript správce po instalaci balíčku pro konfiguraci klávesnice spustí
- Položka
setupconskript převezme tato nastavení XKB a předá je přesckbcompnástroj pro generování mapy klávesnice a načte tuto mapu klávesnice do virtuálních terminálů jádra pomocíloadkeys/kbdcontrol.- Tento skript spouští služba při zavádění systému.
- V ostatních případech jej lze také spustit ručně.
Jiné operační systémy systemd fungují odlišně, ale mají také jeden zdroj.
- Rozvržení XKB, varianty a možnosti jsou uloženy v
/etc/X11/xorg.conf.d/00-keyboard.conf. Toto je jediný zdroj.- Tento soubor je přímo čten serverem X11 při spuštění a přímo nastavuje mapu klávesnice X11.
- Tento soubor je analyzován
systemd-localedpři spuštění. Soubor nelze užitečně upravovat pomocí textového editoru, když jesystemd-localedběží, protože jej služba bezstarostně přepíše vlastními informacemi v paměti. - Chcete-li změnit informace XKB, spusťte
localectl, který mluví s jiným serverem, který zase mluví ssystemd-localed.
systemd-localedpřevede nastavení XKB na název mapy klávesnice virtuálního terminálu pomocí mapování v/usr/share/systemd/kbd-model-map, který pak zapíše do/etc/vconsole.conf. Na rozdíl od systému Debian negeneruje mapy za běhu z informací XKB, ale vybírá pouze předem dodané statické mapy uvedené v mapovém souboru.systemd-vconsole-setupběží na bootstrap, čte/etc/vconsole.confa načte mapu klávesnice do virtuálních terminálů jádra spuštěnímloadkeys.
Další čtení
keyboard. Uživatelská příručka pro nastavení konzoly . Debian.ckbcomp. Uživatelská příručka pro nastavení konzoly . Debian.- Andrew T. Young (2011). Konfigurace klávesnice .
- Kde Xkb získává konfiguraci?
- https://unix.stackexchange.com/a/326804/5132