minor fixes, add joystick support
This commit is contained in:
parent
dc75e2b44e
commit
56bcf25461
2 changed files with 31 additions and 26 deletions
|
|
@ -35,12 +35,8 @@ TODO
|
|||
----
|
||||
|
||||
* [x] speed up performance
|
||||
* [x] extend devices support
|
||||
* [ ] implement hotplugging support
|
||||
* [ ] extend devices support (pull requests are welcome)
|
||||
- [x] tablets
|
||||
- [ ] joysticks
|
||||
- [x] accelerometers
|
||||
- [x] pointing sticks
|
||||
|
||||
Donate
|
||||
------
|
||||
|
|
|
|||
|
|
@ -346,7 +346,7 @@ static int find_bit(unsigned long *arr, int cnt, int bit)
|
|||
}
|
||||
|
||||
for (i = 0; i < cnt; i++) {
|
||||
if (arr[i] & (1 << (bit % LONG_BIT))) {
|
||||
if (arr[i] & (1UL << (bit % LONG_BIT))) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -397,9 +397,7 @@ static void udev_device_set_properties_from_evdev(struct udev_device *udev_devic
|
|||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_POINTINGSTICK", "1", 0);
|
||||
}
|
||||
|
||||
if (find_bit(prop_bits, prop_cnt, INPUT_PROP_ACCELEROMETER) ||
|
||||
(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))) {
|
||||
if (find_bit(prop_bits, prop_cnt, INPUT_PROP_ACCELEROMETER)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_ACCELEROMETER", "1", 0);
|
||||
}
|
||||
|
||||
|
|
@ -407,26 +405,37 @@ static void udev_device_set_properties_from_evdev(struct udev_device *udev_devic
|
|||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_SWITCH", "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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
else if (find_bit(key_bits, key_cnt, BTN_TOUCH)) {
|
||||
if (find_bit(key_bits, key_cnt, BTN_TOOL_FINGER)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_TOUCHPAD", "1", 0);
|
||||
}
|
||||
else {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_TOUCHSCREEN", "1", 0);
|
||||
}
|
||||
}
|
||||
else if (find_bit(key_bits, key_cnt, BTN_MOUSE)) {
|
||||
if (find_bit(ev_bits, ev_cnt, EV_REL)) {
|
||||
if (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);
|
||||
}
|
||||
}
|
||||
else if (find_bit(ev_bits, ev_cnt, EV_ABS)) {
|
||||
if (find_bit(key_bits, key_cnt, BTN_SELECT) || find_bit(key_bits, key_cnt, BTN_TR) ||
|
||||
find_bit(key_bits, key_cnt, BTN_START) || find_bit(key_bits, key_cnt, BTN_TL)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_JOYSTICK", "1", 0);
|
||||
}
|
||||
else if (find_bit(abs_bits, abs_cnt, ABS_Y) && find_bit(abs_bits, abs_cnt, ABS_X)) {
|
||||
if (find_bit(abs_bits, abs_cnt, ABS_Z) && !find_bit(ev_bits, ev_cnt, EV_KEY)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_ACCELEROMETER", "1", 0);
|
||||
}
|
||||
else 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);
|
||||
}
|
||||
else if (find_bit(key_bits, key_cnt, BTN_TOUCH)) {
|
||||
if (find_bit(key_bits, key_cnt, BTN_TOOL_FINGER)) {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_TOUCHPAD", "1", 0);
|
||||
}
|
||||
else {
|
||||
udev_list_entry_add(&udev_device->properties, "ID_INPUT_TOUCHSCREEN", "1", 0);
|
||||
}
|
||||
}
|
||||
else if (find_bit(key_bits, key_cnt, BTN_MOUSE)) {
|
||||
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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue