admin 管理员组文章数量: 887021
Touch
接着前两篇的学习。来详细介绍一下getevent得到的几个参数的含义。
首先根据硬件的不同,会将Touch的协议分为类型A和类型B。两者的主要区别可以概括为如下:
(1).类型A是处理匿名的接触,并且为所有的接触传递原始数据到接收者。类型B是针对可以追踪可识别接触类型的,通过event slots为特定的接触传递更新的数据,也就是说,如果前后两个点的数据没有变化就不会有数据上报。
(2).类型A是无状态的的协议,类型B 特定接触类型的使用减少了传送到用户空间的数据的数量。并且,slot需要使用ABS_MT_TRACKING_ID。也可以简单地根据是否有这个参数来判断是哪一种类型。
(3).类型的不同是由于硬件来区分的,有些IC不支持B类型。
接下来,看看具体的参数。下图是点击一次手机屏幕得到的结果。
1.ABS_MT_TRACKING_ID
前面也提到了这个参数是类型B特有的。实际上,每个slot会和一个ID相对应,一个非负数的表示一次接触,-1表示这是一个无用的slot(或者理解为一次接触的结束)。无论在接触的类型相对应的slot发生了改变,驱动都应该通过改变这个值来使这个slot失效。并且下一次触摸的ID值会是这次的值加1。
2.EV_ABS
事件的一种类型。表示绝对坐标。
3.EV_KEY
事件的一种类型。表示是按键事件。
4.BTN_TOUCH
触碰按键。其值是DOWN或者UP。
5.BTN_TOOL_FINGER
按键的是finger,并且其值也是DOWN或者UP。
6.ABS_MT_POSITION_X,ABS_MT_POSITION_Y
相对于屏幕中心的x,y坐标。
7.ABS_MT_TOUCH_MAJOR
接触部分的长轴长度。相当于椭圆的长轴。
8.ABS_MT_TOUCH_MINOR
接触部分的短轴长度。相当于椭圆的短轴。
9.EV_SYN
事件类型的一种。在事件完成的时候更新数据。
10.SYN_REPORT
可以看到,在一次触摸中,就有好几次SYN_REPORT。是因为有很多的事件,或者是说SYN_REPORT就是一次事件的结束。我的理解是,虽然我们人是用手触摸了一次,但是实际上是有很多个微小的接触点的,这些点对于Touch来说就是事件。并且每次上报的信息可能不同,这是因为类型B的协议只传递变化的信息,没有变的参数就不会再重复出现了。
本文标签: Touch
版权声明:本文标题:Touch 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1700289173h381635.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论