<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - libinput sometimes registers unwanted right-clicks on touchpads"
href="https://bugs.freedesktop.org/show_bug.cgi?id=76760">76760</a>
</td>
</tr>
<tr>
<th>Assignee</th>
<td>wayland-bugs@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Summary</th>
<td>libinput sometimes registers unwanted right-clicks on touchpads
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Reporter</th>
<td>patrakov@gmail.com
</td>
</tr>
<tr>
<th>Hardware</th>
<td>Other
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Component</th>
<td>libinput
</td>
</tr>
<tr>
<th>Product</th>
<td>Wayland
</td>
</tr></table>
<p>
<div>
<pre>Created <span class=""><a href="attachment.cgi?id=96567" name="attach_96567" title="evemu recording illustrating the unintended right-click">attachment 96567</a> <a href="attachment.cgi?id=96567&action=edit" title="evemu recording illustrating the unintended right-click">[details]</a></span>
evemu recording illustrating the unintended right-click
Currently, libinput applies the logic that a two-finger tap means a
right-click. Let's view this in more detail. There are in fact two kinds of
two-finger taps.
Kind A:
Finger 0 placed.
Finger 1 placed.
Finger 1 removed.
Finger 0 removed.
Kind B:
Finger 0 placed.
Finger 1 placed.
Finger 0 removed.
Finger 1 removed.
Currently, both kinds of the event sequences are registered as two-finger taps
if the time period with both fingers present is short enough. Note that the
last event does not matter for either kind, as it happens after libinput has
already registered the tap. I would argue that it is the wrong thing to do, on
the following grounds.
People have two use cases for two-finger taps.
Use case A:
Initially, no fingers are on the touchpad. A user already has the pointer
positioned correctly and wants to right-click just where it is. So one just
taps with two fingers. The whole sequence of events is short, and sometimes it
ends up as Kind A, sometimes as Kind B.
Use case B:
A user already has a finger on the touchpad, positioning the cursor. It takes
some time. Then he/she wants to right-click. So the user places and quickly
removes the second finger. Result: event sequence of Kind A, with a relatively
long time (and quite possibly some movements) between the first and the second
event.
And now consider use case C, where a right-click is not wanted:
A user is currently positioning the cursor, with the intention to left-click
using a hardware clickpad button and move the cursor no further. The actions of
removing the finger that moved the cursor and pressing the button with the
other finger happen concurrently. Result: sometimes a sequence of events where
two fingers are never on the touchpad simultaneously, sometimes a sequence of
Kind B, with a relatively long time (and quite possibly some movements) between
the first and the second event.
The bug is that use case C is sometimes registered as a sequnce of a
right-click and a left-click, instead of only the left-click. The attached
recording illustrates the problem at its end.
Proposal: if a finger has been on the touchpad for a sufficiently long time or
has moved a long distance, make its removal ineligible for registering the
two-finger tap.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>