Недавно мне пришлось разработать приложение (систему киоска) для/на Raspberry Pi 4. Особенность заключалась в том, что 2 сенсорных монитора должны были быть подключены через HDMI, который нужно было повернуть на 90 градусов вправо. Итак, портретные форматы, 2 монитора друг на друге.
Поворот экрана и расположение его друг над другом не вызвало никаких проблем, так как это легко возможно через пользовательский интерфейс - был установлен «Raspbian Buster с рабочим столом и рекомендуемым программным обеспечением».
Для этого в меню «Raspberry -> Preferences -> Screen Configuration» поверните два монитора HDMI вправо, расположите их друг над другом и сохраните настройки.
Проблема в том, что сенсорная конфигурация не поворачивается автоматически, не располагается друг на друге, что приводит к большой сенсорной области на 2 мониторах.
Для корректной работы сенсорного ввода необходимо настроить 2 конфигурационных файла - /usr/share/X11/xorg.conf.d/40-libinput.conf и /home/pi/.profile.
Сначала вы должны прочитать идентификаторы подключенных мониторов. Для этого откройте терминал и воспользуйтесь командой
xinput list
ввод. В результате вы получаете подключенные мониторы с соответствующими идентификаторами. В моем случае мониторы имели идентификаторы 6 и 7.
Затем в файле /usr/share/X11/xorg.conf.d/40-libinput.conf настройте раздел "Section InputClass" с помощью "Identifier libinput touchpad catchall" следующим образом:
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
Это приводит к вращению сенсорной поверхности.
Наконец, вставьте деление сенсорного интерфейса на 2 равные части в конце файла /home/pi/.profile, чтобы он загружался при каждом запуске системы.
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