Commit graph

1149 commits

Author SHA1 Message Date
Peter Hutterer
893fdf9b83 test: switch the touchpad multitap tests over to ranged tests
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-08 14:08:58 +10:00
Peter Hutterer
ca10fc2be7 test: switch the abs ranged tests over to real ranged tests
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-08 14:08:57 +10:00
Peter Hutterer
b97ad3c174 test: add litest_add_ranged* functionality
litest_add_ranged* takes a range parameter that serves as the lower/upper
boundary for a loop. This enables tests to be run multiple times, avoiding the
timeouts we triggered by having the loops inside (e.g. see 2bf8d035c and
6dd02468).

This just wraps the underlying check framework, the ranged variable is
available as "_i" in the test.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-08 14:08:57 +10:00
Peter Hutterer
12000e737e tools: add middle button emulation to listed capabilities
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-07 16:30:08 +10:00
Peter Hutterer
4a56ce17f0 test: use litest_is_button_event() helper
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-07 16:18:10 +10:00
Peter Hutterer
fd301dfba2 test: add litest_is_keyboard_event() helper function
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-07 16:17:50 +10:00
Peter Hutterer
cbfbede748 test: add litest_is_touch_event() helper function
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-07 14:41:00 +10:00
Peter Hutterer
77eb2d5445 test: add litest_is_motion_event() helper
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-07 14:40:59 +10:00
Peter Hutterer
2e38547c79 test: add litest_is_axis_event() helper
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-07 14:40:59 +10:00
Peter Hutterer
6c2d2d7e6c test: re-order the tests to have the likely ones to fail first
Run the touchpad tests first, it's the most likely to fail. It also takes the
longest, so it's annoying to have it fail when you spent a minute watching the
other tests succeed.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-07 14:40:59 +10:00
Peter Hutterer
799ee6c53e test: litest_is_button_event should take an unsigned int
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-07 14:40:59 +10:00
Benjamin Tissoires
0cd36225d7 touchpad: add support for per-finger hovering information
When the device supports true hovering, it reports this
information through ABS_MT_DISTANCE.
When this axis is available, we should rely on it to
(un)hover the touches as BTN_TOUCH is most of the time
unreliable (generated by the mouse emulation in the kernel).

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-07 14:40:53 +10:00
Peter Hutterer
2af94a5dfd filter: add Simon's copyright
This code was largely lifted from the X server in
bb25b2ad29 but didn't take the copyright messages that
applied to that code.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Jonas Ådahl <jadahl@gmail.com>
Acked-by: Simon Thum <simon.thum@gmx.de>
2015-05-07 08:02:58 +10:00
Benjamin Tissoires
92fc816bfe test: rename hover tests into semi_mt_hover
The current hover tests are uniquely designed for some Synaptics
touchpad. libinput can handle hovering through ABS_MT_DISTANCE,
so we need to reserve the "hover" name for real hovering devices.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-06 15:08:36 +10:00
Benjamin Tissoires
22a06792b1 test: bcm5974: down should be marked as static
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-06 15:08:22 +10:00
Peter Hutterer
e7572274df doc: add a page about the test suite
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-06 12:40:12 +10:00
Peter Hutterer
1ea69203ac test: return the right value from open_restricted
fd or negative errno on failure.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-06 11:56:40 +10:00
Peter Hutterer
3844856302 test: move a comment to where it belongs
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-06 11:56:40 +10:00
Peter Hutterer
12df380698 configure.ac: libinput 0.15.0 - this time for real
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-05 17:20:35 +10:00
Peter Hutterer
103fad15e7 configure.ac: libinput 0.15.0
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-05 16:49:44 +10:00
Peter Hutterer
2bf8d035c4 test: split test for invalid ranges into hi/lo
This test can randomly trigger a timeout, depending on how busy the machine
is.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-05 16:49:44 +10:00
Peter Hutterer
91ae98c09c test: add helper function for creating a device not expected to be added
No functional changes

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-05 16:49:44 +10:00
Peter Hutterer
bb2678bfe8 touchpad: when clearing the touchpad state, release fake touches too
Causes an error message in the device_disable_release_tap_n_drag test. When
the touchpad is suspended, all touches are ended in tp_clear_state. Since the
hovering support was added, this returns the touches to TOUCH_HOVERING, a
subsequent tp_handle_state() will turn them back into TOUCH_BEGIN based on
BTN_TOUCH and BTN_TOOL_FINGER still being down.

