新闻  |   论坛  |   博客  |   在线研讨会
Weston 桌面双屏显示独立触摸配置
toradex | 2025-12-26 12:28:11    阅读:230   发布文章

By Toradex秦海

1). 简介

前述文章中,我们介绍了如何基于 Weston Compositor 实现多屏幕分别显示不同的应用,而进一步延伸出的一个应用场景,就是多屏幕分别有独立的触摸实现分别控制在对应屏幕之上进行响应。本文就基于前述文章同样的 NXP i.MX8MP 平台来测试如何实现这个功能场景。

 

本文所演示的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台

 

 

2. 准备

a). Verdin i.MX8MP ARM核心版配合Dahlia 载板,并连接调试串口用于测试

b). Dahlia 载板分别由 DSI-HDMI 转接卡和 native HDMI 两个接口连接两台 HDMI 显示器以便于进行多屏显示测试。

c). 两个 HDMI 屏幕都具备 USB 电容触摸屏接口,将两个 USB 通过一个 USB Hub 连接到 Dahlia 载板 X4 上的 USB Host 接口。

 

 

3) . 部署流程

a). 首先参考前述文章将两个屏幕分别显示两个 Qt 应用配置成功。通过如下命令可以确认,DSI-HDMI 接口的 HDMI 显示设备是 “HDMI-A-1”;而 native HDMI 接口的显示设备是 “HDMI-A-2”

---------------------------------------

root@verdin-imx8mp-06849028:~# modetest -M imx-drm |grep -C 3 Encoders                     

Encoders:

id      crtc     type     possible crtcs     possible clones

37      33      DSI      0x00000001      0x00000001

39      36      TMDS    0x00000002      0x00000002

 

root@verdin-imx8mp-06849028:~# modetest -M imx-drm |grep -C 1 connected                    

id      encoder   status          name          size (mm)       modes   encoders

38      37      connected       HDMI-A-1        0x0             12      37

...

40      39      connected       HDMI-A-2        0x0             24      39

...

---------------------------------------

 

b). 为了实现对于两个触摸设备分别对应两个显示设备,需要通过 udev rule来进行关联。

./ 首先通过执行如 evtest 或者 udenadm monitor 来确认触摸屏 event 对应关系,注意这个可能是动态变化的,本文配置当前启动下的状态如下:

---------------------------------------

root@verdin-imx8mp-06849028:~# evtest

No device specified, trying to scan all of /dev/input/event*

Available devices:

/dev/input/event0:      gpio-keys

/dev/input/event1:      30370000.snvs:snvs-powerkey

/dev/input/event2:      audio-hdmi HDMI Jack

/dev/input/event3:      ELAN Touchscreen

/dev/input/event4:      ELAN Touchscreen UNKNOWN

/dev/input/event5:      ELAN Touchscreen UNKNOWN

/dev/input/event6:      HID 27c0:0818

---------------------------------------

 

其中 /dev/input/event3: ELAN Touchscreen 对应 “HDMI-A-1” 显示器的触摸; /dev/input/event6: HID 27c0:0818 对应 “HDMI-A-2 显示器的触摸

 

./ 基于上述信息通过 udevadm info 命令进一步确认触摸设备的信息,其中 ID_VENDOR_ID  ID_MODEL_ID 是固定不变的,DEVPATH 的前部分在不改变 USB 接口的情况下是不变的。

--------------------------------------

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event3 |grep ID_VENDOR

E: ID_VENDOR=ELAN

E: ID_VENDOR_ENC=ELAN

E: ID_VENDOR_ID=04f3

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event3 |grep ID_MODEL

E: ID_MODEL=Touchscreen

E: ID_MODEL_ENC=Touchscreen

E: ID_MODEL_ID=2884

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event3 |grep DEVPATH

E: DEVPATH=/devices/platform/soc@0/32f10108.usb/38200000.usb/xhci-hcd.1.auto/usb1/1-1/1-1.2

