اخیرا مجبور شدم یک برنامه کاربردی (سیستم کیوسک) را برای / در 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