# <svg viewBox="0 0 24 24" width="1em"> <path fill="currentColor" d="M19,16C19,17.72 18.37,19.3 17.34,20.5C17.75,20.89 18,21.41 18,22H6C6,21.41 6.25,20.89 6.66,20.5C5.63,19.3 5,17.72 5,16H3C3,14.75 3.57,13.64 4.46,12.91L4.47,12.89C6,11.81 7,10 7,8V7A5,5 0 0,1 12,2A5,5 0 0,1 17,7V8C17,10 18,11.81 19.53,12.89L19.54,12.91C20.43,13.64 21,14.75 21,16H19M16,16A4,4 0 0,0 12,12A4,4 0 0,0 8,16A4,4 0 0,0 12,20A4,4 0 0,0 16,16M10,9L12,10.5L14,9L12,7.5L10,9M10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5M14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5Z" /></svg> Linux

## Vorbemerkungen
Bei allen modernen Systemen sind die Neo-basierten Layouts Neo, Bone und Neoqwertz
schon vorinstalliert. Zum Aktivieren reicht es aus, diese in den
Tastatureinstellungen auszuwählen.

Bei Problemen gibt es in der FAQ eine Liste der [bekannten Probleme unter
Linux](../Probleme/FAQ.md#linux-unix-bsd). Darüber hinaus gibt es mehrere Möglichkeiten,
[individuelle Hilfe für Neo](../Beitragen/Community.md) zu erhalten.

!!! warning "Achtung"
    Wird Neo nicht systemweit aktiviert, hat man während der Anmeldung
    möglicherweise noch eine andere Tastaturbelegung. Man sollte also seinen
    Benutzernamen und sein Passwort sowohl in Qwertz (Login) als auch in Neo
    (z. B. Bildschirmschoner) eingeben können.

## Neo aktivieren: Systemweit/Generisch

Man kann das Standardtastaturlayout des Xorg-Servers mit folgendem Befehl auf das jeweilige Neo-Layout setzen:

=== "Neo"
    ```
    sudo localectl set-x11-keymap --no-convert de pc105 neo
    ```
=== "Bone"
    ```
    sudo localectl set-x11-keymap --no-convert de pc105 bone
    ```
=== "NeoQwertz"
    ```
    sudo localectl --no-convert set-x11-keymap de pc105 neo_qwertz
    ```

Jedoch haben einige Desktop-Umgebungen eigene Tastatureinstellungen, die
diese Einstellung überschreiben können. Wie man bei bestimmten
Desktopumgebungen das Tastaturlayout setzt, wird im nächsten Abschnitt gezeigt.

Die systemweite Einstellung wirkt sich auf die meisten Login-Manager (etwa
sddm, lightdm, gdm) aus.

Außerdem kann man temporär das Tastaturlayout des aktuellen Xorg-Servers z.B.
durch den Befehl `setxkbmap de neo` setzen. Bei Desktopumgebungen, die keine
eigenen Tastatureinstellungen besitzen, bietet es sich an, diesen Befehl in den
Autostart zu packen, um Neo (bzw. Bone oder NeoQwertz) nur für einen Benutzer
zu aktivieren – je nach Setup z.B. `~/.xsession`, `~/.xsessionrc` oder `~/.xinitrc`.

## Neo aktivieren: Desktopumgebungen

Die entsprechenden Boxen können durch Anklicken ausgeklappt werden.

??? info "Gnome (egal ob auf Ubuntu, Debian, Fedora, Arch, OpenSUSE oder …)"

    Standardmäßig versteckt Gnome einige selten genutzte Tastaturlayoute in den
    Einstellungen.  Daher ist bei Bone und Neoqwertz darauf zu achten, dass man
    zunächst im Optimierungen-Programm (`gnome-tweaks`) in der „Tastatur und
    Maus“-Sektion „Erweiterte Eingabequellen anzeigen“ aktiviert. Alternativ kann,
    falls `gnome-tweaks` nicht installiert ist, diese Einstellung mit dem Befehl
    ```
    gsettings set org.gnome.desktop.input-sources show-all-sources true
    ```
    vorgenommen werden. Bei dem klassischen Neo-Layout kann dieser Schritt übersprungen werden.

    ![screenshot](images/linux-gnome-1.png)

    Dann kann man das gewünschte Layout in den
    Gnome-Tastaturlayouteinstellungen (oben rechts in die Ecke klicken, dann
    auf „Einstellungen“ und in die „Region und Sprache“-Rubrik wechseln)
    setzen: Zunächst auf das große Plus klicken.

	![screenshot](images/linux-gnome-2.png)

    Anschließend auf "Deutsch" klicken, das gewünschte Layout auswählen und
    oben rechts mit „Hinzufügen“ bestätigen

    ![screenshot](images/linux-gnome-3.png)

    Anschließend wahlweise das normale Deutsche Layout rechts mit dem Kreuz
    entfernen oder mit dem Griff am linken Rand unter das Neo-Layout ziehen.
    Andernfalls funktioniert z.B. die vierte Ebene nicht.  Falls mehrere
    Layouts aktiviert sind, kann man zwischen diesen mit `<super>+<space>` oder der
    Schaltfläche oben rechts in dem Panel wechseln.

    ![screenshot](images/linux-gnome-4.png)

    Außerdem ist es wichtig, dass in der „Tastenkombinationen“-Rubrik bei
    „Taste für alternative Zeichen„ **nicht** „Rechte Alt-Taste“ ausgewählt
    ist, da sonst die rechte Mod4-Taste zu einer dritten Mod3-Taste
    wird.

	![screenshot](images/linux-gnome-5.png)

??? info "Cinnamon (egal ob auf Linux Mint, Ubuntu, Debian, Fedora, Arch, OpenSUSE oder …)"

    Die Tastatureinstellungen können über das Startmenu geöffnet werden:

    ![screenshot](images/linux-cinnamon-1.png)

    In dem dritten Tab zunächst die erste Ankreuzbox aktivieren, um alle Tastaturbelegungen anzuzeigen.
    Dann kann man mit dem Plus unten links Tasataturbelegungen hinzufügen:
    
    ![screenshot](images/linux-cinnamon-2.png)

    In dem erscheinenden Popup mit Hilfe der Suche das gewünschte Layout auswählen und hinzufügen.

    ![screenshot](images/linux-cinnamon-3.png)

    Anschließend wahlweise das normale Deutsche Layout mit dem Minus-Symbol unten
    entfernen oder mit den Pfeilen unter das Neo-Layout (oder die entsprechende Variante) befördern.
    Andernfalls funktioniert z.B. die vierte Ebene nicht.

    ![screenshot](images/linux-cinnamon-4.png)

    In den Optionen sollten alle Einstellungen auf den Standards gelassen gewerden (also keine Ankreuzauswählen und bei den Auswahlmöglichkeiten immer "Vorgabe" wählen):

	![screenshot](images/linux-cinnamon-5.png)

??? info "KDE Plasma (egal ob auf Ubuntu, Debian, Fedora, Arch, OpenSUSE oder …)"
    Öffne zunächst die Plasma-Eingabegeräteinstellungen, die in den Systemeinstellungen
    in der „Hardware“-Kategorie sind.![screenshot](images/linux-plasma-1.png)

    Wähle dann in auf der Tastaturseite den „Belegungen“-Reiter an.
    Achte darauf, dass in dem rechten obren Bereich keine Einstellungen aktiv sind,
    die mit dem Neo-Layout konfliktieren und klicke in der unteren Hälfte auf
    „Hinzufügen“.

	![screenshot](images/linux-plasma-2.png)

    Wähle in dem Belegungs-Dropdown nun „Deutsch“ und in dem Varianten-Dropdown
    die gewünschte Variante aus. Bestätige mit „OK“. Eventuelle andere Layouts
    sollten entfernt oder unter Neo verschoben werden, um Probleme mit den
    höheren Ebenen zu vermeiden.  Anschließend mit „Anwenden“ den Dialog
    schließen und neu anmelden.

	![screenshot](images/linux-plasma-3.png)

??? info "XFCE (egal ob auf Ubuntu, Debian, Fedora, Arch, OpenSUSE oder …)"
    Standardmäßig hält sich XFCE an die systemweiten Einstellungen, also
    muss man nur für XFCE weitere Einstellungen vornehmen, wenn man das
    Layout nicht global, sondern nur für einen bestimmten Benutzer
    aktivieren möchte.

    Da XFCE wie Gnome auch „exotische“ Tastaturlayouts ausblendet, gehen
    wir über die Konsole vor:

    === "Neo (klassisch)"
        ```
        xfconf-query -c keyboard-layout -p "/Default/XkbDisable" -s "false"
        xfconf-query -c keyboard-layout -p "/Default/XkbLayout" -s "de"
        xfconf-query -c keyboard-layout -p "/Default/XkbVariant" -s "neo"
        ```
        Die Einstellung wird sofort aktiv.

    === "Bone"
        ```
        xfconf-query -c keyboard-layout -p "/Default/XkbDisable" -s "false"
        xfconf-query -c keyboard-layout -p "/Default/XkbLayout" -s "de"
        xfconf-query -c keyboard-layout -p "/Default/XkbVariant" -s "bone"
        ```
        Die Einstellung wird sofort aktiv.

    === "Neo/Qwertz"
        ```
        xfconf-query -c keyboard-layout -p "/Default/XkbDisable" -s "false"
        xfconf-query -c keyboard-layout -p "/Default/XkbLayout" -s "de"
        xfconf-query -c keyboard-layout -p "/Default/XkbVariant" -s "neo_qwertz"
        ```
        Die Einstellung wird sofort aktiv.


## Installation der Compose-Dateien

Die Funktionalität der Tote-Tasten-Sequenzen wird durch die Compose-Datei
gesteuert.  Dies ist bei Linux unabhängig vom Tastaturlayout.  Das bedeutet,
dass man auch mit aktiviertem Neo-Layout standardmäßig nur den eingeschränkten
Funktionsumfang der Standard-Compose-Datei zu verfügung hat.  Die
Neo-Compose-Datei ist jedoch mit
```
wget "https://neo-layout.org/download/XCompose" -O ~/.XCompose
```
schnell nachinstalliert. Zum Übernehmen der Änderungen neu anmelden.

Die Neo-Compose-Datei ist modular aufgebaut. So kann man einfach mit Hilfe der
Quelldateien im
[Git-Repo](https://git.neo-layout.org/neo/neo-layout/src/branch/master/Compose)
einzelne Features nach belieben (de-)aktivieren. Siehe auch [Erzeugbare Zeichen mit Compose](../Benutzerhandbuch/Tote-Tasten-und-Compose.md#erzeugbare-zeichen-mit-compose).


## Installation der Konsolen-Keymap

### Standard Linux-Konsole

Die „alte“ Linux-Konsole benutzt nicht die gewöhnlichen Tastaturlayouts der
graphischen Benutzeroberfläche.
Seit der Version 2.4.0 sind Konsolenkeymaps für Neo, Bone, NeoQwertz und AdNW in upstream [kbd](https://mirrors.edge.kernel.org/pub/linux/utils/kbd/) enthalten, jedoch paketieren noch recht wenige Distributionen diese.
Also müssen meist die [Neo-Keymaps](https://neo-layout.org/download/console.tar.xz) nachinstalliert werden.
Die Installation kann mit den Befehlen in den blauen Kästen geschehen.

Alternativ kann man die Keymaps manuell an den entsprechenden Stellen platzieren


| Distribution          | Keymap-Verzeichnis             |
| :-------------------- | :----------------------------- |
| Arch                  | `/usr/share/kbd/keymaps`       |
| Debian und Nachfahren | `/usr/share/keymaps`           |
| Fedora                | `/usr/lib/kbd/keymaps`         |
| OpenSUSE              | `/usr/share/kbd/keymaps`       |

Anschließend kann man die Keymaps mit `sudo loadkeys -u neo`,
`sudo loadkeys -u bone` bzw. `sudo loadkeys -u neoqwertz` laden.  Die
permanente Aktivierung erfolgt in der Regel über `localectl`, bei
Debian-Derivaten funktioniert dies jedoch nicht.


??? info "Arch Linux"
    === "Neo (klassisch)"
        ```
        sudo loadkeys -u neo
        sudo localectl set-keymap --no-convert neo
        ```

    === "Bone"
        ```
        sudo loadkeys -u bone
        sudo localectl set-keymap --no-convert bone
        ```

    === "Neo/Qwertz"
        ```
        sudo loadkeys -u neoqwertz
        sudo localectl set-keymap --no-convert neoqwertz
        ```

??? info "Debian-Derivat (Debian, Ubuntu, Linux Mint, Pop!OS, …)"
    === "Neo (klassisch)"
        Auf der Konsole `sudo dpkg-reconfigure keyboard-configuration` ausführen und in
        dem erscheinenden Dialog Neo auswählen.

    === "Bone"
        Die Installation erfolgt mit
        ```
        sudo mkdir -p /usr/share/keymaps
        wget "https://neo-layout.org/download/console.tar.xz" -O - | \
        sudo tar -C /usr/share/keymaps/ -xJ
        ```
        Dann muss man `KMAP=/usr/share/keymaps/neo/bone.map` in die `/etc/default/keyboard` hinzufügen und
        anschließend als root `setupcon` auf der Konsole ausgeführen. Die Einstellung
        bleibt über Neustarts hinweg aktiv.

    === "Neo/Qwertz"
        Die Installation erfolgt mit
        ```
        sudo mkdir -p /usr/share/keymaps
        wget "https://neo-layout.org/download/console.tar.xz" -O - | \
        sudo tar -C /usr/share/keymaps/ -xJ
        ```
        Dann muss man `KMAP=/usr/share/keymaps/neo/neoqwertz.map` in die `/etc/default/keyboard` hinzufügen und
        anschließend als root `setupcon` auf der Konsole ausgeführen. Die Einstellung
        bleibt über Neustarts hinweg aktiv.

??? info "Fedora"
    === "Neo (klassisch)"
        ```
        sudo loadkeys -u de-neo
        sudo localectl set-keymap --no-convert de-neo
        ```

    === "Bone"
        ```
        wget "https://neo-layout.org/download/console.tar.xz" -O - | \
        sudo tar -C /usr/lib/kbd/keymaps/ -xJ

        sudo loadkeys -u bone
        sudo localectl set-keymap --no-convert bone
        ```

    === "Neo/Qwertz"
        ```
        wget "https://neo-layout.org/download/console.tar.xz" -O - | \
        sudo tar -C /usr/lib/kbd/keymaps/ -xJ

        sudo loadkeys -u neoqwertz
        sudo localectl set-keymap --no-convert neoqwertz
        ```

??? info "OpenSUSE"
    === "Neo (klassisch)"
        ```
        sudo loadkeys -u de-neo
        sudo localectl set-keymap --no-convert de-neo
        ```

    === "Bone"
        ```
        wget "https://neo-layout.org/download/console.tar.xz" -O - | \
        sudo tar -C /usr/share/kbd/keymaps/ -xJ

        sudo loadkeys -u bone
        sudo localectl set-keymap --no-convert bone
        ```

    === "Neo/Qwertz"
        ```
        wget "https://neo-layout.org/download/console.tar.xz" -O - | \
        sudo tar -C /usr/share/kbd/keymaps/ -xJ

        sudo loadkeys -u neoqwertz
        sudo localectl set-keymap --no-convert neoqwertz
        ```


!!! warning "Hinweis"
    Bei vollverschlüsselten Systemen ist darauf zu achten, dass das
    Tastaturlayout beim Starten schon vor der Passphrasenabfrage gesetzt wird.
    Bei Arch Linux z.B. muss dafür in `/etc/mkinitcpio.conf` der
    `sd-vconsole`-Hook vor dem `sd-encrypt`-Hook eingefügt werden und
    bei Debian muss man die `KEYMAP`-Einstellung in der `etc/initramfs-tools/initramfs.conf`
    aktivieren. Dann jeweils das Initramfs neu generieren (mit `mkinitcpio -p linux`
    bzw `update-initramfs -u`).

Bei anderen Distribution verläuft die Installation vermutlich ähnlich.
Bei Problemen kannst du dich jederzeit an [uns](../Benutzerhandbuch/Kontakt/community) wenden.



### Alternativen

Anstatt der Standard Linux-Konsole können auch modernere Konsolen wie [KMSCON](https://www.freedesktop.org/wiki/Software/kmscon/) verwendet werden. Diese Konsole unterstützt beispielsweise Unicode Schriften und xkb Tastaturlayouts mit libxkbcommon. So können die normalen xkb Tastaturlayouts mit voller 5ter- & 6ter- Ebene, sowie Mod4-Lock, usw. verwendet werden. Dies hat auch den großen Vorteil, dass Veränderungen am xkb Tastaturlayout nicht für die Konsole repliziert werden müssen.

## Persönliches Tastaturlayout konfigurieren

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

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 wird.
Bei manchen Systemen kann ein Neustart nötig sein.

Das Erstellen eines eigenen Layouts ist nicht so schwer, wie man anfangs vermuten könnte.
Es wird im Beispiel gezeigt, wie tote Tasten aus dem NeoQwertz-Layout zu normalen Tasten umgeändert werden, die bei einfachem Druck direkt die (nichtkombinierenden) Akzente einzeln setzen.

Zuerst wird die Datei ermittelt, die das Layout enthält, auf dem die Änderungen durchgeführt werden. Das Basislayout `neo_qwertz` ist ein deutsches Layout, daher betrachte man die Datei `/usr/share/X11/xkb/symbols/de` (`de` für deutsch) und suche nach unserem gewünschten Basis-Layout.

Erstelle nun eine neue Datei `/usr/share/X11/xkb/symbols/custom` (dies benötigt Root-Rechte), welche wie folgt aussieht:

```
default
xkb_symbols "neo_qwertz_nodeadkeys" {
    include "de(neo_qwertz)"

    name[Group1]= "German (Neo, QWERTZ, no dead keys)";
};
```

Hier kann man dann den Namen _"neo_qwertz_nodeadkeys"_ und _"German (Neo, QWERTZ, no dead keys)"_ beliebig wählen.

Jetzt kommt der eigentlich interessante Teil, das Ändern des Layouts. Dafür brauchen wir `key`-Definitionen, die man in derselben `de`-Basisdatei findet. Diese sehen beispielsweise so aus:

```
key <AE12> { [ dead_grave, dead_cedilla, dead_abovering, dead_dasia, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] };
```

Diese Zeile definiert, welche Zeichen oder Tottasten (`dead_grave`, `dead_cedilla`, …) die Taste `AE12` (die Taste links neben Backspace) auf der jeweiligen Ebene bewirkt.
Wir wollen nun, dass diese Tasten normal funktionieren und das Akzentzeichen ausgeben. Dazu wird 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, ... ] };
```

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 dagegen den Typ `EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK` wählen.

Genauso verfahren wir auch mit den weiteren Akzenttasten `<AD12>` und `<TLDE>`. Dabei müssen außerdem `tilde` und `circumflex` durch `asciitilde` bzw. `asciicircum` bei den jeweiligen Tasten ausgetauscht werden, da die Keysyms so benannt sind.
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, lässt sich mit dem Kommandozeilenbefehl `xkbcli compile-keymap --layout custom` vorab prüfen.

Die komplette Beispieldatei:

??? example "/usr/share/X11/xkb/symbols/custom"
    ```
    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> { [ 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 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

Ein einfaches Beispiel ist das Vertauschen von zwei Tasten. Dazu kann man 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>`

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.


### Weiterführende Informationen

Wer näher in die Details einsteigen möchte, dem sei das Blog von [Peter Hutterer](https://who-t.blogspot.com/) empfohlen. In einer mehrteiligen Beitragsreihe werden die Möglichkeiten eigener xkb-Konfigurationen erläutert, zusammen mit technischen und historischen Hintergründen. Diese sind gut verständlich, mit einer Prise Humor und Sarkasmus gewürzt – jedoch auf englisch geschrieben. Für Tastaturlayouts sind die folgenden Beiträge interessant:

* “User-specific XKB configuration”: [Teil 1](https://who-t.blogspot.com/2020/02/user-specific-xkb-configuration-part-1.html), [Teil 2](https://who-t.blogspot.com/2020/07/user-specific-xkb-configuration-part-2.html), [Teil 3](https://who-t.blogspot.com/2020/08/user-specific-xkb-configuration-part-3.html), Konklusion ([Teil 4](https://who-t.blogspot.com/2020/09/user-specific-xkb-configuration-putting.html)), Tastatur unter Wayland und X ([Teil 5](https://who-t.blogspot.com/2020/09/no-user-specific-xkb-configuration-in-x.html))
* [A pre-supplied "custom" keyboard layout for X11](https://who-t.blogspot.com/2021/02/a-pre-supplied-custom-keyboard-layout.html) (vergleichbar mit dem vorigen Kapitel)