Clear the fake touch buttons as well after ending the touches, this way the
touch points are reset to TOUCH_NONE as intended.
Once we do that we don't need to manually change the tap finger count when
releasing taps, we can just let the count reset naturally.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-05 07:44:18 +10:00
Peter Hutterer
c9a3c7a7e3 touchpad: drop the tap finger count
Use tp->nfingers_down as trigger when we have no fingers left on the touchpad
and when we should return to idle. If all touchpoints end in the same frame
tp->nfingers is 0. Thus when we handle the first tap release we transition to
IDLE which now needs to handle (and discard) any touch release events.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-05 07:44:18 +10:00
Peter Hutterer
d6867dfae0 touchpad: enable clickfinger by default on some System76 laptops
Bonobo, Clevo, Galago and Kudu have clickpads and no markings ->
enable clickfinger by default.

Lemur and Gazelle have physical buttons, no need for extra configuration.

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

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-05 07:36:14 +10:00
Peter Hutterer
f52dbc5ad9 touchpad: enable clickfinger by default on chromebooks
This matches the vendor default.

Board IDs pulled from modinfo chromeos_laptop, touchpad names from a bit of
googling around.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-04 19:30:46 +10:00
Peter Hutterer
14025099db tools: add to, don't replace, the man page list
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-04 14:29:47 +10:00
Velimir Lisec
ff132b2cfb touchpad: increase drag timeout
libinput supports lifting a finger during dragging and setting it back down
again to continue the drag. Curently the drag timeout is set to
DEFAULT_TAP_TIMEOUT. That is to short, when we're dragging the finger needs to
have enough time to move from one edge of the touchpad to the other. 180ms is
too short for that and causes false timeouts and thus button releases that
cancel the drag.

Introduce DEFAULT_DRAG_TIMEOUT and set it to 500 ms.

Signed-off-by: Velimir Lisec <lisec.velimir@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-04 10:22:58 +10:00
Peter Hutterer
182b7b7da9 touchpad: fix double/multitap timeouts
The current doubletap timeout was incorrect, it gave the user only 180ms to
touch, release, touch, release to recognise a doubletap. But it would also set
a timeout on the second release, delaying the button events by 180ms.

Instead, re-arm the timer on the second touch down. This gives the user 180ms
to release and touch again (or time out). This makes doubletap much more
reliable and reduces the delay between the release and the button events
arriving since the finger down time is already counted.

Same fix for MULTITAP, though we already armed the timer on touch down so we
just have to remove the new timer on touch release which did little but delay
everything.

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

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-05-04 10:22:58 +10:00
Peter Hutterer
d8ec73aead test: add timeout_tapndrag()
Prep work for the upcoming patch to extend the timeout for tap-and-drag.  And
switch the tests that rely on it over to the new function.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-04 10:22:58 +10:00
Peter Hutterer
6dd02468ac test: reduce the multitap tests to 5 taps only
Reduces the risk of accidental timeouts

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-04 10:22:58 +10:00
Peter Hutterer
8ead828e6f Fix a couple of coding style issues
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-01 12:09:57 +10:00
Peter Hutterer
c2ef1854d8 timer: set O_NONBLOCK on the timerfd
Resetting a timerfd empties the data on the fd, so if the timer is reset
between triggering and us reading it, we may block trying to read it.

Since we read events off a device in a loop, a device sending a continuous
flow of events may cause the timer to trigger but delay reading it. If one of
the events cause e.g. the tap timer to be set, the timerfd may be empty at the
time of reading.

