Màn hình cảm ứng Raspberry Pi 4 Xoay

Gần đây tôi đã phải phát triển một ứng dụng (hệ thống kiosk) cho / trên Raspberry Pi 4. Điều đặc biệt của nó là 2 màn hình cảm ứng được kết nối qua HDMI, phải xoay 90 độ sang phải. Vì vậy, các định dạng dọc, 2 màn hình chồng lên nhau.
Xoay màn hình và sắp xếp nó chồng lên nhau không gây ra bất kỳ vấn đề nào, vì điều này có thể dễ dàng thực hiện được thông qua giao diện người dùng - một "Raspbian Buster với máy tính để bàn và phần mềm được đề xuất" đã được cài đặt.
Để thực hiện việc này, trong menu "Raspberry -> Preferences -> Screen Configuration", xoay hai màn hình HDMI sang phải, sắp xếp chúng chồng lên nhau và sau đó lưu cài đặt.
Vấn đề với điều này là cấu hình cảm ứng không được tự động xoay, sắp xếp chồng lên nhau và dẫn đến một khu vực cảm ứng lớn trên 2 màn hình.
Để hành vi cảm ứng hoạt động bình thường, 2 tệp cấu hình - /usr/share/X11/xorg.conf.d/40-libinput.conf và /home/pi/.profile - cần được điều chỉnh.

Trước tiên, bạn phải đọc ID của các màn hình được kết nối. Để thực hiện việc này, hãy mở một thiết bị đầu cuối và sử dụng lệnh

xinput list

Nhập. Kết quả là, bạn nhận được các màn hình được kết nối được liệt kê với các ID tương ứng. Trong trường hợp của tôi, màn hình có ID 6 và 7.

Sau đó, trong tệp /usr/share/X11/xorg.conf.d/40-libinput.conf điều chỉnh phần "Section InputClass" bằng "Identifier libinput touchpad catchall" như sau:

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

Điều này làm cho bề mặt cảm ứng xoay.

Cuối cùng, chèn phân mục của giao diện cảm ứng thành 2 phần bằng nhau ở cuối tệp /home/pi/.profile, để nó được tải mỗi khi hệ thống được khởi động.

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