From a7ccd48957e8ecfa792729f7584b8a592cbc6c85 Mon Sep 17 00:00:00 2001 From: Sanjay Govind Date: Wed, 25 Feb 2026 14:26:46 +1300 Subject: [PATCH] Set joystick_type for known ps3/wii instruments (#15111) --- src/joystick/hidapi/SDL_hidapi_ps3.c | 33 ++++++++++++++++++++++++++++ src/joystick/usb_ids.h | 13 +++++++++++ 2 files changed, 46 insertions(+) diff --git a/src/joystick/hidapi/SDL_hidapi_ps3.c b/src/joystick/hidapi/SDL_hidapi_ps3.c index 37a2b1314f..ada3844297 100644 --- a/src/joystick/hidapi/SDL_hidapi_ps3.c +++ b/src/joystick/hidapi/SDL_hidapi_ps3.c @@ -676,6 +676,39 @@ static bool HIDAPI_DriverPS3ThirdParty_InitDevice(SDL_HIDAPI_Device *device) HIDAPI_SetDeviceName(device, "Logitech ChillStream"); } + if (device->vendor_id == USB_VENDOR_HARMONIX) { + switch (device->product_id) { + case USB_PRODUCT_HARMONIX_WII_RB1_GUITAR: + case USB_PRODUCT_HARMONIX_WII_RB2_GUITAR: + device->joystick_type = SDL_JOYSTICK_TYPE_GUITAR; + break; + case USB_PRODUCT_HARMONIX_WII_RB1_DRUMS: + case USB_PRODUCT_HARMONIX_WII_RB2_DRUMS: + case USB_PRODUCT_HARMONIX_WII_RB3_MPA_DRUMS_MODE: + device->joystick_type = SDL_JOYSTICK_TYPE_DRUM_KIT; + break; + default: + break; + } + } + + if (device->vendor_id == USB_VENDOR_SCEA) { + switch (device->product_id) { + case USB_PRODUCT_SCEA_PS3_GH_GUITAR: + case USB_PRODUCT_SCEA_PS3_RB_GUITAR: + case USB_PRODUCT_SCEA_PS3WIIU_GHLIVE: + device->joystick_type = SDL_JOYSTICK_TYPE_GUITAR; + break; + case USB_PRODUCT_SCEA_PS3_GH_DRUMS: + case USB_PRODUCT_SCEA_PS3_RB_DRUMS: + case USB_PRODUCT_SCEA_PS3_RB3_MPA_DRUMS_MODE: + device->joystick_type = SDL_JOYSTICK_TYPE_DRUM_KIT; + break; + default: + break; + } + } + return HIDAPI_JoystickConnected(device, NULL); } diff --git a/src/joystick/usb_ids.h b/src/joystick/usb_ids.h index 269729c234..3f86ff0174 100644 --- a/src/joystick/usb_ids.h +++ b/src/joystick/usb_ids.h @@ -35,6 +35,7 @@ #define USB_VENDOR_FLYDIGI_V1 0x04b4 #define USB_VENDOR_FLYDIGI_V2 0x37d7 #define USB_VENDOR_GOOGLE 0x18d1 +#define USB_VENDOR_HARMONIX 0x1bad #define USB_VENDOR_HORI 0x0f0d #define USB_VENDOR_HP 0x03f0 #define USB_VENDOR_HYPERKIN 0x2e24 @@ -52,6 +53,7 @@ #define USB_VENDOR_QANBA 0x2c22 #define USB_VENDOR_RAZER 0x1532 #define USB_VENDOR_SAITEK 0x06a3 +#define USB_VENDOR_SCEA 0x12ba #define USB_VENDOR_SHANWAN 0x2563 #define USB_VENDOR_SHANWAN_ALT 0x20bc #define USB_VENDOR_SONY 0x054c @@ -86,6 +88,11 @@ #define USB_PRODUCT_FLYDIGI_V2_APEX 0x2501 #define USB_PRODUCT_FLYDIGI_V2_VADER 0x2401 #define USB_PRODUCT_GAMESIR_GAMEPAD_G7_PRO_8K 0x10B8 // Wired/2.4G/Bluetooth 8K mode +#define USB_PRODUCT_HARMONIX_WII_RB1_GUITAR 0x0004 +#define USB_PRODUCT_HARMONIX_WII_RB1_DRUMS 0x0005 +#define USB_PRODUCT_HARMONIX_WII_RB2_GUITAR 0x3010 +#define USB_PRODUCT_HARMONIX_WII_RB2_DRUMS 0x3110 +#define USB_PRODUCT_HARMONIX_WII_RB3_MPA_DRUMS_MODE 0x3138 #define USB_PRODUCT_HORI_FIGHTING_STICK_ALPHA_PS4 0x011c #define USB_PRODUCT_HORI_FIGHTING_STICK_ALPHA_PS5 0x0184 #define USB_PRODUCT_HORI_FIGHTING_STICK_ALPHA_PS5 0x0184 @@ -139,6 +146,12 @@ #define USB_PRODUCT_RAZER_WOLVERINE_V2_PRO_XBOX_WIRELESS 0x1011 #define USB_PRODUCT_RAZER_WOLVERINE_V3_PRO 0x0a3f #define USB_PRODUCT_SAITEK_CYBORG_V3 0xf622 +#define USB_PRODUCT_SCEA_PS3_GH_GUITAR 0x0100 +#define USB_PRODUCT_SCEA_PS3_GH_DRUMS 0x0120 +#define USB_PRODUCT_SCEA_PS3_RB_GUITAR 0x0200 +#define USB_PRODUCT_SCEA_PS3_RB_DRUMS 0x0210 +#define USB_PRODUCT_SCEA_PS3_RB3_MPA_DRUMS_MODE 0x0218 +#define USB_PRODUCT_SCEA_PS3WIIU_GHLIVE 0x074b #define USB_PRODUCT_SHANWAN_DS3 0x0523 #define USB_PRODUCT_SONY_DS3 0x0268 #define USB_PRODUCT_SONY_DS4 0x05c4