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

Zusammenhang von Tastaturlayout und Xmodmap?

Ich verwende Xubuntu. Vor der Anmeldung kann ich ein Tastaturlayout auswählen. Ich verwende xmodmap zum Neubelegen einiger Tasten.

Mich interessieren zwei Dinge:

  1. Wie sich der Status der Tastaturzuordnung ändert (a) wenn ich den Laptop einschalte, (b) während des Bootvorgangs und (c) beim Anmelden am System (in diesen drei Phasen) und beim Arbeiten mit dem System (eingeloggt). ).
  2. Was bewirkt, welche Symbole in den einzelnen Phasen auf dem Bildschirm angezeigt (und Steuertasten gesendet) werden. Wenn ich eine Taste drücke, sendet sie ein Signal an den Tastaturtreiber (?) und dann muss ein Entscheidungsprozess (Anwendungen und Konfigurationsdateien) stattfinden, der bestimmt, welche Symbole angezeigt werden. Die Antwort auf diese Frage sollte die Liste der Anwendungen und Pfade zu diesen Konfigurationsdateien sein (ich interessiere mich besonders für Ubuntu (Debian-basiertes System), aber Sie können ein anderes System beschreiben, aber Ubuntu wird bevorzugt).

Akzeptierte Antwort:

Hier gibt es zwei Ebenen, die Zuordnung von KEYCODE zu KEYSYM und die Zuordnung von KEYSYM zu Text. Es gibt mehr Ebenen, wenn Sie den Kernel mitzählen, der Scancodes einer AT-Tastatur einem KEYCODE im XT-Stil oder einen HID-Code einer USB-Tastatur einem KEYCODE zuordnen muss. Ein KEYCODE ist einfach eine vorzeichenlose 8-Bit-Ganzzahl, die der Kernel eines Betriebssystems an den X11-Server weitergibt. Sie kann zwischen Betriebssystemen wie Linux und Solaris variieren. Unter Linux sind diese KEYCODEs normalerweise die gleiche Nummer, die auf alten XT-PC-Tastaturen verwendet wird. Neuere Computer mit AT-, PS/2- oder USB-Tastaturen ordnen diese Tastaturen normalerweise nur dem alten XT-Code für die Taste zu, um das Leben einfacher zu machen.

Rohe Tastaturcodes, ob XT, AT, PS/2 oder USB, stellen einen physischen Ort auf einer Tastatur dar. Die XT-Tastatur sendet beim Drücken oder Loslassen einer Taste nur eine einzige 8-Bit-Zahl. Die q-Taste auf einer US/britischen XT-Tastatur sendet die Zahl 16. Auf einer französischen Tastatur ist dieselbe physische Taste mit a gekennzeichnet, aber sie sendet immer noch 16. Es sind die höheren Schichten im Betriebssystem, die ihr eine echte Bedeutung zuweisen. Wenn eine Taste auf einer XT-Tastatur losgelassen wird, wird derselbe Tastencode plus 128 gesendet. Wenn in diesem Beispiel q gedrückt wird, wird eine 16 gesendet, aber beim Loslassen wird die Zahl 142 (16+128) gesendet. AT-Tastaturen verwenden Scancodes, die eine Reihe von Zahlen sind und ziemlich lang werden können. Schlüsselfreigaben fügen zusätzliche Codes hinzu. Der Scancode für Pause lautet beispielsweise E1, 1D, 45, E1, 9D, C5. Die meisten Betriebssysteme, einschließlich DOS, Windows, Linux, FreeBSD und das BIOS, ordnen alle Scancodes in viel einfachere Scancodes im XT-Stil zu. Es erleichtert auch die Unterstützung neuerer Tastaturen, die andere Codes verwenden, wie z. B. USB-Tastaturen, die HID-Codes senden. Alle Codes werden vom Betriebssystem demselben konsistenten Satz von Codes zugeordnet, bevor X11 oder die Anwendung sie sieht.

Verwandte:Wie kann man in einer Datei nach diesem oder jenem (2 Dinge) suchen?

X11 kennt diesen Teil des Prozesses nicht, es erhält nur den KEYCODE vom Kernel und wendet seine eigene Zuordnung an, um diesen KEYCODE in ein KEYSYM umzuwandeln. Xmodmap ist das Standardwerkzeug zur Steuerung dieser Zuordnung. Ein Großteil des Verhaltens der Tastaturzuordnung ist konfigurierbar, aber es gibt mehrere Sonderfälle wie Num Lock, Mode Switch und Caps Lock/Shift Lock, die in X11 fest codiert sind. Andere Aspekte wie Shift sind tatsächlich konfigurierbar. Im Gegensatz zum Modusschalter oder der Num-Taste kann jede Taste als Umschalttaste zugewiesen werden.

