José Expósito [Sat, 11 Jun 2022 11:47:52 +0000 (13:47 +0200)]
libinput 1.21.0
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Wed, 8 Jun 2022 06:43:39 +0000 (16:43 +1000)]
gitlab CI: bump to F35 and F36, as well as Ubuntu 21.10 and 22.04
F33 and F34 are both EOL. This also fixes the RPM build job to
automatically use the latest Fedora version and adds
wayland-protocols-devel which is now needed.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Fri, 10 Jun 2022 00:31:37 +0000 (10:31 +1000)]
meson.build: check gtk targets before building
We have two different dependencies on Wayland: GTK support and the
wayland-protocols we use directly. If we have GTK support but
wayland-protocols is not installed at meson configure time, our build
fails.
To avoid having multiple ifdefs in the code, let's define two new ones:
HAVE_GTK_WAYLAND and HAVE_GTK_X11, both set if GTK supports that
particular target (from pkgconfig) and we have the other support
libraries we need.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Tue, 7 Jun 2022 23:25:59 +0000 (09:25 +1000)]
test: fix a typo
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Tue, 7 Jun 2022 23:25:02 +0000 (09:25 +1000)]
test: use a ranged test instead of a duplicated one
These two tests were identical except for the WHEEL/HWHEEL
differentiator, let's make this into a ranged test instead.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
José Expósito [Mon, 6 Jun 2022 18:24:16 +0000 (20:24 +0200)]
wheel: fix Lenovo Scrollpoint quirk
The IBM/Lenovo Scrollpoint mouse features a trackpoint-like stick that
sends a great amount of scroll deltas.
In order to handle the device, a quirk is in place to normalize the
scroll events as they were relative motion.
However, when high-resolution scroll was implemented, we started
normalizing the hi-res events instead of the lo-res events by mistake.
Fix the quirk by normalizing the right deltas.
Fixes:
6bb02aaf307a ("High-resolution scroll wheel support")
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Tested-by: Peter Ganzhorn <peter.ganzhorn@gmail.com>
Peter Hutterer [Mon, 6 Jun 2022 23:55:32 +0000 (09:55 +1000)]
test: ensure we always have an axis event where we expect one
If we never got an event, we'd skip over the while loop and generate a
false positive.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Tue, 7 Jun 2022 01:56:04 +0000 (11:56 +1000)]
test: fix the lowres-only wheel event tests
These tests gave us false positives for devices without a REL_WHEEL or
REL_HWHEEL because one of the helper functions papered over missing
events.
We have two tests here, one for horizontal, one for vertical but they
mixed WHEEL and HWHEEL in both tests. Fix this by splitting them
properly, so each test only checks that axis.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
satrmb [Sun, 29 May 2022 09:29:49 +0000 (11:29 +0200)]
filter-touchpad: normalize for dpi on the touchpad-specific flat profile
On mice, switching the acceleration profile to flat disables dpi normalization,
because high or even switchable dpi are generally major features of a
high-end mouse, and switching to flat acceleration indicates that the user
wants to reduce the effects of any cursor acceleration to a minimum.
Therefore we skip normalization there and let the user take full advantage
of their expensive hardware.
On touchpads, particularly those built into a laptop, users have to deal with
whatever hardware they have; touchpad dpi is an afterthought at best, or
a disaster at worst. Switching to the flat profile is more likely to be
about avoiding the non-linear acceleration curve of the adaptive profile.
Hence the flat profile for touchpads shouldn't copy what the one for mice does,
but rather use dpi normalization like the adaptive profile. This keeps flat
acceleration on low-resolution touchpads from dropping to unusably slow speeds.
Signed-off-by: satrmb <10471-satrmb@users.noreply.gitlab.freedesktop.org>
Peter Hutterer [Fri, 6 May 2022 05:21:08 +0000 (15:21 +1000)]
tablet: require a minimum pressure before we process pressure events
Tools default to 1% lower threshold (tip up) and 5% upper threshold (tip
down). But our distance vs pressure exclusion would reset the distance
for *any* pressure value, regardless how low that value was and how high
distance was in comparison.
A very low pressure value of less than 1% would then result in a
normalized pressure of 0, so we'd effectively just reset the distance to
zero and do nothing with the pressure. This can cause distance jumps
when the tool arbitrarily sends low pressure values while hovering as
seen in https://github.com/libsdl-org/SDL/pull/5481#issuecomment-
1118969064
Commit
61bdc05fb0f84303f97daaba6ae6b49c976dbfbf from Dec 2017
"tablet: set the tip-up pressure threshold to 1%"
was presumably to address this but no longer (?) works.
Fix this by addressing multiple issues at the same time:
- anything under that 1% threshold is now considered as zero pressure
and any distance value is kept as-is. Once pressure reaches 1%,
distance is always zero.
- axis normalization is now from 1% to 100% (previously: upper threshold
to 100%). So a tip down event should always have ~4% pressure and we
may get tablet motion events with nonzero pressure before the tip down
event.
From memory, this was always intended anyway since a tip event should
require some significant pressure, maybe too high compared to e.g.
pressure-sensitive painting
- where a tablet has an offset, add the same 1%/5% thresholds, on top of
that offset. And keep adjusting those thresholds as we change the
offset. Assuming that the offset is the absolute minimum a worn-out
pen can reach, this gives us the same behaviour as a new pen. The
calculation here uses a simple approach so the actual range is
slightly larger than 5% but it'll do.
Previously, the lower threshold for an offset pen was the axis minimum
but that can never be reached. So there was probably an undiscovered
bug in there.
And fix a bunch of comments that were either wrong, confusing or
incomplete, e.g. the pressure thresholds were already in device
coordinates.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Fri, 6 May 2022 04:59:05 +0000 (14:59 +1000)]
tablet: use a helper variable to make the code more readable
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Fri, 6 May 2022 06:24:43 +0000 (16:24 +1000)]
test: rename a test function to make it easier to select
Because --filter-test does substring matching it's easier to have it
with a unique name rather than one that is a prefix of another.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Fri, 6 May 2022 04:57:40 +0000 (14:57 +1000)]
tablet: remove an always-true part of an if condition
A few lines north of here we return early if neither bit is set. If we
get to this point, at least one bit is set so this part of the condition
always evaluates to true.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
José Expósito [Wed, 18 May 2022 21:17:35 +0000 (23:17 +0200)]
Remove "device-" file
The file was unintentional added in a merge request:
https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/771
Fixes:
4d26736e ("Quirk all StarLabs trackpads")
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Sean Rhodes [Thu, 12 May 2022 08:07:26 +0000 (09:07 +0100)]
Quirk all StarLabs trackpads
Quirk all the StarLabs trackpads as they are all the same design,
a clickpad with physical buttons that act as one button.
Fixes #771.
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Peter Hutterer [Mon, 16 May 2022 02:24:16 +0000 (12:24 +1000)]
quirks: remove an unused quirk
Removed in
b925a0878b0b51fe30016546b9e48a7613dccd4d
quirks: switch the models with missing buttonpad to use the new attr
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Mon, 16 May 2022 02:23:57 +0000 (12:23 +1000)]
quirks: move the canvas quirk enum to the right order
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Sean Rhodes [Mon, 9 May 2022 11:14:11 +0000 (12:14 +0100)]
quirks: Add quirk for StarLite Mk IV
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Peter Hutterer [Fri, 6 May 2022 01:00:59 +0000 (11:00 +1000)]
test: install libinput-test-utils as part of install-tests
This tests a bunch of internal utility functions that may work
differently depending on compiler flags, etc. Let's make that test
available so it can be verified on an installed system.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Fri, 6 May 2022 00:51:33 +0000 (10:51 +1000)]
tools: add a libinput test tool as entry point for our test suites
We already install libinput-test-suite if the meson option install-tests
is set, see
commit
be7045cdc70d8c026d981997852cc706dab3d5b8
test: make the test suite runner available as installed binary
To make other tests easily available and more discoverable, add a new
tool "libinput test" with the matching man page. This will also help us
to enforce some of the namespacing a bit better.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Fri, 6 May 2022 04:24:41 +0000 (14:24 +1000)]
tools/analyze-recording: improve the repeated-events line printing
When redirecting to a file, we don't want lines like this:
.. +2 ... +5 ... +9
Let's not print anything until we have collected all those lines and
then print the final result, we don't need a live update here.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Fri, 6 May 2022 03:15:25 +0000 (13:15 +1000)]
tools/analyze-recording: add --print-state to always print values
Helpful in comparing values that update frequently - without this the
last printed value may be way off the page when some other value comes
in that it needs to be compared to.
Values not seen yet default to zero - we can't query those from a
recording but it'll be good enough this way.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Fri, 6 May 2022 03:44:58 +0000 (13:44 +1000)]
tools/record: fix indentation for libinput events
Commit
0cdf459643bfa6264bd2d1af8f7749529ebffee1
tools/record: get rid of indent push/pop, replace with fixed indents
Introduced some magic to detect if there's a '-' at the start of the
format string to fix the identation. This only works if the format
string is constant though, leading to an indentation error when record
is run with --with-libinput.
Fixes
0cdf459643bfa6264bd2d1af8f7749529ebffee1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Wed, 4 May 2022 01:20:01 +0000 (11:20 +1000)]
tools: don't print a carriage return if we're not on a tty
Otherwise redirecting the output to a file leaves us with ugly ^M
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Wed, 4 May 2022 01:14:30 +0000 (11:14 +1000)]
tools: allow limiting the axes in libinput analyse recording
Use --ignore ABS_X,ABS_Y or --only ABS_X,ABS_Y to ignore or limit to
only a specific axis set. Especially for tablet devices with their
multitudes of axes this makes analysing a particular set easier.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Alexander Courtis [Tue, 26 Apr 2022 01:55:22 +0000 (01:55 +0000)]
AttrLidSwitchReliability quirk default unreliable->reliable
Peter Hutterer [Tue, 29 Mar 2022 23:25:22 +0000 (09:25 +1000)]
evdev: strip the device name of format directives
This fixes a format string vulnerabilty.
evdev_log_message() composes a format string consisting of a fixed
prefix (including the rendered device name) and the passed-in format
buffer. This format string is then passed with the arguments to the
actual log handler, which usually and eventually ends up being printf.
If the device name contains a printf-style format directive, these ended
up in the format string and thus get interpreted correctly, e.g. for a
device "Foo%sBar" the log message vs printf invocation ends up being:
evdev_log_message(device, "some message %s", "some argument");
printf("event9 - Foo%sBar: some message %s", "some argument");
This can enable an attacker to execute malicious code with the
privileges of the process using libinput.
To exploit this, an attacker needs to be able to create a kernel device
with a malicious name, e.g. through /dev/uinput or a Bluetooth device.
To fix this, convert any potential format directives in the device name
by duplicating percentages.
Pre-rendering the device to avoid the issue altogether would be nicer
but the current log level hooks do not easily allow for this. The device
name is the only user-controlled part of the format string.
A second potential issue is the sysname of the device which is also
sanitized.
This issue was found by Albin Eldstål-Ahrens and Benjamin Svensson from
Assured AB, and independently by Lukas Lamster.
Fixes #752
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Thu, 7 Apr 2022 04:44:53 +0000 (14:44 +1000)]
tools/record: fix the indentation of the system: section
Fixes
0cdf459643bfa6264bd2d1af8f7749529ebffee1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Tom Stellard [Tue, 5 Apr 2022 01:27:15 +0000 (01:27 +0000)]
Update valgrind.h to a newer version
This updates valgrind.h to the version that was packaged in
valgrind-devel-3.18.1-9.fc36. This new version contains a fix for a
build failure with clang.
Signed-off-by: Tom Stellard <tstellar@redhat.com>
Peter Hutterer [Mon, 28 Mar 2022 00:14:24 +0000 (10:14 +1000)]
doc/user: add a page to troubleshoot right-click Clickpads
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Mon, 28 Mar 2022 00:21:58 +0000 (10:21 +1000)]
meson: replace a meson.source_root() with the explicit directory
Removes the warning that source_root() has been deprecated since 0.56.0
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Mon, 28 Mar 2022 00:16:51 +0000 (10:16 +1000)]
meson: fix a meson warning
run_command() wants a check kwarg now:
WARNING: You should add the boolean check kwarg to the run_command call.
It currently defaults to false,
but it will default to true in future releases of meson.
See also: https://github.com/mesonbuild/meson/issues/9300
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
José Expósito [Mon, 28 Mar 2022 10:44:55 +0000 (12:44 +0200)]
test: disable hold gestures when are not required
Certain tests that make use of verify_left_handed_touch_motion can fail
depending on how quick they are executed, specially when using Valgrind.
Instead of ignoring the hold end event, use the existing mechanism to
disable hold gestures where we are not interested in them.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Mon, 7 Mar 2022 04:44:21 +0000 (14:44 +1000)]
util: auto-declare the element variable in ARRAY_FOR_EACH
All cases we have in our code base have an otherwise unused variable to
loop through the array. Let's auto-declare this as part of the loop.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
pudiva chip líquida [Tue, 8 Mar 2022 01:33:40 +0000 (01:33 +0000)]
touchpad: new option dwtp (disable-while-trackpointing)
Add option to control whether the touchpad should be disabled while the
trackpoint is in use.
Fix #731
Signed-off-by: pudiva chip líquida <pudiva@skylittlesystem.org>
José Expósito [Wed, 2 Mar 2022 07:48:03 +0000 (08:48 +0100)]
coding style: allow C99 variable declaration
Allow to declare variables before they are used in new written code.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Wed, 2 Mar 2022 07:35:23 +0000 (08:35 +0100)]
evdev: modernize variable declaration in evdev_device_is_joystick_or_gamepad
Declare the variables used to keep track of joystick buttons and
keyboard keys right before they are used for better readability and
consistency.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Tue, 1 Mar 2022 19:08:11 +0000 (20:08 +0100)]
evdev: check well-known keyboard keys on joystick/gamepad detection
Create a list of well-known keyboard keys containing one the most
representative key(s) of a group.
The rule is based on the assumption that if the representative key is
present, other keys of the group should be present as well.
The groups are:
- Modifiers group: KEY_LEFTCTRL.
- Character group: KEY_CAPSLOCK.
- Numeric group: KEY_NUMLOCK.
- Editing keys: KEY_INSERT.
- Multimedia keys: KEY_MUTE, KEY_CALC, KEY_FILE, KEY_MAIL,
KEY_PLAYPAUSE and KEY_BRIGHTNESSDOWN.
When 4 of these keys are found, the device is tagged as a keyboard.
Fix #745
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Thu, 24 Feb 2022 00:12:00 +0000 (10:12 +1000)]
gitlab CI: fail the sanity check stage if the fork is not public
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
José Expósito [Sat, 19 Feb 2022 12:32:09 +0000 (13:32 +0100)]
libinput 1.20.0
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Markus Wall [Tue, 15 Feb 2022 18:21:52 +0000 (19:21 +0100)]
quirks: add lenovo legion slim 7
This makes disable-when-typing for the touchpad work properly
on the Lenovo Legion Slim 7.
Signed-off-by: Markus Wall <markuswall@yahoo.se>
Markus Wall [Mon, 14 Feb 2022 13:01:47 +0000 (14:01 +0100)]
Add quirks for Lenovo Legion Y740
This makes disable-when-typing for the touchpad work properly
on the Lenovo Legion Y740.
Tested on Lenovo Legion Y740-15IRHg.
Signed-off-by: Markus Wall <markuswall@yahoo.se>
José Expósito [Mon, 14 Feb 2022 18:30:34 +0000 (19:30 +0100)]
doc/user: clarify fork visibility
Clarify that when forking libinput the public visibility level should be
selected. Otherwise, CI pipelines will fail on merge requests.
Also, update the fork URL.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Thu, 10 Feb 2022 23:29:18 +0000 (09:29 +1000)]
doc: correct the documentation for reporting trackpoint bugs
libinput measure trackpoint-range was removed in 1.12
Fixes #734
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Alberto Fanjul [Sat, 5 Feb 2022 08:08:35 +0000 (09:08 +0100)]
pad: load libwacom device by path, not by usbid
to avoid conflicts with vendors reusing vid:pid try to find first by path
Signed-off-by: Alberto Fanjul <albertofanjul@gmail.com>
José Expósito [Thu, 3 Feb 2022 06:56:40 +0000 (07:56 +0100)]
libinput 1.19.901
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Tiger Kaovilai [Thu, 3 Feb 2022 01:28:55 +0000 (01:28 +0000)]
Update 50-system-hp.quirks with 15-bl000 volume button quirks
https://bugzilla.redhat.com/show_bug.cgi?id=2048628
Signed-off-by: Passawit Kaovilai <passawit.kaovilai@gmail.com>
José Expósito [Mon, 24 Jan 2022 17:56:40 +0000 (18:56 +0100)]
doc: document disambiguation between two finger pinch and scroll
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Mon, 24 Jan 2022 17:55:20 +0000 (18:55 +0100)]
gestures: fix disambiguation between two finger pinch and scroll
The changes introduced in
b5b6f835af2e99b6a4e64fb0174ab551ed141763 to
add support for hold gestures introduced a regression:
The mechanism that was in place to improve the disambiguation between
two finger pinch and scroll during the beginning of the gesture stopped
working and instead a bug warning was printed on the log.
Fix the regression by allowing to go from the scroll state to the pinch
state.
Fix #726
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Tue, 25 Jan 2022 06:36:48 +0000 (16:36 +1000)]
gitlab CI: update to latest CI templates
This include ci-templates commit
0c312d9c7255f which hopefully fixes our
current headaches with the one non-signed-off commit that somehow
managed to find its way into the repo.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
spacefreak86 [Thu, 20 Jan 2022 04:44:07 +0000 (04:44 +0000)]
quirks: Add Asus ROG Strix G15 2021 keyboard quirk
José Expósito [Sat, 15 Jan 2022 12:45:48 +0000 (13:45 +0100)]
tools: remove hardcoded value for boolean quirks
When a boolean quirk was displayed its real value was ignored and
instead a hardcoded value of 1 was always used.
Get the quirk real value and display it.
Fix #725
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Wed, 29 Dec 2021 17:17:02 +0000 (18:17 +0100)]
wheel: allow to scroll while middle button is pressed
Since
cd4f2f32b57a ("fallback: disable mouse scroll wheel while middle
button is pressed") the mouse wheel is inhibited while the mouse wheel
is pressed.
The original intention of this feature was to avoid unintended scroll
while pressing the scroll wheel. However, now that high-resolution
scroll is fully integrated in libinput we can improve this feature and
filter unintended scroll (below half a detent) and allow it when it is
intended (over half a detent).
Remove the "WHEEL_STATE_PRESSED" state from the wheel state machine and
let the general heuristics handle this case.
Also, remove the specific tests for this feature as now it is covered
by the general test cases.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Wed, 29 Dec 2021 17:11:55 +0000 (18:11 +0100)]
quirks: Remove Lenovo Trackpoint Keyboard II quirk
The device sends its own scroll events when its trackpoint is moved
while the middle button is pressed.
Because scroll events are not going to be inhibited after a certain
amount of scroll is detected in a follow up commit, remove the quirk.
This reverts
53bd70f4c7e2 ("quirks: Lenovo Trackpoint Keyboard II")
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Wed, 22 Dec 2021 22:18:06 +0000 (08:18 +1000)]
meson.build: disable -Wunused when building the litest selftest
We use check directly to test the various litest bits, so if ifdef out
the litest main() and a few other bits. This results in compiler
warnings that aren't worth fixing - a lot of moving code around for no
real benefit.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Mon, 12 Jul 2021 11:09:15 +0000 (21:09 +1000)]
evdev: silence a clang compiler warning
Signed-off-by:Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Wed, 17 Nov 2021 06:24:00 +0000 (16:24 +1000)]
tablet: handle a BTN_TOOL_PEN on top of BTN_TOOL_RUBBER
The Wacom 524C device triggers a kernel bug in the InRange and Invert
handling. Every time BTN_TOUCH is set/unset the device also sets/unsets
BTN_TOOL_PEN even when we nominally have the eraser in proximity.
The event sequence effectively looks like this:
# on prox in
BTN_TOOL_RUBBER 1
-- SYN_REPORT ---
# on tip down
BTN_TOOL_PEN 1
BTN_TOUCH 1
-- SYN_REPORT ---
# on tip up
BTN_TOUCH 0
BTN_TOOL_PEN 0
-- SYN_REPORT ---
# on prox out
BTN_TOOL_RUBBER 1
-- SYN_REPORT ---
To work around this, bias our duplicate tool detection code towards the
eraser - if we have an eraser in-prox already and the pen goes
in-prox, ignore it and continue with the eraser. But if we have a pen
in-prox and the eraser goes in-prox as well, force a prox-out for the
pen and put the eraser in-prox.
Recording originally from
https://github.com/linuxwacom/xf86-input-wacom/issues/186
Fixes #702
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Wed, 17 Nov 2021 04:29:35 +0000 (14:29 +1000)]
test: add a test device for the Wacom 524C device
This device triggers a kernel bug in the InRange and Invert handling,
every time BTN_TOUCH is set the device also sets BTN_TOOL_PEN even when
we currently have the eraser in proximity.
Recording from https://github.com/linuxwacom/xf86-input-wacom/issues/186
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Wed, 8 Dec 2021 06:26:16 +0000 (16:26 +1000)]
test: allow for a hold end event when verifying touch motion
Depending on how quick the test suite runs we may get a hold end event
here. Let's silently ignore that one since we aren't interested in it.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
José Expósito [Wed, 8 Dec 2021 16:32:03 +0000 (17:32 +0100)]
gestures: do not use thumb for pinch when is used to press the clickpad
The changes made in
ca3df8a076d54a93b3c2fb8a5eea4326d487050c to improve
pinch detection introduced a regression:
When the thumb is used to press the clickpad it is automatically tagged
as thumb and the gesture state machine does not initialize it, leaving
its initial X and Y position set to 0.
When another finger is put on the clickpad, the distance moved by the
thumb is checked and because its initial position is 0 movement is
detected.
Add an additional check to take into account only thumbs that are used
in the gesture.
Fix #708
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Tue, 7 Dec 2021 05:39:10 +0000 (15:39 +1000)]
doc/user: write an article explaining the different contexts
This is a common question I need to answer, let's make this a link I can
copy/paste instead.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Tue, 7 Dec 2021 01:18:07 +0000 (11:18 +1000)]
timer: only warn about timer expiry issues when we're more than 20ms behind
The most common trigger for this is the debouncing timer which is a mere
12ms and is effectively unavoidable, virtually every caller will
trigger those messages at some point.
Let's add a grace period of 20ms below which we don't log this message
to avoid logspam. And in the process, bump the equivalent warning
message up to 20ms as well.
Related #711
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Tue, 7 Dec 2021 01:11:32 +0000 (11:11 +1000)]
timer: rate-limit the "timer expiry in the past" error messages
We already ratelimit the normal notification about event processing
lagging behind but in the case of timers actually expiring late, we'd
pass those messages on. So lots of clicks on a slow-reponse system
resulted in lots of messages triggered by the debounce timers.
Use the same ratelimiting as the event processing warning, 5 messages
per hour which should be a good balance between warning and not spamming
the log.
Fixes #711
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
José Expósito [Tue, 23 Nov 2021 17:07:53 +0000 (18:07 +0100)]
evdev: improve joystick and gamepad detection
The EVDEV_UDEV_TAG_JOYSTICK is set when a joystick or gamepad button
is found. However, it can not be used to identify joysticks or
gamepads because there are keyboards that also have it. Even worse,
many joysticks also map KEY_* and thus are tagged as keyboards.
In order to be able to detect joysticks and gamepads and
differentiate them from keyboards, apply the following rules:
1. The device is tagged as joystick but not as tablet
2. It has at least 2 joystick buttons
3. It doesn't have 10 keyboard keys
Fix #701
Fix #415
Fix #703
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Tue, 23 Nov 2021 17:07:27 +0000 (18:07 +0100)]
evdev: refactor joystick/gamepad detection
Move the logic to detect joysticks and gamepads to its own function.
Refactor, no functional changes.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Thu, 2 Dec 2021 11:52:56 +0000 (12:52 +0100)]
touchpad: revert the clickpad detection mechanism
Use the previous heuristics to detect clickpads where a touchpad was
handled as a clickpad when:
- The property INPUT_PROP_BUTTONPAD is set
- The property INPUT_PROP_BUTTONPAD is NOT set but the touchpad only
has BTN_LEFT
Revert
a37d6dcc9c2ec7ebd0d3609e01da1cfcec28db6e:
"touchpad: if we have a right button, let's assume it's not a clickpad"
MR: https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/614
BUG: https://gitlab.freedesktop.org/libinput/libinput/-/issues/595
Fix #704
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Joaquin Gonzalez [Tue, 16 Nov 2021 05:40:07 +0000 (02:40 -0300)]
quirks: changes touchpad pressure Lenovo Yoga 2 Pro
Adds touchpad pressure configuration for Lenovo Yoga 2 Pro in order to avoid random cursor jumps on finger up.
Signed-off-by: Joaquin Gonzalez <joaquin.gonzalez.uy@gmail.com>
José Expósito [Sun, 28 Nov 2021 12:49:14 +0000 (13:49 +0100)]
doc/user: fix broken link to "Observations on trackpoint input data"
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Wed, 17 Nov 2021 05:55:22 +0000 (15:55 +1000)]
test: add a tablet test for eraser tip down
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Wed, 17 Nov 2021 22:21:42 +0000 (08:21 +1000)]
test: add missing tool event in the aiptek tablet test device
Needed for eraser tests
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Wed, 17 Nov 2021 04:46:07 +0000 (14:46 +1000)]
test: add tip down/up helper functions
Add two helper functions that set/unset BTN_TOUCH together with the
specified axes and switch all tests over.
Devices can override the tip down/up sequence.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Alexander Radovich [Tue, 16 Nov 2021 06:38:06 +0000 (07:38 +0100)]
quirks: add ModelBouncingKeys for A4Tech X-710BK Mouse
Signed-off-by: Alexander Radovich <rexuru17@gmail.com>
Peter Hutterer [Thu, 18 Nov 2021 00:10:49 +0000 (10:10 +1000)]
Use bit(foo) instead of (1 << foo)
Translates to the same thing, but the bit() helper is nicer and less
likely to be typoed.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Wed, 17 Nov 2021 05:48:14 +0000 (15:48 +1000)]
quirks: add a quirk for the Wacom 524c device
Has tilt, doesn't use it
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Wed, 17 Nov 2021 05:46:00 +0000 (15:46 +1000)]
quirks: make a wacom quirk more descriptive
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Mon, 15 Nov 2021 01:14:10 +0000 (11:14 +1000)]
doc/user: add an example udev rule for LIBINPUT_IGNORE_DEVICE
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Mon, 15 Nov 2021 01:20:39 +0000 (11:20 +1000)]
doc/user: expand the udev rules for better readability
Split it over multiple lines and use fake cat command to show where that
rule could live.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Peter Hutterer [Mon, 8 Nov 2021 04:12:22 +0000 (14:12 +1000)]
quirks: add a more generic match for the 5288 Synaptics clickpad
This is a clickpad announcing BTN_RIGHT in different machines, see
issue #674, #689, #629 and MR !701. There are at least 4 machines that
ship with this device that we had to quirk independently, possibly
others so disabling BTN_RIGHT on all of them makes sense.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Gary Wolfe [Fri, 22 Jan 2021 22:10:01 +0000 (17:10 -0500)]
quirks: Dell 15R touchpad settings for firmware v3
Trackpad sensitivity adjustment only needed for v3 for Dell Inspiron 15R N5110.
Fixes #565 and #676.
Signed-off-by: Gary Wolfe <avidgamefan@yahoo.com>
José Expósito [Mon, 8 Nov 2021 17:05:16 +0000 (18:05 +0100)]
gestures: rename event handlers
Follow the name convention used in evdev-wheel.c and rename the handle
event functions from "tp_gesture_[STATE]_handle_event" to
"tp_gesture_handle_event_on_state_[STATE]".
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Thu, 30 Sep 2021 15:50:26 +0000 (17:50 +0200)]
wheel: accumulate scroll when direction changes
Most mice with high-resolution support have a mechanism in place to
adjust the wheel to a detent. When scrolling, it is possible to stop
between two detents and this mechanism could generate a small amount of
scroll in the oposite direction.
Track the scroll direction in the wheel state machine and reset it when
the direction changes to avoid this issue.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Wed, 29 Sep 2021 16:32:54 +0000 (18:32 +0200)]
wheel: ignore initial small scroll deltas
Mice with high-resolution support can generate deltas when the finger is
put on the wheel or when the user tries to click the wheel.
To avoid sending involuntary scroll events, add an extra state the the
wheel state machine to accumulate scroll deltas.
While the accumulated scroll is lower than a certain threshold, ignore
them until the threshold is reached.
Since no finish event is sent by the mouse, reset the state machine
after a period of scroll inactivity.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Mon, 27 Sep 2021 07:02:57 +0000 (09:02 +0200)]
wheel: handle with a state machine
In order to be able to add more complex rules in the future, transform
the current wheel handling code into a state machine.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Sun, 26 Sep 2021 16:39:32 +0000 (18:39 +0200)]
wheel: refactor wheel scroll flushing
Move the logic to flush wheel scroll to it's own funtion.
Refactor, no functional changes.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Sun, 26 Sep 2021 16:15:51 +0000 (18:15 +0200)]
wheel: centralize wheel handling
Move the logic to handle wheels to its own file.
Refactor, no functional changes.
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Tue, 2 Nov 2021 18:37:07 +0000 (19:37 +0100)]
gestures: cancel hold gestures on thumb detection
Before hold gestures where implemented, when a thumb was detected it
was enough to reset the state machine.
However, now it is possible to detect a thumb while a hold gesture is
in course.
Cancel any ongoing gesture when a thumb is detected to avoid dropping
the gesture end event.
See #693
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Sat, 30 Oct 2021 10:10:10 +0000 (12:10 +0200)]
doc/user: fix broken link to systemd 60-evdev.hwdb
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Thu, 21 Oct 2021 04:19:49 +0000 (14:19 +1000)]
libinput 1.19.2
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
A-w-x [Wed, 20 Oct 2021 13:36:56 +0000 (13:36 +0000)]
quirks: add quirk for GPD Win Max
clickpad that announces BTN_RIGHT
Signed-off-by: A-w-x <awxkrnl@gmail.com>
Peter Hutterer [Tue, 19 Oct 2021 03:01:23 +0000 (13:01 +1000)]
test: use a plain libinput context for the log priority check
Don't use the litest wrapper context here, it changes log priority if
the test suite is run with --verbose, causing the test to fail.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Travis Wrightsman [Mon, 11 Oct 2021 23:14:56 +0000 (19:14 -0400)]
quirks: relax DMI modalias match for Purism Librem 14v1
Both "svnPurism:pnLibrem14:" and "svnPurism:pnlibrem_14:" are possible
Signed-off-by: Travis Wrightsman <travis@wrightsman.org>
Eduardo de Souza Cruz [Mon, 11 Oct 2021 20:29:12 +0000 (17:29 -0300)]
evdev: avoid usage of bogus BTN_FORWARD name
Signed-off-by: Eduardo Cruz <eduardo.cruz@kdemail.net>
Sean Rhodes [Fri, 8 Oct 2021 12:08:23 +0000 (13:08 +0100)]
quirks: Update dmi for StarBook Mk V
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Eduardo de Souza Cruz [Sun, 10 Oct 2021 23:32:36 +0000 (23:32 +0000)]
evdev: disable button scroll timeout for extra mouse buttons
Signed-off-by: Eduardo Cruz <eduardo.cruz@kdemail.net>
José Expósito [Thu, 7 Oct 2021 06:34:43 +0000 (08:34 +0200)]
gestures: avoid processing the last hold and motion event twice
During the transition from GESTURE_STATE_HOLD_AND_MOTION to
GESTURE_STATE_POINTER_MOTION the last pointer motion event was
processed twice.
Fix #680
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Sean Rhodes [Mon, 4 Oct 2021 09:19:52 +0000 (10:19 +0100)]
quirks: Add quirk for StarLabs clickpads with two phyisical buttons
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Peter Hutterer [Mon, 27 Sep 2021 22:16:24 +0000 (08:16 +1000)]
libinput 1.19.1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
José Expósito [Fri, 24 Sep 2021 16:08:01 +0000 (18:08 +0200)]
fallback: hires scroll heuristics for buggy devices
Some devices might announce support for high-resolution scroll wheel
by enabling REL_WHEEL_HI_RES and/or REL_HWHEEL_HI_RES but never send
a high-resolution scroll event.
When the first low-resolution scroll event is received without any
previous high-resolution event, print a kernel bug warning and start
emulating high-resolution scroll events.
Fix #668
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
José Expósito [Fri, 24 Sep 2021 15:50:53 +0000 (17:50 +0200)]
test: add kernel bugs to log handler
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Peter Hutterer [Mon, 27 Sep 2021 22:12:59 +0000 (08:12 +1000)]
quirks: update the Dell N5110 touchpad quirk
Later versions of this same model seem to have a different ALPS touchpad
and don't need the pressure settings. Narrow down this match so we only
apply to the one from the actual bug report in #565.
Fixes #676
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>