correctly find ID_INPUT_KEY
This commit is contained in:
@@ -391,8 +391,6 @@ static void udev_device_set_properties_from_evdev(struct udev_device *udev_devic
|
||||
key_cnt = populate_bit(key_bits, udev_device_get_property_value(parent, "KEY"));
|
||||
prop_cnt = populate_bit(prop_bits, udev_device_get_property_value(parent, "PROP"));
|
||||
|
||||
// TODO iterate over KEY_* to find ID_INPUT_KEY or use exclusion method
|
||||
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT", "1", 0);
|
||||
|
||||
if (find_bit(prop_bits, prop_cnt, INPUT_PROP_POINTING_STICK)) {
|
||||
@@ -400,31 +398,20 @@ static void udev_device_set_properties_from_evdev(struct udev_device *udev_devic
|
||||
}
|
||||
|
||||
if (find_bit(prop_bits, prop_cnt, INPUT_PROP_ACCELEROMETER) ||
|
||||
(find_bit(ev_bits, ev_cnt, EV_ABS) && !find_bit(ev_bits, ev_cnt, EV_KEY) &&
|
||||
find_bit(abs_bits, abs_cnt, ABS_Y) && find_bit(abs_bits, abs_cnt, ABS_X) &&
|
||||
find_bit(abs_bits, abs_cnt, ABS_Z))) {
|
||||
(find_bit(abs_bits, abs_cnt, ABS_Z) && !find_bit(ev_bits, ev_cnt, EV_KEY) &&
|
||||
find_bit(abs_bits, abs_cnt, ABS_Y) && find_bit(abs_bits, abs_cnt, ABS_X))) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_ACCELEROMETER", "1", 0);
|
||||
}
|
||||
|
||||
if (find_bit(ev_bits, ev_cnt, EV_SW)) {
|
||||
if (find_bit(ev_bits, ev_cnt, EV_KEY)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_KEY", "1", 0);
|
||||
}
|
||||
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_SWITCH", "1", 0);
|
||||
}
|
||||
|
||||
if (find_bit(ev_bits, ev_cnt, EV_KEY) && find_bit(key_bits, key_cnt, KEY_ENTER)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_KEY", "1", 0);
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_KEYBOARD", "1", 0);
|
||||
}
|
||||
|
||||
if (find_bit(ev_bits, ev_cnt, EV_REL) && find_bit(rel_bits, rel_cnt, REL_Y) &&
|
||||
find_bit(rel_bits, rel_cnt, REL_X) && find_bit(key_bits, key_cnt, BTN_MOUSE)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_MOUSE", "1", 0);
|
||||
}
|
||||
|
||||
if (find_bit(ev_bits, ev_cnt, EV_ABS) && find_bit(abs_bits, abs_cnt, ABS_Y) && find_bit(abs_bits, abs_cnt, ABS_X)) {
|
||||
else if (find_bit(ev_bits, ev_cnt, EV_ABS) && find_bit(abs_bits, abs_cnt, ABS_Y) && find_bit(abs_bits, abs_cnt, ABS_X)) {
|
||||
if (find_bit(key_bits, key_cnt, BTN_STYLUS) || find_bit(key_bits, key_cnt, BTN_TOOL_PEN)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_TABLET", "1", 0);
|
||||
}
|
||||
@@ -440,6 +427,13 @@ static void udev_device_set_properties_from_evdev(struct udev_device *udev_devic
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_MOUSE", "1", 0);
|
||||
}
|
||||
}
|
||||
else if (find_bit(ev_bits, ev_cnt, EV_KEY)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_KEY", "1", 0);
|
||||
|
||||
if (find_bit(key_bits, key_cnt, KEY_ENTER)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_KEYBOARD", "1", 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct udev_device *udev_device_new_from_syspath(struct udev *udev, const char *syspath)
|
||||
|
||||
Reference in New Issue
Block a user