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_SYN0004 00000402--同步头(其实理论上可以省略)[ 1026.632366] /dev/input/event1: EV_SYN0005 2576d0ba [ 1026.632366] /dev/input/event1: EV_ABSABS_MT_SLOT 00000000 代表第一个手指,其实第一个也可以没有,有的机器就第一次0是没有这个slot [ 1026.632366] /dev/input/event1: EV_ABSABS_MT_TRACKING_ID 00000016 第一个手指对应的TRACKING_ID [ 1026.632366] /dev/input/event1: EV_KEYBTN_TOUCH DOWN 触摸按下 [ 1026.632366] /dev/input/event1: EV_KEYBTN_TOOL_FINGER DOWN [ 1026.632366] /dev/input/event1: EV_ABSABS_MT_POSITION_X 0000011a 按下X轴坐标 [ 1026.632366] /dev/input/event1: EV_ABSABS_MT_POSITION_Y 00000475 按下Y轴坐标 [ 1026.632366] /dev/input/event1: EV_ABSABS_MT_TOUCH_MAJOR 00000003 按下的椭圆长轴 [ 1026.632366] /dev/input/event1: EV_SYNSYN_REPORT 00000000 --同步尾(不省略)[ 1027.937528] /dev/input/event1: EV_SYN0004 00000403 [ 1027.937528] /dev/input/event1: EV_SYN0005 37b18cde [ 1027.937528] /dev/input/event1: EV_ABSABS_MT_POSITION_X 0000011b 这里代表第一个手指移动后坐标 [ 1027.937528] /dev/input/event1: EV_ABSABS_MT_POSITION_Y 00000476 [ 1027.937528] /dev/input/event1: EV_SYNSYN_REPORT 00000000 [ 1028.917333] /dev/input/event1: EV_SYN0004 00000404 [ 1028.917333] /dev/input/event1: EV_SYN0005 367d836c [ 1028.917333] /dev/input/event1: EV_ABSABS_MT_TOUCH_MINOR 00000003 这里是第一个手指的短轴,因为之前一直是slot为0 [ 1028.917333] /dev/input/event1: EV_ABSABS_MT_SLOT 00000001 代表第二手指出来了 [ 1028.917333] /dev/input/event1: EV_ABSABS_MT_TRACKING_ID 00000017 第二个手指对应TRACKING_ID[ 1028.917333] /dev/input/event1: EV_ABSABS_MT_POSITION_X 00000324 第二手指坐标 [ 1028.917333] /dev/input/event1: EV_ABSABS_MT_POSITION_Y 00000165 [ 1028.917333] /dev/input/event1: EV_ABSABS_MT_TOUCH_MAJOR 00000002 [ 1028.917333] /dev/input/event1: EV_ABSABS_MT_TOUCH_MINOR 00000002 第二个手指短轴[ 1028.917333] /dev/input/event1: EV_SYNSYN_REPORT 00000000 [ 1029.047446] /dev/input/event1: EV_SYN0004 00000405 [ 1029.047446] /dev/input/event1: EV_SYN0005 02afd368 [ 1029.047446] /dev/input/event1: EV_ABSABS_MT_POSITION_Y 00000166 第二个手指坐标[ 1029.047446] /dev/input/event1: EV_ABSABS_MT_TOUCH_MAJOR 00000004 [ 1029.047446] /dev/input/event1: EV_ABSABS_MT_TOUCH_MINOR 00000003 [ 1029.047446] /dev/input/event1: EV_SYNSYN_REPORT 00000000 [ 1029.903648] /dev/input/event1: EV_SYN0004 00000405 [ 1029.903648] /dev/input/event1: EV_SYN0005 35c02ec5 [ 1029.903648] /dev/input/event1: EV_ABSABS_MT_SLOT 00000000 [ 1029.903648] /dev/input/event1: EV_ABSABS_MT_POSITION_X 00000173 第一个手指X坐标[ 1029.903648] /dev/input/event1: EV_ABSABS_MT_SLOT 00000001 [ 1029.903648] /dev/input/event1: EV_ABSABS_MT_POSITION_X 00000321 第二个手指X坐标[ 1029.903648] /dev/input/event1: EV_SYNSYN_REPORT 00000000 [ 1031.902947] /dev/input/event1: EV_SYN0004 00000407 [ 1031.902947] /dev/input/event1: EV_SYN0005 35b8a020 [ 1031.902947] /dev/input/event1: EV_ABSABS_MT_SLOT 00000000 第一个手指有事件 [ 1031.902947] /dev/input/event1: EV_ABSABS_MT_TRACKING_ID ffffffff TRACKING_ID为-1代表第一个手指抬起消失[ 1031.902947] /dev/input/event1: EV_SYNSYN_REPORT 00000000 [ 1032.024946] /dev/input/event1: EV_SYN0004 00000408 [ 1032.024946] /dev/input/event1: EV_SYN0005 016372d8 [ 1032.024946] /dev/input/event1: EV_ABSABS_MT_SLOT 00000001 第二个手指有事件 [ 1032.024946] /dev/input/event1: EV_ABSABS_MT_POSITION_Y 0000016c第二个 Y坐标[ 1032.024946] /dev/input/event1: EV_SYNSYN_REPORT 00000000 [ 1032.907686] /dev/input/event1: EV_SYN0004 00000408 [ 1032.907686] /dev/input/event1: EV_SYN0005 35ebac8c [ 1032.907686] /dev/input/event1: EV_ABSABS_MT_TRACKING_ID ffffffff 第二个手指消失抬起 [ 1032.907686] /dev/input/event1: EV_KEYBTN_TOUCH UP 抬起[ 1032.907686] /dev/input/event1: EV_KEYBTN_TOOL_FINGER UP [ 1032.907686] /dev/input/event1: EV_SYNSYN_REPORT 00000000
Android手机大厂Framework系统-Input系统专题实战课
https://ke.qq.com/course/4963459
[入门课,实战课,跨进程专题
ps需要学习深入framework课程和课程优惠
新课程优惠获取请加入qq群:422901085