21#include "../../SDL_internal.h"
31#ifndef XUSER_MAX_COUNT
32#define XUSER_MAX_COUNT 4
34#ifndef XUSER_INDEX_ANY
35#define XUSER_INDEX_ANY 0x000000FF
37#ifndef XINPUT_CAPS_FFB_SUPPORTED
38#define XINPUT_CAPS_FFB_SUPPORTED 0x0001
41#ifndef XINPUT_DEVSUBTYPE_UNKNOWN
42#define XINPUT_DEVSUBTYPE_UNKNOWN 0x00
44#ifndef XINPUT_DEVSUBTYPE_GAMEPAD
45#define XINPUT_DEVSUBTYPE_GAMEPAD 0x01
47#ifndef XINPUT_DEVSUBTYPE_WHEEL
48#define XINPUT_DEVSUBTYPE_WHEEL 0x02
50#ifndef XINPUT_DEVSUBTYPE_ARCADE_STICK
51#define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03
53#ifndef XINPUT_DEVSUBTYPE_FLIGHT_STICK
54#define XINPUT_DEVSUBTYPE_FLIGHT_STICK 0x04
56#ifndef XINPUT_DEVSUBTYPE_DANCE_PAD
57#define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05
59#ifndef XINPUT_DEVSUBTYPE_GUITAR
60#define XINPUT_DEVSUBTYPE_GUITAR 0x06
62#ifndef XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE
63#define XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE 0x07
65#ifndef XINPUT_DEVSUBTYPE_DRUM_KIT
66#define XINPUT_DEVSUBTYPE_DRUM_KIT 0x08
68#ifndef XINPUT_DEVSUBTYPE_GUITAR_BASS
69#define XINPUT_DEVSUBTYPE_GUITAR_BASS 0x0B
71#ifndef XINPUT_DEVSUBTYPE_ARCADE_PAD
72#define XINPUT_DEVSUBTYPE_ARCADE_PAD 0x13
75#ifndef XINPUT_GAMEPAD_GUIDE
76#define XINPUT_GAMEPAD_GUIDE 0x0400
79#ifndef BATTERY_DEVTYPE_GAMEPAD
80#define BATTERY_DEVTYPE_GAMEPAD 0x00
82#ifndef BATTERY_TYPE_WIRED
83#define BATTERY_TYPE_WIRED 0x01
86#ifndef BATTERY_TYPE_UNKNOWN
87#define BATTERY_TYPE_UNKNOWN 0xFF
89#ifndef BATTERY_LEVEL_EMPTY
90#define BATTERY_LEVEL_EMPTY 0x00
92#ifndef BATTERY_LEVEL_LOW
93#define BATTERY_LEVEL_LOW 0x01
95#ifndef BATTERY_LEVEL_MEDIUM
96#define BATTERY_LEVEL_MEDIUM 0x02
98#ifndef BATTERY_LEVEL_FULL
99#define BATTERY_LEVEL_FULL 0x03
104#ifndef HAVE_XINPUT_GAMEPAD_EX
114 DWORD dwPaddingReserved;
118#ifndef HAVE_XINPUT_STATE_EX
121 DWORD dwPacketNumber;
122 XINPUT_GAMEPAD_EX Gamepad;
130} XINPUT_BATTERY_INFORMATION_EX;
133typedef DWORD (WINAPI *XInputGetState_t)
136 XINPUT_STATE_EX* pState
139typedef DWORD (WINAPI *XInputSetState_t)
142 XINPUT_VIBRATION* pVibration
145typedef DWORD (WINAPI *XInputGetCapabilities_t)
149 XINPUT_CAPABILITIES* pCapabilities
152typedef DWORD (WINAPI *XInputGetBatteryInformation_t)
156 XINPUT_BATTERY_INFORMATION_EX *pBatteryInformation
159extern int WIN_LoadXInputDLL(
void);
160extern void WIN_UnloadXInputDLL(
void);
162extern XInputGetState_t SDL_XInputGetState;
163extern XInputSetState_t SDL_XInputSetState;
164extern XInputGetCapabilities_t SDL_XInputGetCapabilities;
165extern XInputGetBatteryInformation_t SDL_XInputGetBatteryInformation;
166extern DWORD SDL_XInputVersion;
168#define XINPUTGETSTATE SDL_XInputGetState
169#define XINPUTSETSTATE SDL_XInputSetState
170#define XINPUTGETCAPABILITIES SDL_XInputGetCapabilities
171#define XINPUTGETBATTERYINFORMATION SDL_XInputGetBatteryInformation