Преглед изворни кода

Set joystick_type for known ps3/wii instruments (#15111)

Sanjay Govind пре 1 недеља
родитељ
комит
a7ccd48957
2 измењених фајлова са 46 додато и 0 уклоњено
  1. 33 0
      src/joystick/hidapi/SDL_hidapi_ps3.c
  2. 13 0
      src/joystick/usb_ids.h

+ 33 - 0
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");
         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);
     return HIDAPI_JoystickConnected(device, NULL);
 }
 }
 
 

+ 13 - 0
src/joystick/usb_ids.h

@@ -35,6 +35,7 @@
 #define USB_VENDOR_FLYDIGI_V1   0x04b4
 #define USB_VENDOR_FLYDIGI_V1   0x04b4
 #define USB_VENDOR_FLYDIGI_V2   0x37d7
 #define USB_VENDOR_FLYDIGI_V2   0x37d7
 #define USB_VENDOR_GOOGLE       0x18d1
 #define USB_VENDOR_GOOGLE       0x18d1
+#define USB_VENDOR_HARMONIX     0x1bad
 #define USB_VENDOR_HORI         0x0f0d
 #define USB_VENDOR_HORI         0x0f0d
 #define USB_VENDOR_HP           0x03f0
 #define USB_VENDOR_HP           0x03f0
 #define USB_VENDOR_HYPERKIN     0x2e24
 #define USB_VENDOR_HYPERKIN     0x2e24
@@ -52,6 +53,7 @@
 #define USB_VENDOR_QANBA        0x2c22
 #define USB_VENDOR_QANBA        0x2c22
 #define USB_VENDOR_RAZER        0x1532
 #define USB_VENDOR_RAZER        0x1532
 #define USB_VENDOR_SAITEK       0x06a3
 #define USB_VENDOR_SAITEK       0x06a3
+#define USB_VENDOR_SCEA         0x12ba
 #define USB_VENDOR_SHANWAN      0x2563
 #define USB_VENDOR_SHANWAN      0x2563
 #define USB_VENDOR_SHANWAN_ALT  0x20bc
 #define USB_VENDOR_SHANWAN_ALT  0x20bc
 #define USB_VENDOR_SONY         0x054c
 #define USB_VENDOR_SONY         0x054c
@@ -86,6 +88,11 @@
 #define USB_PRODUCT_FLYDIGI_V2_APEX                       0x2501
 #define USB_PRODUCT_FLYDIGI_V2_APEX                       0x2501
 #define USB_PRODUCT_FLYDIGI_V2_VADER                      0x2401
 #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_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_PS4         0x011c
 #define USB_PRODUCT_HORI_FIGHTING_STICK_ALPHA_PS5         0x0184
 #define USB_PRODUCT_HORI_FIGHTING_STICK_ALPHA_PS5         0x0184
 #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_V2_PRO_XBOX_WIRELESS  0x1011
 #define USB_PRODUCT_RAZER_WOLVERINE_V3_PRO                0x0a3f
 #define USB_PRODUCT_RAZER_WOLVERINE_V3_PRO                0x0a3f
 #define USB_PRODUCT_SAITEK_CYBORG_V3                      0xf622
 #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_SHANWAN_DS3                           0x0523
 #define USB_PRODUCT_SONY_DS3                              0x0268
 #define USB_PRODUCT_SONY_DS3                              0x0268
 #define USB_PRODUCT_SONY_DS4                              0x05c4
 #define USB_PRODUCT_SONY_DS4                              0x05c4