Anleitung zu eigenen Keyboard-Layout bei Linux

Habe ich bei mir lokal so gemacht, sollte also auch so in den meisten
Distributionen funktionieren. Es sind vielleicht noch einige
Rechtschreibfehler/Grammatikfehler dabei.
This commit is contained in:
Schmiddiii 2022-02-16 14:41:28 +01:00
parent 0c8465920b
commit b6a0d81cf3
1 changed files with 77 additions and 3 deletions

View File

@ -333,10 +333,84 @@ Durch Änderung der xkb-Dateien können bestehende Layouts angepasst oder ein ne
### Erstellen eines eigenen Layouts
!!! missing "Fehlend"
Hier fehlen weitere Beispiele zum Erstellen eines eigenen Layouts mit Hilfe von xkbcomp.
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.
Siehe auch:
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:
```
partial alphanumeric_keys modifier_keys keypad_keys
xkb_symbols "neo_quertz_nodeadkeys" {
include "pc"
include "de(neo_qwertz_base)"
include "inet(evdev)"
include "capslock(swapescape)"
include "terminate(ctrl_alt_bksp)"
```
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:
```
name[group1]="German (Neo, QWERTZ, nodeadkeys)";
```
Jetzt kommt der eigentlich interessante Teil, das ändern des Layouts. In der generierten Datei sind noch sehr viele `key`-Definitionen zu finden, beispielsweise:
```
key <AE12> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ dead_grave, dead_cedilla, dead_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:
```
key <AE12> {
type= "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
symbols[Group1]= [ grave, cedilla, abovering, ... ]
};
```
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>.