Suggested-by: Derek Foreman <derekf@osg.samsung.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-01 09:09:38 +10:00
Derek Foreman
28ed7a6265 Set O_CLOEXEC when opening devices
We'd rather keep these out of the hands of children.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-05-01 08:56:11 +10:00
Peter Hutterer
8e667070ff tools: ship the event-debug tool as an installed libinput-debug-events tool
Rebuild the same binary but without the special LDFLAG. The event-debug tool
is left as-is to allow for easy debugging with gdb, the new tool is now
libtool-enabled and can't be run directly in gdb without installing it first.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-04-30 19:20:49 +10:00
Peter Hutterer
db03e59c52 test: add a note to the touch double-down event
libevdev filters the ABS_MT_TRACKING_ID event for a double-touch down like
this so we never see this in libinput. We see an error message from libevdev
but otherwise this test is a false negative.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-04-30 18:22:25 +10:00
Peter Hutterer
2d86dc2c6e timer: drain data on the timerfd when it triggers
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-04-30 17:48:25 +10:00
Peter Hutterer
b6238b8286 tools: fix broken build if builddir != srcdir
Introduced in 6b6f8151a4, libinput-version.h is
in the builddir.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-04-30 17:48:02 +10:00
Peter Hutterer
a21ab9eb98 evdev: indentation fix
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-04-30 16:44:43 +10:00
Peter Hutterer
412bb6196d tools: fix typo in man page
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-04-30 16:44:43 +10:00
Peter Hutterer
6b6f8151a4 tools: print version number in libinput-list-devices
Makes debugging a bit easier when you can just ask users to do that instead of
digging around in whatever packaging system they have.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
2015-04-30 11:30:38 +10:00
Peter Hutterer
a7b2d04e90 evdev: enable button scrolling by default on mice without wheels
If we have a middle button but no wheels, enable on-button scrolling for the
middle button by default. This applies e.g. to the Logitech trackball added as
new test device here.

This makes the separate check for POINTINGSTICK obsolete but I'd rather leave
this in to be more explicit about it.

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

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-04-28 17:12:31 +10:00
Peter Hutterer
512a00505a test: expand the middle button emulation tests
Instead of excluding the pointing stick devices, disable middle button
scrolling on those and run them anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-04-28 16:56:09 +10:00
Peter Hutterer
106e78cf8a test: change the suite name for two of the pointer button tests
No need for a separate test suite group here.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-04-28 16:56:01 +10:00
Peter Hutterer
1352fe0432 test: fix touch up for multitap-n-drag test
Released the wrong touch point, causing warnings:
libevdev error in sanitize_event: BUG: Device "litest SynPS/2 Synaptics
TouchPad" received a double tracking ID 6 in slot 0.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-04-28 11:53:11 +10:00
Peter Hutterer
fe4e707561 doc: expand scrolling documentation
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-04-28 10:47:01 +10:00
Peter Hutterer
e0f467e70d test: upgrade to the Microsoft Surface Type Cover
Almost identical to the one we already had but this one also has ABS_X/Y to
mess things up. Update the existing one, no need to add a separate device here.

The fake MT touch test needs to be updated now though. A fake MT device may be
an absolute device too, so if we use the touch_down() handlers we may generate
abs pointer events. That's valid, we only check for no touch events here.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
2015-04-28 07:45:39 +10:00
Peter Hutterer
5e85957ad2 evdev: init pointer accel filters when we have rel x/y axes
Some devices provide abs x/y and rel x/y. We can't know which event the device
will send. The Microsoft Surface Type Cover sends relative events, which
then crashes libinput when we don't have an accel filter set up.

So instead of checking that the device doesn't have ABS_X/Y, check for the
device to have REL_X/Y instead.

https://bugzilla.redhat.com/show_bug.cgi?id=1206869

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
2015-04-28 07:45:32 +10:00
Peter Hutterer
6083fafe53 evdev: reject devices with only REL_X but no REL_Y (or vice versa)
Not sure if any exists, if they do let's see if a user files a bug report
first so we know what to do with those (they're most likely buttonsets).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
2015-04-28 07:45:17 +10:00
Peter Hutterer
9191010ac2 test: add the MS Surface Type Cover to the list of devices
Added in d2842893a8 but never added to the list
of devices so none of the tests ran against it.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
2015-04-27 13:24:41 +10:00