platform/upstream/libinput.git
5 years agogitlab-ci: use qemu to run the full test suite
Benjamin Tissoires [Tue, 6 Aug 2019 10:40:44 +0000 (12:40 +0200)]
gitlab-ci: use qemu to run the full test suite

We currently allow the stage to fail, but at least,
we can make use of it.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
5 years agoAdded quirk for Lenovo ThinkPad X200 Tablet.
yy [Fri, 4 Oct 2019 17:07:34 +0000 (19:07 +0200)]
Added quirk for Lenovo ThinkPad X200 Tablet.

5 years agoFixed horizontal scrolling on Logitech MX Master 2S/3
Jakub Schmidtke [Mon, 30 Sep 2019 23:34:45 +0000 (23:34 +0000)]
Fixed horizontal scrolling on Logitech MX Master 2S/3

Logitech MX Master 2S and 3 by default use natural scrolling
for the horizontal scroll wheel, while the main wheel
uses traditional mode. This change inverts the default
direction of horizontal scrolling.

5 years agotest: fix a coverity warning about an unused value
Peter Hutterer [Mon, 30 Sep 2019 01:17:17 +0000 (11:17 +1000)]
test: fix a coverity warning about an unused value

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotablet: Improve forced prox out behavior.
John Chadwick [Sun, 29 Sep 2019 23:35:09 +0000 (23:35 +0000)]
tablet: Improve forced prox out behavior.

Some graphics tablets (most or all Wacom, for example) do not emit
proximity out events when the tablet pen goes out of range. To
compensate for this, libinput synthesizes proximity out events when no
events are received for a certain period of time. Unfortunately, on some
tablets, this is fairly failure prone when moving the pen slowly. As a
workaround, this patch causes libinput to avoid synthesizing proximity
out events when the pen is still in contact with the tablet pad, as
defined by the TABLET_TOOL_IN_CONTACT status.

