我一直在玩Android内核输入一段时间了,我想构建一个脚本,当屏幕上的某个模式被绘制时执行操作,无论手机在那个瞬间做什么。
因此,我的想法是直接从dev/input/event3/
捕获触摸屏输入并将其存储在一个文件中,该文件将在给定间隔内由另一个脚本扫描,以检测它是否包含某种模式。
我已经通过getevent event3
记录了触摸屏输入数据并整理了我需要的值,并且我已经能够将这些值与我cat event3
的输出相匹配用于直接获取输入数据。 (我有使用原始猫输出,因为getevent显然太慢,至少getevent event3 > test.log
不工作)
问题是,使用getevent
,我可以使用合理的X / Y坐标来匹配模式,但是,使用原始猫输出,X / Y值看起来是随机的!
dcf4 0100 08b2 0800 0300 3500 3c01 0000
dcf4 0100 27b2 0800 0300 3600 1d04 0000
dcf4 0100 831e 0900 0300 3500 3f01 0000
dcf4 0100 a21e 0900 0300 3600 1604 0000
dcf4 0100 d7ea 0900 0300 3500 7701 0000
[dcf4 0100 d7ea 0900][0300][3600][c903 0000]
[timestamp ][type][parm][value ]
查看kernel source,我发现struct与输出模式匹配,但缺少时间戳值。但是,假设这里的最后8个字符只是int32_t
,输入完全没有意义。
我的问题是:如果这是int32_t
,为什么它的值与我触摸的实际X / Y位置没有任何关系? - 或者,如何从该数据中获取正确的X / Y值?