Raspberry Pi 4 Touch Monitor Ruota

Recentemente ho dovuto sviluppare un'applicazione (sistema kiosk) per/su un Raspberry Pi 4. La particolarità era che 2 monitor touch dovevano essere collegati tramite HDMI, che dovevano essere ruotati di 90 gradi a destra. Quindi formati verticali, 2 monitor uno sopra l'altro.
Ruotare lo schermo e disporlo uno sopra l'altro non ha causato alcun problema, in quanto ciò è facilmente possibile tramite l'interfaccia utente: è stato installato un "Raspbian Buster con desktop e software consigliato".
Per fare ciò, nel menu "Raspberry -> Preferences -> Screen Configuration", ruotare i due monitor HDMI verso destra, disporli uno sopra l'altro e quindi salvare le impostazioni.
Il problema è che la configurazione touch non viene ruotata automaticamente, disposta l'una sopra l'altra e si traduce in un'ampia area touch su 2 monitor.
Affinché il comportamento touch funzioni correttamente, è necessario regolare 2 file di configurazione - /usr/share/X11/xorg.conf.d/40-libinput.conf e /home/pi/.profile.

Per prima cosa devi leggere gli ID dei monitor collegati. Per fare ciò, apri un terminale e usa il comando

xinput list

immissione. Di conseguenza, i monitor collegati vengono elencati con gli ID corrispondenti. Nel mio caso, i monitor avevano ID 6 e 7.

Quindi nel file /usr/share/X11/xorg.conf.d/40-libinput.conf regolare la sezione "Section InputClass" con il "Identifier libinput touchpad catchall" come segue:

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

In questo modo la superficie di tocco ruota.

Infine, inserire la suddivisione dell'interfaccia touch in 2 parti uguali alla fine del file /home/pi/.profile, in modo che venga caricata ogni volta che il sistema viene avviato.

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