اضطررت مؤخرا إلى تطوير تطبيق (نظام كشك) ل / على 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 ، اضبط قسم "قسم InputClass" باستخدام "لوحة اللمس Identifier libinput 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