summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2016-07-06 07:59:31 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2016-08-01 14:33:35 +1000
commit64e39411892fa4897f6e018daaa2de2ffaf8b671 (patch)
tree691b2f77194583ededddecb58f5b52ce59660052
parent14d0cd9d38520295fb9244869edfa4648dd9424b (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.c18
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 -