diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2016-07-06 07:59:31 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2016-08-01 14:33:35 +1000 |
commit | 64e39411892fa4897f6e018daaa2de2ffaf8b671 (patch) | |
tree | 691b2f77194583ededddecb58f5b52ce59660052 | |
parent | 14d0cd9d38520295fb9244869edfa4648dd9424b (diff) |
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 <peter.hutterer@who-t.net>
-rw-r--r-- | src/evdev-mt-touchpad.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index 210ac00..357f4c5 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -1591,6 +1591,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 - |