Commit graph

3618 commits

Author SHA1 Message Date
Peter Hutterer
6edf2ed5ee fallback: fix a comment typo 2019-02-06 09:38:29 +10:00
Peter Hutterer
fdf896a764 quirks: add a quirk to ignore unreliable tablet mode switch devices
On the Asus Vivobook Flip 14, the tablet mode switch is unreliable and always
on. Instead of marking every device as 'do not suspend', just mark the tablet
switch itself.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-02-05 09:53:23 +10:00
Benjamin Poirier
89b9d1bc5a evdev: Rename some debouncing functions for consistency
All other similar functions are named with the "_handle_event" postfix.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-02-04 12:04:56 +10:00
Peter Hutterer
fbe7abfd5d test: up the ratelimit tests to 1000ms
This fails too often on the gitlab runners, so let's expand the times.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-02-04 09:56:45 +10:00
Jan Beich
6a720eb582 meson.build: gnu90 alias for gnu89 may not be supported
cc1: error: unrecognized command line option "-std=gnu90"
2019-02-03 09:28:58 +00:00
Peter Hutterer
f612c1ef0c tablet: add tilt-based touch arbitration for screen tablets
If the tilt angle on tip down is not 0 set the touch arbitration to a
rectangle around the assumed position of the hand. This assumed position is
right of the tip for a rightwards tilt and left of the tip for a leftwards
tilt (i.e. left-handed mode). The rectangle is 200x200mm with a 20x50mm
NW of the tip or NE for left-handed. In other words, if the period below is
the tip, the rectangle looks like this:

    +-----------+                          +-----------+
    | . 	| <- for rightwards tilt   |         . |
    |           |                          |           |
    |           |                          |           |
    |           |    for leftwards tilt -> |           |
    +-----------+                          +-----------+

Touches within that rectangle are canceled, new touches are ignored. As the
tip moves around the rectangle is updated but touches are only cancelled on
the original tip down. While the tip is down, new touches are ignored in the
exclusion area but pre-existing touches are not cancelled.

This is currently only implemented in the fallback interface, i.e. it will
only work for Cintiqs.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 05:17:28 +00:00
Peter Hutterer
f325ca921d evdev: add a rectangle to the touch arbitration
This enables us to specify the location that needs to be arbitrated, rather
than just disabling the whole device altogether. This patch just adds the
hooks, no implementation.

This is internal API only, one backend can specify an area in mm which gets
converted to device coordinates in the target device and arbitrated there.
Right now, everything simply passes NULL.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 05:17:28 +00:00
Peter Hutterer
72560e031b fallback: force the palm state to PALM_NONE on touch begin
If we don't have tool-based palm detection, make sure our touch is labelled as
"not palm" during touch down. Otherwise that slot remains on palm forever if
it gets tagged as palm through some other means.

This currently has no effect, nothing in the code would label the touch as
palm. This is prep work for better touch arbitration.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 05:17:28 +00:00
Peter Hutterer
d3595908e5 evdev: introduce a touch arbitration enum
This enables us to change the types of touch arbitration, with the focus on
allowing location-based touch arbitration as well as the more generic "disable
everything".

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 05:17:28 +00:00
Peter Hutterer
794bff8af0 test: add a LITEST_DIRECT feature for the wacom cintiqs
Currently unused, but will be used in later patches

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 05:17:28 +00:00
Peter Hutterer
ab1dbcc996 fallback: add timer-based touch arbitration
When a hand is resting on a pen+touch device, lifting the hand may remove the
stylus from proximity before the hand leaves the surface. If the kernel
performs touch arbitration, this triggers a touch down on proximity out,
followed by a touch up immediately after when the hand stops touching.

This can cause ghost touch events. Prevent this by using a timer-based
arbitration toggle.

Same as 2a378beab0 but for the fallback
interface.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 05:17:28 +00:00
Peter Hutterer
caa8f3fe61 touchpad: release all button presses on device suspend
This leaves a bug open, on a Lenovo T440 generation touchpad with top software
buttons, the button will not be leased correctly. This is caused by
device->is_suspended=true by the time we try to clear the state and the
button events thus getting filtered.

This used to affect all touchpads, this patch just moves it so it only affects
the T440-like devices now.

Fixes #233

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 15:09:44 +10:00
Peter Hutterer
e8625ef8d3 test: add a test for normal touchpad button presses
Probably covered elsewhere in a more generic test anyway but let's have one we
know is executed for all touchpads.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 15:09:44 +10:00
Peter Hutterer
34b49d5118 evdev: cancel the middle button timer on device removed
If a middle-button-emulating device is removed with one button down, the timer
never gets cancelled and triggers an assert during device removal.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 15:09:44 +10:00
Peter Hutterer
afbb90daeb test: add an additional final libinput_dispatch()
After the test device was removed, run one more libinput_dispatch(). This may
catch some errors that happen due to the device removal that were ignored for
now.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 15:09:44 +10:00
Peter Hutterer
c75c00dac3 fallback: when force-releasing keys, release them directly
An emulated button is recorded as BTN_MIDDLE in the key down mask. If the
device is removed in that state, the BTN_MIDDLE event processed triggers
an assertion when we try to send out the event twice.

