含有 HID 多点触摸控制器的触摸屏、触摸板在 Android Linux 内核中都是由 "hid-multitouch" 驱动进行支持的。因此如果你的系统连接触摸屏没有反应,问题基本都出于驱动未加载或者与触摸屏的 VID PID 不适配。以下分情形讨论:

1、系统中已存在“hid-multitouch”驱动

    “hid-multitouch”驱动是以内核模块的方式存在于系统里面(相对静态编译进内核而言),那么可以尝试执行如下命令。在 Linux 使用终端在其中输入,若是 Android 需要用 ADB 方式连接然后输入。命令为:

modprobe hid-multitouch

    若没有报错,则表示驱动已经加载成功了。若需要开机默认加载,将以上命令写入系统的“/etc/rc.local”文件即可。

2、系统中不存在“hid-multitouch”驱动

    此时,也有两种途径编译加载该驱动,若你手上有该系统的内核源码,也即对应你的电脑或产品的源代码。那么按以下路径选中驱动,重新编译系统即可,将编译好的内核固件重新烧录即。具体的编译驱动路径为:

1.  Device Drivers --->

2.  HID Devices --->

3.  Special HID Drivers --->

4.  HID Multitouch panels

    如果你没有该系统源码,也可以在可编译驱动模块的主机上编译源码文件“hid-multitouch.c”,编译成功会生成“hid-multitouch.ko”文件。然后拷贝至你的系统,命令行方式 insmod 或者 modprobe 该驱动即可。这里给出相关的源文件以及在Ubuntu、树莓派等系统上进行操作的具体步骤:

Multitouch-Solution.zip

    若你做了以上操作仍无法支持触摸屏,那么可能是由于你的系统内核版本较老,请检查你的内核版本是否处于 3.4 系统及以下,若是则按以下步骤继续进行。

1、在 hid-ids.h 中添加触摸屏的 vid pid,在 linux 下用 lsusb 命令查看,windows 设备管理器中查看硬件ID”

1.  #define USB_VENDOR_ID_MYSCREEN 0x1A86

2.  #define USB_DEVICE_ID_MYSCREEN 0xE030

2、在 hid-multitouch.c -> mt_devices[] 中加入

1.  { .driver_data = MT_CLS_DEFAULT,

2.  HID_USB_DEVICE(USB_VENDOR_ID_MYSCREEN,

3.  USB_DEVICE_ID_MYSCREEN) }

    以上步骤完成后重新编译内核即可,或者选择单独编译该驱动。记得一定要在内核中选中该驱动。