platform/upstream/libinput.git
5 years agoquirks: fix the product ID for the MS Nano Transceiver
Peter Hutterer [Mon, 17 Sep 2018 10:49:03 +0000 (20:49 +1000)]
quirks: fix the product ID for the MS Nano Transceiver

Was 0x800 in the hwdb, became 0x8000 in th quirks transition because of
inflation, but let's pretend the economy is back to normal and devalue our
currency. (aka: "it was a typo", whoops and whatnot)

https://bugs.freedesktop.org/show_bug.cgi?id=104415

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoFixes incorrect bug reporting documentation
Bennett Hardwick [Mon, 17 Sep 2018 12:51:12 +0000 (22:51 +1000)]
Fixes incorrect bug reporting documentation

5 years agoUpdated: jumping cursor documentation link
Bennett Hardwick [Sun, 16 Sep 2018 08:15:44 +0000 (08:15 +0000)]
Updated: jumping cursor documentation link

5 years agotest: drop a condition from the safe_atou test
Peter Hutterer [Fri, 14 Sep 2018 00:19:55 +0000 (10:19 +1000)]
test: drop a condition from the safe_atou test

If sizeof(long) == sizeof(int), this test won't pass so let's drop it
altogether.

Fixes #137

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoutil: check for < 0 explicitly in safe_atou
Peter Hutterer [Wed, 12 Sep 2018 22:18:16 +0000 (08:18 +1000)]
util: check for < 0 explicitly in safe_atou

The previous check only worked if sizeof(long) > sizeof(int). Rather than be
fancy about it, just cast to a signed long, check for negativity and continue
based on that.

Fixes #137

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: fix a bunch of format conversion complaints
Peter Hutterer [Wed, 12 Sep 2018 03:28:16 +0000 (13:28 +1000)]
tools: fix a bunch of format conversion complaints

Fixes #137

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agolibinput 1.12.0 1.12.0
Peter Hutterer [Tue, 11 Sep 2018 03:33:42 +0000 (13:33 +1000)]
libinput 1.12.0

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: drop the libinput measure trackpoint-range tool
Peter Hutterer [Tue, 11 Sep 2018 01:02:13 +0000 (11:02 +1000)]
tools: drop the libinput measure trackpoint-range tool

This tool is now obsolete, we don't use that range anywhere.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoudev: tighten the conditions when we call the model quirks
Peter Hutterer [Mon, 10 Sep 2018 05:51:03 +0000 (15:51 +1000)]
udev: tighten the conditions when we call the model quirks

All we do now is to set the fuzz, so we only ever need to care about this when
a device has absolute axes.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoudev: re-instate the model-quirks callout
Peter Hutterer [Mon, 10 Sep 2018 05:16:49 +0000 (15:16 +1000)]
udev: re-instate the model-quirks callout

This was removed accidentally as part of a9ef4ba1f33bf8 and then completely dropped in
870ddce9e47a89 when the hwdb was deprecated completely. The model quirks call
is also the one that reads and sets the LIBINPUT_FUZZ property, effectively
making that code a noop.

Fixes #138

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotablet: on tip down/up, force the delta to zero
Peter Hutterer [Thu, 6 Sep 2018 04:11:23 +0000 (14:11 +1000)]
tablet: on tip down/up, force the delta to zero

We may get a pointer jump on tip down/up, see #128. For absolute coordinates
we reset the history to avoid smoothing across that jump but deltas still used
to be calculated based on the previous position to the current one. This
can result in a large jump on tip down.

Since the delta is supposed to be useful (and not physically accurate, see the
docs), let's force it to 0/0 on tip down/up to avoid that scenario.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotablet: always set the changed axis bits if the coordinates differ
Peter Hutterer [Wed, 5 Sep 2018 05:57:02 +0000 (15:57 +1000)]
tablet: always set the changed axis bits if the coordinates differ

Because we're doing axis smoothing, we may get a nonzero delta between events
even when the real axis hasn't updated. Make sure the bit is set in this case.

One part of #128

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: debug-events - print axes on tablet tip events
Peter Hutterer [Wed, 5 Sep 2018 04:33:28 +0000 (14:33 +1000)]
tools: debug-events - print axes on tablet tip events

Bit of a weird diff, print_tablet_axes() was moved up and a single call to
print_tablet_axes() was added in the tablet tip event handler.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: update the trackpoint pointer acceleration graph
Peter Hutterer [Tue, 4 Sep 2018 04:58:18 +0000 (14:58 +1000)]
doc/user: update the trackpoint pointer acceleration graph

