Vor Kurzem musste ich eine Anwendung (Kiosk-System) für/auf einen/m Raspberry Pi 4 entwickeln. Das Besondere daran war, daß 2 Touch-Monitore über HDMI angeschlossen werden sollten, die dabei noch um 90 Grad nach rechts gedreht werden werden mussten. Also Hochformate 2 Monitore übereinander.
Das Drehen des Screens und die Anordnung übereinander bereitete dabei keine Probleme, da das über die Benutzeroberfläche - installiert war ein "Raspbian Buster with desktop and recommended software" - problemlos möglich ist.
Dazu im Menü "Raspberry -> Preferences -> Screen Configuration" die beiden HDMI-Monitore nach rechts drehen, übereinander anordnen und dann die Einstellungen speichern.
Das Problem dabei ist, daß die Touch-Konfiguration nicht automatisch mitgedreht, übereinander angeordnet wird und miteinander eine große Touch-Fläche über 2 Monitore ergibt.
Damit das Touch-Verhalten richtig funktioniert, müssen 2 Konfigurationsdateien - /usr/share/X11/xorg.conf.d/40-libinput.conf und /home/pi/.profile - angepasst werden.

Zuerst muß man dazu die IDs der angeschlossenen Monitore auslesen. Dazu ein Terminal öffnen und den Befehl

xinput list

eingeben. Als Ergebnis bekommt man die angeschlossenen Monitore mit den dazugehörigen IDs aufgelistet. In meinem Fall hatten die Monitore die IDs 6 und 7.

Anschließend in der Datei /usr/share/X11/xorg.conf.d/40-libinput.conf den Abschnitt "Section InputClass" mit dem "Identifier libinput touchpad catchall" folgendermaßen anpassen:

Section "InputClass" 
        Identifier "libinput touchpad catchall" 
        MatchIsTouchscreen "on" 
        Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1" 
        MatchDevicePath "/dev/input/event*" 
        Driver "libinput" 
EndSection

Dies bewirkt die Drehung der Touch-Oberfläche.

Abschließend noch die Unterteilung der Touch-Oberfläche in 2 gleich große Teile am Schluss der Datei /home/pi/.profile einfügen, damit bei diese bei jedem Systemstart geladen wird.

xinput set-prop "6" --type=float "Coordinate Transformation Matrix" 1 0 0 0 0.5 0 0 0 1
xinput set-prop "7" --type=float "Coordinate Transformation Matrix" 1 0 0 0 0.5 0.5 0 0 1
Walter Prechtl

Walter Prechtl

Aktualisiert am: 06. März 2024
Lesedauer: 3 Minuten