Commit graph

4255 commits

Author SHA1 Message Date
Peter Hutterer
1ff5955c65 doc: add a page about the available tools
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-16 10:58:04 +10:00
Peter Hutterer
17ca33fa55 doc: group the "related pages" by general topic
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-16 10:58:04 +10:00
Peter Hutterer
9784b1d451 touchpad: drop thumb handling from gestures
Thumb detection interfered with gestures a fair bit but it shouldn't. A pinch
gesture with a thumb is a fairly natural move so we shouldn't cancel that.
A swipe gesture with a thumb on the touchpad - well, don't do that. No need
for code here.

Reported-by: Carlos Garnacho <carlosg@gnome.org>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Carlos Garnacho <carlosg@gnome.org>
2015-07-16 08:09:50 +10:00
Peter Hutterer
abed81f29b test: add a couple of basic gesture tests
3finger swipe, pinch and spread. While we expect the pinch/spread to have a
zero angle, the discrete coordinates we use cause some angle, but below 1
degree.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-15 14:48:52 +10:00
Peter Hutterer
a13d936d74 evdev: parse LIBINPUT_ATTR_RESOLUTION_HINT
For Elantech touchpads, we know that the resolution is 31u/mm (800dpi) for
v1-v3 firmware. Set this as a hint until we get either the kernel or systemd
to set this for us.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-15 12:49:44 +10:00
Peter Hutterer
a78efc0e2c touchpad: fix typo in comment
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-15 07:33:12 +10:00
Peter Hutterer
e32d94dc1b test: add test for udev ID_INPUT_TABLET tagging
We rely on libwacom for some of these tags, make sure it works as expected.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-14 14:36:51 +10:00
Peter Hutterer
6896bfd3f5 test: check for fcntl() return value
Mostly to silence coverity complaints.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-14 14:19:25 +10:00
Peter Hutterer
dc334a13c9 test: fix compiler warning about tablet test
test.h:421:49: warning: ‘last_y’ may be used uninitialized in this function
[-Wmaybe-uninitialized]

Cannot actually happen, if we don't get into the while loop where we
initialize it, we would assert.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-14 13:13:34 +10:00
Peter Hutterer
9e705bf334 Merge branch 'master' into tablet-support 2015-07-14 13:13:11 +10:00
Peter Hutterer
8658ff159d touchpad: drop fake resolution handling
Now that we have all devices init a fixed resolution we don't need code to
handle custom cases anymore.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-14 10:12:12 +10:00
Peter Hutterer
3bbcffe488 touchpad: default to a 69x50mm sized touchpad
The previous approach of using the axis ranges and approximating parameters
based on the x/y axis range clutters up the code and is generally unreliable.
If we look at Synaptics touchpads, the resolution ranges from 42 to 130 while
the axes stay the same axis range. Other touchpads likely have a similar
variation across the various models.

Let's make this simpler in code: unless we know otherwise, simply assume a
default-sized touchpad.
Anything that deviates from that can be fixed with the new hwdb entries to
provide a more correct setting.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-14 10:12:12 +10:00
Peter Hutterer
fcd7af86e2 udev: add size hint for apple touchpads
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-14 10:12:12 +10:00
Peter Hutterer
a74dcf965a udev: add ALPS firmware detection and size properties
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-14 10:12:12 +10:00
Peter Hutterer
b06a1be013 udev: add a model-quirks callout
Some model-specific information isn't available through udev properties. This
callout is used to query the device directly and set a property that we can
then match on for the hwdb entries.

This is geared for Elantech and ALPS touchpads where the firmware version is
the interesting bit. The udev rule is added already to match on that, note
that the callout doesn't do anything at this point. The various
touchpad-related things will be added separately.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-14 10:12:12 +10:00
Peter Hutterer
a4f5abd18e evdev: use LIBINPUT_ATTR_SIZE_HINT for resolutions
Touchpads, notably Elantech, ALPS and bcm5974 don't provide x/y resolution
until recent generations.
Add a new property, LIBINPUT_ATTR_SIZE_HINT, that provides size information to
libinput. Note that this property *does not* override true resolution values,
it is only used when the resolution is missing. It is used merely as an
approximate size hint.