Never got updated when the new code was merged

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agolibinput 1.11.903 1.11.903
Peter Hutterer [Tue, 4 Sep 2018 00:50:16 +0000 (10:50 +1000)]
libinput 1.11.903

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: style fix, add missing curlies
Peter Hutterer [Fri, 31 Aug 2018 04:52:37 +0000 (14:52 +1000)]
touchpad: style fix, add missing curlies

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: add timestamp-based jump detection
Peter Hutterer [Tue, 21 Aug 2018 05:43:38 +0000 (15:43 +1000)]
touchpad: add timestamp-based jump detection

On Dell i2c touchpads, the controller appears to go to sleep after about 1s of
inactivity on the touchpad. The wakeup takes a while so on the next touch, we
may see a pointer jump, specifially on the third event (i.e. touch down,
event, event+jump). The MSC_TIMESTAMP value carries a hint for what's
happening here, the event sequence for a touchpad with scanout intervals
7300µs is:

...
MSC_TIMESTAMP 0
SYN_REPORT
...
MSC_TIMESTAMP 7300
SYN_REPORT +2ms
...
MSC_TIMESTAMP 123456
SYN_REPORT +7ms
...
MSC_TIMESTAMP 123456+7300
SYN_REPORT +8ms

Note how the SYN_REPORT timestamps don't reflect the MSC_TIMESTAMPS.

This patch adds a quirk activate MSC_TIMESTAMP watching. When we do so, we
monitor for a 0 MSC_TIMESTAMP. Let's assume that the first event after that is
the interval, then check the third event. If that third event's timestamp is too
large rewrite the touches' motion history to reflect the correct timestamps,
i.e. instead of the SYN_REPORT timestamps the motion history now uses
"third-event SYN_REPORT timestamps minus MSC_TIMESTAMP values".

