Commit graph

1411 commits

Author SHA1 Message Date
Peter Hutterer
2dbf998aa8 touchpad: a pressure change alone needs touch processing, mark as dirty
A thumb may not move, but may change pressure so we need to process
accordingly.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-24 08:50:22 +10:00
Peter Hutterer
303565c329 test: fix default axis value assignment
Was assigned to -1 if no custom axes were provided.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-24 08:50:22 +10:00
Peter Hutterer
8ba5b9cbf9 test: only run 3-slot test for touchpads with three slots
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-24 08:50:22 +10:00
Peter Hutterer
689632cd0a touchpad: only try thumb detection in the lowest 15/8mm
That's the most likely area it will be resting in, if it's sitting anywhere
above that it's likely part of an interaction.

A thumb in the lowest 15mm needs to trigger the pressure threshold before it's
labelled a thumb. A thumb in the lowest 8mm is considered a thumb if it
remains there for 300ms. Regardless of the pressure, since we can't reliably
get pressure here. If a thumb moves out of the area, or starts outside of that
area it is never a thumb.

If edge scrolling is enabled, the 8mm threshold is ineffective since we'll
have normal interaction in that zone for horizontal scrolling.

The thumb tests now require all touchpads to be switched to clickfinger, if we
test for thumb detection on the bottom of the pad we won't get expected
motion events due to the software button area.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-24 08:50:17 +10:00
Peter Hutterer
7e9ef68dd6 touchpad: scale thumb pressure threshold with the resolution
On touchpads with a higher resolution we also see higher pressure values.
Scale accordingly, but use the T440s as reference and don't go below that
device's threshold. A false positive is worse than a false negative when it
comes to thumb detection.

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

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-22 09:55:12 +10:00
Peter Hutterer
7a6026104b touchpad: use the top-most touch for fake finger positions
The average human hand has four fingers but only one thumb, i.e. the chance of
a fake finger being close to the top-most touch is higher than to whatever the
first touch was (which may be a thumb at the bottom of the touchpad).
So search for the top-most real touch and copy its position into the fake
touches.

This also fixes another bug with the previous code - the first slot may not be
active but we still used its position for the fake touches. Whether that was
really triggerable is questionable though.

The test is only run for the T440 touchpad - we know it's big enough to
enable thumb detection and that way we don't have to double-check in the how
big the touchpad is, etc.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-22 08:59:24 +10:00
Peter Hutterer
f6bef12bfa touchpad: ignore thumbs when counting clickfingers
We may have four fingers on the touchpad - three real ones + a thumb. Count it
as three-finger click then.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-22 08:59:22 +10:00
Peter Hutterer
6bb4b26f30 touchpad: 4-finger clickfingers are middle button clicks
If a thumb is resting with a three-finger click, that must be a middle-click.
And the odd case where we have a real four-finger click doesn't need worrying
about.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-22 08:58:54 +10:00
Peter Hutterer
058d05e589 touchpad: only enable thumb detection on clickpads
The use-case we have thumb detection for is to let a user rest a thumb on the
touchpad before clicking. On a touchpad with physical buttons, the thumb won't
be resting on the touchpad.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-21 16:35:31 +10:00
Peter Hutterer
c06a173e58 touchpad: skip thumb detection for touchpads smaller than 50mm
Gets a bit cramped if you're trying to rest the thumb on a touchpad that
small.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-07-21 16:35:31 +10:00
Peter Hutterer
bec07c4198 Move CASE_RETURN_STRING to libinput-util.h
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-21 16:35:30 +10:00
Peter Hutterer
f5abded2e5 tools: handle the initial set of events at event-gui's startup
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-21 15:17:54 +10:00
Peter Hutterer
c096bedd8b evdev: restore pointing stick const accel property parsing
Regression introduced in 8302860.

Reading the DPI before evdev_configure_device makes it lose on the trackpoint
flag, causing libinput to ignore the POINTINGSTICK_CONST_ACCEL property.

8302860 moved it up so we can init accel based on the DPI, this patch simply
moves istart t before the acceleration is initialized.

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

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-21 11:08:50 +10:00
Peter Hutterer
d109a00cbf Mark internal log functions with attribute(printf)
And fix all the places where we passed in garbage.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-21 11:08:46 +10:00
Peter Hutterer
dd0111b32d evdev: log a trackpoint const accel setting
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-21 07:35:54 +10:00
Thomas Hindoe Paaboel Andersen
c1dbd67f3b Code cleanup
Removes some dead assignments, an unused function, and
uses %d format specifier for int.

Signed-off-by: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-20 11:30:06 +10:00
Peter Hutterer
ae32e0a17b Drop vector_length(), replace with hypot(3)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-20 11:18:53 +10:00
Peter Hutterer
b0b11a286d touchpad: drop two now unused defines
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-20 11:18:23 +10:00
Peter Hutterer
57b203c9b9 tools: only print angle/scale for pinch events
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-20 11:18:21 +10:00
Peter Hutterer
84713ac15b touchpad: fix typo
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-20 11:18:06 +10:00
Peter Hutterer
ecda01eb4c test: add 3fg and 4fg clickfinger tests
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-20 11:18:03 +10:00
Peter Hutterer
4ca70c813f touchpad: remove a leftover check for fake resolution
obsolete since 8658ff159d. And once we remove
that all we checkf or is Apple models which we set a resolution for in
systemd. So that check is obsolete now too.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-20 11:17:55 +10:00
Peter Hutterer
32f298c127 udev: don't install the litest udev rules
They are installed by the test.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-16 15:15:20 +10:00
Peter Hutterer
e60f360265 configure.ac: libinput 0.20.0
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-16 14:15:19 +10:00
Peter Hutterer
c618ed9170 test: fix path to custom litest rules
Fixes distcheck

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-16 14:15:19 +10:00
Peter Hutterer
e3c9106090 doc: use bootstrap for doxygen styling
Makes the documentation less of an eyesore.

Header/footer from:
https://github.com/Velron/doxygen-bootstrapped, Apache-licensed

Bootstrap style from:
https://bootswatch.com/paper/, MIT licensed

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-16 14:15:19 +10:00
Peter Hutterer
0172bfddbd doc: strip doxygen file from all default values
Only keep those that we changed locally, which makes it much easier to detect
what we're actually changing.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-07-16 11:10:22 +10:00
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
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
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