From faf888083364c9e3657e7ff52384f71c82c11ada Mon Sep 17 00:00:00 2001 From: dajoho Date: Tue, 15 Aug 2023 22:57:26 +0200 Subject: [PATCH] pandory500: fix _second_ udev bug After removing all the extra axes it appears that the remaining D-PAD Y-axis occasionally triggers a D-PAD X-axis movement. This commit detects these values and normalises them to 0. --- src/joystick/linux/.SDL_sysjoystick.c.swp | Bin 0 -> 16384 bytes src/joystick/linux/SDL_sysjoystick.c | 14 ++++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 src/joystick/linux/.SDL_sysjoystick.c.swp diff --git a/src/joystick/linux/.SDL_sysjoystick.c.swp b/src/joystick/linux/.SDL_sysjoystick.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..e2a15d5bd0b798411d63b5b325ab53ce4b96585e GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index a06170726..cad73eca9 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -904,6 +904,9 @@ AxisCorrect(SDL_Joystick * joystick, int which, int value) { struct axis_correct *correct; + SDL_JoystickGUID guid = SDL_JoystickGetGUID(joystick); + char pandoryGUID[1024]; + correct = &joystick->hwdata->abs_correct[which]; if (correct->used) { value *= 2; @@ -925,6 +928,17 @@ AxisCorrect(SDL_Joystick * joystick, int which, int value) if (value > 32767) return 32767; + + // Pandory500 retrogames-udev-bug - correct spurious axis movement + SDL_JoystickGetGUIDString(joystick->hwdata->guid, pandoryGUID, sizeof(pandoryGUID)); + if ( strcmp(pandoryGUID, "03000000591c00002600000010010000") == 0 // 'Retro Games LTD THEGamepad' + || strcmp(pandoryGUID, "03000000591c00002300000010010000") == 0 // ' THEC64 Joystick THEC64 Joystick ' + ) { + if (value == 127 || value == 255) { + return 0; + } + } + return value; }