ActiveSideDevice – mein eigenes Touch-Bedienpanel für den Schreibtisch

Ich habe vor einiger Zeit eine externe „Touchbar“ für über 150 Euro gesehen. Die Idee fand ich interessant. Ein kleines Display neben der Tastatur, auf dem die gerade benötigten Funktionen direkt erreichbar sind, könnte ich mir gut auf meinem Schreibtisch vorstellen. Bei dem Preis kam aber auch die Frage auf, ob sich etwas Ähnliches deutlich günstiger selbst bauen lässt.

Eine kurze Recherche brachte bereits ESP32-basierte Geräte mit Touchscreen für deutlich unter 50 Euro zum Vorschein. Ich habe mich schließlich für ein etwas größeres Gerät entschieden, das schon mit Gehäuse kommt und einfach per USB an den Computer angeschlossen werden kann. Die im Projekt verwendete Hardware ist ein Waveshare ESP32-S3-Touch-LCD-4.3B mit 4,3 Zoll und 800 × 480 Pixeln. Damit steht die Hardwarebasis für mein Projekt ActiveSideDevice.

Mediensteuerung und IntelliJ

Für mich stehen zunächst zwei Anwendungen im Vordergrund. Die Mediensteuerung soll direkt erreichbar sein, und in IntelliJ möchte ich häufig benötigte Aktionen über eigene Buttons auslösen können. Welche Aktionen dort am Ende liegen, lässt sich passend zum eigenen Arbeitsablauf zusammenstellen.

Das Display zeigt dafür konfigurierbare Seiten mit beschrifteten Schaltflächen. Eine Seite kann die Mediensteuerung enthalten, eine andere die IDE-Funktionen. Buttons lassen sich auf einem Raster anordnen und unterschiedlich groß gestalten. Auch die Ausrichtung kann pro Seite gewählt werden.

Bei den IntelliJ-Aktionen bleibt die Zuordnung in der Keymap der IDE. Das Gerät sendet eine Taste oder Tastenkombination. IntelliJ führt die damit verknüpfte Aktion aus, wenn die Entwicklungsumgebung den Fokus hat. Die Ausgangskonfiguration enthält dafür unter anderem F13 bis F24. Welche davon auf dem jeweiligen Computer sinnvoll nutzbar sind, lässt sich beim Einrichten der Keymap prüfen.

Firmware und JavaFX arbeiten zusammen

Auf dem ESP32 läuft eine Firmware auf Basis von ESP-IDF und LVGL. Sie zeichnet die Oberfläche, verarbeitet Berührungen und sendet über USB Tastatur- oder Medienbefehle. Für diese direkten Eingaben braucht die Desktop-Anwendung während der Nutzung nicht geöffnet zu sein.

Die Konfiguration übernimmt eine JavaFX-Anwendung. Dort lassen sich Seiten und Buttons bearbeiten, Einstellungen ändern und Konfigurationen in Dateien sichern. Ein zusätzlicher Kanal über dieselbe USB-Verbindung überträgt die Daten zum Gerät. Unter der Oberfläche steckt eine Java-Bibliothek, die auch von einem Kommandozeilenprogramm verwendet wird.

Über benannte App-Befehle kann das Panel außerdem einen Programmstart anfordern. Dafür muss die Desktop-Anwendung laufen. Das Gerät kennt den Namen des Befehls, während Programmpfad und Argumente auf dem Computer hinterlegt sind.

Eine für die Bedienung wichtige Entscheidung ist die Trennung von Speichern und Übertragen. Ich kann eine neue Belegung im Editor vorbereiten und als Datei sichern. Erst durch die ausdrückliche Übertragung wird sie auf dem Gerät aktiv. Die bisherige Belegung bleibt während der Bearbeitung verwendbar.

Der aktuelle Stand

Inzwischen umfasst die Implementierung auch Profile, die auswählen, welche Seiten sichtbar sind. Die Desktop-Anwendung kann solche Profile anhand der aktiven Anwendung wählen. Für IntelliJ lässt sich damit eine passende Zusammenstellung vorsehen.

Das Projekt ist weiter in Entwicklung. Für einen früheren Stand sind das Flashen, die USB-Erkennung und das Auslesen der Konfiguration am Gerät geprüft. Die neueren Raster- und Rotationsfunktionen brauchen noch ihre eigene Erprobung am Touchdisplay. Auch die vollständige Prüfung auf den verschiedenen Desktop-Betriebssystemen steht noch aus.

Den Aufbau und die technischen Entscheidungen dokumentiere ich ausführlicher auf meiner Entwicklerseite. Dort geht es von den Hardwareanforderungen über das USB-Protokoll bis zur Software und zur Einrichtung eigener Hotkeys. ActiveSideDevice auf dev.neitzel.de

Rückmeldungen, Fragen oder Hinweise sind wie immer herzlich willkommen.