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