If the resolution for a specific device is known it should be added to the
udev hwdb so it can be set globally. See the bcm5974 entries here:
http://cgit.freedesktop.org/systemd/systemd/tree/hwdb/60-evdev.hwdb.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-14 10:12:12 +10:00
Peter Hutterer
5bebd4aea4 util: add a helper function to parse a "WIDTHxHEIGHT" property
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-14 10:12:12 +10:00
Peter Hutterer
35fb5412c5 test: remove some excessive linebreaks
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-13 15:41:13 +10:00
Peter Hutterer
c7498a9698 touchpad: drop obsolete comment
Comment is obsolete now that we have edge scrolling on clickpads, see
abff4a1c24

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-13 11:13:16 +10:00
Peter Hutterer
aab4ccac5c touchpad: add gesture state debug helper
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-13 10:22:16 +10:00
Peter Hutterer
cbaa79cfdb test: add an Elantech touchpad device
This is an old recording and predates properties. It's not a clickpad, we
assume INPUT_PROP_POINTER is set.
From: https://bugs.freedesktop.org/attachment.cgi?id=57154

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-13 09:11:28 +10:00
Peter Hutterer
5c76e6f47f test: prefix all test device files with litest-device
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-13 09:11:26 +10:00
Peter Hutterer
55435a707f test: add an Apple Magic Trackpad test device
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-13 09:11:13 +10:00
Peter Hutterer
74a8d6546e test: move finger position to test for right button down
On large touchpads with resolution, 90% of the touchpad may be north of the
button.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-13 09:11:13 +10:00
Peter Hutterer
fa67be9e3c test: reduce movement of finger while pinned
Otherwise the test fails on large touchpads with resolution (magic trackpad).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-13 09:11:09 +10:00
Peter Hutterer
3b419fb17e test: replace hardcoded wacom ID with the #define
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-13 09:11:08 +10:00
Peter Hutterer
3734a67eef test: slow down 2fg slow scroll movement
To avoid test case failures when we switch to forced resolutions.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-10 11:43:42 +10:00
Peter Hutterer
cc46e00e81 test: fix memleak in the udev_device_sysname() test
If a device sends other events at startup, those events weren't freed. This
can happen on tablet devices that send proximity events immediately after
DEVICE_ADDED.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-09 16:47:07 +10:00
Peter Hutterer
bfce05db05 test: add test for partial tablet deltas
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-09 15:46:20 +10:00
Peter Hutterer
d195a96212 doc: drop a confusing note
This note doesn't add anything, the delta to the last changed is the same as
the delta to the last event, otherwise it'd be 0.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-09 15:05:44 +10:00
Peter Hutterer
e14d1a08a4 doc: improve the tablet documentation
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-09 15:05:44 +10:00
Peter Hutterer
6e8dc031ba evdev: simplify setting a fake resolution
The only two callers passed in the fake resolution anyway, so we don't need
extra parameters here.
We don't allow devices with only x or y resolution set, either both or none.
And we can use libevdev_set_abs_resolution() rather than handling absinfo
structs.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:29:12 +10:00
Peter Hutterer
4e39443757 udev: make sure the udev callout path is valid for a test run
udev requires callout binaries to sit in /lib/udev or otherwise provide an
absolute path. The test suite should work without installing everything first,
so create two rule files - one to install, one with the path to the
$builddir/test

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:29:06 +10:00
Peter Hutterer
cc59c8986f test: add touchpad thumb detection tests
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:27:53 +10:00
Peter Hutterer
4a463ca702 touchpad: work thumb detection into the tap state machine
Most thumbs are detected a few events into the sequence. Work this into parts
of the tapping state machine. Only the most common use-case is handled here -
if the first finger ends up being marked as a thumb, we return to the idle
state and ignore that touch sequence.

At any other state, we handle thumbs like any other finger.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:27:53 +10:00
Peter Hutterer
3dcf28b919 touchpad: add pressure-based thumb-detection
All touchpad recordings seen so far show that a value above 100 is definitely
a thumb or a palm. Values below are harder to discern, and the same isn't true
for touchpads supporting ABS_PRESSURE instead of ABS_MT_PRESSURE.

