nur custom-Layout; keine systemspezifischen Details

Außerdem wurden ein paar Sätze ein wenig umformuliert.
This commit is contained in:
Ulli Kehrle 2022-02-18 22:57:52 +01:00
parent 9f97a3c654
commit 02e89365d3
No known key found for this signature in database
GPG Key ID: 06E88726998AB3C7
1 changed files with 43 additions and 29 deletions

View File

@ -329,19 +329,22 @@ Anstatt der Standard Linux-Konsole können auch modernere Konsolen wie [KMSCON](
## Persönliches Tastaturlayout konfigurieren
Durch Änderung der xkb-Dateien können bestehende Layouts angepasst oder ein neues eigenes Layout auf vorhandener Basis erstellt werden.
Bemerke, dass dies bei verschiedenen Distributionen und Display-Server-Protokollen (X11, Wayland) jeweils unterschiedlich sein kann. Das Erstellen der Datei ist immer gleich, aber die Platzierung der Datei und mögliche Änderungen an anderen Dateien kann variieren.
<!-- Wahrscheinlich sollte da nicht auf Gitea gelinkt werden. Aber hier alle Möglichkeiten aufzuzählen wäre zu lange und würde definitiv eine eigene Seite beanspruchen. -->
Siehe https://git.neo-layout.org/neo/dokumentation/pulls/40 für verschiedene Möglichkeiten.
Wenn man mit den verfügbaren Tastaturbelegungen nicht hundertprozentig zufrieden ist, kann man diese ohne weiteres an seine Bedürfnisse anpassen.
### Erstellen eines eigenen Layouts
Das Erstellen eines eigenen Layouts ist nicht so schwer wie man anfangs denken mag. Jedoch benötigt man dafür einige Kenntnisse mit der Kommandozeile. Es wird im Beispiel gezeigt, dass Tote Tasten aus dem NeoQwertz zu normalen Tasten umgeändert werden. Dies sollte sowohl unter Xorg als auch unter Wayland funktionieren.
Es bietet sich an, ein neues Layout mit dem Namen `custom` zu erstellen.
Dieses kann man dann in den Tastatureinstellungen des Systems auswählen, wie weiter oben im Artikel beschrieben wurde.
Bei manchen Systemen kann ein Neustart nötig sein.
Zuerst sollte eine Basis erschaffen werden, auf der dann die Änderung durchgeführt werden kann. Man betrachte dafür die Datei `/usr/share/X11/xkb/symbols/de` und suche nach unserem gewünschten Basis-Layout, hier `neo_qwertz`. Erstelle nunn eine neue Datei, welche wie folgt aussieht. In dieser wird dann auf `neo_qwertz` basiert.
Das Erstellen eines eigenen Layouts ist nicht so schwer wie man anfangs denken mag.
Es wird im Beispiel gezeigt, dass Tote Tasten aus dem NeoQwertz zu normalen Tasten umgeändert werden, die bei einfachem Druck direkt die (nichtkombinierenden) Akzente einzeln setzen.
Zuerst sollte eine Basis erschaffen werden, auf der dann die Änderung durchgeführt werden kann. Man betrachte dafür beispielsweise die Datei `/usr/share/X11/xkb/symbols/de` und suche nach unserem gewünschten Basis-Layout, hier `neo_qwertz`.
Erstelle nun eine neue Datei `/usr/share/X11/xkb/symbols/custom` (dies benötigt Root-Rechte), welche wie folgt aussieht:
```
partial alphanumeric_keys modifier_keys keypad_keys
default
xkb_symbols "neo_qwertz_nodeadkeys" {
include "de(neo_qwertz)"
@ -354,51 +357,62 @@ Hier kann man dann den Namen "neo_qwertz_nodeadkeys" und "German (Neo, QWERTZ, n
Jetzt kommt der eigentlich interessante Teil, das ändern des Layouts. Dafür brauchen wir `key`-Definitionen, welche man in der selben Datei wie oben genannt findet. Diese sehen Beispielsweise so aus:
```
key <AE12> { [ dead_grave, dead_cedilla, dead_abovering, dead_dasia, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] };
key <AE12> { [ dead_grave, dead_cedilla, dead_abovering, dead_dasia, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] };
```
Hier wird die Taste `AE12` (die Taste links neben Backspace) zu verschiedenen Zeichen (`dead_grave`, `dead_cedilla`, ...) basierend auf der aktuellen Ebene geändert. Wir wollen, dass diese Tasten normal funktionieren. Es werden deswegen diese Zeile in die neu erstellte Datei in den Block `xkb_symbolic` kopiert. alle `dead_` vor den Tasten entfernt:
Hier wird die Taste `AE12` (die Taste links neben Backspace) zu verschiedenen Zeichen (`dead_grave`, `dead_cedilla`, ...) basierend auf der aktuellen Ebene geändert.
Wir wollen, dass diese Tasten normal funktionieren. Es wird deswegen diese Zeile in die neu erstellte Datei in den Block `xkb_symbols` kopiert und alle `dead_` vor den Tasten entfernt:
```
key <AE12> { [ grave, cedilla, abovering, ... ] };
key <AE12> { [ grave, cedilla, abovering, ... ] };
```
Es muss außerdem noch eine Zeile mit `key.type[Group1] = "...";`, welche sich am Anfang des Textabschnittes bei allen Tastaturdefinitionen befinden, kopiert und auch vor die in der neuen Datei erstellten Definitionen eingefügt werden.
Um dafür zu sorgen, dass alle Ebenen funktionieren und sich die Taste bei aktiviertem Capslock richtig verhält, fügen wir oben drüber eine Zeile mit `key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";` ein.
Bei Buchstaben würde man den Typ `EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK` wählen.
Außerdem müssen `tilde` und `circumflex` durch `asciitilde` und `asciicircum` bei den jeweiligen Tasten ausgetauscht werden.
Genauso verfahren wir auch mit den anderen beiden Akzenttasten `<AD12>` und `<TLDE>`
Nun ist das erstellte Layout bereits fertig, es muss nun nach `/usr/share/X11/xkb/symbols/` verschoben werden, zum Beispiel mit den Namen `neo_qwertz_nodeadkeys` (es werden Root-Rechte benötigt) und das erstellte Layout kann mit `setxkbmap neo_qwertz_nodeadkeys` geladen werden. Alternativ kann die Datei unter Xorg auch ohne Root-Rechte mithilfe von `xkbcomp <dateiname> $DISPLAY` geladen werden. Falls ein Fehler beim Editieren der Datei gemacht wird, wird man hier darauf hingewiesen, das Tastaturlayout ändert sich nicht und man kann die Fehler korrigieren. Falls man seinen Fehler nicht findet, kann man durch `xkbcomp <dateiname>` auch das erstellten Layout prüfen lassen.
Außerdem müssen `tilde` und `circumflex` durch `asciitilde` und `asciicircum` bei den jeweiligen Tasten ausgetauscht werden, da die Keysyms nun mal so heißen.
Eine komplette Liste aller Keysym-Namen befindet sich in [keysymdef.h](https://cgit.freedesktop.org/xorg/proto/x11proto/tree/keysymdef.h).
Nun ist das erstellte Layout bereits fertig und es kann wie in der normalen Installationsanleitung beschrieben aktiviert werden.
Ob man Fehler in der Tastaturbelegung hat, kann man mit dem Kommandozeilenbefehl `xkbcli compile-keymap --layout custom` prüfen.
Jetzt noch die komplette Beispieldatei:
??? example "Beispiel"
```
partial alphanumeric_keys modifier_keys keypad_keys
xkb_symbols "neo_qwertz_nodeadkeys" {
```
default
xkb_symbols "neo_qwertz_nodeadkeys" {
include "de(neo_qwertz)"
name[group1]="German (Neo, QWERTZ, no dead keys)";
key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
key <AE12> { [ asciicircum, cedilla, abovering, abovereversedcomma, diaeresis, NoSymbol, macron, NoSymbol ] };
key <AD12> { [ asciicircum, asciitilde, stroke, abovecomma, doubleacute, NoSymbol, breve, NoSymbol ] };
key <TLDE> { [ asciicircum, caron, U21BB, U02DE, abovedot, Pointer_EnableKeys, belowdot, NoSymbol ] };
};
```
Für mehr Informationen siehe auch:
<https://unix.stackexchange.com/questions/202883/create-xkb-configuration-from-xmodmap>.
key <AE12> { [ asciicircum, cedilla, abovering, abovereversedcomma, diaeresis, NoSymbol, macron, NoSymbol ] };
key <AD12> { [ grave, asciitilde, stroke, abovecomma, doubleacute, NoSymbol, breve, NoSymbol ] };
key <TLDE> { [ acute, caron, U21BB, U02DE, abovedot, Pointer_EnableKeys, belowdot, NoSymbol ] };
};
```
### Änderung von xkb-Dateien
Anstatt ein neues Layout zu erstellen, kann es für geringfügige Änderungen sinnvoller sein, die xkb-Dateien direkt anzupassen. Diese Änderungen erfordern allerdings Rootrechte. Außerdem kann es vorkommen, dass Änderungen direkt in `/usr/share/X11/xkb` nach einem Systemupdate wieder überschrieben werden.
Anstatt ein neues Layout zu erstellen, kann es für unter Umständen kurzfristig praktisch sein, die bereits vorhandenen Dateien direkt anzupassen.
Diese werden allerdings in der Regel nach einem Systemupdate wieder überschrieben, weshalb davon eher abzuraten ist.
Wenn man unbedingt die bereits vorhandenen Layouts mit deren Namen modifzieren möchte, sollte man Wayland benutzen und die eigene Variante in `/etc/xkb/symbols/de` oder `~/.config/xkb/symbols/de` speichern, wo sie dann die Systemtastaturbelegungen überdecken.
#### Ändern von NeoQwertz zur Variante mit Eszett unten
Die Änderungen erfolgen in der Datei `/usr/share/X11/xkb/symbols/de`:
Ein einfaches Beispiel wäre beispielsweise das Vertauschen von zwei Tasten.
Als Beispiel könnte man etwa die Datei `/usr/share/X11/xkb/symbols/de` folgendermaßen verändern:
- suche nach dem Abschnitt `neo_qwertz_base`
- vertausche die IDs der Tastendefinitionen von AE11 und AB10
Anschließend müssen die xkb-Dateien erneut eingelesen werden (alternativ den Rechner neu starten) Unter Debian erfolgt dies mit `sudo dpkg-reconfigure xkb-data`. Danach erneut das Tastaturlayout auswählen über `setxkbmap de neo_qwertz`, schon sind die vertauschten Tasten gültig.
Und schon sind die beiden Tasten vertauscht.
Die Änderung kann man in der Regel aktivieren, indem man kurzzeitig eine andere Tastaturbelegung einstellt und wieder zurückwechselt, andernfalls hilft ein Neustart.
Da eine persistente Lösung über das `custom`-Layout nur minimal aufwendiger ist, raten wir allerdings von diesem Vorgehen ab.