<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace"><br></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jul 18, 2018 at 1:52 PM Peter Hutterer <<a href="mailto:peter.hutterer@who-t.net">peter.hutterer@who-t.net</a>> wrote:</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I'm not sure about the WITH_LOCK and POTENTIAL_UNLOCK parts, they should be<br>
(in theory) the same as the existing ones where DRAGGING_WAIT goes back to<br>
DRAGGING or DRAGGING_OR_TAP. Can you double-check this please whether it<br>
would work out?<br></blockquote><div><br></div><div><div class="gmail_default" style="font-family:monospace,monospace">​I've modified the state diagram so that the logic and nomenclature are equivalent to the already present left tap drag logic. </div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Right now, there's a dead end in it:<br>
TOUCH_2_DRAGGING -> finger up -> draglock enabled -> WITH_LOCK -> finger<br>
down -> POTENTIAL_UNLOCK<br>
<br>
If the finger is now labelled as palm or thumb, you're stuck in<br>
DRAGGING_WITH_LOCK until the next finger is down, never releasing.<br>
This seems to be intended (your point 2.) but we definitely need a timeout<br>
here. Imagine doing this, waiting 10 sec and then still continuing with the<br>
dragging on the next touch - not what the user would expect.<br>
<br>
so DRAGGING_WITH_LOCK needs a timeout to go to the button 2 release.<br>
I think I'd prefer "TOUCH_2_DRAGGING_WAIT" over TOUCH_2_DRAGGING_WITH_LOCK<br>
then to make it more consistent to the 1fg case.<br>
<br>
And TOUCH_2_DRAGGING_DOWN for no other reason than it's more expressive of<br>
the state and closer to the MULTITAP_DOWN naming scheme.<br>
<br>
<br>
oh, found another one: in POTENTIAL_UNLOCK you may get a second finger down<br>
- what do we do then? Either we go all the way back to TOUCH_2 which gives<br>
us the ability to right-click-drag and right-click. Or we go to some new<br>
state and resolve the 2fg tap as "end the draglock" tap. I really don't know<br>
which one is the more obvious one here.<br>
<br>
This has the potential to interfere with 2fg scrolling too: <br>
- draglog is enabled<br>
- 2 fingers down and up<br>
- 1 finger down, dragging<br>
- 1 finger up<br>
- 2 fingers down and dragging (2fg scrol<div class="gmail_default" style="font-family:monospace,monospace;display:inline">​</div><div class="gmail_default" style="display:inline"><font face="arial, helvetica, sans-serif">l)</font></div><div class="gmail_default" style="font-family:monospace,monospace;display:inline">​</div><br></blockquote><div><br></div><div class="gmail_default" style="font-family:monospace,monospace">​In synaptics driver it's possible to scroll by putting down a second finger while dragging with a tap, it's super useful for selecting large texts on webpages and in tools like blender. Would it be possible for libinput to behave similarly? It looks like this too would require duplicating the code and states for left, right and middle clicks.</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">As a side note, would it be possible to make the state machine more abstract, so that the similar behaviors for all the mouse buttons could be handled with the same code? Maybe it won't be worth it, since the state machine is a relatively short part of the libinput source.</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Right now, this would... uhm, land us in TOUCH_2_DRAGGING, so it'd be a 2fg<br>
scroll with the right button held down. And (hopefully) a warning in the<br>
code about an invalid state ;)<br>
<br>
Oh, and once you handle the second finger down in POTENTIAL_UNLOCK you now<br>
have to resolve a third finger down in whatever state comes next. Good <br>
luck :)</blockquote><div><br></div><div>Best Regards</div></div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Sagar Tewari<br></div></div></div></div>