The pointer accel filter code uses absolute timestamps (#123) so we have to
restart the pointer acceleration filter when we detect this jump. This allows
us to reset the 0 time for the filter to the previous event's MSC_TIMESTAMP
time, so that our new large delta has the correct time delta too. This
calculates the acceleration correctly for that window.

The result is that the pointer is still delayed by the wake-up window (not
fixable in libinput) but at least it ends up where it should've.

There are a few side-effects: thumb, gesture, and hysteresis all still use the
unmodified SYN_REPORT time. There is a potential for false detection of either
of these now, but we'll have to fix those as they come up.

Fixes #36

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoquirks: add a quirk to monitor MSC_TIMESTAMP for pointer jumps
Peter Hutterer [Wed, 22 Aug 2018 04:13:33 +0000 (14:13 +1000)]
quirks: add a quirk to monitor MSC_TIMESTAMP for pointer jumps

Currently enabled on all Dell i2c touchpads, these seem to be the ones that
needed it.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoquirks: add missing i2c and rmi bus matching
Peter Hutterer [Wed, 22 Aug 2018 04:12:03 +0000 (14:12 +1000)]
quirks: add missing i2c and rmi bus matching

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: make tp_detect_jumps() time-independent
Peter Hutterer [Mon, 27 Aug 2018 02:35:27 +0000 (12:35 +1000)]
touchpad: make tp_detect_jumps() time-independent

This function expected distances per-frame, not per-time which gives us
different behaviors depending on the hardware scanout rate. Fix this by
normalizing to a 12ms frame rate which reflects the touchpad I measured all
the existing thresholds on.

This is a bit of a problem for the test suite which doesn't use proper
intervals and the change to do so is rather invasive. So for now we set the
interval for test devices to whatever the time delta is so we can test the
jumps without having to worry about intervals.

Fixes #121

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: expand the Contributing document
Peter Hutterer [Fri, 10 Aug 2018 05:28:50 +0000 (15:28 +1000)]
doc/user: expand the Contributing document

This is mostly taken from the Weston Contributing.md document.
Main changes from there are:
- more detailed step-by-step on how to create a MR
- commit history/messages in two sections
- s/Weston/libinput/

I skipped the Review/Commit Rights sections for now until there's some demand
for it. Same with the Licensing/Stabilising for releases sections.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Daniel Stone <daniels@collabora.com>
5 years agotools: handle a finger down at startup for measure pressure/touch-size
Peter Hutterer [Wed, 29 Aug 2018 03:55:39 +0000 (13:55 +1000)]
tools: handle a finger down at startup for measure pressure/touch-size

Fixes #117

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: fine tune size-based thumb detection
Matt Mayfield [Wed, 22 Aug 2018 01:54:58 +0000 (20:54 -0500)]
touchpad: fine tune size-based thumb detection

In testing on an Apple Magic Trackpad, thumb touches are reliably
detected by being quite large in the major dimension, but around
half the size in the minor dimension.

5 years agotouchpad: add support for size-based thumb detection
Peter Hutterer [Wed, 25 Jul 2018 04:46:14 +0000 (14:46 +1000)]
touchpad: add support for size-based thumb detection

Fixes #97

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: clean up the thumb pressure handling out a bit
Peter Hutterer [Wed, 25 Jul 2018 04:41:38 +0000 (14:41 +1000)]
touchpad: clean up the thumb pressure handling out a bit

Use a boolean for whether we need to use it and drop the unneded absinfo
assignment (together with the goto).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: abort when we detect a touch jump during the tests
Peter Hutterer [Tue, 28 Aug 2018 00:00:12 +0000 (10:00 +1000)]
test: abort when we detect a touch jump during the tests

We never want to accidentally trigger this one. Where we trigger them on
purpose, we can swap the log handler out first.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: drop the sleep_ms argument
Peter Hutterer [Mon, 27 Aug 2018 23:16:52 +0000 (09:16 +1000)]
test: drop the sleep_ms argument

This forces events for every ~10ms now. If we want a slower movement, we need
more steps - just like a real touchpad does it.

Cocinelle spatch files were variants of:
@@
expression A, B, C, D, E, F, G, H, I, J, K;
@@

- litest_touch_move_two_touches(A, B, C, D, E, F, G, H, I)
+ litest_touch_move_two_touches(A, B, C, D, E, F, G, H)

The only test that needed a real fix was touchpad_no_palm_detect_2fg_scroll,
it used 12ms before, now it's using 10ms so on the bcm5974 touchpad the second
finger was a speed-thumb. Increasing the events and thus slowing down the
pointer means it's a normal finger and the test succeeds again.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: force 10ms intervals for touch moves, unless specified otherwise
Peter Hutterer [Mon, 27 Aug 2018 03:22:24 +0000 (13:22 +1000)]
test: force 10ms intervals for touch moves, unless specified otherwise

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: change a few tests to use 10ms intervals
Peter Hutterer [Tue, 28 Aug 2018 00:06:41 +0000 (10:06 +1000)]
test: change a few tests to use 10ms intervals

Change a number of tests to use 10ms intervals between finger events and fix
the coordinates up accordingly to avoid pointer jumps. This is in preparation
for a test-suite wide use of 10ms intervals.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: make the touchpad jump test more robust for timing errors
Peter Hutterer [Mon, 27 Aug 2018 07:00:04 +0000 (17:00 +1000)]
test: make the touchpad jump test more robust for timing errors

move_to() now uses delays, let's make this test more robust for timing errors
so we don't fall below the threshold movement we want to trigger.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: don't run the 2fg pressure tap test on single-touch devices
Peter Hutterer [Tue, 28 Aug 2018 00:45:14 +0000 (10:45 +1000)]
test: don't run the 2fg pressure tap test on single-touch devices

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: fix the late tripletap test
Peter Hutterer [Tue, 28 Aug 2018 00:29:51 +0000 (10:29 +1000)]
test: fix the late tripletap test

The coordinates ended up being in the first touch detected as palm. Not
relevant for this test, but let's not do that to avoid false positives.
Also change to 10ms intervals, more realistic given the hardware.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: fix a touchpad test using the wrong coordinates
Peter Hutterer [Tue, 28 Aug 2018 00:12:44 +0000 (10:12 +1000)]
test: fix a touchpad test using the wrong coordinates

We moved to 60/60 before, not 50/50.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: fix pad_button_ignored test to not trigger the proximity timeout
Peter Hutterer [Mon, 27 Aug 2018 06:31:12 +0000 (16:31 +1000)]
test: fix pad_button_ignored test to not trigger the proximity timeout

Once we start working with real event frames (i.e. intervals after SYN_REPORT)
we'll always trigger the proximity timeout here. Avoid this by sending one
event with all buttons.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: rename the diagonal scroll test for more clarity
Peter Hutterer [Mon, 27 Aug 2018 05:46:31 +0000 (15:46 +1000)]
test: rename the diagonal scroll test for more clarity

This one only starts with diagonal but continues vertically. Make it clearer.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: fix a DWT test, only worked because of timing success
Peter Hutterer [Mon, 27 Aug 2018 05:19:58 +0000 (15:19 +1000)]
test: fix a DWT test, only worked because of timing success

This test only succeeded because all events were sent within the dwt timeout.
Change it to actually test the behavior of a touch being disabled by DWT and
staying disabled.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: drop two erroneous checks in the dwt tests
Peter Hutterer [Mon, 27 Aug 2018 05:15:37 +0000 (15:15 +1000)]
test: drop two erroneous checks in the dwt tests

These only succeeded because the test suite doesn't use frame intervals - as
soon as the time between event frames is nonzero, we may fail these.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: don't use move_to for a single-step movement
Peter Hutterer [Mon, 27 Aug 2018 04:28:58 +0000 (14:28 +1000)]
test: don't use move_to for a single-step movement

If we only want one event anyway...

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: re-use code in litest_touch_move_to()
Peter Hutterer [Mon, 27 Aug 2018 03:26:04 +0000 (13:26 +1000)]
test: re-use code in litest_touch_move_to()

We can use the _extended version here. And it turns out the behavior was
slightly different, with the _extended version doing one step too few.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: fix grab handling in libinput debug-gui
Peter Hutterer [Mon, 27 Aug 2018 01:14:05 +0000 (11:14 +1000)]
tools: fix grab handling in libinput debug-gui

The libinput context's user_data was used for deciding whether to grab the
event device but also to hold the struct window data for the debug-gui. Worked
fine for the initial batch of devices, but any device coming in late would
just use the first field of the struct window to decide whether to grab or
not.

Fixes #122

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agofallback: explicitly ignore external keyboards for the tablet mode switch
Peter Hutterer [Sun, 26 Aug 2018 22:26:00 +0000 (08:26 +1000)]
fallback: explicitly ignore external keyboards for the tablet mode switch

We already had a check to only pair trackpoints and internal keyboards
but for the ThinkPad Compact Bluetooth Keyboard with TrackPoint that isn't
sufficient - it's an external keyboard that contains a trackpoint. Explicitly
ignore external keyboard, we never want to shut those down in tablet mode
anyway.

Fixes #119

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoquirks: explicitly mark bluetooth keyboards as external
Peter Hutterer [Sun, 26 Aug 2018 22:26:45 +0000 (08:26 +1000)]
quirks: explicitly mark bluetooth keyboards as external

Required by #119

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoAdd quirk to control velocity averaging, disable it by default
Kim Lindberger [Fri, 17 Aug 2018 13:12:58 +0000 (15:12 +0200)]
Add quirk to control velocity averaging, disable it by default

libinput applies averaging to the velocity of most pointer devices. Averaging
the velocity makes the motion look smooth and may be of benefit to bad input
devices. For good devices, however, it comes at the unfortunate price of
decreased accuaracy.

This change turns velocity averaging off by default (sets ntrackers to 2 instead
of 16) and allows for it to be turned back on via a quirk, for bad devices which
require it.

5 years agotools: fix ptraccel-debug tool for the new trackpoint multiplier
Kim Lindberger [Wed, 22 Aug 2018 01:08:49 +0000 (11:08 +1000)]
tools: fix ptraccel-debug tool for the new trackpoint multiplier

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agogitlab CI: increase the artifacts expiry to 6h
Peter Hutterer [Tue, 21 Aug 2018 21:25:23 +0000 (07:25 +1000)]
gitlab CI: increase the artifacts expiry to 6h

20 min for the "this docker image is ok" marker should be enough but not when
we're hit with random stuck containers in the next stage. By the time those
time out the artefacts have been removed and we now get a dependency error,
forcing us to re-run the whole pipeline.

Since the marker is only a few bytes, we can keep this for a bit longer
without risking running out of space.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoquirks: Add quirks for Acer Switch Alpha 12
Carlos Garnacho [Tue, 21 Aug 2018 09:51:09 +0000 (11:51 +0200)]
quirks: Add quirks for Acer Switch Alpha 12

This is a 2-in-1 laptop with detachable keyboard. The AT keyboard
device is used for tablet-integrated keys (volume, leftmeta) and
should not get disabled with tablet-mode enabled.

The touchpad integrated in the detachable keyboard is already
handled through the "Acer Hawaii Keyboard" chicony rule.

Related: https://gitlab.freedesktop.org/libinput/libinput/issues/115

Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
5 years agoLenovo MIIX 720 quirk: MatchBus should be usb.
Atri Bhattacharya [Tue, 21 Aug 2018 01:35:00 +0000 (03:35 +0200)]
Lenovo MIIX 720 quirk: MatchBus should be usb.

Fixes commit 0d62c8fb.

5 years agoAdd quirks for Lenovo MIIX 720.
Atri Bhattacharya [Tue, 21 Aug 2018 00:45:26 +0000 (02:45 +0200)]
Add quirks for Lenovo MIIX 720.

* Lenovo MIIX 720 is a tablet with a detachable keyboard. To keep
  the volume rockers on the tablet enabled even when the keyboard
  is detached, add `ModelTabletModeNoSuspend=1` to the internal
  keyboard.
* The external keyboard is a keyboard-touchpad combo. Assign
  `AttrTPKComboLayout=below` to the touchpad to allow features
  like disable-while-typing and palm-detection.

5 years agoquirks: remove the multiplier for the Lenovo UltraNav SK-8845
Peter Hutterer [Mon, 20 Aug 2018 08:08:31 +0000 (18:08 +1000)]
quirks: remove the multiplier for the Lenovo UltraNav SK-8845

Looks like this isn't needed, see #112. Or Lenovo re-used USB IDs for this
device in which case we'll have to figure out some other solution once someone
complains.

Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/112

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: improve pointer jump detection
Peter Hutterer [Mon, 13 Aug 2018 05:25:48 +0000 (15:25 +1000)]
touchpad: improve pointer jump detection

Previously, we had a hard threshold of 20mm per event frame. That is just
about achievable by really fast movements (in which case you don't care too
much about the jumps anyway because you've already hit the edge of the screen).

Sometimes pointer jumps have lower deltas that are achievable even on slower,
more likely motions. Analysis of finger motion has shown that while a delta
>7mm per event is possible, jumping _by_ 7mm between two events is unlikely
and indicates a pointer jump. So let's diff the most recent delta and the
current delta, if it increases by 7mm between two event frames let's say it's
a pointer jump and discard it.

Helps with but does not fully resolve:
https://gitlab.freedesktop.org/libinput/libinput/issues/80
https://gitlab.freedesktop.org/libinput/libinput/issues/36

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: move the tablet capabilities debugging to a separate page
Peter Hutterer [Sun, 19 Aug 2018 23:49:55 +0000 (09:49 +1000)]
doc/user: move the tablet capabilities debugging to a separate page

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: correct some small typos
Matt Mayfield [Sun, 19 Aug 2018 16:54:52 +0000 (11:54 -0500)]
doc/user: correct some small typos

5 years agodoc/user: move the trackpoint multiplier debugging to Troubleshooting
Peter Hutterer [Thu, 16 Aug 2018 02:39:15 +0000 (12:39 +1000)]
doc/user: move the trackpoint multiplier debugging to Troubleshooting

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: fix two links for sphinx syntax
Peter Hutterer [Thu, 16 Aug 2018 02:26:27 +0000 (12:26 +1000)]
doc/user: fix two links for sphinx syntax

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agolibinput 1.11.902 1.11.902
Peter Hutterer [Mon, 13 Aug 2018 23:01:46 +0000 (09:01 +1000)]
libinput 1.11.902

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: when testing for a touch sequence, assert it's the same slot's sequence
Peter Hutterer [Mon, 17 Jul 2017 04:26:34 +0000 (14:26 +1000)]
test: when testing for a touch sequence, assert it's the same slot's sequence

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: drop check for left button areas
Peter Hutterer [Mon, 13 Aug 2018 04:23:28 +0000 (14:23 +1000)]
touchpad: drop check for left button areas

No functional changes, anything that's in the top/bottom area but not in the
respective middle/right area is a left button.

Introduced by 13bda5adcb2f81f8ed9de762910ac9ecfa3b250b

Fixes coverity complaint about use of uninitialized variable.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: change the min vector for the scroll lock to 0.15
Peter Hutterer [Mon, 13 Aug 2018 04:00:54 +0000 (14:00 +1000)]
touchpad: change the min vector for the scroll lock to 0.15

This makes the difference between noticable delay and unnoticable while having
virtually no false positives (for me).

https://gitlab.freedesktop.org/libinput/libinput/issues/101

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: if a finger in the button area moves by more than 5mm, release it
Peter Hutterer [Tue, 7 Aug 2018 04:49:27 +0000 (14:49 +1000)]
touchpad: if a finger in the button area moves by more than 5mm, release it

The software button area is currently a partially-dead area. If the finger
moves into or out of the area pointer motion works. Finger motion within the
area however does not generate motion.

The main motivation for this was to avoid accidental pointer motion when a
button is pressed. This is required for stationary fingers but once you move a
significant distance, those bets are off.

So if the finger moves by more than 5mm from where it was put down, release it
and let it move the pointer.

The full impact is largely limited to horizontal movements within the button
area because:
- leaving the finger at the bottom area for 300ms without movement triggers
  the thumb identification, so it won't move anyway.
- moving the finger north is likely to go off the button area before we
  trigger this threshold.

https://gitlab.freedesktop.org/libinput/libinput/issues/86

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: coding style fixes
Peter Hutterer [Tue, 7 Aug 2018 05:28:11 +0000 (15:28 +1000)]
touchpad: coding style fixes

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: rename 'curr' to 'current'
Peter Hutterer [Tue, 7 Aug 2018 04:33:47 +0000 (14:33 +1000)]
touchpad: rename 'curr' to 'current'

We can affort the extra 3 bytes storage.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoquirks: don't allow single quotes for values
Peter Hutterer [Fri, 10 Aug 2018 02:55:13 +0000 (12:55 +1000)]
quirks: don't allow single quotes for values

At least not opening single quotes, same as the double quotes we already have.
Add the tests for both.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotests: more tests for quirks handling
Peter Hutterer [Fri, 10 Aug 2018 02:11:15 +0000 (12:11 +1000)]
tests: more tests for quirks handling

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: add tests for successful/failing parsing of various quirks
Peter Hutterer [Thu, 9 Aug 2018 23:23:43 +0000 (09:23 +1000)]
test: add tests for successful/failing parsing of various quirks

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: fix quirks test for invalid bus type matches
Peter Hutterer [Fri, 10 Aug 2018 02:17:07 +0000 (12:17 +1000)]
test: fix quirks test for invalid bus type matches

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoutil: tighten safe_atod parsing to only parse 'normal' numbers
Peter Hutterer [Fri, 10 Aug 2018 00:44:30 +0000 (10:44 +1000)]
util: tighten safe_atod parsing to only parse 'normal' numbers

We don't have a sensible use case where we want hex to double, or INF to
double, or any of that. So check the strings for invalid characters and bail
out early. Invalid characters include 'e' and whitespaces too, we don't need
those.

Small chance of things breaking: if the user-exposed calibration matrix
property was specified using hex numbers this will stop working now. I'll take
that risk.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoutil: switch to a check for isnormal for safe_atod
Peter Hutterer [Fri, 10 Aug 2018 00:50:39 +0000 (10:50 +1000)]
util: switch to a check for isnormal for safe_atod

Effectively the same check as before but this should also encompass
FP_SUBNORMAL.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoutil: fail property parsing if the dimensions are 0
Peter Hutterer [Thu, 9 Aug 2018 23:18:47 +0000 (09:18 +1000)]
util: fail property parsing if the dimensions are 0

There is no use-case for a zero width/height in anything using that property.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: replace hand-rolled backtrace function with gstack
Peter Hutterer [Wed, 8 Aug 2018 06:32:06 +0000 (16:32 +1000)]
test: replace hand-rolled backtrace function with gstack

Let's use something that specializes in that task and does a better job of it
than whatever we'll come up with. Due to how it's implemented the stacktrace
will always show waitpid() as frame 0 now but we can live with that.

gstack prints to stdout but litest_log() uses stderr, so we cannot just call
system(), we have do do the pipe/fork/exec/waitpid/read dance.
We could use that to filter the #0 frame showing waidpid() from gstack but
meh.

This drops the libunwind and addr2line dependency and replaces it with gstack
instead.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agomeson.build: the selftest doesn't need all litest sources
Peter Hutterer [Fri, 10 Aug 2018 01:54:24 +0000 (11:54 +1000)]
meson.build: the selftest doesn't need all litest sources

Drops about 70 ninja targets.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: remove the deviceless test runner, make it a commandline arg instead
Peter Hutterer [Fri, 10 Aug 2018 01:39:04 +0000 (11:39 +1000)]
test: remove the deviceless test runner, make it a commandline arg instead

No need to rebuild everything with an ifdef, we can just use meson to pass an
argument to the test itself and filter based on that. This drops about 100
ninja targets.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: switch two ints to bools
Peter Hutterer [Fri, 10 Aug 2018 01:32:31 +0000 (11:32 +1000)]
test: switch two ints to bools

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: move touchpad jitter to troubleshooting
Peter Hutterer [Fri, 10 Aug 2018 10:40:44 +0000 (20:40 +1000)]
doc/user: move touchpad jitter to troubleshooting

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoFix doc links to use dashes, not underscores
Peter Hutterer [Fri, 10 Aug 2018 10:39:49 +0000 (20:39 +1000)]
Fix doc links to use dashes, not underscores

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: move the jumping cursor page to troubleshooting
Peter Hutterer [Fri, 10 Aug 2018 10:38:23 +0000 (20:38 +1000)]
doc/user: move the jumping cursor page to troubleshooting

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: ensure we write something during litest_sendfile
Peter Hutterer [Wed, 8 Aug 2018 10:55:58 +0000 (20:55 +1000)]
test: ensure we write something during litest_sendfile

This mostly shuts up coverity about potentially using a negative size to
write.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: remove an obsolete comment
Peter Hutterer [Wed, 8 Aug 2018 05:39:18 +0000 (15:39 +1000)]
test: remove an obsolete comment

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agomeson.build: drop the now-unused liblitest
Peter Hutterer [Wed, 8 Aug 2018 04:02:15 +0000 (14:02 +1000)]
meson.build: drop the now-unused liblitest

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc: use configure_file()'s @PLAINNAME@ instead of calling install
Peter Hutterer [Wed, 8 Aug 2018 01:18:20 +0000 (11:18 +1000)]
doc: use configure_file()'s @PLAINNAME@ instead of calling install

Instead of calling out to install on every ninja call, use @PLAINNAME@ as
substitution for just copying the file over. This gets around the "no
directory allowed in output file" limitation.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/api: drop git-version.dox
Peter Hutterer [Wed, 8 Aug 2018 01:01:38 +0000 (11:01 +1000)]
doc/api: drop git-version.dox

No longer needed

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agomeson.build: process the various tools as a single file list
Peter Hutterer [Wed, 8 Aug 2018 01:21:12 +0000 (11:21 +1000)]
meson.build: process the various tools as a single file list

All these tools just copy the input file over, we can do that in a loop

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agomeson.build: silence meson warning that we should use configure_file's copy
Peter Hutterer [Wed, 8 Aug 2018 02:03:13 +0000 (12:03 +1000)]
meson.build: silence meson warning that we should use configure_file's copy

Yes, we should use 'copy'. But that requires 0.47 and that's not an option
right now.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agomeson.build: fix typo in version to compare to
Peter Hutterer [Wed, 8 Aug 2018 01:36:18 +0000 (11:36 +1000)]
meson.build: fix typo in version to compare to

Introduced in e428e5e87a83127db90476e5a7d7e48546fafd6f

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotouchpad: 90-degree scroll helper
Matt Mayfield [Wed, 8 Aug 2018 16:31:57 +0000 (11:31 -0500)]
touchpad: 90-degree scroll helper

This makes two-finger scrolling in straight lines easier, while still
allowing free/diagonal movement. It works in three stages:

1) Initial movement
   - For the first few millimeters, scroll movements within 30 degrees
     of horizontal or vertical are straightened to 90-degree angles.
   - Scroll movements close to 45 degree diagonals are unchanged.
   - If movement continues very close to straight horizontal or
     vertical, stage 2 begins and the axis lock engages.
   - If movement continues along a diagonal, stage 2 is skipped and
     free scrolling is immediately enabled.
2) Axis lock
   - If the user scrolls fairly closely to straight vertical, no
     horizontal movement will happen at all, and vice versa.
   - It is possible to switch between straight vertical and straight
     horizontal, and the axis lock will automatically change.
   - If deliberate diagonal movement is detected at any point, stage
     3 begins and the axis lock disengages.
