Raspberry Pi 4 Touch Monitor Roteren

Onlangs heb ik een applicatie (kiosksysteem) moeten ontwikkelen voor/op een Raspberry Pi 4. Het bijzondere was dat er 2 touch monitoren aangesloten moesten worden via HDMI, die 90 graden naar rechts gedraaid moesten worden. Dus portretformaten, 2 monitoren op elkaar.
Het roteren van het scherm en het op elkaar plaatsen van het op elkaar veroorzaakte geen problemen, omdat dit gemakkelijk mogelijk is via de gebruikersinterface - een "Raspbian Buster met desktop en aanbevolen software" werd geïnstalleerd.
Om dit te doen, draait u in het menu "Raspberry -> Preferences -> Screen Configuration" de twee HDMI-monitoren naar rechts, rangschikt u ze op elkaar en slaat u vervolgens de instellingen op.
Het probleem hiermee is dat de aanraakconfiguratie niet automatisch wordt gedraaid, op elkaar wordt geplaatst en resulteert in een groot aanraakgebied over 2 monitoren.
Om het aanraakgedrag goed te laten werken, moeten 2 configuratiebestanden - /usr/share/X11/xorg.conf.d/40-libinput.conf en /home/pi/.profile - worden aangepast.

Eerst moet je de ID's van de aangesloten monitoren uitlezen. Om dit te doen, opent u een terminal en gebruikt u de opdracht

xinput list

invoer. Als gevolg hiervan krijgt u de aangesloten monitoren vermeld met de bijbehorende ID's. In mijn geval hadden de monitoren ID's 6 en 7.

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

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 roteert het aanraakoppervlak.

Voeg ten slotte de onderverdeling van de aanraakinterface in 2 gelijke delen aan het einde van het bestand /home/pi/.profile in, zodat het elke keer dat het systeem wordt gestart 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