SDL: Apply patch from issue #13516, fixing issue with Wacom tablets with readonly flags set.

This commit is contained in:
Henrik Rydgård 2020-10-06 16:57:23 +02:00
parent e566892766
commit 44a93f98ed

View File

@ -58,15 +58,19 @@ void SDLJoystick::setUpController(int deviceIndex) {
int cbGUID = 33; int cbGUID = 33;
char pszGUID[cbGUID]; char pszGUID[cbGUID];
SDL_Joystick* joystick = SDL_JoystickOpen(deviceIndex); SDL_Joystick* joystick = SDL_JoystickOpen(deviceIndex);
SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick), pszGUID, cbGUID); if (joystick) {
// create default mapping - this is the PS3 dual shock mapping SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick), pszGUID, cbGUID);
std::string mapping = string(pszGUID) + "," + string(SDL_JoystickName(joystick)) + ",x:b3,a:b0,b:b1,y:b2,back:b8,guide:b10,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:a5,leftstick:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4"; // create default mapping - this is the PS3 dual shock mapping
if (SDL_GameControllerAddMapping(mapping.c_str()) == 1){ std::string mapping = string(pszGUID) + "," + string(SDL_JoystickName(joystick)) + ",x:b3,a:b0,b:b1,y:b2,back:b8,guide:b10,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:a5,leftstick:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4";
cout << "Added default mapping ok" << endl; if (SDL_GameControllerAddMapping(mapping.c_str()) == 1){
cout << "Added default mapping ok" << endl;
} else {
cout << "Failed to add default mapping" << endl;
}
SDL_JoystickClose(joystick);
} else { } else {
cout << "Failed to add default mapping" << endl; cout << "Failed to get joystick identifier. Read-only device? Control pad device " + std::to_string(deviceIndex) << endl;
} }
SDL_JoystickClose(joystick);
} }
SDL_GameController *controller = SDL_GameControllerOpen(deviceIndex); SDL_GameController *controller = SDL_GameControllerOpen(deviceIndex);
if (controller) { if (controller) {