Android多指控制B协议

  我们通过getevent命令得到的一系列打印,那么这些打印意义为何?这里我们将按照事件的类型来进行讲解。

1.EV_SYN:同步事件
同步事件出现在一个事件的开始和完成
对应的code:
(1) 0004:代表一个事件开始(不必要)
(2) 0005:代表一个事件开始(不必要)
(3) SYN_REPORT:代表一个事件结束(必要的)
有些手机上没有事件的开始,只有事件的结束,就算只有事件的结束,我们也可以区分去一个事件来。

2.EV_ABS:绝对坐标的事件类型
在触摸事件中EV_ABS事件是最常见的
对应的code
(1) ABS_MT_SLOT:本质代表着不同的手指,他的value代表手指id;
(2) ABS_MT_TRACKING_ID:B类协议特有的,每个slot会和一个ID相对应,一个非负数表示一次接触,ffffffff表示一次接触结束,即手指抬起。无论在接触的类型相对应的slot发生改变,驱动都应该通过改变这个值来使这个slot失效,并且下一次触摸的ID值会是这次的值加1;
(3) ABS_MT_POSITION_X,ABS_MT_POSITION_Y:相对于屏幕中心的x,y坐标;
(4) ABS_MT_TOUCH_MAJOR:接触部分的长轴长度,相当于椭圆的长轴;
(5) ABS_MT_TOUCH_MINOR:接触部分的短轴长度,相当于椭圆的短轴;
(6) ABS_MT_PRESSURE:代表按下压力,有的设备不一定有。

3.EV_KEY:按键事件
对应的code
(1) BTN_TOUCH:触碰按键,其值是DOWN或者UP;
(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             


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值