|
@@ -800,50 +800,53 @@ static GamepadMapping_t *SDL_CreateMappingForHIDAPIGamepad(SDL_GUID guid)
|
|
|
SDL_strlcat(mapping_string, "a:b1,b:b0,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,", sizeof(mapping_string));
|
|
|
} else if (SDL_IsJoystickSInputController(vendor, product)) {
|
|
|
Uint8 face_style = (guid.data[15] & 0xE0) >> 5;
|
|
|
- Uint8 sinput_id = guid.data[15] & 0x1F;
|
|
|
+ Uint8 sub_type = guid.data[15] & 0x1F;
|
|
|
|
|
|
- switch (product) {
|
|
|
- case USB_PRODUCT_HANDHELDLEGEND_PROGCC:
|
|
|
- // ProGCC Mapping
|
|
|
- SDL_strlcat(mapping_string, "a:b1,b:b0,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b4,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a2,righty:a3,start:b10,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,", sizeof(mapping_string));
|
|
|
+ // Apply face style according to gamepad response
|
|
|
+ switch (face_style) {
|
|
|
+ default:
|
|
|
+ SDL_strlcat(mapping_string, "face:abxy,", sizeof(mapping_string));
|
|
|
break;
|
|
|
-
|
|
|
- case USB_PRODUCT_HANDHELDLEGEND_GCULTIMATE:
|
|
|
- // GC Ultimate Map
|
|
|
- SDL_strlcat(mapping_string, "a:b0,b:b2,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b4,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b13,misc2:b14,rightshoulder:b7,rightstick:b5,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b1,y:b3,misc3:b8,misc4:b9,hint:!SDL_GAMECONTROLLER_USE_GAMECUBE_LABELS:=1,", sizeof(mapping_string));
|
|
|
+ case 2:
|
|
|
+ SDL_strlcat(mapping_string, "face:axby,", sizeof(mapping_string));
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ SDL_strlcat(mapping_string, "face:bayx,", sizeof(mapping_string));
|
|
|
break;
|
|
|
+ case 4:
|
|
|
+ SDL_strlcat(mapping_string, "face:sony,", sizeof(mapping_string));
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
- case USB_PRODUCT_HANDHELDLEGEND_SINPUT_GENERIC:
|
|
|
- // Apply mapping profile for type
|
|
|
- switch (sinput_id) {
|
|
|
+ switch (product) {
|
|
|
+ case USB_PRODUCT_HANDHELDLEGEND_PROGCC:
|
|
|
+ switch (sub_type) {
|
|
|
default:
|
|
|
- case 0:
|
|
|
- // Default Fully Exposed Mapping
|
|
|
- SDL_strlcat(mapping_string, "leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,b:b0,a:b1,y:b2,x:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b4,rightstick:b5,leftshoulder:b6,rightshoulder:b7,paddle1:b10,paddle2:b11,start:b12,back:b13,guide:b14,misc1:b15,paddle3:b16,paddle4:b17,touchpad:b18,misc2:b19,misc3:b20,misc4:b21,misc5:b22,misc6:b23", sizeof(mapping_string));
|
|
|
+ // ProGCC Primary Mapping
|
|
|
+ SDL_strlcat(mapping_string, "a:b1,b:b0,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b4,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a2,righty:a3,start:b10,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,", sizeof(mapping_string));
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
- // Apply face style
|
|
|
- switch (face_style) {
|
|
|
+ break;
|
|
|
+ case USB_PRODUCT_HANDHELDLEGEND_GCULTIMATE:
|
|
|
+ switch (sub_type) {
|
|
|
default:
|
|
|
- case 1:
|
|
|
- SDL_strlcat(mapping_string, "face:abxy,", sizeof(mapping_string));
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- SDL_strlcat(mapping_string, "face:axby,", sizeof(mapping_string));
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- SDL_strlcat(mapping_string, "face:bayx,", sizeof(mapping_string));
|
|
|
+ // GC Ultimate Primary Map
|
|
|
+ SDL_strlcat(mapping_string, "a:b0,b:b2,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b4,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b13,misc2:b14,rightshoulder:b7,rightstick:b5,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b1,y:b3,misc3:b8,misc4:b9,hint:!SDL_GAMECONTROLLER_USE_GAMECUBE_LABELS:=1,", sizeof(mapping_string));
|
|
|
break;
|
|
|
- case 4:
|
|
|
- SDL_strlcat(mapping_string, "face:sony,", sizeof(mapping_string));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case USB_PRODUCT_HANDHELDLEGEND_SINPUT_GENERIC:
|
|
|
+ switch (sub_type) {
|
|
|
+ default:
|
|
|
+ // Default Fully Exposed Mapping (Development Purposes)
|
|
|
+ SDL_strlcat(mapping_string, "leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,b:b0,a:b1,y:b2,x:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b4,rightstick:b5,leftshoulder:b6,rightshoulder:b7,paddle1:b10,paddle2:b11,start:b12,back:b13,guide:b14,misc1:b15,paddle3:b16,paddle4:b17,touchpad:b18,misc2:b19,misc3:b20,misc4:b21,misc5:b22,misc6:b23", sizeof(mapping_string));
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
+ case USB_PRODUCT_BONZIRICHANNEL_FIREBIRD:
|
|
|
default:
|
|
|
- case USB_PRODUCT_BONJIRICHANNEL_FIREBIRD:
|
|
|
- // Unmapped devices
|
|
|
+ // Unmapped device
|
|
|
return NULL;
|
|
|
}
|
|
|
} else {
|