GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ändern des Tastaturlayouts / der Tastaturzuordnung sowohl auf der Konsole (tty) als auch auf X auf eine X / Konsolen-agnostische Weise?

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. Also dpkg-reconfigure keyboard-configuration die Ausführung von einem X11-GUI-Terminalemulator wirkt sich auf das X11-Tastaturlayout aus.
  • Das setupcon Das Skript nimmt diese XKB-Einstellungen und leitet sie durch den ckbcomp Dienstprogramm zum Generieren einer Tastaturbelegung und lädt diese Tastaturbelegung mit loadkeys 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 sie systemd-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 mit systemd-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, indem loadkeys 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
Verwandte:Skript führt Schleife nur einmal aus?
Linux
  1. Ändern der Sprache und des Tastaturlayouts in verschiedenen Distributionen

  2. Verwendung von Reddit von der Konsole im Jahr 2020

  3. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  4. Wie ändere ich den TTY-Schrifttyp der Konsole dauerhaft, damit er nach dem Neustart erhalten bleibt?

  5. Löschen Sie die aktuelle gedruckte Konsolenzeile

So ändern Sie Schriftart und -größe der Linux-Konsole

Zusammenhang von Tastaturlayout und Xmodmap?

Was ist der Unterschied zwischen einer Konsole, einem Terminal und einer Shell?

printk und Konsolenprotokollebene

Abrufen der Zeichen  und â in der Linux PuTTY-Konsole

Wo ist die Terminalansicht von tty7