KEYCODEs stellen physische Schlüssel dar, die vom Kernel des Betriebssystems gesendet werden. Jeder KEYCODE kann 8 möglichen KEYSYMs zugeordnet werden. Nur 4 werden verwendet und werden manchmal als Ebenen 1-4 bezeichnet. Stufe 1 gibt das KEYSYM an, das gedruckt wird, wenn keine Modifikatoren aktiv sind. Dies sind oft Kleinbuchstaben und Ziffern. Modifikatoren sind KEYCODEs, die das KEYSYM modifizieren, das von anderen KEYCODEs generiert wird, wenn der Modifikator aktiv ist (gedrückt oder eingeschaltet). Modifikator-Keycodes werden auch über Xmodmap gesteuert. Level 2 spezifiziert ein KEYSYM, das gesendet werden soll, wenn der Shift-Modifikator gedrückt wird. Ebene 3 wird immer dann aktiviert, wenn der Modusschalter KEYSYM gedrückt wurde. Ebene 4 wird aktiviert, wenn sowohl eine Umschalttaste als auch ein Modusschalter aktiv sind.

Sobald ein KEYSYM generiert wurde, kann dieses direkt interpretiert werden, wird aber meistens in Text umgewandelt. Nicht alle KEYSYMs werden zu Text oder können nur ein zukünftiges KEYSYM betreffen. Ein Beispiel ist natürlich Shift_L, das keine Textdarstellung hat, aber es gibt auch eine Reihe von KEYSYMs, die verwendet werden, um ein anderes Zeichen zu erstellen. Eine Liste davon befindet sich auf meinem System unter /usr/share/X11/locale/en_US.UTF-8/Compose . Ein solches Beispiel ist das dead_acute KEYSYM, das, wenn es gedrückt wird, versuchen wird, das nächste KEYSYM in einen Akut-Akzent-Buchstaben umzuwandeln. Es gibt eine Standardzuordnung, um KEYSYMs in Unicode umzuwandeln.

Nachdem all dies gesagt wurde, beachten Sie, dass Xmodmap veraltet ist und durch XKB ersetzt wurde, das viel ausgefeilter ist. Dies wirkt sich darauf aus, wie KEYCODEs auf KEYSYMs abgebildet werden, aber nicht darauf, wie der Kernel KEYCODES generiert oder wie KEYSYMs in Text umgewandelt oder zusammengesetzt werden, was immer noch derselbe ist. XKB kann deaktiviert werden, um das Xmodmap-Verhalten wiederherzustellen. Es hat auch eine Kompatibilitätsebene zur Unterstützung von Xmodmap, aber es kann Probleme geben, da es nicht vollständig kompatibel ist. XKB-Regeln befinden sich unter /usr/share/X11/xkb/ und sind viel raffinierter. An anderer Stelle gibt es eine gute Dokumentation darüber, wie es Tastaturlayouts für die Zuordnung von KEYCODEs zu KEYSYMs generiert.

Die Linux-Konsole hat ihre eigenen Tastaturlayouts, die in /usr/share/keymaps gespeichert sind und mit den loadkeys geladen Befehl. Im BIOS und früheren Bootloader-Stadien, einschließlich GRUB2, ist die Tastaturzuordnung die Zahl, die das BIOS der Taste zuordnet.

Siehe auch:Debian – Openssl über apt-get aktualisiert, `openssl version` zeigt vorherige Version?
Linux
  1. Mapping-Tastenkombination mit Xmodmap?

  2. Bildschirm leer erzwingen und Eingaben ignorieren?

  3. Mit welchem ​​Tastaturlayout kann ich ç eingeben?

  4. Emacs, Linux und internationale Tastaturlayouts

  5. Linux:Ändern Sie das Tastaturlayout im Handumdrehen

So fügen Sie das Tastaturlayout auf Ubuntu 22.04 Desktop hinzu und wechseln es

Albert – Ein schneller und flexibler Tastaturstarter

Korrigieren Sie das falsche Tastaturlayout in Ubuntu

Plasma-Geheimnisse:zusätzliche Sprachen und Tastaturlayouts

Wie verstecke ich die Tastaturlayoutanzeige in Ubuntu 17.10 und höher mit Gnome 3?

Schlüssel neu zuordnen ohne xmodmap oder X-Tools