Fixed bug 3193 - Dualshock 3's motion sensors overwrite analog stick

maxxus

The Dualshock 3's motion sensors don't seem to be reported by the call to EVIOCGBIT but they still send EV_ABS events.  Because they're not reported by EVIOCGBIT they're not assigned a proper axis ids and the default of 0 is used, which is the valid id for the left analog sticks left/right axis.
Sam Lantinga 2018-11-14 13:37:22 -08:00
parent 1a4c0d4e17
commit 2e348c1f59
7 changed files with 8 additions and 5 deletions

0
Android.mk Normal file → Executable file
View File

0
Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj Normal file → Executable file
View File

0
Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj Normal file → Executable file
View File

0
Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj Normal file → Executable file
View File

0
Xcode/SDL/SDL.xcodeproj/project.pbxproj Normal file → Executable file
View File

0
Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj Normal file → Executable file
View File

View File

@ -776,6 +776,7 @@ LINUX_JoystickOpen(SDL_Joystick * joystick, int device_index)
joystick->hwdata->guid = item->guid;
joystick->hwdata->effect.id = -1;
joystick->hwdata->m_bSteamController = item->m_bSteamController;
SDL_memset(joystick->hwdata->abs_map, 0xFF, sizeof(joystick->hwdata->abs_map));
if (item->m_bSteamController) {
joystick->hwdata->fd = -1;
@ -989,11 +990,13 @@ HandleInputEvents(SDL_Joystick * joystick)
HandleHat(joystick, code / 2, code % 2, events[i].value);
break;
default:
if (joystick->hwdata->abs_map[code] != 0xFF) {
events[i].value =
AxisCorrect(joystick, code, events[i].value);
SDL_PrivateJoystickAxis(joystick,
joystick->hwdata->abs_map[code],
events[i].value);
}
break;
}
break;