Raspberry Pi 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

ورودی. در نتیجه، شما مانیتورهای متصل ذکر شده با هویت مربوطه را دریافت می کنید. در مورد من، مانیتورها دارای IDs 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

این باعث می شود سطح لمس بچرخد.

در نهایت، تقسیم رابط لمسی را به 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