/1-1.2.3/1-1.2.3.2/1-1.2.3.2:1.0/0003:04F3:2884.0009/input/input14/event3

 

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event6 |grep ID_VENDOR              

E: ID_VENDOR=27c0

E: ID_VENDOR_ENC=27c0

E: ID_VENDOR_ID=27c0

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event6 |grep ID_MODEL

E: ID_MODEL=0818

E: ID_MODEL_ENC=0818

E: ID_MODEL_ID=0818

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event6 |grep DEVPATH

E: DEVPATH=/devices/platform/soc@0/32f10108.usb/38200000.usb/xhci-hcd.1.auto/usb1/1-1/1-1.2

/1-1.2.4/1-1.2.4.4/1-1.2.4.4:1.0/0003:27C0:0818.0007/input/input13/event6

--------------------------------------

 

./ 利用上述信息修改系统默认的 udev rules 文件 - /etc/udev/rules.d/touchscreen.rules,通过输出 WL_OUTPUT 环境变量来将触摸屏设备和显示设备绑定

---------------------------------------

--- a/etc/udev/rules.d/touchscreen.rules

+++ b/etc/udev/rules.d/touchscreen.rules

@@ -16,3 +16,7 @@

 # Create a symlink to any touchscreen input device

 SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="input:*-e0*,3,*a0,1,*18,*", S

YMLINK+="input/touchscreen0"

 SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="ads7846", SYMLINK+="input/tou

chscreen0"

+

+ENV{ID_VENDOR_ID}=="27c0",ENV{ID_MODEL_ID}=="0818",DEVPATH=="/devices/platform/soc@0/32f10

108.usb/38200000.usb/xhci-hcd.1.auto/usb1/1-1/*",ENV{WL_OUTPUT}="HDMI-A-2"

+

+ENV{ID_VENDOR_ID}=="04f3",ENV{ID_MODEL_ID}=="2884",DEVPATH=="/devices/platform/soc@0/32f10

108.usb/38200000.usb/xhci-hcd.1.auto/usb1/1-1/*",ENV{WL_OUTPUT}="HDMI-A-1"

---------------------------------------

 

c). 完成上述修改后重新启动使得修改生效。

 

 

4). 测试

a). 重新启动后,通过如下命令可以查询到触摸设备和对应屏幕关联成功

-------------------------------

root@verdin-imx8mp-06849028:~# journalctl |grep HDMI-A-1

Dec 26 04:05:12 verdin-imx8mp-06849028 weston[513]: [04:05:12.151] DRM: head 'HDMI-A-1' fou

nd, connector 38 is connected, EDID make 'RTK', model 'WCS Display', serial 'demoset-1'

...

Dec 26 04:05:12 verdin-imx8mp-06849028 weston[513]: [04:05:12.421] associating input device

 event3 with output HDMI-A-1 (HDMI-A-1 by udev)

 

root@verdin-imx8mp-06849028:~# journalctl |grep HDMI-A-2

Dec 26 04:05:12 verdin-imx8mp-06849028 weston[513]: [04:05:12.259] DRM: head 'HDMI-A-2' fou

nd, connector 40 is connected, EDID make 'RTK', model 'WCS Display', serial 'demoset-1'

...

Dec 26 04:05:15 verdin-imx8mp-06849028 weston[513]: [04:05:15.268] associating input device

 event6 with output HDMI-A-2 (HDMI-A-2 by udev)

-------------------------------

 

b). 此时两个Qt 应用分别显示在两个 HDMI 显示器上,通过实际触摸操作可以分别操控两个 Qt 应用,部署测试成功。

 

 

5). 总结

本文基于 NXP i.MX8MP 处理器平台测试了 Yocto Linux 下基于 Weston 实现多屏幕分别有独立的触摸实现单独控制。

 

参考文档

https://web.archive.org/web/20201112030845/https://wiki.tizen.org/IVI/Mapping_multiple_touchscreen_Wayland


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客