触摸屏识别为鼠标的解决方法

之前调试安卓的tp的时候遇到一个问题,就是系统将触摸设备识别为usb鼠标设备

一、修改方法

在对应的device/nxp/imx8m/evk_8mp目录下,添加一个Goodix_Capacitive_TouchScreen.idc
其内容如下
这个idc的名字好像也有关系,到时候你们可以自己看看,不同的tp这个名字好像有关系。

touch.deviceType = touchScreen
/*
    如果值为 touchScreen,那么触摸设备是与显示屏相关联的触摸屏。
    如果值为 touchPad,那么触摸设备是不与显示屏相关联的触摸板。
    如果值为 pointer,那么触摸设备是不与显示屏相关联的触摸板,并且其动作用于间接多点触控指控手势。
    如果值为 default,系统将根据分类算法自动检测设备类型。
*/
touch.orientationAware = 1
/*
    如果值为 1,只要显示屏的方向更改了,触摸设备报告的触摸位置就会旋转。
    如果值为 0,触摸设备报告的触摸位置将不受显示屏方向更改的影响。
*/
touch.size.calibration = none
/*
		指定触摸驱动程序报告触摸尺寸和工具尺寸时所用的测量类型。
    如果值为 none,那么尺寸设为零。
    如果值为 geometric,那么假定以与位置相同的 Surface 单元指定尺寸,从而以相同的方式对尺寸进行缩放。
    如果值为 diameter,那么假定尺寸与触摸或工具直径(宽度)成比例。
    如果值为 area,那么假定尺寸与触摸或工具面积成比例。
    如果值为 default,那么在 raw.touchMajor 或 raw.toolMajor 轴可用的情况下,系统将使用 geometric 校准,否则使用 none 校准。
*/
touch.orientation.calibration = none
/*
	指定触摸驱动程序报告方向时所用的测量类型。
    如果值为 none,方向未知,则设为 0。
    如果值为 interpolated,则方向被线性插入,使得 raw.orientation.min 的原始值映射到 -PI/2,raw.orientation.max 的原始值映射到 PI/2。(raw.orientation.min + raw.orientation.max) / 2 的中心值映射到 0。
    如果值为 vector,则方向表示为包含两个带符号的 4 位字段的压缩向量。该表示法用于 Atmel 基于对象的协议部分。当解码时,向量生成定向角和置信度。置信度用于缩放尺寸信息,除非它是几何图形。
    如果值为 default,那么在方向轴可用的情况下,系统将使用 interpolated 校准,否则使用 none。
*/

关于触摸的官方详细解释可以看:
触摸官方网址

修改对应的imx8m/evk_8mp/BoardConfig.mk
添加下面对应的一行


PRODUCT_COPY_FILES +=    \
	device/nxp/imx8m/evk_8mp/Goodix_Capacitive_TouchScreen.idc:vendor/usr/idc/Goodix_Capacitive_TouchScreen.idc

编译烧录

二、修改usb触摸跟随HDMI分辨率

遇到一个新bug就是我使用usb触摸的时候,插入HDMI会导致我的usb触摸跟随HDMI的分辨率,而不是屏幕的分辨率。
拔出HDMI
log显示:

03-21 09:52:47.400   543   626 I InputReader: Reconfiguring input devices, changes=DISPLAY_INFO | 
03-21 09:52:47.400   543   626 W InputReader: Input device ILITEK ILITEK-TP should be associated with external display, fallback to internal one for the external viewport is not found.
03-21 09:52:47.400   543   626 I InputReader: Device reconfigured: id=2, name='ILITEK ILITEK-TP', size 1280x800, orientation 0, mode 1, display id 0

插入HDMI
LOG显示:

03-21 09:53:22.735   543   626 I InputReader: Reconfiguring input devices, changes=DISPLAY_INFO | 
03-21 09:53:22.735   543   626 I InputReader: Device reconfigured: id=2, name='ILITEK ILITEK-TP', size 1422x800, orientation 0, mode 1, display id 0

很明显分辨比变
原因就是每次插拔显示外设的时候,usb触摸就会去重新配置一次,我们关闭触摸跟随外设就行。

屏蔽掉frameworks/native/下的代码
diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index a1514af66..630079555 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1459,7 +1459,7 @@ status_t EventHub::openDeviceLocked(const char* devicePath) {
 
     // Determine whether the device is external or internal.
     if (isExternalDeviceLocked(device)) {
-        device->classes |= INPUT_DEVICE_CLASS_EXTERNAL;
+        //device->classes |= INPUT_DEVICE_CLASS_EXTERNAL;
//这个决定异显后usb接口的触摸屏会在调用到副屏上,这里注释掉就是禁止
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值