Fixes #201

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 15:09:44 +10:00
Peter Hutterer
507441537e evdev: cancel the button scroll timer on device removed
If a device was removed while a button was held down and within the timeout,
the timer was never cancelled (and removed from the timer list), triggering an
assert during device removal.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 15:09:44 +10:00
Peter Hutterer
6f1595a2db meson.build: replace manual checks with cc.has_function()
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 00:10:21 +00:00
Peter Hutterer
b4e97f68b5 meson.build: bump to 1.12.900
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-31 09:47:52 +10:00
Furkan Tokac
59dee41ba1 test: Missing test cases for palm detection based on touch size
Missing tests are written.
2019-01-29 03:19:57 +00:00
Peter Hutterer
c412924003 quirks: enforce uppercase hex numbers
No specific reason other than consistency.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-18 04:31:53 +00:00
Peter Hutterer
8630e0ef67 test: run the 'keep ignoring' arbitration tests on the cintiqs as well
Not 100% why this one was only run on the intuos, but I suspect by accident.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-18 11:09:53 +10:00
Peter Hutterer
d8f1be4f0b test: automate the tablet pairing for the arbitration tests
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-18 11:01:31 +10:00
Peter Hutterer
8987773440 test: store the device type in the test device struct
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-18 11:01:31 +10:00
Peter Hutterer
d4e6a6aadc test: fetch the is-touchpad in arbitration tests from a input property
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-18 11:01:31 +10:00
Peter Hutterer
9b42872ee6 test: don't enable tapping for the touch arbitration test
Looks like a copy/paste error.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-18 11:01:31 +10:00
Peter Hutterer
c67c3872ca test: clarify a confusing comment
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-18 11:01:31 +10:00
Konstantin Kharlamov
15e64b7b60 evdev: don't execute snprintf if not gonna print
Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
2019-01-17 13:08:14 +03:00
Konstantin Kharlamov
d9338b001c evdev: inline evdev_log_msg_va
Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
2019-01-17 09:10:37 +03:00
Peter Hutterer
c9728d8403 doc: add missing @ref
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-17 12:32:48 +10:00
Peter Hutterer
029c0b199a doc: correct a slightly ambiguous @ref wording
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-17 12:32:48 +10:00
Peter Hutterer
c8599ea2ae tools: document show-keycodes option for libinput-record
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-17 10:00:30 +10:00
Peter Hutterer
e453a2bf3e doc/user: fix a leftover html tag
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-16 09:37:10 +10:00
Peter Hutterer
9ae2506c4a Update gitlab templates for label renames
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-16 09:34:29 +10:00
Peter Seiderer
4516ba977c meson.build: enable CPP include check only in case CPP compiler is available
Drop hard meson C++/CPP dependency, only needed for the build-time
header inclusion test, build the test only in case C++/CPP compiler
is available.

Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-15 15:46:51 +10:00
Christoffer Holmstedt
fc029e3fb5 quirks: add ModelBouncingKeys for Contour RollerMouse
The Contour RollerMouse have a button for "double click" which emulates
a double click. The two clicks are so close together that with libinput
heuristics it looks like a worn-out button and triggers debouncing
functionality.

This commit adds support for the RollerMouse Free 2 and RollerMouse
Re:d.

Fixes libinput/libinput#204
2019-01-13 10:37:04 +01:00
Nathaniel Roach
eb0b48151f quirks: don't disable keyboard device for Acer Spin 5 when in tablet mode
As with some other convertible devices, the keyboard is disabled by the system when the device is in tablet mode.
The volume control keys on the side of the unit are not, but still appear from the keyboard to the system.
Don't disable the keyboard when in tablet mode.

Tested working.
2019-01-08 02:24:16 +00:00
Peter Hutterer
62bcac30fc test: add test devices for the Cintiq Pro 16
Reconstructed from the HID descriptors here:
https://github.com/linuxwacom/wacom-hid-descriptors/tree/master/Wacom Cintiq Pro 16/

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-04 03:53:37 +00:00
Peter Hutterer
6d683213db include: update input-event-codes.h to v4.19
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-04 03:53:37 +00:00
Thomas Sailer
f9ec9b8f8d ModelTabletModeNoSuspend=1 is currently only honored for keyboards, but not touchpads. This commit changes that. 2019-01-03 10:15:14 +01:00
Peter Hutterer
a60b5b0f8f doc: fix doxygen references for libinput_get_user_data
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-03 12:03:39 +10:00
Thomas Sailer
988d5b6328 Asus VivoBook Flip 14 TP412UA tablet mode switch misbehaving 2019-01-03 00:19:32 +01:00
Peter Hutterer
b8a04553de tools: libinput-record: record the hid report descriptor where available
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-02 15:24:04 +00:00
Peter Hutterer
29e83bcf94 tools: measure-fuzz: slightly expand the help
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-02 04:59:48 +00:00
Peter Hutterer
b11fe3e91a tools: measure-fuzz: fix a typo
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-02 04:59:48 +00:00
Peter Hutterer
447551aafb tools: measure-fuzz: downgrade the fuzz mismatch error to just a warning
Related to #199

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-01-02 04:59:48 +00:00
Peter Hutterer
a904738730 tools: measure-fuzz: fix exception printing
During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/x86_64-linux-gnu/libinput/libinput-measure-fuzz", line 464, in <module>
    main(sys.argv)
  File "/usr/lib/x86_64-linux-gnu/libinput/libinput-measure-fuzz", line 458, in main
    print('Error: {}'.format(e.message))
AttributeError: 'InvalidConfigurationError' object has no attribute 'message'

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>:
2019-01-02 04:59:48 +00:00
makepost
99bb0ee7cb util: fall back to strtod if no locale in libc
uClibc-ng has experimental locale support but it's incomplete and
disabled by default, for example in Hardened Gentoo.

Fixes #63
2018-12-22 19:58:16 +02:00
makepost
5f39f0bf6f README: update documentation links
Got 404s and placeholders saying that pages have moved.
2018-12-22 19:56:21 +02:00
Peter Hutterer
96a0e8ed66 tools: don't apply config options on device removed
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2018-12-19 15:55:42 +10:00