צג מגע Raspberry Pi 4 סובב

לאחרונה הייתי צריך לפתח יישום (מערכת קיוסק) עבור/על Raspberry Pi 4. הדבר המיוחד על זה היה כי 2 צגי מגע היו צריכים להיות מחוברים באמצעות HDMI, אשר היה צריך להיות מסובב 90 מעלות ימינה. אז פורמטים דיוקן, 2 צגים אחד על השני.
סיבוב המסך וסידורו זה על גבי זה לא גרמו לבעיות, שכן הדבר אפשרי בקלות באמצעות ממשק המשתמש - הותקן "Raspbian Buster עם שולחן עבודה ותוכנה מומלצת".
לשם כך, בתפריט "פטל -> העדפות -> תצורת מסך", סובב את שני צגי ה- 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" עם "מזהה 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

פעולה זו גורמת למשטח המגע להסתובב.

לבסוף, הכנס את חלוקת המשנה של ממשק המגע לשני חלקים שווים בסוף הקובץ /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