From 6614604e9abd1cf602669b35efb2aed107c7972c Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 6 Jul 2016 07:59:31 +1000 Subject: [PATCH] touchpad: use the udev ID_INPUT_TOUCHPAD_INTEGRATION property if available 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 (cherry picked from commit 64e39411892fa4897f6e018daaa2de2ffaf8b671) --- 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 a7b5a872..756d2839 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 -