Raspberry Pi 4 berøringsskærm roterer

For nylig var jeg nødt til at udvikle en applikation (kiosksystem) til / på en Raspberry Pi 4. Det specielle ved det var, at der skulle tilsluttes 2 touch skærme via HDMI, som skulle drejes 90 grader til højre. Så portrætformater, 2 skærme oven på hinanden.
Rotation af skærmen og arrangering af den oven på hinanden forårsagede ingen problemer, da dette er let muligt via brugergrænsefladen - en "Raspbian Buster med desktop og anbefalet software" blev installeret.
For at gøre dette skal du dreje de to HDMI-skærme til højre i menuen "Raspberry -> Preferences -> Screen Configuration", arrangere dem oven på hinanden og derefter gemme indstillingerne.
Problemet med dette er, at berøringskonfigurationen ikke automatisk roteres, arrangeres oven på hinanden og resulterer i et stort berøringsområde over 2 skærme.
For at berøringsadfærden skal fungere korrekt, skal 2 konfigurationsfiler - /usr/share/X11/xorg.conf.d/40-libinput.conf og /home/pi/.profile - justeres.

Først skal du læse id'erne på de tilsluttede skærme. For at gøre dette skal du åbne en terminal og bruge kommandoen

xinput list

indgang. Som et resultat får du de tilsluttede skærme opført med de tilsvarende id'er. I mit tilfælde havde skærmene ID'er 6 og 7.

Derefter i filen /usr/share/X11/xorg.conf.d/40-libinput.conf justere afsnittet "Section InputClass" med "Identifier libinput touchpad catchall" som følger:

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

Dette får berøringsoverfladen til at rotere.

Indsæt til sidst underopdelingen af berøringsgrænsefladen i 2 lige store dele i slutningen af filen /home/pi/.profile, så den indlæses hver gang systemet startes.

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