android多指控制协议详细解答

93 篇文章 71 订阅
93 篇文章 64 订阅

类型部分:

1.EV_SYN

同步事件完,在事件开始或完成会有
对应的code:
0004:代表一个事件开始(不必要)
0005:代表一个事件开始(不必要)
SYN_REPORT:代表一个事件的结束 (必要)

2.EV_ABS

事件的一种绝对坐标类型
对应code:
2.0 ABS_MT_SLOT
本质代表者不同手指,它的value代表手指id
2.1 ABS_MT_TRACKING_ID

类型B特有的,实际上,每个slot会和一个ID相对应,一个非负数的表示一次接触,-1表示这是一个无用的slot(或者理解为一次接触的结束) 。无论在接触的类型相对应的slot发生了改变,驱动都应该通过改变这个值来使这个slot失效。并且下一次触摸的ID值会是这次的值加1。

2.2 ABS_MT_POSITION_X,ABS_MT_POSITION_Y

相对于屏幕中心的x,y坐标。

2.3 ABS_MT_TOUCH_MAJOR

接触部分的长轴长度。相当于椭圆的长轴。

2.4 ABS_MT_TOUCH_MINOR

接触部分的短轴长度。相当于椭圆的短轴。

2.5 ABS_MT_PRESSURE
代表按下压力,有的设备不一定有

3.EV_KEY

事件的一种类型。表示是按键(不仅仅指的物理按键也包括TOUCH)事件
对应code:
3.1 BTN_TOUCH

触碰按键。其值是DOWN或者UP。

3.2 BTN_TOOL_FINGER

按键的是finger,并且其值也是DOWN或者UP

4.案例分析

两个手指分别按下,移动,然后分别抬起:

[    1026.632366] /dev/input/event1: EV_SYN       0004                 00000402       --同步头(其实理论上可以省略)       
[    1026.632366] /dev/input/event1: EV_SYN       0005                 2576d0ba            
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000000        代表第一个手指,其实第一个也可以没有,有的机器就第一次0是没有这个slot    
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_TRACKING_ID   00000016         第一个手指对应的TRACKING_ID   
[    1026.632366] /dev/input/event1: EV_KEY       BTN_TOUCH            DOWN            触摸按下    
[    1026.632366] /dev/input/event1: EV_KEY       BTN_TOOL_FINGER      DOWN                
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    0000011a        按下X轴坐标    
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000475        按下Y轴坐标    
[    1026.632366] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MAJOR   00000003        按下的椭圆长轴    
[    1026.632366] /dev/input/event1: EV_SYN       SYN_REPORT           00000000     --同步尾(不省略)              
[    1027.937528] /dev/input/event1: EV_SYN       0004                 00000403            
[    1027.937528] /dev/input/event1: EV_SYN       0005                 37b18cde            
[    1027.937528] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    0000011b        这里代表第一个手指移动后坐标     
[    1027.937528] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000476            
[    1027.937528] /dev/input/event1: EV_SYN       SYN_REPORT           00000000          

[    1028.917333] /dev/input/event1: EV_SYN       0004                 00000404            
[    1028.917333] /dev/input/event1: EV_SYN       0005                 367d836c            
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MINOR   00000003         这里是第一个手指的短轴,因为之前一直是slot为0   
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000001        代表第二手指出来了    
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_TRACKING_ID   00000017        第二个手指对应TRACKING_ID
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    00000324          第二手指坐标  
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000165            
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MAJOR   00000002            
[    1028.917333] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MINOR   00000002            第二个手指短轴
[    1028.917333] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             
[    1029.047446] /dev/input/event1: EV_SYN       0004                 00000405            
[    1029.047446] /dev/input/event1: EV_SYN       0005                 02afd368            
[    1029.047446] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    00000166            第二个手指坐标
[    1029.047446] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MAJOR   00000004            
[    1029.047446] /dev/input/event1: EV_ABS       ABS_MT_TOUCH_MINOR   00000003            
[    1029.047446] /dev/input/event1: EV_SYN       SYN_REPORT           00000000            

[    1029.903648] /dev/input/event1: EV_SYN       0004                 00000405            
[    1029.903648] /dev/input/event1: EV_SYN       0005                 35c02ec5            
[    1029.903648] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000000           
[    1029.903648] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    00000173             第一个手指X坐标
[    1029.903648] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000001            
[    1029.903648] /dev/input/event1: EV_ABS       ABS_MT_POSITION_X    00000321             第二个手指X坐标
[    1029.903648] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             

[    1031.902947] /dev/input/event1: EV_SYN       0004                 00000407            
[    1031.902947] /dev/input/event1: EV_SYN       0005                 35b8a020            
[    1031.902947] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000000            第一个手指有事件 
[    1031.902947] /dev/input/event1: EV_ABS       ABS_MT_TRACKING_ID   ffffffff            TRACKING_ID为-1代表第一个手指抬起消失
[    1031.902947] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             
[    1032.024946] /dev/input/event1: EV_SYN       0004                 00000408            
[    1032.024946] /dev/input/event1: EV_SYN       0005                 016372d8            
[    1032.024946] /dev/input/event1: EV_ABS       ABS_MT_SLOT          00000001            第二个手指有事件  
[    1032.024946] /dev/input/event1: EV_ABS       ABS_MT_POSITION_Y    0000016c              第二个 Y坐标
[    1032.024946] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             
[    1032.907686] /dev/input/event1: EV_SYN       0004                 00000408            
[    1032.907686] /dev/input/event1: EV_SYN       0005                 35ebac8c            
[    1032.907686] /dev/input/event1: EV_ABS       ABS_MT_TRACKING_ID   ffffffff            第二个手指消失抬起  
[    1032.907686] /dev/input/event1: EV_KEY       BTN_TOUCH            UP                  抬起
[    1032.907686] /dev/input/event1: EV_KEY       BTN_TOOL_FINGER      UP                  
[    1032.907686] /dev/input/event1: EV_SYN       SYN_REPORT           00000000             

更多推荐blog :https://blog.csdn.net/learnframework/article/details/123318219

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

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

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

打赏作者

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

抵扣说明:

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

余额充值