input子系统五 多点上报协议

multi-touch-protocol.txt

一 type A


1 检测到2点按下,最小事件序列的上报形式为:

ABS_MT_POSITION_X x[0]
ABS_MT_POSITION_Y y[0]
SYN_MT_REPORT
ABS_MT_POSITION_X x[1]
ABS_MT_POSITION_Y y[1]
SYN_MT_REPORT
SYN_REPORT

2 第1个点抬起后的上报序列:

ABS_MT_POSITION_X x[1]
ABS_MT_POSITION_Y y[1]
SYN_MT_REPORT
SYN_REPORT

3 第2个点也抬起后的上报序列:

SYN_MT_REPORT
SYN_REPORT

总结:一个点按下上报一个SYN_MT_REPORT,多点多个;一个或多点同时按下上报一个SYN_REPORT,多点都抬起对应一个SYN_MT_REPORT和SYN_REPORT。依赖上层算法识别抬起。

二 typeB


1 检测到2点按下,最小事件序列的上报形式为:

ABS_MT_SLOT 0
ABS_MT_TRACKING_ID 45
ABS_MT_POSITION_X x[0]
ABS_MT_POSITION_Y y[0]
ABS_MT_SLOT 1
ABS_MT_TRACKING_ID 46
ABS_MT_POSITION_X x[1]
ABS_MT_POSITION_Y y[1]
SYN_REPORT

2 ID=45点x方向移动的上报序列:

ABS_MT_SLOT 0
ABS_MT_POSITION_X x[0]
SYN_REPORT

3 slot 0抬起的上报序列:

ABS_MT_TRACKING_ID -1
SYN_REPORT

4 slot 1也抬起的上报序列:

ABS_MT_SLOT 1
ABS_MT_TRACKING_ID -1
SYN_REPORT
总结:一个点按下上报一个ABS_MT_SLOT,多点多个;一个或多点同时按下上报一个SYN_REPORT,一个或或多点同时抬起上报对应的ABS_MT_SLOT和一个SYN_REPORT。ID为-1表示抬起。

你可能感兴趣的:(linux驱动)