Raspberry Pi 4 berøringsskjerm rotere

Nylig måtte jeg utvikle en applikasjon (kiosksystem) for / på en Raspberry Pi 4. Det spesielle med det var at 2 touch-skjermer skulle kobles til via HDMI, som måtte roteres 90 grader mot høyre. Så portrettformater, 2 skjermer oppå hverandre.
Å rotere skjermen og ordne den oppå hverandre forårsaket ingen problemer, da dette lett er mulig via brukergrensesnittet - en "Raspbian Buster med skrivebord og anbefalt programvare" ble installert.
For å gjøre dette, i menyen "Raspberry -> Preferences -> Screen Configuration", vri de to HDMI-skjermene til høyre, ordne dem oppå hverandre og lagre deretter innstillingene.
Problemet med dette er at berøringskonfigurasjonen ikke roteres automatisk, ordnes oppå hverandre og resulterer i et stort berøringsområde over 2 skjermer.
For at berøringsatferden skal fungere skikkelig, må 2 oppsettsfiler - /usr/share/X11/xorg.conf.d/40-libinput.conf og /home/pi/.profile - justeres.

Først må du lese ID-ene til de tilkoblede skjermene. For å gjøre dette, åpne en terminal og bruk kommandoen

xinput list

innspill. Som et resultat får du de tilkoblede skjermene oppført med de tilsvarende ID-ene. I mitt tilfelle hadde skjermene IDene 6 og 7.

Deretter i filen /usr/share/X11/xorg.conf.d/40-libinput.conf justerer du seksjonen "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ører til at berøringsoverflaten roterer.

Til slutt setter du inn underinndelingen av berøringsgrensesnittet i 2 like deler på slutten av filen /home/pi/.profile, slik at den lastes inn 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