From fc904d2dac36b265e028962d2414852b90aa3f6f Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 18 Feb 2024 14:56:57 -0600 Subject: [PATCH] Treat devices as gamepads if they have a hat instead of an analog stick Fixes #880 --- src/input/evdev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/input/evdev.c b/src/input/evdev.c index ea302a4..1f567b2 100644 --- a/src/input/evdev.c +++ b/src/input/evdev.c @@ -836,8 +836,10 @@ void evdev_create(const char* device, struct mapping* mappings, bool verbose, in libevdev_has_event_code(evdev, EV_ABS, ABS_RZ))) && !libevdev_has_event_type(evdev, EV_KEY); bool is_gamepad = - libevdev_has_event_code(evdev, EV_ABS, ABS_X) && - libevdev_has_event_code(evdev, EV_ABS, ABS_Y) && + ((libevdev_has_event_code(evdev, EV_ABS, ABS_X) && + libevdev_has_event_code(evdev, EV_ABS, ABS_Y)) || + (libevdev_has_event_code(evdev, EV_ABS, ABS_HAT0X) && + libevdev_has_event_code(evdev, EV_ABS, ABS_HAT0Y))) && (libevdev_has_event_code(evdev, EV_KEY, BTN_TRIGGER) || libevdev_has_event_code(evdev, EV_KEY, BTN_A) || libevdev_has_event_code(evdev, EV_KEY, BTN_1) ||