Raspberry Pi 4 Touch Monitor Rotate

Récemment j’ai dû développer une application (système kiosque) pour/sur un Raspberry Pi 4. La particularité était que 2 moniteurs tactiles devaient être connectés via HDMI, qui devait être tourné de 90 degrés vers la droite. Donc formats portrait, 2 moniteurs l’un sur l’autre.
La rotation de l’écran et son agencement les uns sur les autres n’ont posé aucun problème, car cela est facilement possible via l’interface utilisateur - un « Raspbian Buster avec bureau et logiciel recommandé » a été installé.
Pour ce faire, dans le menu « Raspberry -> Preferences -> Screen Configuration », tournez les deux moniteurs HDMI vers la droite, disposez-les l’un sur l’autre, puis enregistrez les paramètres.
Le problème avec cela est que la configuration tactile n’est pas automatiquement tournée, disposée les unes sur les autres et se traduit par une grande zone tactile sur 2 moniteurs.
Pour que le comportement tactile fonctionne correctement, 2 fichiers de configuration - /usr/share/X11/xorg.conf.d/40-libinput.conf et /home/pi/.profile - doivent être ajustés.

Vous devez d’abord lire les identifiants des moniteurs connectés. Pour ce faire, ouvrez un terminal et utilisez la commande

xinput list

entrée. En conséquence, vous obtenez les moniteurs connectés répertoriés avec les ID correspondants. Dans mon cas, les moniteurs avaient les identifiants 6 et 7.

Ensuite, dans le fichier /usr/share/X11/xorg.conf.d/40-libinput.conf, ajustez la section « Section InputClass » avec le « Identifier libinput touchpad fourre-tout » comme suit:

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

Cela provoque la rotation de la surface tactile.

Enfin, insérez la subdivision de l’interface tactile en 2 parties égales à la fin du fichier /home/pi/.profile, afin qu’il soit chargé à chaque démarrage du système.

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