XKB: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) |
Dirk (Diskussion | Beiträge) |
||
Zeile 49: | Zeile 49: | ||
Mit ''libxkbcommon'' wird unter anderem auch das Tool {{ic|xkbcli}} installiert, das es ermöglicht, allerlei Informationen bezüglich der aktuellen Konfiguration auszulesen. | Mit ''libxkbcommon'' wird unter anderem auch das Tool {{ic|xkbcli}} installiert, das es ermöglicht, allerlei Informationen bezüglich der aktuellen Konfiguration auszulesen. | ||
Mittels {{ic|xkbcli interactive-wayland}} (bzw. {{ic|...wayland}} oder {{ic|...evdev}}) kann man ein kleines Fenster öffnen, über das man ähnlich wie mit {{paket|xorg-xev|xev}} oder {{paket|wev}} die gedrückten Tasten überprüfen kann. | Mittels {{ic|xkbcli interactive-wayland}} (bzw. {{ic|...wayland}} oder {{ic|...evdev}}) kann man ein kleines Fenster öffnen, über das man ähnlich wie mit {{paket|xorg-xev|xev}} oder {{paket|wev}} die gedrückten Tasten überprüfen kann. Verlassen kann man das Programm, indem man den Prozess beendet. ''xkbcli'' zeigt zu den Tasten diverse Informationen im Stil von {{ic|information [ wert ]}} an. Für die Anzeige im Wiki wurden die Informationen untereinander geschrieben, beim Ausführen sind diese alle in einer Zeile. | ||
seat0: | |||
keycode [ AE01 ] | |||
keysyms [ 1 ] | |||
unicode [ 1 ] | |||
layout [ English (US) (0) ] | |||
level [ 0 ] | |||
mods [ Mod2 NumLock ] | |||
leds [ Num Lock ] | |||
Hier wurde einzig und alleine die Taste {{taste|1}} gedrückt. Es werden der für die Definition des Layouts benötige Keycode, der Keysym, dessen Unicode-Repräsentation, sowie die gedrückten ''Modifier Keys'' angezeigt. Beim Drücken von {{taste|Shift}} + {{taste|1}} wird neben dem Drücken von Shift auch die nun veränderte Ausgabe gezeigt. | |||
seat0: keycode [ AE01 ]keysyms [ exclam ] unicode [ ! ] | |||
... | |||
mods [ -Shift Mod2 NumLock ] leds [ Num Lock ] | |||
Zudem werden am Ende die aktiven Modifier angezeigt. | |||
== Eigenes Layout == | == Eigenes Layout == |
Version vom 13. Februar 2025, 21:16 Uhr
„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.
XKB geht in dieser Reihenfolge durch die spezifizierten Verzeichnisse. XKB iteriert dabei so lange durch die Verzeichnisse, bis die angeforderte Information gefunden wurde.
$XDG_CONFIG_HOME/xkb/
oder$HOME/.config/xkb/
, wenn die UmgebungsvariableXDG_CONFIG_HOME
micht gesetzt wurde- Aus historischen Gründen noch
$HOME/.xkb/
, sollte aber nicht mehr genutzt werden $XKB_CONFIG_EXTRA_PATH
oder wenn nicht gesetzt/etc/xkb
.$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. Einige der Angaben können auch kombiniert werden. Es hat sich bei mehreren Angaben etabliert, diese auf eine eigene Zeile zu setzen.
partial function_keys modifier_keys xkb_symbols "special-keys" { ... };
Dies definiert unter dem Namen special-keys
einen unvollständigen Abschnitt (partial
) mit Funktionstasten und den Modifier Keys.
Informationen anzeigen

