SDL: add EVOTOP AXIS controller support (#16117)

From f1c274038bcc490b8d4e285cd1c6b49b99749324 Mon Sep 17 00:00:00 2001
From: zuiki_inn <[EMAIL REDACTED]>
Date: Wed, 5 Aug 2026 23:29:17 +0900
Subject: [PATCH] add EVOTOP AXIS controller support (#16117)

---
 src/joystick/hidapi/SDL_hidapi_zuiki.c | 11 +++++++++--
 src/joystick/usb_ids.h                 |  1 +
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/joystick/hidapi/SDL_hidapi_zuiki.c b/src/joystick/hidapi/SDL_hidapi_zuiki.c
index d5958be09dc81..72d79fceb30b6 100644
--- a/src/joystick/hidapi/SDL_hidapi_zuiki.c
+++ b/src/joystick/hidapi/SDL_hidapi_zuiki.c
@@ -98,6 +98,7 @@ static bool HIDAPI_DriverZUIKI_IsSupportedDevice(SDL_HIDAPI_Device *device, cons
         case USB_PRODUCT_ZUIKI_EVOTOP_UWB_DINPUT:
         case USB_PRODUCT_ZUIKI_EVOTOP_PC_DINPUT:
         case USB_PRODUCT_ZUIKI_EVOTOP_PC_BT:
+        case USB_PRODUCT_ZUIKI_EVOTOP_AXIS_DINPUT:
             return true;
         default:
             break;
@@ -149,6 +150,9 @@ static bool HIDAPI_DriverZUIKI_InitDevice(SDL_HIDAPI_Device *device)
             }
             HIDAPI_SetDeviceName(device, "ZUIKI EVOTOP");
             break;
+        case USB_PRODUCT_ZUIKI_EVOTOP_AXIS_DINPUT:
+            HIDAPI_SetDeviceName(device, "ZUIKI EVOTOP AXIS");
+            break;
         default:
             break;
     }
@@ -207,7 +211,9 @@ static bool HIDAPI_DriverZUIKI_RumbleJoystickTriggers(SDL_HIDAPI_Device *device,
 static Uint32 HIDAPI_DriverZUIKI_GetJoystickCapabilities(SDL_HIDAPI_Device *device, SDL_Joystick *joystick)
 {
     Uint32 caps = 0;
-    caps |= SDL_JOYSTICK_CAP_RUMBLE;
+    if (device->product_id != USB_PRODUCT_ZUIKI_EVOTOP_AXIS_DINPUT) {
+        caps |= SDL_JOYSTICK_CAP_RUMBLE;
+    }
     return caps;
 }
 
@@ -453,7 +459,8 @@ static bool HIDAPI_DriverZUIKI_UpdateDevice(SDL_HIDAPI_Device *device)
             HIDAPI_DriverZUIKI_Handle_EVOTOP_PCBT_StatePacket(joystick, ctx, data, size);
         } else if (device->product_id == USB_PRODUCT_ZUIKI_EVOTOP_PC_DINPUT
             || device->product_id == USB_PRODUCT_ZUIKI_MASCON_PRO
-            || device->product_id == USB_PRODUCT_ZUIKI_EVOTOP_UWB_DINPUT) {
+            || device->product_id == USB_PRODUCT_ZUIKI_EVOTOP_UWB_DINPUT
+            || device->product_id == USB_PRODUCT_ZUIKI_EVOTOP_AXIS_DINPUT) {
             HIDAPI_DriverZUIKI_HandleOldStatePacket(joystick, ctx, data, size);
         }
     }
diff --git a/src/joystick/usb_ids.h b/src/joystick/usb_ids.h
index 4d8301e25e18c..b8d6b63788733 100644
--- a/src/joystick/usb_ids.h
+++ b/src/joystick/usb_ids.h
@@ -213,6 +213,7 @@
 #define USB_PRODUCT_ZUIKI_EVOTOP_UWB_DINPUT               0X001c
 #define USB_PRODUCT_ZUIKI_EVOTOP_PC_DINPUT                0X001d
 #define USB_PRODUCT_ZUIKI_EVOTOP_PC_BT                    0X0017
+#define USB_PRODUCT_ZUIKI_EVOTOP_AXIS_DINPUT              0X0020
 #define USB_PRODUCT_VOIDGAMING_PS4FIREBIRD                0x10e5
 #define USB_PRODUCT_VOIDGAMING_GENESIS_SINPUT             0x1014