5 years agomiddle-button: add space to middlebutton state debug message
Peter Hutterer [Fri, 27 Sep 2019 00:23:44 +0000 (10:23 +1000)]
middle-button: add space to middlebutton state debug message

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>`
5 years agotest: Make udev_properties array fixed-size.
John Chadwick [Fri, 27 Sep 2019 03:06:11 +0000 (20:06 -0700)]
test: Make udev_properties array fixed-size.

The udev_properties array is currently variable length, which causes the
tests to invoke undefined behavior on empty lists, as it attempts to
access the first array item to check if the key is NULL, which is an out
of bounds read and will fail when the struct alignment happens to line
up such that there is no padding after the list in the empty list case.

By making the udev_properties array 32 items long, it can encapsulate
every existing case, with only a fairly small amount of memory overhead,
and without requiring every single `TEST_DEVICE` call to initialize
`udev_properties`.

5 years agotest: don't use debounced clicks for the middle button emulation click
Peter Hutterer [Wed, 25 Sep 2019 06:49:08 +0000 (16:49 +1000)]
test: don't use debounced clicks for the middle button emulation click

This used to work under valgrind up to F30 but with the F31 beta something is
now a tad slower so it triggers the timeouts before the middle emulation kicks
in.

The middlebutton timeout is 50ms and the first debounce timeout is 30ms, so if
we're late by 20ms, well, there goes the timeout.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: drop markdown source parsers
Peter Hutterer [Wed, 25 Sep 2019 05:49:58 +0000 (15:49 +1000)]
doc/user: drop markdown source parsers

This is deprecated in sphinx 1.8 but we don't include any markdown sources
anyway, so let's just drop it.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: update copyright for the sphinx docs
Peter Hutterer [Wed, 25 Sep 2019 05:49:36 +0000 (15:49 +1000)]
doc/user: update copyright for the sphinx docs

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: update reference to the event codes header
Peter Hutterer [Wed, 25 Sep 2019 05:07:02 +0000 (15:07 +1000)]
doc: update reference to the event codes header

The codes have been in input-event-codes.h for quite a few releases now.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agogestures: where we have more fingers than slots, default to swipe
Peter Hutterer [Thu, 19 Sep 2019 03:56:32 +0000 (13:56 +1000)]
gestures: where we have more fingers than slots, default to swipe

Fixes #360

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agogestures: rename the inner/outer thresholds to min/max_move
Peter Hutterer [Thu, 19 Sep 2019 03:19:09 +0000 (13:19 +1000)]
gestures: rename the inner/outer thresholds to min/max_move

inner/outer refer more to static thresholds when really what we have here is a
minimum movement before we look at the touch, and a maximum one after which
it's largely ignored.

Straight-up rename, no functional changes.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: only identify for pinch in a distinct pinch position
Peter Hutterer [Thu, 19 Sep 2019 02:51:10 +0000 (12:51 +1000)]
touchpad: only identify for pinch in a distinct pinch position

Previously, any lower finger spaced more than the vertical threshold apart
would be labelled as thumb. This causes some taps to be detected as
single-taps, particularly where the user's hand is at an angle that causes the
touches to be effectively vertical.

Restructure that condition so that we only go for a thumb if we're
distinctively apart, and we only *not* go for thumb if we're distinctively
close together.

Fixes #359

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: drop useless asserts()
Peter Hutterer [Thu, 19 Sep 2019 01:39:24 +0000 (11:39 +1000)]
touchpad: drop useless asserts()

Just above that line is an early return if either is NULL, so...

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoTouchpad fix and trackpoint speed adjustment for Lenovo T490s
Serhii Chaplia [Wed, 25 Sep 2019 00:46:23 +0000 (00:46 +0000)]
Touchpad fix and trackpoint speed adjustment for Lenovo T490s

Same issue as #177

5 years agolibinput-tool.c: remove unused includes
Konstantin Kharlamov [Wed, 11 Sep 2019 20:57:26 +0000 (23:57 +0300)]
libinput-tool.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agolibinput-measure.c: remove unused includes
Konstantin Kharlamov [Wed, 11 Sep 2019 20:54:27 +0000 (23:54 +0300)]
libinput-measure.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoquirks.c: remove unused include
Konstantin Kharlamov [Sun, 8 Sep 2019 21:55:15 +0000 (00:55 +0300)]
quirks.c: remove unused include

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agolibinput-fuzz-to-zero.c: remove unused includes
Konstantin Kharlamov [Wed, 11 Sep 2019 20:29:52 +0000 (23:29 +0300)]
libinput-fuzz-to-zero.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agolibinput-fuzz-extract.c: remove unused includes
Konstantin Kharlamov [Wed, 11 Sep 2019 20:16:39 +0000 (23:16 +0300)]
libinput-fuzz-extract.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agolibinput-debug-events.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 22:31:49 +0000 (01:31 +0300)]
libinput-debug-events.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoudev-seat.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 22:27:38 +0000 (01:27 +0300)]
udev-seat.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agopath-seat.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 22:26:32 +0000 (01:26 +0300)]
path-seat.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoevdev-mt-touchpad-buttons.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 22:23:45 +0000 (01:23 +0300)]
evdev-mt-touchpad-buttons.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agofilter.h/c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 21:28:35 +0000 (00:28 +0300)]
filter.h/c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agolibinput-fuzz-override.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 21:08:00 +0000 (00:08 +0300)]
libinput-fuzz-override.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agomeson.build: bump to 1.14.900
Peter Hutterer [Thu, 12 Sep 2019 01:10:34 +0000 (11:10 +1000)]
meson.build: bump to 1.14.900

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotimer.c: remove unused include <inttypes.h>
Konstantin Kharlamov [Wed, 11 Sep 2019 20:51:49 +0000 (23:51 +0300)]
timer.c: remove unused include <inttypes.h>

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoevdev-tablet-pad-leds.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 22:26:09 +0000 (01:26 +0300)]
evdev-tablet-pad-leds.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoevdev-tablet.c: remove unused include
Konstantin Kharlamov [Sun, 8 Sep 2019 22:25:46 +0000 (01:25 +0300)]
evdev-tablet.c: remove unused include

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoevdev-mt-touchpad-gestures.c: remove unused include
Konstantin Kharlamov [Sun, 8 Sep 2019 22:25:11 +0000 (01:25 +0300)]
evdev-mt-touchpad-gestures.c: remove unused include

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoevdev-mt-touchpad-edge-scroll.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 22:24:32 +0000 (01:24 +0300)]
evdev-mt-touchpad-edge-scroll.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoevdev-mt-touchpad-tap.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 22:22:49 +0000 (01:22 +0300)]
evdev-mt-touchpad-tap.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoevdev-mt-touchpad.h: remove unused include
Konstantin Kharlamov [Sun, 8 Sep 2019 22:19:20 +0000 (01:19 +0300)]
evdev-mt-touchpad.h: remove unused include

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoevdev.c: remove unused include
Konstantin Kharlamov [Sun, 8 Sep 2019 22:17:36 +0000 (01:17 +0300)]
evdev.c: remove unused include

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agofilter-trackpoint.c: remove unused include
Konstantin Kharlamov [Sun, 8 Sep 2019 21:54:22 +0000 (00:54 +0300)]
filter-trackpoint.c: remove unused include

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agofilter-touchpad-x230.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 21:46:04 +0000 (00:46 +0300)]
filter-touchpad-x230.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agofilter-touchpad.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 21:43:27 +0000 (00:43 +0300)]
filter-touchpad.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agofilter-mouse.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 21:32:19 +0000 (00:32 +0300)]
filter-mouse.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agofilter-low-dpi.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 21:31:31 +0000 (00:31 +0300)]
filter-low-dpi.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agofilter-flat.c: remove unused includes
Konstantin Kharlamov [Sun, 8 Sep 2019 21:30:52 +0000 (00:30 +0300)]
filter-flat.c: remove unused includes

Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
5 years agoudev: parse the EVDEV_ABS properties for a potential fuzz setting
Peter Hutterer [Wed, 4 Sep 2019 05:09:13 +0000 (15:09 +1000)]
udev: parse the EVDEV_ABS properties for a potential fuzz setting

Where a fuzz is defined in the 60-evdev.hwdb, we rely on a udev builtin to
set the kernel device to that fuzz value. Unfortunately that happens after our
program is called with this order of events:
1. 60-evdev.rules calls IMPORT(builtin) for the hwdb which sets the EVDEV_ABS_*
  properties. It also sets RUN{builtin}=keyboard but that's not invoked yet.
2. 90-libinput-fuzz-override.rules calls IMPORT{program} for our fuzz override
  bits. That sets the kernel fuzz value to 0 and sets the LIBINPUT_FUZZ_*
  propertie
3. The keyboard builtin is run once all the rules have been processed.

Our problem is that where the fuzz is set in a hwdb entry, the kernel fuzz is
still unset when we get to look at it, so we always end up with a fuzz of zero
for us and a nonzero kernel fuzz.

Work around this by checking the EVDEV_ABS property, extracting the fuzz from
there and re-printing that property without the fuzz. This way we ensure the
kernel remains at zero fuzz and we use the one from the hwdb instead.

Fixes #346

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoRemove some usage of libinput-util.h
Peter Hutterer [Fri, 6 Sep 2019 01:42:09 +0000 (11:42 +1000)]
Remove some usage of libinput-util.h

Positive side-effect - this exposed a bunch of missing #includes that got
pulled in by other headers before.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoSplit utility functions into separate source files
Peter Hutterer [Wed, 4 Sep 2019 05:11:45 +0000 (15:11 +1000)]
Split utility functions into separate source files

libinput-util.h is getting a bit of a catchall bucket and it includes things
like libinput-private.h which in turn includes libwacom. This makes
libinput-util.h less useful for bits that only need e.g. the string processing
utilities.

So let's split them all up in to separate files, to be used as-needed.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: do run the util tests under valgrind
Peter Hutterer [Fri, 6 Sep 2019 00:31:49 +0000 (10:31 +1000)]
test: do run the util tests under valgrind

These tests include string parsers, definitely want those to run under
valgrind to detect OOB reads and writes.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: flake8 fixes for the various python files
Peter Hutterer [Wed, 11 Sep 2019 00:00:33 +0000 (10:00 +1000)]
tools: flake8 fixes for the various python files

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: change python invocations to use /usr/bin/env python3
Peter Hutterer [Tue, 10 Sep 2019 23:22:31 +0000 (09:22 +1000)]
tools: change python invocations to use /usr/bin/env python3

Let's be consistent here

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: install local quirks during libinput replay
Peter Hutterer [Wed, 4 Sep 2019 03:51:07 +0000 (13:51 +1000)]
tools: install local quirks during libinput replay

The quirks for each device are listed in the recording but they may not apply
during libinput replay (e.g. for DMI matches). Work around this by writing out
the local-overrides.quirks file before initializing the devices. This way
we're guaranteed that the device is identical as on the reporter's machine.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: make an infinite loop more obvious in the code
Peter Hutterer [Wed, 4 Sep 2019 03:50:37 +0000 (13:50 +1000)]
tools: make an infinite loop more obvious in the code

Nothing sets "stop", so we might as well make it a while True

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: factor out a sanity check in libinput-replay
Peter Hutterer [Wed, 4 Sep 2019 03:33:25 +0000 (13:33 +1000)]
tools: factor out a sanity check in libinput-replay

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoAdded magic trackpoint multiplier for Thinkpad 13 G2
Richard McIntosh [Sun, 8 Sep 2019 13:21:11 +0000 (15:21 +0200)]
Added magic trackpoint multiplier for Thinkpad 13 G2

5 years agoMark HP Elite x2 1013 G3 keyboard as external
RussianNeuroMancer [Tue, 3 Sep 2019 08:02:28 +0000 (08:02 +0000)]
Mark HP Elite x2 1013 G3 keyboard as external
Keyboard+touchpad is external:
http://h10032.www1.hp.com/ctg/Manual/c06077534 (page 12)

5 years agoTablet Mode Switch on HP Elite x2 1013 G3 is unreliable:
RussianNeuroMancer [Fri, 30 Aug 2019 15:09:01 +0000 (15:09 +0000)]
Tablet Mode Switch on HP Elite x2 1013 G3 is unreliable:
https://bugzilla.kernel.org/show_bug.cgi?id=204719
https://bugzilla.kernel.org/show_bug.cgi?id=204739

Keyboard+touchpad is external:
http://h10032.www1.hp.com/ctg/Manual/c06077534 (page 12)

5 years agolibinput 1.14.1 1.14.1
Peter Hutterer [Mon, 26 Aug 2019 01:38:05 +0000 (11:38 +1000)]
libinput 1.14.1

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: don't allow gestures with a clickpad button down by a finger
Matt Mayfield [Wed, 14 Aug 2019 13:29:07 +0000 (08:29 -0500)]
touchpad: don't allow gestures with a clickpad button down by a finger

Allowing gestures when holding a physical click enables tasks like
switching workspaces while dragging an icon, but this should only be
possible with a *thumb* holding down the clickpad, not fingers. This
commit restores the ability to hold down the clickpad with two or three
fingers to right- or middle-drag.

Fixes #339, #340

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: fix typo in debug-events
Ronan Pigott [Tue, 13 Aug 2019 21:47:53 +0000 (14:47 -0700)]
tools: fix typo in debug-events

5 years agocompletion: add libinput(1) zsh completions
Ronan Pigott [Sat, 10 Aug 2019 20:51:19 +0000 (13:51 -0700)]
completion: add libinput(1) zsh completions

5 years agoFix double click button.
Kevin Kaland [Sun, 11 Aug 2019 20:02:18 +0000 (20:02 +0000)]
Fix double click button.

This fixes the double click button on the RollerMouse v3 (USB ID 0b33:1004).

5 years agolibinput 1.14.0 1.14.0
Peter Hutterer [Thu, 8 Aug 2019 04:58:55 +0000 (14:58 +1000)]
libinput 1.14.0

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotablet: scale the available pressure range into the pressure thresholds
Peter Hutterer [Tue, 6 Aug 2019 04:04:16 +0000 (14:04 +1000)]
tablet: scale the available pressure range into the pressure thresholds

Pens that don't have a pressure offset (caused by a worn-out tip) still have
basic pressure thresholds to avoid tip events when we're still a bit away from
the tablet or barely touching it. That range is currently 5% of the pressure
for tip down, 1% for tip up.

This leaves us with 95% of the range and that needs to be scaled correctly,
otherwise the bottom 5% happen before a tip event and are inaccessible where
applications don't look at pressure before tip down.

Fixes #332

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: don't test at the 100 y range
Peter Hutterer [Tue, 6 Aug 2019 04:22:27 +0000 (14:22 +1000)]
test: don't test at the 100 y range

Theoretically this shouldn't matter, but testing at the far end of the range
is bound to trigger some little issues eventually that should be triggered
explicitly, not by accident.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotablet: reduce the pressure range by the offset
Peter Hutterer [Tue, 6 Aug 2019 03:15:48 +0000 (13:15 +1000)]
tablet: reduce the pressure range by the offset

Previously, the pressure range was calculated from the axis total range. A
device with a pressure offset making the bottom 10% inaccessible would lose
10% of that range as non-accessible. Due to the implementation, this affected
the upper range of the device, so the top N percent became unaccessible. Which
may be why no-one's noticed this yet.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotablet: make the pressure-offset inclusive of the axis minimum
Peter Hutterer [Tue, 6 Aug 2019 02:57:51 +0000 (12:57 +1000)]
tablet: make the pressure-offset inclusive of the axis minimum

The offset handling was inconsistent, stored as relative to the axis minimum
but used as absolute in some places. Fix this by always using the absolute
value including the minimum (i.e. no pressure offset means offset == minimum).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: fix the pressure offset tests
Peter Hutterer [Tue, 6 Aug 2019 03:30:14 +0000 (13:30 +1000)]
test: fix the pressure offset tests

Unsuprisingly, a normalized [0,1] value will always be between 0 and 1, so
bhis gave us a false positive. Check for the real values instead.

Those values aren't 100% correct because of a bug in the offset handling which
will be fixed in a follow-up commit. The difference is near enough that it
doesn't matter here anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoAdd the ck_double_eq_tol() macros to the backwards compat headers
Peter Hutterer [Thu, 8 Aug 2019 03:57:55 +0000 (13:57 +1000)]
Add the ck_double_eq_tol() macros to the backwards compat headers

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotablet: add a comment explaining why we adjust the pressure offset downwards
Peter Hutterer [Tue, 6 Aug 2019 03:09:40 +0000 (13:09 +1000)]
tablet: add a comment explaining why we adjust the pressure offset downwards

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotablet: point the pressure offset log messages to the right URL
Peter Hutterer [Tue, 6 Aug 2019 03:24:11 +0000 (13:24 +1000)]
tablet: point the pressure offset log messages to the right URL

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotests: increase the timeout for the subprocess to receive the quit signal
Benjamin Tissoires [Wed, 7 Aug 2019 10:11:30 +0000 (12:11 +0200)]
tests: increase the timeout for the subprocess to receive the quit signal

On a very loaded machine, the process might not receive the quit signal
in a timely manner, and this introduce false positive results.

Add a longer timeout. This shouldn't interfere with the global time
spent in the tests, but will allow some loaded environment to pass
the tests.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
5 years agogitlab-ci: force using docker format for the generated images
Benjamin Tissoires [Wed, 7 Aug 2019 09:57:01 +0000 (11:57 +0200)]
gitlab-ci: force using docker format for the generated images

See https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/178#note_203050

Some shared runners are not capable of understanding OCI format for
container images, and they are failing.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
5 years agogitlab-ci: allow to run on unprivileged containers
Benjamin Tissoires [Tue, 6 Aug 2019 11:32:16 +0000 (13:32 +0200)]
gitlab-ci: allow to run on unprivileged containers

This parameter is already included by default in ci-templates, but
we also need it in freebsd

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
5 years agogitlab CI: fetch the WAYLAND_WEB_TOKEN from a file
Peter Hutterer [Wed, 7 Aug 2019 03:42:36 +0000 (13:42 +1000)]
gitlab CI: fetch the WAYLAND_WEB_TOKEN from a file

This way it can't leak into the meson testlog.txt during the other stages.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agogitlab CI: replace the user:password with a netrc file
Peter Hutterer [Wed, 7 Aug 2019 01:55:21 +0000 (11:55 +1000)]
gitlab CI: replace the user:password with a netrc file

Gitlab supports masked tokens that get sanitized during log output but these
tokens are still in the environment. meson dumps the environment into
testlog.txt, resulting in our tokens leaking.

Avoid that leak by using a netrc file instead. The token value now refers to
the file name which is safe enough to leak into the test logs.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoevdev: always store user calibration matrix
Brian Ashworth [Sun, 4 Aug 2019 15:48:28 +0000 (11:48 -0400)]
evdev: always store user calibration matrix

In evdev_device_calibrate, the user matrix was not being stored when it
was the identity matrix. This resulted in
libinput_device_config_calibration_get_matrix not providing the correct
matrix. Instead of giving the identity matrix, the last non-identity
matrix set was given.

This just moves the storage of the user matrix in
evdev_device_calibrate to be above the identity matrix early return so
that it always get stored.

Signed-off-by: Brian Ashworth <bosrsf04@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agomeson.build: drop explicit install:true from configure_file
Peter Hutterer [Fri, 2 Aug 2019 12:45:16 +0000 (22:45 +1000)]
meson.build: drop explicit install:true from configure_file

meson implicitly sets install to whether install_dir is nonzero. Which means
it's superfluous anyway and removing it drops the meson warning:

WARNING: Project specifies a minimum meson_version '>= 0.41.0' but uses
features which were added in newer versions:
 * 0.50.0: {'install arg in configure_file'}

Fixes #334

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: record: fix two memory leaks
Peter Hutterer [Wed, 31 Jul 2019 22:31:07 +0000 (08:31 +1000)]
tools: record: fix two memory leaks

Found by coverity.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: record: fix segfault on exit
Peter Hutterer [Wed, 31 Jul 2019 22:28:13 +0000 (08:28 +1000)]
tools: record: fix segfault on exit

If we don't supply --with-libinput, the device is NULL so we can't unref it.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agolibinput 1.13.902 1.13.902
Peter Hutterer [Tue, 30 Jul 2019 09:45:05 +0000 (19:45 +1000)]
libinput 1.13.902

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: mix tablet events into touch arbitration tests
Peter Hutterer [Wed, 31 Jul 2019 00:20:50 +0000 (10:20 +1000)]
test: mix tablet events into touch arbitration tests

We keep running into the proximity timeout for these tests, especially under
valgrind. To avoid this, manually intersperse the touch events with tablet
events.

Note that this manual loop would just work even without tablet events
because we no longer have a 10ms delay between touch events as enforced by
litest_touch_move_to. But let's do the right thing anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoudev: Reproduce entire LIBINPUT_DEVICE_GROUP for paired ExpressKey Remote
Jason Gerecke [Fri, 26 Jul 2019 14:24:26 +0000 (07:24 -0700)]
udev: Reproduce entire LIBINPUT_DEVICE_GROUP for paired ExpressKey Remote

In order for two devices to be in the same group, they need to share
identical LIBINPUT_DEVICE_GROUP attributes. The `wacom_handle_ekr` function
overwrites the VID/PID for an ExpressKey Remote, but the 'phys' path is
left unchanged. This only works if the EKR and the device we want to pair
it with are both direct sibings in the USB tree. It isn't always possible
to actually connect the devices like this, however. The Cintiq Pro 32 and
24, for instance, have multiple internal USB hubs and place the pen sensor
and the USB port for the EKR dongle behind different ones.

By copying the 'phys' path of the device we want to pair with, it is
possible to reproduce the entire LIBINPUT_DEVICE_GROUP and ensure that
the two devices actually end up paired in libinput.

Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
5 years agoIntroduce Dell Latitude 5580 trackpoint multiplier
Jacob Moroni [Sun, 28 Jul 2019 00:26:16 +0000 (20:26 -0400)]
Introduce Dell Latitude 5580 trackpoint multiplier

It is required, otherwise the trackpoint is too sensitive.

Tested with a Dell Latitude 5580.

Signed-off-by: Jacob Moroni <mail@jakemoroni.com>
5 years agotools: record: when running from the builddir, load the quirks correctly
Peter Hutterer [Wed, 24 Jul 2019 03:33:11 +0000 (13:33 +1000)]
tools: record: when running from the builddir, load the quirks correctly

Fixes #324

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: handle arguments correctly for the YAML verifier tool
Peter Hutterer [Wed, 24 Jul 2019 03:32:58 +0000 (13:32 +1000)]
tools: handle arguments correctly for the YAML verifier tool

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: skip the event tests for eventless recordings in the YAML verifier
Peter Hutterer [Wed, 24 Jul 2019 03:32:15 +0000 (13:32 +1000)]
tools: skip the event tests for eventless recordings in the YAML verifier

When verifying a recording, let's skip those tests that require events but
don't have any.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agolibinput 1.13.901 1.13.901
Peter Hutterer [Fri, 19 Jul 2019 01:30:37 +0000 (11:30 +1000)]
libinput 1.13.901

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoMerge branch 'wip/advanced-thumb-detection-v2'
Peter Hutterer [Wed, 17 Jul 2019 09:37:21 +0000 (19:37 +1000)]
Merge branch 'wip/advanced-thumb-detection-v2'

5 years agotouchpad: stricter thumb detection if no pressure/size
Matt Mayfield [Thu, 11 Jul 2019 15:14:37 +0000 (10:14 -0500)]
touchpad: stricter thumb detection if no pressure/size

5 years agotouchpad: don't detect speed-based thumbs if there's already a thumb
Matt Mayfield [Sun, 14 Jul 2019 17:50:14 +0000 (12:50 -0500)]
touchpad: don't detect speed-based thumbs if there's already a thumb

5 years agodoc/user: add documentation for the new thumb detection
Peter Hutterer [Wed, 10 Jul 2019 04:06:07 +0000 (14:06 +1000)]
doc/user: add documentation for the new thumb detection

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: revamp thumb detection
Matt Mayfield [Fri, 21 Jun 2019 03:19:22 +0000 (13:19 +1000)]
touchpad: revamp thumb detection

Instead of a simple yes/no/maybe for thumbs, have a more extensive state
machine that keeps track of the thumb. Since we only support one thumb anyway,
the tracking moves to the tp_dispatch struct.

Test case changes:
touchpad_clickfinger_3fg_tool_position:
  with better thumb detection we can now handle this properly and expect a
  right button (2fg) press for the test case
touchpad_thumb_no_doublethumb_with_timeout:
  two thumbs are now always two fingers, so let's switch to axis events here

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: make the touchpad size the only check for thumb detection
Peter Hutterer [Wed, 10 Jul 2019 02:45:46 +0000 (12:45 +1000)]
test: make the touchpad size the only check for thumb detection

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: only run the speed finger tests when the touchpad has thumb detection
Peter Hutterer [Wed, 10 Jul 2019 02:10:42 +0000 (12:10 +1000)]
test: only run the speed finger tests when the touchpad has thumb detection

5 years agotest: only run the speed tests for clickpads
Peter Hutterer [Wed, 10 Jul 2019 02:07:09 +0000 (12:07 +1000)]
test: only run the speed tests for clickpads

We don't need speed detection for non-clickpads - the only reason to ever drop
a second finger on those is to either scroll or trigger a gesture. Unlike
clickpads, where a dropped finger may be a thumb to click.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: only log edge scroll state changes when the state actually changes
Peter Hutterer [Wed, 10 Jul 2019 01:56:52 +0000 (11:56 +1000)]
touchpad: only log edge scroll state changes when the state actually changes

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: add a helper function for supressing a thumb
Peter Hutterer [Fri, 21 Jun 2019 01:26:11 +0000 (11:26 +1000)]
touchpad: add a helper function for supressing a thumb

Only sets the state to YES at the moment, will do more in the future.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agogestures: Improve thumb detection, allow one finger scroll
Matt Mayfield [Fri, 31 Aug 2018 02:29:46 +0000 (21:29 -0500)]
gestures: Improve thumb detection, allow one finger scroll

Check if there's a thumb if we have two touches. If one finger moves but
the thumb remains still, we assume that one is really a thumb. But if the
thumb moves while the finger is still, let's assume this is a 2-finger scroll.

Extracted from Matt Mayfield's thumb detection patchset

5 years agogestures: fast-track scroll/swipe detection when gestures are off
Peter Hutterer [Thu, 20 Jun 2019 11:25:25 +0000 (21:25 +1000)]
gestures: fast-track scroll/swipe detection when gestures are off

We can't detect pinch when gestures are off anyway, so we don't need to check
the finger distances.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agogestures: improvements to pinch detection
Matt Mayfield [Sat, 25 Aug 2018 04:17:03 +0000 (23:17 -0500)]
gestures: improvements to pinch detection

Only bias towards scrolling if the fingers are in the position past the
timeout.

5 years agogestures: improve scroll responsiveness for vertically aligned touches
Matt Mayfield [Wed, 22 Aug 2018 02:12:33 +0000 (21:12 -0500)]
gestures: improve scroll responsiveness for vertically aligned touches

Put some basic location checks in, if the fingers are next to each other and
vertically close, assume scroll over swipe.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>:
5 years agotouchpad: basic thumb detection within gestures
Matt Mayfield [Sat, 18 Aug 2018 06:10:34 +0000 (01:10 -0500)]
touchpad: basic thumb detection within gestures

When a touchpad has thumb detection enabled, avoid false-positive gestures
involving a resting thumb by using two thresholds: inner and outer.

While both touches remain inside their inner thresholds, remain in UNKNOWN
state to allow for accurate gesture detection even with no timeout.

If both touches move outside their inner thresholds, start a pinch or
swipe/scroll gesture according to direction, as usual.

If one touch moves outside its outer threshold while the other has not yet
exceeded its inner threshold, and thumb detection is enabled, then if one
touch is >20mm lower, mark it as a thumb and cancel the gesture.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>