3) Free scrolling
   - Scrolling is unconstrained until the fingers are lifted.

5 years agotest: touchpad: add tests for 90 degree scroll (axis lock)
Matt Mayfield [Wed, 8 Aug 2018 16:00:22 +0000 (11:00 -0500)]
test: touchpad: add tests for 90 degree scroll (axis lock)

5 years agodoc/user: add 90-degree scroll behavior
Matt Mayfield [Tue, 7 Aug 2018 14:34:28 +0000 (09:34 -0500)]
doc/user: add 90-degree scroll behavior

5 years agotools: debug-*: show unaccelerated deltas for pointer events
Peter Hutterer [Tue, 7 Aug 2018 02:42:40 +0000 (12:42 +1000)]
tools: debug-*: show unaccelerated deltas for pointer events

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: add a 10ms delay for scrolling tests
Peter Hutterer [Mon, 6 Aug 2018 23:34:49 +0000 (09:34 +1000)]
test: add a 10ms delay for scrolling tests

No touchpad gives us these events with a 0 delay, so let's not test for that.

This is required for adding timing-sensitive scroll code, see
https://gitlab.freedesktop.org/libinput/libinput/issues/101.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: touchpad: swap an int for a bool
Peter Hutterer [Mon, 6 Aug 2018 23:53:28 +0000 (09:53 +1000)]
test: touchpad: swap an int for a bool

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotest: rename the x220 clickpad to something more telling
Peter Hutterer [Mon, 6 Aug 2018 23:56:54 +0000 (09:56 +1000)]
test: rename the x220 clickpad to something more telling

