Zum Inhalt springen

XKB

Aus wiki.archlinux.de

„XKB“ wurde von Dirk (Diskussion) als in Bearbeitung markiert. Um Bearbeitungskonflikte zu vermeiden, kontaktiere Dirk (Diskussion) bitte, bevor du den Artikel bearbeitest.


Dieser Artikel oder Artikelabschnitt ist noch nicht vollständig!


Die X keyboard extension, oder kurz XKB, ist ein unter X optionales und unter Wayland standardmäßiges System zur Definition eigener, und Anpassung bestehender, Tastaturlayouts, ähnlich wie es exklusiv für X mittels der Xmodmap möglich ist. XKB hat dabei einen modernen Ansatz und erlaubt neben der einfachen Tastenbelegung sehr viele und komplexe Anpassungen des Layouts.

Installation

XKB wird über das Paket libxkbcommon bereitgestellt, es muss allerdings im Normalfall nicht installiert werden, da sowohl die gängigen Desktopumgebungen als auch Fenstermanager indirekt durch deren Abhängigkeiten von XKB abhängen.

Für X gibt es diverse Programme, über die XKB konfiguriert werden kann. Da XKB unabhängig von X ist, und die Programme daher nichts X-spezifisches machen, können diese teilweise auch innerhalb von Wayland-Kompositoren benutzt werden. libxkbcommon bringt zudem xkbcli mit, um sich verschiedene XKB-Konfigurationen ausgeben zu lassen.

Die Verwendung von XKB ist abhängig des benutzten Desktop Environments, Fenstermanagers, oder Kompositors. Siehe hier.

Überblick

Die systemweite Konfiguration von XKB liegt bei Arch unter /usr/share/X11/xkb/. In dessen Unterverzeichnis symbols befinden sich die die verfügbaren Tastaturlayoutdefinitionsdateien. Die gleiche Struktur kann für die userbezogene Konfiguration unter ~/.config/xkb/ aufgebaut werden.

Genau genaommen geht XKB in dieser Reihenfolge durch spezifizierten Verzeichnisse. XKB iteriert so lange durch die Verzeichnisse, bis die angeforderte Information gefunden wird.

  1. $XDG_CONFIG_HOME/xkb/ oder $HOME/.config/xkb/, wenn die Umgebungsvariable XDG_CONFIG_HOME micht gesetzt wurde
  2. Aus historischen Gründen noch $HOME/.xkb/, sollte aber nicht mehr genutzt werden
  3. $XKB_CONFIG_EXTRA_PATH oder wenn nicht gesetzt /etc/xkb.
  4. $XKB_CONFIG_ROOT oder wenn nicht gesetzt /usr/share/X11/xkb

Die Dateien in diesen Verzeichnissen werden automatisch erkannt und können über ihren Namen, oder die von XKB aus den Dateien heraus generierten IDs direkt benutzt werden.

Abschnitte

XKB-Dateien werden in Abschnitte unterteilt. Diese Umfassen die eigentlichen Tastenkonfigurationen (xkb_symbols), die verschiedenen Varianten des Layouts, die physikalische Beschreibung der Tastatur, etc. In diesem Wiki-Artikel werden nur die xkb_symbols behandelt. Diese Unterteilung macht es aber möglich, verschiedene einzelne Konfigurationen in anderen Layouts einzubinden.

Das Einbinden erfolgt dabei immer im gleichen Muster: layoutname(layoutvariante). Der Layoutname entspricht dem Dateinamen, die Variante wird bei der Definition eines xkb_symbols-Abschnitts angegeben.

Auch selbstreferentielle Einbindungen sind möglich. Das Beispiel hier im Wiki unterteilt die einzelnen Definitionen in eigene Abschnitte, und referenziert diese mittels mein-layout(abschnittsname) im „Header“, um sie automatisch zu laden, wenn das Layout verwendet wird.

Will man nicht, dass ein Abschnitt eingebunden werden kann, so muss man ihn mit dem Keyword hidden definieren:

hidden xkb_symbols "versteckt" {
  ...
};

Hierdurch kann der Abschnitt nur innerhalb der aktuellen Definition verwendet werden.