Mit libxkbcommon wird unter anderem auch das Tool xkbcli
installiert, das es ermöglicht, allerlei Informationen bezüglich der aktuellen Konfiguration auszulesen.
Mittels xkbcli interactive-wayland
(bzw. ...wayland
oder ...evdev
) kann man ein kleines Fenster öffnen, über das man ähnlich wie mit xev oder wev die gedrückten Tasten überprüfen kann. Verlassen kann man das Programm, indem man den Prozess beendet. xkbcli zeigt zu den Tasten diverse Informationen im Stil von information [ wert ]
an. Für die Anzeige im Wiki wurden die Informationen untereinander geschrieben, beim Ausführen sind diese alle in einer Zeile.
seat0: keycode [ AE01 ] keysyms [ 1 ] unicode [ 1 ] layout [ English (US) (0) ] level [ 0 ] mods [ Mod2 NumLock ] leds [ Num Lock ]
Hier wurde einzig und alleine die Taste 1 gedrückt. Es werden der für die Definition des Layouts benötige Keycode, der Keysym, dessen Unicode-Repräsentation, sowie die gedrückten Modifier Keys angezeigt. Beim Drücken von ⇧ Shift + 1 wird neben dem Drücken von Shift auch die nun veränderte Ausgabe gezeigt.
seat0: keycode [ AE01 ]keysyms [ exclam ] unicode [ ! ] ... mods [ -Shift Mod2 NumLock ] leds [ Num Lock ]
Zudem werden am Ende die aktiven Modifier angezeigt.
Eigenes Layout
Hinweis: 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.
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. 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.
Konfigurations-„Header“
Sofern man nicht ein komplettes eigenes Layout erstellen will, sondern ein bestehendes Layout 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(umlaute)" 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 für die im Beispiel verwendete Tastatur, damit das eigene Layout vollständig ist, ohne, dass man jede Taste explizit konfigurieren muss.include "level3(ralt_switch)"
Hiermit wird die Varianteralt_switch
aus dem Layoutlevel3
geladen. Dies ermöglicht es, mittels des rechten Alt auf einer ANSI-Tastatur,ISO_Level3_Shift
zu senden schalten, was dem von ISO-Tastaturen (ISO-DE) bekannten AltGr entspricht. Mittels AltGr + ⇧ Shift erreicht man zudemISO_Level4_Shift
.- Mittels weiterer
include
-Abschnitte können beliebig viele andere Layouts und Layout-Varianten eingebunden werden.
Die Abschnitte umlaufe
, 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.
Umlaute
Das Beispiel nutzt eine ANSI-US-Tastatur, als solche verfügt sie nicht über Umlaute. Mittels der folgenden Konfiguration werden die Umlaute in einer Gruppe definiert.
partial alphanumeric_keys xkb_symbols "umlauts" { key <AC01> {[ a , A , adiaeresis , Adiaeresis ]}; key <AD09> {[ o , O , odiaeresis , Odiaeresis ]}; key <AD07> {[ u , U , udiaeresis , Udiaeresis ]}; key <AC02> {[ s , S , ssharp , U1E9E ]}; };
...
Pfeile
„Better CapsLock“
Ein Layout verwenden
Wayland
Wayland-Kompositoren setzen das zu verwendende Keyboardlayout standardmäßig mittels XKB. Wie genau dies geschieht, ist abhängig vom verwendeten Kompositor.
labwc zum Beispiel benutzt die Umgebungsvariable XKB_DEFAULT_LAYOUT
.
~/.config/labwc/environment
XKB_DEFAULT_LAYOUT='mein-Layout' [...]
Dies setzt mein-layout
mit allen weiteren Standardoptionen. Siehe Abschnitt zum Setzen des Tastaturlayouts im labwc-Wikiartikel.
Der Kompositor Hyprland verwendet einen Abschnitt in der Konfiguration.
~/.config/hypr/hyprland.conf
input { kb_layout = mein-layout [...] }
Auch Hyprland erlaubt eine weitere Spezifizierung der Optionen und Verianten.
Es sei nochmals generell auf die Dokumentation des verwendeten Kompositors verwiesen.
X
Sofern man noch X benutzt, kann man hier ebenfalls XKB benutzen, um das Tastaturlayout einzustellen.
Systemweit
Man kann sich hier an den abschnitt zu X.org im Wiki-Artikel zur Einstellung von Arch auf Deutsch orientieren. In Option "XkbLayout" "de"
gibt man dann statt de
den namen des erstellten Layouts an, im Beispiel also Option "XkbLayout" "mein-layout"
. Wenn man das Layout systemweit einstellt, sollte man es in /usr/share/X11/xkb/
ablegen, damit alle Useraccounts darauf zugreifen können.
Userbezogen
Für eine Userbezogene Konfiguration kann man, sofern die Desktopumgebung oder der Fenstermanager es nicht unterstützen, das Programm setxkbmap in den Autostart packen.
setxkbmap mein-layout
Damit wird der Standard-Abschnitt aus mein-layout
für die aktuelle X-Session geladen, dies ist von der Funktionsweise her identisch zur Xmodmap.
Siehe auch
- Xmodmap für einen X-spezifischen Weg