Monitor dotykowy Raspberry Pi 4 obraca

Ostatnio musiałem opracować aplikację (system kioskowy) dla/na Raspberry Pi 4. Szczególną rzeczą było to, że 2 monitory dotykowe miały być podłączone przez HDMI, które musiały być obrócone o 90 stopni w prawo. Więc formaty portretowe, 2 monitory jeden na drugim.
Obracanie ekranu i układanie go jeden na drugim nie powodowało żadnych problemów, ponieważ jest to łatwo możliwe za pośrednictwem interfejsu użytkownika - zainstalowano "Raspbian Buster z pulpitem i zalecanym oprogramowaniem".
Aby to zrobić, w menu "Raspberry -> Preferences -> Screen Configuration" obróć dwa monitory HDMI w prawo, ułóż je jeden na drugim, a następnie zapisz ustawienia.
Problem polega na tym, że konfiguracja dotykowa nie jest automatycznie obracana, układana jeden na drugim i powoduje duży obszar dotykowy na 2 monitorach.
Aby zachowanie dotykowe działało poprawnie, należy dostosować 2 pliki konfiguracyjne - /usr/share/X11/xorg.conf.d/40-libinput.conf i /home/pi/.profile.

Najpierw musisz odczytać identyfikatory podłączonych monitorów. Aby to zrobić, otwórz terminal i użyj polecenia

xinput list

wkład. W rezultacie otrzymasz podłączone monitory z odpowiednimi identyfikatorami. W moim przypadku monitory miały identyfikatory 6 i 7.

Następnie w pliku /usr/share/X11/xorg.conf.d/40-libinput.conf dostosuj sekcję "Section InputClass" z "Identifier libinput touchpad catchall" w następujący sposób:

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

Powoduje to obracanie się powierzchni dotykowej.

Na koniec wstaw podział interfejsu dotykowego na 2 równe części na końcu pliku /home/pi/.profile, tak aby był ładowany przy każdym uruchomieniu systemu.

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