# Bildschirmtastatur

Mit der Bildschirmtastatur lässt sich am Bildschirm die Belegung der Tastatur anzeigen.
So kann man schnell nachschauen, wo ein bestimmtes Zeichen zu finden ist, ohne die Tastatur zu bekleben oder die Tasten zu vertauschen.

## Windows
Unter Windows ist eine Bildschirmtastatur direkt in [ReNeo](../Einrichtung/reneo.md#bildschirmtastatur) integriert. Dort wird sie mit ++Mod3+F1++ aktiviert. Dies gilt gleichermaßen bei der Verwendung von [kbdneo](../Einrichtung/kbdneo.md) / ReNeo.

## Linux
Für [Linux](../Einrichtung/Linux.md) mit X11 gibt es bislang unter anderem folgende Programme, die die Tastatur am Bildschirm anzeigen:

  * **[OSD Neo2](https://htgoebel.gitlab.io/OSD-Neo2/)** kann alle sechs Neo-Ebenen anzeigen und die dargestellte Ebene wechselt beim Drücken von Mod-Tasten. Das Programmfenster kann verschoben und in das Benachrichtigungsfeld (Tray) versteckt werden. Das Programm ist in Python-GTK geschrieben und damit auf allen Linux-Systemen ohne Aufwand zu installieren.
  * **[NeoLayoutViewer](https://github.com/YggdrasiI/NeoLayoutViewer)**: Das Programm kann alle sechs Neo-Ebenen anzeigen und die dargestellte Ebene wechselt beim Drücken von Mod-Tasten. Per frei wählbarer Tastenkombination kann das Programmfenster ein- und ausgeblendet oder verschoben werden. Außerdem kann das Programm als virtuelle Tastatur verwendet werden. Es basiert ebenfalls auf GTK.
  * **kvkbd**: KDE-Programm, bindet sich aber auch in Gnome schön ein. Ist aber eigentlich als virtuelle Bildschirmtastatur gedacht, um Zeichen ohne Tastatur einzugeben. Kann leider nur die Neo-Ebenen 1 und 2 anzeigen.
  * **onboard**: GTK-Programm, nur unter Gnome ausprobiert, wo es gut reinpasst.  Kann leider nur die Neo-Ebenen 1 und 2 anzeigen.

!!! bug "Entwicklung einer BST für Wayland"
    Die oben genannten Programme funktionieren alle nur mit X11 richtig.
    Das Wayland-Protokoll sieht nicht vor, dass ein Client ohne weiteres alle Tastaturevents mitlesen kann.
    Das ist aber zum Wechsel der Ebenen beim Drücken von Modifizierern – so wie ReNeo das macht – erforderlich.

    Eine ideale Bildschirmtastatur sollte möglichst schnell reagieren, am Besten eine Art OSD-Modus nutzen (um transparent zu sein), per Hotkey aktivierbar sein und evtl. noch Zusatzfunktionen (ähnlich zu wiemitneo) unterstützen. Durch das OSD wäre es auch weitgehend unabhängig von der Desktop-Umgebung und man könnte unter Umständen Abhängigkeiten wie von Qt oder GTK+ vermeiden.

    Folgende Ansätze sind denkbar:

    * direktes Lesen vom Eingabegerät – funktioniert mit jedem Programm und allen Desktops, benötigt aber zusätzliche Privilegien, da normale Benutzer keine Zugriffsrechte auf Eingabegeräte haben. Der Compositor bekommt Dateideskriptoren von `logind` über die `TakeDevice`-Busmethode, gibt diese aber in der Regel nicht an Clients weiter. 
    * Verwendung des `text-input-method`-Protokolls als IME – funktioniert nur mit Kooperation des Clients (sollte bei allen Toolkits bei Texteingaben kein Problem sein, bei Tastaturshortcuts werden aber Modifiziererdrücke nicht erkannt werden). Nicht mit anderen IMEs kombinierbar.
    * direkte Integration in den Compositor (als Erweiterung) – offensichtlich Compositor-abhängig. Gnome besitzt bereits eine eingebaute Bildschirmtastatur, diese scheint jedoch nicht die eingestellte Tastaturbelegung zu respektieren und nicht bei Modifiziererdrücken die Ebene zu wechseln.

    Automatisch immer im Vordergrund zu sein könnte man mit dem `layer-shell`-Protokoll realisieren. Dieses wird allerdings nicht von Gnome unterstützt.

## macOS
Bei einem [Mac](../Einrichtung/macOS.md) lässt sich eine Bildschirmtastatur über den Punkt „Tastaturübersicht“ in der Menüleiste auswählen, siehe auch [Verwenden der Tastaturübersicht auf dem Mac](https://support.apple.com/de-de/guide/mac-help/mchlp1015/mac).
