Baru-baru ini saya terpaksa membangunkan aplikasi (sistem kiosk) untuk / pada Raspberry Pi 4. Perkara yang istimewa mengenainya ialah 2 monitor sentuh akan disambungkan melalui HDMI, yang perlu diputar 90 darjah ke kanan. Jadi format potret, 2 monitor di atas satu sama lain.
Memutar skrin dan mengaturnya di atas satu sama lain tidak menyebabkan sebarang masalah, kerana ini mudah dilakukan melalui antara muka pengguna - "Raspbian Buster dengan desktop dan perisian yang disyorkan" dipasang.
Untuk melakukan ini, dalam menu "Raspberry -> Preferences -> Screen Configuration", putar dua monitor HDMI ke kanan, susunkannya di atas satu sama lain dan kemudian simpan tetapan.
Masalahnya ialah konfigurasi sentuhan tidak diputar secara automatik, disusun di atas satu sama lain dan menghasilkan kawasan sentuhan yang besar di atas 2 monitor.
Agar tingkah laku sentuhan berfungsi dengan betul, 2 fail konfigurasi - /usr/share/X11/xorg.conf.d/40-libinput.conf dan /home/pi/.profile - perlu diselaraskan.
Mula-mula anda perlu membaca ID monitor yang disambungkan. Untuk melakukan ini, buka terminal dan gunakan arahan
xinput list
Input. Akibatnya, anda mendapat monitor bersambung yang disenaraikan dengan ID yang sepadan. Dalam kes saya, monitor mempunyai ID 6 dan 7.
Kemudian dalam fail /usr/share/X11/xorg.conf.d/40-libinput.conf laraskan bahagian "Seksyen InputClass" dengan "Pengecam libinput touchpad catchall" seperti berikut:
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
Ini menyebabkan permukaan sentuhan berputar.
Akhirnya, masukkan subbahagian antara muka sentuh ke dalam 2 bahagian yang sama pada akhir fail /home/pi/.profile, supaya ia dimuatkan setiap kali sistem dimulakan.
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