Bluetooth tablet devices' rules can't tag the event node directly, they can
only tag the first parent (the /sys/class/input/input1234 node). Check that
parent for tags too, lest we miss something important.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
{
const char *prop;
enum evdev_device_udev_tags tags = 0;
- const struct evdev_udev_tag_match *match = evdev_udev_tag_matches;
-
- while (match->name) {
- prop = udev_device_get_property_value(device->udev_device,
+ const struct evdev_udev_tag_match *match;
+ int i;
+
+ for (i = 0; i < 2 && udev_device; i++) {
+ match = evdev_udev_tag_matches;
+ while (match->name) {
+ prop = udev_device_get_property_value(
+ udev_device,
match->name);
- if (prop)
- tags |= match->tag;
+ if (prop)
+ tags |= match->tag;
- match++;
+ match++;
+ }
+ udev_device = udev_device_get_parent(udev_device);
}
+
return tags;
}