Commit graph

957 commits

Author SHA1 Message Date
Peter Hutterer
395c449c8e Merge branch 'master' into tablet-support
Conflicts:
	src/libinput.h
2015-01-16 07:55:23 +10:00
Peter Hutterer
c8dc81b48f configure.ac: libinput 0.8
Note: soname bump

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-15 11:48:15 +10:00
Peter Hutterer
f935837c45 doc: move DOTFILE_DIRS to libinput.doxygen.in
We specify a bunch of other (static) things in the .in file, let's be
consistent.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-15 11:48:15 +10:00
Peter Hutterer
f2a446aafd doc: specify the IMAGE_PATH relative to the source
Fixes doxygen build with custom builddirs

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-15 11:48:15 +10:00
Peter Hutterer
2066f3636a doc: add some missing files to EXTRA_DIST
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-15 11:48:15 +10:00
Stephen Chandler Paul
2af608cf02 Rename functions for left handed device configurations
Some devices require more than just flipping around the buttons, such as
tablets.
When it comes to devices like tablets, because the position of the palm rest is
on the right, the entire tablet has to be flipped around in order to be usable
by lefties. As such, this requires that we reverse the coordinates of the
tablets in addition to flipping the buttons on the tablet. As such, renaming
these functions so that they aren't specific to devices where only the buttons
are flipped seems appropriate.

Signed-off-by: Stephen Chandler Paul <thatslyude@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-15 10:17:57 +10:00
Peter Hutterer
cb2f2ed613 Merge branch 'merged-scroll-events'
This is merged on top of the wheel normalization patches. Those introduced an
axis source and an extra "discrete" value to the various internal and external
APIs. This branch changed from a single value to passing dx/dy into all scroll
events.

The conflicts are to change everything to take x, y, x_discrete, y_discrete as
values (and the source axis mask of course).

Conflicts:
	src/evdev-mt-touchpad-edge-scroll.c
	src/evdev.c
	src/libinput-private.h
	src/libinput.c
2015-01-15 10:11:44 +10:00
Peter Hutterer
1daa1a11aa Add libinput_event_pointer_get_axis_value_discrete() to count wheel clicks
The recent normalization of wheel events means we get the angle in degrees but
we don't know how this corresponds to clicks. The M325 has a 20 degree click
angle, most other mice have 15 degrees. So an angle of 60 can be 3 or 4 click
events.

Most clients care more about the click count than the angle on a mouse wheel.
Provide that value when needed.

Adding a discrete value to the axis event leaves the possibility of defining
discrete units for finger/continuous scroll sources in the future. Right now,
these will always reuturn 0.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-01-15 09:22:14 +10:00
Peter Hutterer
1baf109b40 Change axis events to carry all directions
Sending separate axis events instead of one unified events is limiting,
especially when simultaneously scrolling in both directions and the caller
tries to implement kinetic scrolling.

Take a page from the tablet-support branch and instead implement the axis
event as a generic event that can contain multiple axes simultaneously.

Right now we only have two (scroll) axes and we could easily just check both
for non-zero values. If we want to allow further axes in the future, we need
a check whether an axis is set in an event, that's what
libinput_event_pointer_has_axis to scroll events() is for.

We also need the mask to notify of a scroll stop event, which could otherwise
be confused as a vertical-only or horizontal-only event.

This is an API and ABI break.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2015-01-13 13:54:21 +10:00
Peter Hutterer
c35885e87d Parse the MOUSE_WHEEL_CLICK_ANGLE udev property if present
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2015-01-13 13:35:42 +10:00
Peter Hutterer
2708be27b2 Change the scroll step distance to 15 and document it as degrees
Similar to the mouse resolution, let's make the scroll distance a sensible
predictable value. Most mice use a 15 degree angle per scroll click, so let's
change to that. This will alter behaviour in clients that expect 10.

We return doubles for the axis value, so that leaves the option of
really fine-grained step sizes in the future.

