Ich konnte das Tastaturlayout/die Zuordnung ändern, wenn das X Window System mit ~/.Xmodmap
ausgeführt wird (und ich nehme an, Sie könnten dies auch direkt über das X-Protokoll tun, z. B. indem Sie libxcb als Wrapper um X-Protokollaufrufe verwenden).
Ich konnte dasselbe (etwas) auf der Konsole/tty (d. h. wenn X nicht läuft) mit loadkeys
machen .
Gibt es eine Möglichkeit, das Tastaturlayout ähnlich anzupassen, aber aus einer einzelnen Quelle , so dass es sowohl X als auch die Konsole betrifft, dh. auf eine Weise, die „X-und-Konsolen-unabhängig“ ist?
(Die einzige Möglichkeit, die mir einfällt, besteht darin, einen „Tastaturtreiber“ zu schreiben, der mit der Eingabeschnittstelle des Kernels, evdev
, kommuniziert , und sendet die gewünschte Eingabe (über uinput
?), oder so, aber ich weiß nicht, ob das überhaupt Sinn macht, oder ob es einen einfacheren Weg gibt.)
Akzeptierte Antwort:
Ja, es gibt einen Weg, und genau so macht es das Konsolen-Setup-Paket von Debian.
- Tastaturlayouts werden in XKB-Begriffen (Modell, Layout, Variante und Optionen) vom Administrator in einer Datei namens
keyboard
angegeben , normalerweise/etc/default/keyboard
. Dies ist die einzige Quelle. Es kann mit einem Texteditor bearbeitet werden. - Die
setxkbmap
Programm erhält dieselben XKB-Einstellungen und konfiguriert einen X11-Server entsprechend.- Das Betreuer-Skript nach der Installation des Tastaturkonfigurationspakets führt
setxkbmap
aus direkt, mit/etc/default/keyboard
Einstellungen, wenn es sich mit einem X11-Display wiederfindet. Alsodpkg-reconfigure keyboard-configuration
die Ausführung von einem X11-GUI-Terminalemulator wirkt sich auf das X11-Tastaturlayout aus.
- Das Betreuer-Skript nach der Installation des Tastaturkonfigurationspakets führt
- Das
setupcon
Das Skript nimmt diese XKB-Einstellungen und leitet sie durch denckbcomp
Dienstprogramm zum Generieren einer Tastaturbelegung und lädt diese Tastaturbelegung mitloadkeys
in die virtuellen Terminals des Kernels /kbdcontrol
.- Dieses Skript wird beim System-Bootstrap von einem Dienst ausgeführt.
- Es kann auch sonst manuell ausgeführt werden.
Andere systemd-Betriebssysteme funktionieren anders, haben aber auch eine einzige Quelle.
- Das XKB-Layout, die Variante und die Optionen sind in
/etc/X11/xorg.conf.d/00-keyboard.conf
gespeichert . Dies ist die einzige Quelle.- Diese Datei wird beim Start direkt vom X11-Server gelesen und legt die X11-Tastaturbelegung direkt fest.
- Diese Datei wird von
systemd-localed
geparst am Anfang. Die Datei kann nicht sinnvoll mit einem Texteditor bearbeitet werden, während siesystemd-localed
ist läuft, weil der Dienst sie unbekümmert mit seinen eigenen In-Memory-Informationen überschreibt. - Um die XKB-Informationen zu ändern, führt man
localectl
aus , der mit einem anderen Server kommuniziert, der wiederum mitsystemd-localed
kommuniziert .
systemd-localed
konvertiert die XKB-Einstellungen unter Verwendung der Zuordnungen in/usr/share/systemd/kbd-model-map
in einen virtuellen Terminal-Tastaturzuordnungsnamen , die es dann in/etc/vconsole.conf
schreibt . Im Gegensatz zum Debian-System generiert es keine Maps on the fly aus den XKB-Informationen, sondern wählt nur vorab bereitgestellte statische Maps aus, die in der Map-Datei aufgeführt sind.systemd-vconsole-setup
läuft beim Bootstrap, liest/etc/vconsole.conf
, und lädt die Tastaturbelegung in die virtuellen Terminals des Kernels, indemloadkeys
ausgeführt wird .
Weiterführende Literatur
keyboard
. console-setup-Benutzerhandbuch . Debian.ckbcomp
. console-setup-Benutzerhandbuch . Debian.- Andrew T. Young (2011). Tastaturkonfiguration .
- Woher bekommt Xkb seine Konfiguration?
- https://unix.stackexchange.com/a/326804/5132