Having this as the generic "synaptics" touchpad in the tests is not helpful,
this touchpad is tiny and quite special these days.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotablet: unify the license text with what we have in COPYING
Peter Hutterer [Mon, 6 Aug 2018 22:26:53 +0000 (08:26 +1000)]
tablet: unify the license text with what we have in COPYING

Use the same blurb everywhere, changing from the old style MIT to the Expat
license we're using everywhere else.

Similar to bc9f16b40e23a1d25c105a4207b97d65253f0d98

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agofilter: always init a delta smoothener for 10/10ms on trackpoints
Peter Hutterer [Mon, 6 Aug 2018 05:24:04 +0000 (15:24 +1000)]
filter: always init a delta smoothener for 10/10ms on trackpoints

If the trackpoint gives us deltas with less than 10ms intervals, something is
wrong. Could be bad hardware, a glitch in the matrix or a discontinuity in
the otherwise appropriately named time-space continuum. Usually it's the
first.

Let's always set up trackpoint delta smoothening for 10ms to improve the
pointer speed calculation and avoid jerky behaviors. i.e. if a trackpoint
delta comes in below 10ms, pretend it came in with a 10ms interval for
calculating the speed.

Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/104

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: drop the sphinx -a flag
Peter Hutterer [Mon, 6 Aug 2018 05:19:57 +0000 (15:19 +1000)]
doc/user: drop the sphinx -a flag

