|
@@ -646,12 +646,21 @@ static ControllerMapping_t *SDL_CreateMappingForHIDAPIController(SDL_JoystickGUI
|
|
|
*/
|
|
|
static ControllerMapping_t *SDL_CreateMappingForRAWINPUTController(SDL_JoystickGUID guid)
|
|
|
{
|
|
|
+ Uint16 vendor;
|
|
|
+ Uint16 product;
|
|
|
+ Uint16 version;
|
|
|
SDL_bool existing;
|
|
|
char mapping_string[1024];
|
|
|
|
|
|
- SDL_strlcpy(mapping_string, "none,*,", sizeof(mapping_string));
|
|
|
- SDL_strlcat(mapping_string, "a:b0,b:b1,x:b2,y:b3,back:b6,guide:b10,start:b7,leftstick:b8,rightstick:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,", sizeof(mapping_string));
|
|
|
+ SDL_GetJoystickGUIDInfo(guid, &vendor, &product, &version);
|
|
|
|
|
|
+ SDL_strlcpy(mapping_string, "none,*,", sizeof(mapping_string));
|
|
|
+ if (SDL_JoystickUsesButtonLabelHint(vendor, product) &&
|
|
|
+ SDL_GetHintBoolean(SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS, SDL_TRUE)) {
|
|
|
+ SDL_strlcat(mapping_string, "a:b1,b:b0,x:b3,y:b2,back:b6,guide:b10,start:b7,leftstick:b8,rightstick:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,", sizeof(mapping_string));
|
|
|
+ } else {
|
|
|
+ SDL_strlcat(mapping_string, "a:b0,b:b1,x:b2,y:b3,back:b6,guide:b10,start:b7,leftstick:b8,rightstick:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,", sizeof(mapping_string));
|
|
|
+ }
|
|
|
return SDL_PrivateAddMappingForGUID(guid, mapping_string,
|
|
|
&existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT);
|
|
|
}
|