Android/Linux 系统添加对多点触摸屏的支持

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

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

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

modprobe hid-multitouch

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

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

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

Device Drivers --->
HID Devices --->
Special HID Drivers --->
HID Multitouch panels

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

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

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

#define USB_VENDOR_ID_MYSCREEN 0x1A86
#define USB_DEVICE_ID_MYSCREEN 0xE030

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

{ .driver_data = MT_CLS_DEFAULT,
HID_USB_DEVICE(USB_VENDOR_ID_MYSCREEN,
USB_DEVICE_ID_MYSCREEN) }

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

    若遇到问题给我邮件或评论哦,觉得对你有帮助就点赞吧~:-)

你可能感兴趣的:(Linux,Linux,OS,and,Tools,Linux,Device,Driver,Android,触摸屏支持,hid-multitouch,安卓/Linux触摸屏)