Let's trust sphinx to know what to rebuild

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agotools: record: don't bother setting last_ms to 0 on the first event
Peter Hutterer [Mon, 6 Aug 2018 04:06:48 +0000 (14:06 +1000)]
tools: record: don't bother setting last_ms to 0 on the first event

The first event we receive is set to a 0ms offset anyway. Setting last_ms to 0
on the first event means the first two events have +0ms offset printed to the
log. Skip it, so the second event has the right offset.

This is human-readable data only, no effect on the recording file itself.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: add touchpad pressure debugging as separate page
Peter Hutterer [Mon, 6 Aug 2018 03:37:30 +0000 (13:37 +1000)]
doc/user: add touchpad pressure debugging as separate page

This way we can put it under Troubleshooting

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: add the quirks tool to the tool list
Peter Hutterer [Mon, 6 Aug 2018 03:37:00 +0000 (13:37 +1000)]
doc/user: add the quirks tool to the tool list

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agodoc/user: match the quirks list output with the code
Peter Hutterer [Mon, 6 Aug 2018 03:31:34 +0000 (13:31 +1000)]
doc/user: match the quirks list output with the code

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agoRemove seemingly extra pasted line from license
Matt Mayfield [Sun, 5 Aug 2018 17:55:02 +0000 (12:55 -0500)]
Remove seemingly extra pasted line from license

5 years agotouchpad: improve finger counting for synaptics serial touchpads
Peter Hutterer [Thu, 2 Aug 2018 06:58:58 +0000 (16:58 +1000)]
touchpad: improve finger counting for synaptics serial touchpads

A three-finger touch may cause slot N to end, in a frame after the
BTN_TOOL_TRIPLETAP. This causes tp->nfinger_down to be decremented to 2 as the
touch switches to MAYBE_END - which happens to be our num_slots. We exit early
and never restore the touch correctly.

Fix this by checking that the number of fake touches is equal to the slots, if
it is higher then we need to check for recovery.

Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/99

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
5 years agofallback: add support for ABS_MT_TOOL_TYPE for touch screens
Peter Hutterer [Fri, 13 Jul 2018 06:08:54 +0000 (16:08 +1000)]
fallback: add support for ABS_MT_TOOL_TYPE for touch screens

Cancel any touches that trigger MT_TOOL_PALM.

Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/25

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