We currently assume all mice have 15 degree angles. Like the DPI settings, it
will require a udev property to be set. Patch for that to follow.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2015-01-13 13:35:42 +10:00
Peter Hutterer
2ff009a45d Add a comment to clarify what the prop parameter is
prop isn't the full property line, just the value.
And document the return value too while we're at it.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-13 13:35:42 +10:00
Stephen Chandler Paul
d28da2ca4e libinput.h: Fix some line wrapping in documentation
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-13 13:16:50 +10:00
Marek Chalupa
6ba8f547d2 build-pedantic: use main(void)
Main has unused parameters argc and argv. Since they are unused and
C 99 allows to prototype main as 'int main(void)',
remove them and replace by void. It fixes build when unused parameters
are treated as errors.

Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-12 07:54:12 +10:00
Peter Hutterer
fe8e6706bd tools: switch signal handler in event-debug
Under gdb, signalfd will still deliver the signal when gdb itself is
interrupted and quit event-debug. For a debugging tool, that's not optimal.
Switch to a normal signal handler instead, signalfd is overkill here anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2015-01-08 13:19:55 +10:00
Peter Hutterer
01b0c8fbf5 tools: fail if we can't set up signal handlers in event-debug
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-08 09:52:08 +10:00
Jonas Ådahl
2b00d24a94 Dropped an extra 'the'
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-07 13:33:27 +08:00
Jonas Ådahl
bdebf2bc4e s/discreet/discrete/
Discreet means to not draw attention.

Discrete means non-continuous.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-07 13:32:24 +08:00
Peter Hutterer
d61f050d7f touchpad: fix a clang compiler warning
Causes the valgrind tests to fail as tp is considered uninitialized.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-06 09:53:30 +10:00
Peter Hutterer
70a34b0bc4 test: fix a clang compiler warning
misc.c:562:10: warning: missing field 'expected_dpi' initializer
[-Wmissing-field-initializers]
                { NULL }

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-06 09:53:30 +10:00
Peter Hutterer
f9ccfdb49a test: drop empty test device interfaces
We can just set the interface component to NULL directly instead. Fixes clang
warnings:

litest-mouse.c:38:1: warning: missing field 'touch_move' initializer
[-Wmissing-field-initializers]

litest-trackpoint.c:38:1: warning: missing field 'touch_move' initializer
[-Wmissing-field-initializers]

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-06 09:53:25 +10:00
Peter Hutterer
bdb8fd911c Drop unused function calc_penumbral_gradient
Unused since 4913fd7a48

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-06 09:12:51 +10:00
Peter Hutterer
f0abc31f1c Minor documentation wording improvement
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-05 15:02:29 +10:00
Peter Hutterer
f11cd30f00 tools: print device capabilities in event-debug
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-05 08:57:22 +10:00
Peter Hutterer
9c297aefae tools: change name/seat/logical seat format string
Change the seat field widths to match the usual seat0/default. This compresses
the output a bit, we're printing too much already.

Also, one of my mice has >30 chars, it's annoying to look at. Fix this.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-05 08:57:14 +10:00
Peter Hutterer
20ac4b3abd Add pointer axis sources to the API
For a caller to implement/provide kinetic scrolling ("inertial scrolling",
"fling scrolling"), it needs to know how the scrolling motion was implemented,
and what to expect in the future. Add this information to the pointer axis
event.

The three scroll sources we have are:
* wheels: scrolling is in discreet steps, you don't know when it ends, the
  wheel will just stop sending events
* fingers: scrolling is continuous coordinate space, we know when it stops and
  we can tell the caller
* continuous: scrolling is in continuous coordinate space but we may or may not
  know when it stops. if scroll lock is used, the device may never technically
  get out of scroll mode even if it doesn't send events at any given moment
  Use case: trackpoint/trackball scroll emulation on button press

The stop event is now codified in the API documentation, so callers can use
that for kinetic scrolling. libinput does not implement kinetic scrolling
itself.

Not covered by this patch:
* The wheel event is currently defined as "typical mouse wheel step", this is
  different to Qt where the step value is 1/8 of a degree. Some better
  definition here may help.
* It is unclear how an absolute device would map into relative motion if the
  device itself is not controlling absolute motion.
