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 <[email protected]>
---
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

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to