Fix evdev joystick detection

This commit is contained in:
Zion Nimchuk 2017-08-18 12:26:39 -07:00 committed by Ivan
parent 514a98321d
commit e6a07e80d7
2 changed files with 4 additions and 3 deletions

View File

@ -59,8 +59,11 @@ void evdev_joystick_handler::Init(const u32 max_connect)
LOG_WARNING(GENERAL, "Failed to connect to device at %s, the error was: %s", "/dev/input/" + et.name, strerror(-rc));
continue;
}
if (libevdev_get_id_bustype(dev) == JOYSTICK_BUSTYPE)
if (libevdev_has_event_type(dev, EV_KEY) &&
libevdev_has_event_code(dev, EV_ABS, ABS_X) &&
libevdev_has_event_code(dev, EV_ABS, ABS_Y))
{
// It's a joystick.
joy_paths.emplace_back(fmt::format("/dev/input/%s", et.name));
}
}

View File

@ -8,8 +8,6 @@
#include <vector>
#include <thread>
#define JOYSTICK_BUSTYPE 3
enum { EVDEV_DPAD_HAT_AXIS_X = -1, EVDEV_DPAD_HAT_AXIS_Y = -2 };
struct evdev_joystick_config final : cfg::node