高通Android平台连续点击TP导致返回桌面的一种解决办法

昨天遇到一个“奇怪”的问题,记录一下。
有客户反馈在msm8953平台使用GT927的TP。两指操作过程中会概率返回到主界面。
我过去现场的时候,他们检查了上报,说正常,驱动层没有什么异常log,倒是logcat发现有报了个“Cancelling event due to no window focus”。客户那几个人围着电脑顺藤摸瓜,找到frameworks里的这个位置,将返回false改为true(抱歉这里没法截图),重新编译中间层推到机器里重启后依旧。也就是不知道这个东西究竟是哪里触发的。

我检查了下驱动代码,高通平台的TP驱动代码很老,上报方式用的是slot,没有用a协议,于是让客户适配最新驱动,一个小时后编译成功,烧录整机没功能,驱动运行出错,也没耐心再debug了,我擦。。

于是又看参数,改了参数报点率尝试,结果也一样。

不死心,我将他们机器接到自己电脑,getevent -l看,突然发现有个不一样的地方,有三个down和up,分辨是菜单,Home,返回。还是TP的event。这要看看了。


image.png

检查客户配的DTS,发现配了button-map=<139 172 158>。这里这三个键值在Android里不正是对应上面三个虚拟按键吗?让客户注释这个。重新编译kernel,问题解决。


image.png

其实这个虚拟按键高通平台一直都有打开,现在TP上并没有虚拟按键,所以不需要开了,但是如何触发的?这是个谜,也没必要去深究。

推荐阅读更多精彩内容