我正在使用Congatech的BSP,它使用飞思卡尔Linux内核(linux-2.6-imx)。触摸屏来自Fortrend,但它报告为Advanced Silicon CoolTouch(供应商ID 0x2619,设备ID 0x5610)。
工作原理:
当您将触摸屏插入USB端口时,usbhid驱动程序将其连接到Linux事件系统。我可以看到/ proc / sys / input / devices中列出的设备和getevent向我展示了它支持的事件,我可以监视它的实时事件。
但是,触摸屏根本不会影响Android界面(例如运行指针位置工具)。
在我广泛的谷歌搜索中,我遇到了一些解决方案,其中没有一个有效。例如,建议设备需要由hid-multitouch驱动程序处理。
我所做的是使用MT_CLS_DEFAULT将此设备添加到hid_device_id列表中。我还修改了hid-multitouch驱动程序,以便在驱动程序初始化和探测功能期间进行打印。永远不会调用probe函数。
我发现更多信息表明usbhid驱动程序需要忽略该设备才能让hid-multitouch驱动程序看到它。所以我已经构建了两个驱动程序作为模块,让我像这样启动驱动程序:
insmod /system/lib/modules/usbhid.ko quirks=0x2619:0x5610:0x4
insmod /system/lib/modules/hid-multitouch.ko
usbhid驱动程序现在在插入时忽略了触摸屏,但是再次没有调用hid-multitouch驱动程序的探测功能。
我已经四次检查了我的hid-multitouch驱动程序更改中的供应商ID和设备ID是否正确。
// hid-ids.h
#define USB_VENDOR_ID_ADVANCEDSILICONSA 0x2619
#define USB_DEVICE_ID_ADVANCEDSILICONSA_5610 0x5610
// hid-multitouch.c
/* Advanced Silicon panels */
{ .driver_data = MT_CLS_DEFAULT,
HID_USB_DEVICE(USB_VENDOR_ID_ADVANCEDSILICONSA,
USB_DEVICE_ID_ADVANCEDSILICONSA_5610) },
我从哪里开始?
答案 0 :(得分:0)
你能告诉我它是多点触摸屏还是只是一个触摸板? 如果它只是一个触摸板,则必须使用hid-input.c进行处理,因此您可能需要检查是否处理了事件。在触摸屏的连接上有一些dmesg(调试消息)可以在这里使用。