evdev: check the first parent of the event node for ID_INPUT tags

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>
This commit is contained in:
Peter Hutterer 2015-02-13 11:40:19 +10:00
parent cbeacfed13
commit 65e077759b

View file

@ -1356,16 +1356,23 @@ evdev_device_get_udev_tags(struct evdev_device *device,
{
const char *prop;
enum evdev_device_udev_tags tags = 0;
const struct evdev_udev_tag_match *match = evdev_udev_tag_matches;
const struct evdev_udev_tag_match *match;
int i;
while (match->name) {
prop = udev_device_get_property_value(device->udev_device,
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;
}