<HTML><HEAD>
<META content=IE=5 http-equiv=X-UA-Compatible>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<STYLE id=mysingle_style type=text/css>.search-word {
        BACKGROUND-COLOR: #ffee94
}
P {
        FONT-SIZE: 10pt; MARGIN-BOTTOM: 5px; FONT-FAMILY: 맑은 고딕, arial; MARGIN-TOP: 5px
}
TD {
        FONT-SIZE: 10pt; MARGIN-BOTTOM: 5px; FONT-FAMILY: 맑은 고딕, arial; MARGIN-TOP: 5px
}
LI {
        FONT-SIZE: 10pt; MARGIN-BOTTOM: 5px; FONT-FAMILY: 맑은 고딕, arial; MARGIN-TOP: 5px
}
BODY {
        FONT-SIZE: 10pt; FONT-FAMILY: 맑은 고딕, arial; MARGIN: 10px; LINE-HEIGHT: 1.4
}
</STYLE>

<STYLE id=knox_style type=text/css>P {
        FONT-SIZE: 10pt; MARGIN-BOTTOM: 5px; FONT-FAMILY: 맑은 고딕, arial; MARGIN-TOP: 5px
}
</STYLE>

<META name=GENERATOR content=ActiveSquare></HEAD>
<BODY style="OVERFLOW: auto">
<P></P>
<P>Dear Mr. Hutterer.</P>
<P> </P>
<P>Thanks you for your reply.</P>
<P>And I have another question about this, so I hope you reply about this question.</P>
<P> </P>
<P>Following my second case, libinput reports below events. (used evtest and libinput debug-events)</P>
<TABLE style="WIDTH: 818px; BACKGROUND-COLOR: #ffffff" cellSpacing=0 cellPadding=0 width=818 border=1>
<TBODY>
<TR>
<TD height=20 width=818>
<P>Event: time 1420073073.110197, type 3 (Absolute), code 57 (MT Tracking ID), value 22<BR>Event: time 1420073073.110197, type 1 (Key), code 330 (Touch), value 1<BR>Event: time 1420073073.110197, type 3 (Absolute), code 53 (MT Position X), value 176<BR>Event: time 1420073073.110197, type 3 (Absolute), code 54 (MT Position Y), value 1027<BR>Event: time 1420073073.143950, -------------- Report Sync ------------<BR>Event: time 1420073073.165862, type 3 (Absolute), code 57 (MT Tracking ID), value -1<BR>Event: time 1420073073.165862, type 1 (Key), code 330 (Touch), value 0<BR>Event: time 1420073073.165862, type 3 (Absolute), code 47 (MT Slot), value 1<BR>Event: time 1420073073.165862, type 3 (Absolute), code 57 (MT Tracking ID), value 23<BR>Event: time 1420073073.165862, type 1 (Key), code 330 (Touch), value 1<BR>Event: time 1420073073.165862, type 3 (Absolute), code 53 (MT Position X), value 628<BR>Event: time 1420073073.165862, type 3 (Absolute), code 54 (MT Position Y), value 1099<BR>Event: time 1420073073.177031, -------------- Report Sync ------------<BR>Event: time 1420073073.210082, type 3 (Absolute), code 57 (MT Tracking ID), value -1<BR>Event: time 1420073073.210082, type 1 (Key), code 330 (Touch), value 0<BR>Event: time 1420073073.210082, -------------- Report Sync ------------</P></TD></TR></TBODY></TABLE>
<P> </P>
<TABLE style="WIDTH: 818px; BACKGROUND-COLOR: #ffffff" cellSpacing=0 cellPadding=0 width=818 border=1>
<TBODY>
<TR>
<TD height=20 width=818>
<P> event2   TOUCH_DOWN       +39.022s 0 (0) 24.44/80.23 (176.00/1027.00mm)<BR> event2   TOUCH_FRAME      +39.022s <BR> event2   TOUCH_UP         +39.078s <BR> event2   TOUCH_DOWN       +39.078s 1 (0) 87.22/85.86 (628.00/1099.00mm)<BR> event2   TOUCH_FRAME      +39.078s <BR> event2   TOUCH_UP         +39.122s <BR> event2   TOUCH_FRAME      +39.122s</P></TD></TR></TBODY></TABLE>
<P> </P>
<P>So I looks like 1st finger down -> 1st finger up -> 2nd finger down -> 2nd finger up</P>
<P>I interpret it: 2nd finger down can come first than 1st finger, after all fingers are released.</P>
<P> </P>
<P>I have thought that first touch down's index is always 0.</P>
<P>But following in this case, second or third touch down can come fater than first touch down.</P>
<P> </P>
<P>So I ask it to you that second finger down came fisrt situation is normal situation or not..</P>
<P>I'll waiting for your reply.</P>
<P>If you reply about this, it helps me a lot.</P>
<P> </P>
<P>Thanks and regards,</P>
<P>JeongHyun Kang.</P>
<P> </P>
<P>--------- <B>Original Message</B> ---------</P>
<P><B>Sender</B> : Peter Hutterer <peter.hutterer@who-t.net></P>
<P><B>Date</B> : 2020-05-22 12:32 (GMT+9)</P>
<P><B>Title</B> : Re: Question about Linux MT Protocol B type</P>
<P> </P><PRE>On Thu, May 21, 2020 at 07:42:33PM +0900, 강정현 wrote:
> Dear all,

