Überarbeitete Methode

This commit is contained in:
Schmiddiii 2022-02-16 16:18:18 +01:00
parent b6a0d81cf3
commit a41aae6288
1 changed files with 44 additions and 58 deletions

View File

@ -333,83 +333,69 @@ Durch Änderung der xkb-Dateien können bestehende Layouts angepasst oder ein ne
### 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.
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.
Zuerst sollte eine Basis erschaffen werden, auf der dann die Änderung durchgeführt werden kann. Der folgende Befehl erstellt eine Datei, welche das aktuell genutzte Tastaturlayout beinhaltet:
```
xkbcomp -xkb $DISPLAY
```
Betrachtet man diese Datei, so erkennt man folgende Struktur:
```
xkb_keymap {
xkb_keycodes "evdev+aliases(qwerty)" {
[...]
};
xkb_types "complete" {
[...]
};
xkb_compatibility "complete" {
[...]
};
xkb_symbols "pc+de(neo_qwertz_base)+inet(evdev)+capslock(swapescape)+terminate(ctrl_alt_bksp)" {
[...]
};
xkb_geometry "pc(pc105)" {
[...]
};
};
```
Man lösche zuerst alles, was nicht in den `xkb_symbols`-Block ist. Ändere nun die erste Zeile (die mit `xkb—symbols`) wie folgt:
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` und kopiert dies in eine eigene Datei, welche ungefähr wie folgt aussieht:
```
partial alphanumeric_keys modifier_keys keypad_keys
xkb_symbols "neo_quertz_nodeadkeys" {
include "pc"
xkb_symbols "neo_qwertz" {
include "de(neo_qwertz_base)"
include "inet(evdev)"
include "capslock(swapescape)"
include "terminate(ctrl_alt_bksp)"
name[Group1]= "German (Neo, QWERTZ)";
include "shift(both_capslock)"
include "level3(caps_switch)"
include "level3(bksl_switch)"
include "level5(lsgt_switch_lock)"
include "level5(ralt_switch_lock)"
};
```
Es wurde also die Zeile darüber eingefügt, ein passender Name ("neo_qwertz_nodeadkeys") vergeben und die ehemalige Zeile in den Anführungszeichen in mehrere `include`s aufgeteilt. Man sollte auch noch den sichtbaren Namen ändern, zum Beispiel zu:
Hier kann man dann den Namen von "neo_qwertz" Beispielsweise auf "neo_qwertz_nodeadkeys" und "German (Neo, QWERTZ)" auf "German (Neo, QWERTZ, no dead keys)" ändern.
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:
```
name[group1]="German (Neo, QWERTZ, nodeadkeys)";
key <AE12> { [ dead_grave, dead_cedilla, dead_abovering, dead_dasia, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] };
```
Jetzt kommt der eigentlich interessante Teil, das ändern des Layouts. In der generierten Datei sind noch sehr viele `key`-Definitionen zu finden, beispielsweise:
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:
```
key <AE12> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ dead_grave, dead_cedilla, dead_abovering, ... ]
};
key <AE12> { [ grave, cedilla, abovering, ... ] };
```
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 alle `dead_` vor den Tasten entfernt:
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.
Außerdem müssen `tilde` und `circumflex` durch `asciitilde` und `asciicircum` bei den jeweiligen Tasten ausgetauscht werden.
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.
??? example "Beispiel"
```
key <AE12> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ grave, cedilla, abovering, ... ]
};
partial alphanumeric_keys modifier_keys keypad_keys
xkb_symbols "neo_quertz_nodeadkeys" {
include "de(neo_qwertz_base)"
name[group1]="German (Neo, QWERTZ, no dead keys)";
include "shift(both_capslock)"
include "level3(caps_switch)"
include "level3(bksl_switch)"
include "level5(lsgt_switch_lock)"
include "level5(ralt_switch_lock)"
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 ] };
};
```
Außerdem müssen `tilde` und `circumflex` durch `asciitilde` und `asciicircum` bei den jeweiligen Tasten ausgetauscht werden. Um zu finden, was alles ausgetauscht werden sollte, ist ein Blick in `/usr/share/X11/xkb/symbols/de` zu empfehlen, welches einen ähnlichen Aufbau wie die von uns erstellte Datei hat.
Die von uns nicht geänderten Tasten können gelöscht werden.
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. 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.
Für mehr Informationen siehe auch:
<https://unix.stackexchange.com/questions/202883/create-xkb-configuration-from-xmodmap>.