含有 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) }

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

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

更多相关文章

  1. 项目总结之Android读取office文件遇到的坑
  2. 如何确定Android中刚修改后的c/c++是否编译成功
  3. Gradle Kotlin DSL , 你知道它吗?
  4. apk反编译和重新打包
  5. 小梅科普:ARM Cortex-A8和Android(安卓)4.x的联动报警系统
  6. 在android下出现乱码的问题(在网络中传输和获取数据时)
  7. 安卓系统架构多年经验总结:《Android程序的编译,安装和运行》 | An
  8. Unity3D中 Android插件findviewbyid返回null的解决办法
  9. Android之反编译技术

随机推荐

  1. 【Android】Android之修改app标题与图标
  2. Dalvik 十件事
  3. Android 8.0.0-r4源码目录结构详解
  4. Android GPS 定位的实现
  5. Android中一些常见文件格式分析
  6. Android——Android(安卓)6.0 权限申请机
  7. android Service控件
  8. android 系统中修改系统的版本号
  9. android NDK 交叉编译
  10. android listview的适配器------baseadap