android多指控制协议详细解答
Posted Android高级知识分享官
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android多指控制协议详细解答相关的知识,希望对你有一定的参考价值。
类型部分:
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
以上是关于android多指控制协议详细解答的主要内容,如果未能解决你的问题,请参考以下文章
Linux Android 多点触摸协议 原文出自比特网,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml