راسبيري باي 4 شاشة تعمل باللمس تدوير

اضطررت مؤخرا إلى تطوير تطبيق (نظام كشك) ل / على 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