libinput/src
Peter Hutterer e3a43902f9 Introduce device groups to group logical devices together
Devices like Wacom tablets have multiple event nodes (touch, pad and stylus).
This requires some logical grouping, e.g. setting an Intuos 5 tablet
left-handed effectively turns it upside down. That then applies to both the
stylus and the touch device.

Merging the devices into one struct libinput_device is not feasable, it
complicates the API for little benefit. A caller would still need access to
all subdevices to get udev handles, etc. Some configuration options apply to
the whole device (left-handed) but some (may) only apply to a single subdevice
(calibration, natural scrolling).

Addressing this would make the libinput API unwieldly and hard to use.

Instead, add a device group concept. Each device is a member of a device
group - a singleton for most devices. Wacom tablets will have a single group
across multiple devices, allowing the caller to associate the devices together
if needed.

The API is intentionally very simple and requires the caller to keep track of
groups and which/how many devices are in it. The caller has more powerful
libraries available to do that than we have.

This patch does not address the actual merging of devices into the same
device group, it simply creates a new group for each new device.

[rebased on top of 0.10]
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2015-02-06 11:08:43 +10:00
..
evdev-mt-touchpad-buttons.c touchpad: mark two switch fallthroughs with comments 2015-02-04 09:11:46 +10:00
evdev-mt-touchpad-edge-scroll.c touchpad: add a TOUCH_HOVERING state 2015-01-16 07:42:47 +10:00
evdev-mt-touchpad-tap.c touchpad: fix a clang compiler warning 2015-01-06 09:53:30 +10:00
evdev-mt-touchpad.c test: add per-device udev rule support 2015-02-03 10:34:26 +10:00
evdev-mt-touchpad.h touchpad: hook up click method configuration 2015-01-16 10:34:24 +10:00
evdev.c Introduce device groups to group logical devices together 2015-02-06 11:08:43 +10:00
evdev.h touchpad: re-route trackpoint buttons on the *50 Lenovo series 2015-01-29 14:43:57 +10:00
filter-private.h filter: add a configurable speed interface 2014-09-23 10:46:22 +10:00
filter.c filter: zalloc the struct to make sure the speed is initialized 2015-02-03 10:37:51 +10:00
filter.h Change default DPI to 1000 2014-12-02 10:16:31 +10:00
libinput-private.h Introduce device groups to group logical devices together 2015-02-06 11:08:43 +10:00
libinput-util.c Parse the MOUSE_WHEEL_CLICK_ANGLE udev property if present 2015-01-13 13:35:42 +10:00
libinput-util.h Change axis events to carry all directions 2015-01-13 13:54:21 +10:00
libinput-version.h.in Port evdev code to be used as a shared library 2013-11-12 22:37:20 +01:00
libinput.c Introduce device groups to group logical devices together 2015-02-06 11:08:43 +10:00
libinput.h Introduce device groups to group logical devices together 2015-02-06 11:08:43 +10:00
libinput.pc.in Add -lrt to the libs 2014-07-03 09:59:43 +10:00
libinput.sym Introduce device groups to group logical devices together 2015-02-06 11:08:43 +10:00
Makefile.am Declare libinput.sym as dependency 2014-12-23 13:27:13 +10:00
path.c path: make sure udev devices are initialized before usage 2015-02-04 08:14:50 +10:00
path.h path: store the udev device instead of just the devnode 2014-11-25 16:33:01 +10:00
timer.c Add a helper function for clock_gettime 2014-09-18 11:30:15 +10:00
timer.h timer.h: Add #include libinput-util.h 2014-06-11 10:30:12 +10:00
udev-seat.c udev: only apply default calibration on absolute devices 2014-12-05 14:04:18 +10:00
udev-seat.h udev: Drop unused seat_name in struct udev_seat 2014-01-16 20:42:30 +01:00