[PATCH libinput] touchpad: use the udev ID_INPUT_TOUCHPAD_INTEGRATION property if available

Peter Hutterer peter.hutterer at who-t.net
Tue Jul 5 21:59:31 UTC 2016


udev now labels touchpads as "internal" or "external" for us, use that value
where available and only fall back onto our own labelling if it's missing or
unknown.

systemd commit: https://github.com/systemd/systemd/pull/3638

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

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
I'll hold this commit back until we have a systemd release with the tag in
it.

 src/evdev-mt-touchpad.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index 4dd6b64..4ea602b 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -1589,6 +1589,24 @@ evdev_tag_touchpad(struct evdev_device *device,
 		   struct udev_device *udev_device)
 {
 	int bustype, vendor;
+	const char *prop;
+
+	prop = udev_device_get_property_value(udev_device,
+					      "ID_INPUT_TOUCHPAD_INTEGRATION");
+	if (prop) {
+		if (streq(prop, "internal")) {
+			evdev_tag_touchpad_internal(device);
+			return;
+		} else if (streq(prop, "external")) {
+			evdev_tag_touchpad_external(device);
+			return;
+		} else {
+			log_info(evdev_libinput_context(device),
+				 "%s: tagged as unknown value %s\n",
+				 device->devname,
+				 prop);
+		}
+	}
 
 	/* simple approach: touchpads on USB or Bluetooth are considered
 	 * external, anything else is internal. Exception is Apple -
-- 
2.7.4



More information about the wayland-devel mailing list