The handling of a touch is as outlined in tp_thumb_detect:
* thumbs are ignored for pointer motion
* thumbs cancel gestures
* thumbs are ignored for clickfinger count
* edge scrolling doesn't care either way
* software buttons don't care either way
* tap: only if thumb on begin

The handling of thumbs while tapping is the simplest approach only, more to
come in follow-up patches.

Note that "thumb" is the synonym for "this touch is too big to be a
fingertip". Which means that a light thumb touch will still be counted as a
finger. The side-effect here is that thumbs resting a the bottom edge of the
touchpad will almost certainly not trigger the pressure threshold because
most of the thumb is off the touchpad.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:27:53 +10:00
Peter Hutterer
4a3288dc59 test: allow for a default value on LITEST_AUTO_ASSIGNS
The touchpads currently all send a default value of 30 for ABS_PRESSURE. For
some tests we want to have a custom pressure but changing all tests isn't
sensible. So hook each device up to send a default value of 30 if it isn't
overridden in the test itself.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:27:53 +10:00
Peter Hutterer
7d314738fb touchpad: be smarter about clickfinger thumb detection
Watching a colleague try clickfinger right-click after enabling it the first
time showed that the vertical distance is too small. Increase it to 30mm
instead.

Increase the allowed spread between fingers to 40x30mm, but check if one of
the fingers is in the bottom-most 20mm of the touchpad. If that's the case,
and the touchpad is large enough to be feasable for resting a thumb on it,
discard the finger for clickfinger count.

If both fingers are in that area or one finger is in the area and they're
really close together, the fingers count separately and are not regarded as
thumb.

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

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:24:17 +10:00
Peter Hutterer
abff4a1c24 touchpad: allow edge scrolling on clickpads
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:24:17 +10:00
Peter Hutterer
77aca3c194 test: add helper function for enabling click methods
Makes the test code easier to read. In tests where we explicitly check the API
the real calls were left in place.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:24:17 +10:00
Peter Hutterer
9a8238836e test: move enable_edge_scroll up
No functional changes, just so we can group those helpers together.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-09 11:24:17 +10:00
Peter Hutterer
ffb19421a3 touchpad: fix a misaligned {
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-09 10:55:30 +10:00
Peter Hutterer
b45fe45b1c tablet: use libwacom_new_from_path() to handle more tablets
Some tablets cannot be differentiated by pid/vid alone, use the device path
instead - that gives libwacom the ability to extract the information required
to handle the device (libwacom doesn't open the path, it just reads through
the sysfs entry of the device).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-07-08 14:19:31 +10:00
Peter Hutterer
be5c7d7176 tablet: rely on libwacom for the list of axis capabilities
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2015-07-08 14:19:30 +10:00
Peter Hutterer
95089b77d4 Merge branch 'master' into tablet-support
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-08 13:50:24 +10:00
Peter Hutterer
bc17221570 Add more rules to CODING_STYLE
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-08 09:19:05 +10:00
Andreas Pokorny
1309718c00 litest: floating point comparison macros
Adds the macros ck_assert_double_{eq,ne,lt,gt,le,ge} to compare double
values using a fixed tolerance value. The tolerance value is
picked based on the range of values to be expected by the libinput API.

Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-07 17:49:17 +10:00
Andreas Pokorny
2f8703620e litest: add nexus4 style touch screen without orientation
This device provides a circular touch point size and and hence lacks
orientation. It will be used to test default value handling.

Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-07 17:49:15 +10:00
Andreas Pokorny
ce86418ad0 litest: add a generic multitouch screen
Adds a device with various touch related axes and respective device features
to litest.

Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-07 17:49:14 +10:00
Andreas Pokorny
e6db46171a litest: add axis_replacement from tablet branch
This change adds strict axis_replacement and litest_touch_move_extended
and litest_touch_down_extended to simulate changes to other axes during
touch down and move events.

Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-07 17:49:12 +10:00