> I have an one question about Linux MT Protocol B type.

> Asume that press touch screen using first finger.

> And release fisrt finger and press second finger toghether.

>  

> In that case, which procotol is correct?

> ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
> │ ABS_MT_SLOT 0                                                                                                         │
> │                                                                                                                       │
> │ ABS_MT_TRACKING_ID 1                                                                                                  │
> │                                                                                                                       │
> │ ABS_MT_POSITION_X 10                                                                                                  │
> │                                                                                                                       │
> │ ABS_MT_POSITION_Y 5                                                                                                   │
> │                                                                                                                       │
> │ ABS_MT_SYNC <-- first finger press                                                                                    │
> └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

There's no such thing as ABS_MT_SYNC, use SYN_REPORT here.

> first case

> ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
> │ ABS_MT_TRACKING_ID -1                                                                                                 │
> │                                                                                                                       │
> │ ABS_MT_TRACKING_ID 2                                                                                                  │
> │                                                                                                                       │
> │ ABS_MT_POSITION_X 15                                                                                                  │
> │                                                                                                                       │
> │ ABS_MT_POSITION_Y 10                                                                                                  │
> │                                                                                                                       │
> │ ABS_MT_SYNC <-- first finger release and first finger press is generated                                              │
> └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Nope, that's wrong. You could skip the tracking ID -1 event and switch
directly to ID 2. This is technically allowed by the protocol but
a lot of userspace (anything Xorg and libinput) will struggle with it
for historical reasons. Where you are re-using the same slot, you should
always stop a touch and start the next touch in a separate frame.

Direct switching also introduces some ambiguity because it merely means
"kernel lost tracking of touch point", so userspace now has to decide
whether it's the same touch or a new touch.


> second case

> ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
> │ ABS_MT_TRACKING_ID -1                                                                                              │
> │                                                                                                                    │
> │ ABS_MT_SLOT 1                                                                                                      │
> │                                                                                                                    │
> │ ABS_MT_TRACKING_ID 2                                                                                               │
> │                                                                                                                    │
> │ ABS_MT_POSITION_X 15                                                                                               │
> │                                                                                                                    │
> │ ABS_MT_POSITION_Y 10                                                                                               │
> │                                                                                                                    │
> │ ABS_MT_SYNC <-- first finger release and second finger press is generated                                          │
> └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

this is the correct sequence (except for the ABS_MT_SYNC bit :).

Cheers,
  Peter
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://protect2.fireeye.com/url?k=b0d106c4-ed1dcf40-b0d08d8b-0cc47aa8f5ba-4eb0ded9c4a94a0e&q=1&u=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fwayland-devel
</PRE><table id=bannersignimg data-cui-lock="true" namo_lock><tr><td><p> </p>
</td></tr></table><table id=confidentialsignimg data-cui-lock="true" namo_lock><tr><td><p><img style="border: 0px solid currentColor; border-image: none; width: 520px; height: 144px; display: inline-block;" unselectable="on" data-cui-image="true" src="cid:cafe_image_0@s-core.co.kr"> </p>
</td></tr></table></BODY></HTML><img src='http://ext.samsung.net/mail/ext/v1/external/status/update?userid=jhyuni.kang&do=bWFpbElEPTIwMjAwNTIyMDg0NDA5ZXBjbXMxcDhiMmQ1MzcwMWZkMDI3NTU0MTUwMzM3OTM1OGM2NTIxMSZyZWNpcGllbnRBZGRyZXNzPXdheWxhbmQtZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn' border=0 width=0 height=0 style='display:none'>