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. setxkbmap
program dostane stejná nastavení XKB a podle toho nakonfiguruje X11 server.- Skript správce po instalaci balíčku pro konfiguraci klávesnice spustí
setxkbmap
přímo pomocí/etc/default/keyboard
nastavení, pokud se ocitne s displejem X11. Tedydpkg-reconfigure keyboard-configuration
spuš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
setupcon
skript převezme tato nastavení XKB a předá je přesckbcomp
ná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-localed
při spuštění. Soubor nelze užitečně upravovat pomocí textového editoru, když jesystemd-localed
běží, 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-localed
př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-setup
běží na bootstrap, čte/etc/vconsole.conf
a 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