Weitere Abschnittsoptionen sind unter anderem partial, um einen Abschnitt zu definieren der nicht den kompletten Tastaturbereich abdeckt, keypad_keys für einen Abschnitt, der nur die Tasten des Nummernfeldes behandelt, oder modifier_keys um einen Abschnitt zu definieren, in dem Modifier Keys, wie Shift, Alt, etc. definiert werden.

Eigenes Layout

Will man ein eigenes Layout anlegen, so kann man dies entweder systemweit unter /usr/share/X11/xkb/symbols/mein-layout oder userbezogen unter ~/.config/xkb/symbols/mein-layout geschehen. Der Wiki-Artikel benutzt als Beispiel eine Tastatur mit englischem Layout (ANSI-US, QWERTY-Layout), prinzipiell lässt sich alles aus diesem Artikel genau so auf alle anderen Layouts anwenden.

Sofern man das eigene Layout bei der Erstellung auf dem Gerät testet, auf dem man es auch entwickelt, so sollte man sicherstellen, dass die Möglichkeit besteht, das System nur unter Verwendung der Maus sauber zu verlassen. Zum Beispiel durch einen Menüeintrag zum Abmelden, eine per Doppelklick ausführbare Scriptdatei die ein killall an den X-Server oder Wayland-Kompositor sendet, etc.

Alternativ kann man sich z.B. per SSH von einem anderen Host aus zum Rechner verbinden, und XKB im Remote-Terminal konfigurieren, so dass fehlende Funktionalität der Tastatur auf dem Gerät nicht relevant ist.

Es ist zu beachten, dass XKB bei Fehlkonfiguration sowohl den X-Server als auch jegliche Wayland-Kompositoren zum Absturz bringen kann. Wenn man das Layout entwickelt, sollte man also sicherstellen, dass andere Programme und Dateien geschlossen oder gespeichert sind.

Da Die XKB-Konfiguration geladen wird, sobald die Grafische Oberfläche geladen wird, sollte man für eine Anmeldemethode sorgen, bei der keine grafische Oberfläche gestartet wird. Da XKB in der Shell nicht aktiv ist, reicht es, während der Entwicklungsphase den automatischen Start des Grafikservers abzustellen, so dass man immer erst in der Befehlszeile landet, um die XKB-Konfiguration vorher zu reparieren.

Konfigurations-„Header“

Sofern man nicht ein komplettes eigenes Layout erstellen will, sondern ein bestehendes Layout einbinden und dieses Anpassen will, so sollte man dies entsprechend einbinden.

~/.config/xkb/symbols/mein-layout
default xkb_symbols "basic" {
  Name[Group1] = "ANSI-US (Angepasst)";
  include "us"
  include "level3(ralt_switch)"
  include "mein-layout(sonderzeichen)"
  include "mein-layout(pfeile)"
  include "mein-layout(better-capslock)"
};

Dieser Abschnitt wird mittels default als Standardabschnitt definiert der benutzt wird, sofern man beim Anwenden des Layouts keine Variante angibt. Der Abschnitt heißt basic. Es wird hier folgendes konfiguriert:

  • Name[Group1] = '...' = Name der ersten Gruppe an Symbolen. Es können bis zu vier Gruppen definiert werden, die mittels verschiedener Modifier-Tasten aktiviert werden können.
  • include "us" = Dies lädt das US-Tastaturlayout, damit das eigene Layout vollständig ist, ohne, dass man jede Taste explizit konfigurieren muss.
  • include "level3(ralt_switch)" Hiermit wird die Variante ralt_switch aus dem Layout level3 geladen. Dies ermöglicht es, mittels des rechten Alt auf einer ANSI-Tastatur, den Keysym ISO_Level3_Shift zu senden, was dem von ISO-Tastaturen (ISO-DE) bekannten AltGr entspricht.
  • Mittels weiterer include-Abschnitte können beliebig viele andere Layouts und Layout-Varianten eingebunden werden.

Die Abschnitte sonderzeichen, pfeile, und better-capslock werden im weiteren Verlauf definiert. Sie werden in beliebiger Reihenfolge unterhalb des „Headers“ definiert und zeigen Beispielhaft einige Möglichkeiten der Definition auf.

Sonderzeichen

Pfeile

„Better CapsLock“

Ein Layout verwenden

Wayland

X

Systemweit

Userbezogen

Siehe auch

  • Xmodmap für einen X-spezifischen Weg

Weblinks