HMI
De Raspberry Pi 4 Touch Monitor draaien

Ik moest onlangs een applicatie (kiosksysteem) ontwikkelen voor/op een Raspberry Pi 4. Het bijzondere was dat er 2 aanraakmonitoren moesten worden aangesloten via HDMI, die daarbij 90 graden naar rechts moest worden gedraaid. Dus 2 monitoren op elkaar met portretoriëntatie. Het draaien van het scherm en het op elkaar plaatsen van de schermen leverde geen problemen op, aangezien dit gemakkelijk mogelijk was via de gebruikersinterface - er was een "Raspbian Buster with desktop and recommended software" geïnstalleerd. Draai hiervoor in het menu "Raspberry -> Preferences -> Screen Configuration" de twee HDMI-monitoren naar rechts, rangschik ze boven elkaar en sla vervolgens de instellingen op. Het probleem hiermee is dat de aanraakconfiguratie niet automatisch meedraait, boven elkaar gerangschikt wordt en samen een groot aanraakgebied over 2 schermen vormt. Om de aanraakfunctie correct te laten werken, moeten 2 configuratiebestanden - /usr/share/X11/xorg.conf.d/40-libinput.conf und /home/pi/.profile - worden aangepast.

Eerst moet men hiervoor de ID's van de aangesloten monitoren rippen. Open hiervoor een terminal en voer de opdracht

xinput list

in. Hierdoor worden de aangesloten monitoren weergegeven met de bijbehorende ID's. In mijn geval hadden de monitoren de ID 6 en 7.

Pas vervolgens in het bestand /usr/share/X11/xorg.conf.d/40-libinput.conf de sectie "Section InputClass" als volgt aan met de "Identifier libinput touchpad catchall":

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

Hierdoor draait het aanraakoppervlak. Voeg ten slotte de onderverdeling van het aanraakoppervlak toe in 2 delen van dezelfde grootte aan het einde van het bestand /home/pi/.profile, zodat het bij elke systeemstart wordt geladen.

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