* For diagonal scrolling, the vertical/horizontal terminator events would come
  in separately. The caller would have to deal with that somehow.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Original patch, before the rebase onto today's master:
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2014-12-24 10:47:00 +10:00
Peter Hutterer
7779b25f80 test: add edge-scrolling tests
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-24 10:32:21 +10:00
Peter Hutterer
6e6cca47af Add libinput_set_user_data
Previously, the pointer could only be passed into the context on creation
time and was immutable after that.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 14:49:39 +10:00
Peter Hutterer
7a65c1f636 Declare libinput.sym as dependency
We want to rebuild whenever it changes

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 13:27:13 +10:00
Peter Hutterer
6028e126fe touchpad: revert to pointer movement when stopping twofinger scrolling
Add a boolean state machine for two-finger scrolling so we know when we're
currently scrolling. If we were scrolling and it stops, pick the active
touch as pointer touch so we can go back to pointer movement without having to
lift the finger off the touchpad.

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

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 11:14:39 +10:00
Peter Hutterer
54c972402f touchpad: rename scroll.state to scroll.edge_state
In preparation for a twofinger_state field, to avoid confusion.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 11:14:39 +10:00
Peter Hutterer
b74330255b test: switch tests to use the new helper function
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 11:14:39 +10:00
Peter Hutterer
c464458f82 test: add helper function for checking for a specific event type
In a few tests we care about that a specific set of events are in the queue
but not about the details of the events (usually checked elsewhere). Instead
of manual loops, provide a helper function that also checks that there is at
least one of those events in the queue.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 11:14:39 +10:00
Peter Hutterer
6138babc12 test: switch touch points around for semi-mt tap-n-drag testing
The tests ignored it when motion events never happened - but that's mostly
what these tests are about. This only happened for semi-mt devices that use
the bounding box only, not separate touch points. Switching the touch points
around that the bounding box doesn't interfere causes the test to work as
expected.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 11:14:39 +10:00
Peter Hutterer
df47231719 tools: pass the userdata to the context
The event-gui needs this but it got dropped in
6ee8c585, causing a crash. Oops.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 11:14:39 +10:00
Peter Hutterer
6ee8c5854c tools: use the new shared lib from event-gui
This gives the event gui the ability to use the path backend, and any
configuration toggles given on the commandline.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 10:50:31 +10:00
Peter Hutterer
363a7f783f tools: add support for enabling/disabling left-handed button mappings
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 10:50:31 +10:00
Peter Hutterer
333f4e0347 tools: add support to enable/disable natural scrolling
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 10:50:31 +10:00
Peter Hutterer
b8e63b54d3 tools: move applying device configuration to shared lib
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 10:50:31 +10:00
Peter Hutterer
3628f7016e tools: move opening the backend to the shared lib too
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 10:50:31 +10:00
Peter Hutterer
e205615c98 tools: move option parsing to a helper library
event-debug and event-gui can and should share this

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 10:50:31 +10:00
Peter Hutterer
bc6925d6c2 tools: add --enable-tap to event-debug
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 10:50:31 +10:00
Peter Hutterer
93a2cb21e0 tools: make event-debug's option parsing more flexible
We need to be able to turn config options on/off for testing, so switch to
something that's a bit more flexible than characters that represent the
options.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 10:50:31 +10:00
Peter Hutterer
380137ca29 doc: move the wiki's palm detection docs to here
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 09:51:37 +10:00
Peter Hutterer
174364580d doc: move the wiki's tapping documentation to here
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 09:51:37 +10:00
Peter Hutterer
169fdadd82 doc: move the wiki's scrolling documentation to here
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 09:51:37 +10:00
Peter Hutterer
700ec897eb doc: add link to udev hwdb in rel motion normalization doc
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-23 08:15:00 +10:00
Peter Hutterer
ba3166c113 doc: document the calibration as well
Requires MathJax for client-side, but that's an easy dependency to accept and
better than requiring Latex to build the documentation.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-22 12:57:48 +10:00
Peter Hutterer
d04d0c19dd doc: improve seat documentation
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-22 12:57:48 +10:00
Peter Hutterer
e537d84305 doc: move "device configuration via udev" page to here
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-22 12:53:23 +10:00