我编写了一个自定义触摸屏驱动程序,并成功地能够使用 启动驱动程序inputattach
并使用 查看触摸屏数据printk
,但我的鼠标仍然没有移动。我的假设是它也需要使用 X11 进行设置。
报告Xorg.0.log
如下:
[ 38.639] (II) config/udev: Adding input device Mitsubishi Serial TouchScreen (/dev/input/event4)
[ 38.639] (II) No input driver specified, ignoring this device.
[ 38.639] (II) This device may have been added with another device file.
我的xorg配置文件如下:
Section "InputClass"
Identifier "evdev touchscreen catchall"
MatchDevicePath "/dev/input/event*"
MatchIsTouchscreen "on"
Driver "evdev"
EndSection
我的驱动程序名为“mitsubishi”,但我的假设是 xorg 正在寻找输入驱动程序来读取我的驱动程序输出的事件,并且只关心 /dev/input/event 路径。
xinput 显示以下内容,其中不包括我的触摸屏:
x输入
Virtual core pointer id=2 [master pointer (3)]
Virtual core XTEST pointer id=4 [slave pointer (2)]
ImPS/2 Generic Wheel Mouse id=9 [slave pointer (2)]
Virtual core keyboard id=3 [master keyboard (2)]
Virtual core XTEST keyboard id=5 [slave keyboard (3)]
Power Button id=6 [slave keyboard (3)]
Power Button id=7 [slave keyboard (3)]
AT Translated Set 2 keyboard id=8 [slave keyboard (3)]
根据我系统的当前状态,我可以使用tail -f /var/log/kern.log
查看触摸屏数据,但没有从 UI 获得任何响应。关于如何处理 xorg 文件或者是否需要 xorg 移动鼠标有什么建议吗?
答案1
我想到了!我的“conf”文件是错误的。
我将conf文件更改为以下设置,它找到了我的触摸屏并正确地将其视为鼠标。请注意,“MatchProduct”与“MatchProduct”是相同的字符串
[38.639](II)config/udev:添加输入设备三菱串行触摸屏(/dev/input/event4)
:
Section "InputClass"
Identifier "Mitsubishi TS Class"
MatchProduct "Mitsubishi Serial TouchScreen"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
答案2
这MatchIsTouchscreen
可能是由 udev 规则分配的环境变量的关键。
如果你跑
# udevadm info -q all -n /dev/input/event4
列表中是否包含一行E: ID_INPUT_TOUCHSCREEN=1
?如果没有,您可能需要添加一条 udev 规则,用触摸屏属性标记驱动程序处理的相应设备。您可能会在现有的 udev 规则中找到示例。