1 /// Translated from C to D 2 module glfw3.xinput; 3 4 extern(Windows): @nogc: nothrow: __gshared: 5 6 import core.sys.windows.windef; 7 8 enum XINPUT_GAMEPAD_DPAD_UP = 0x0001; 9 enum XINPUT_GAMEPAD_DPAD_DOWN = 0x0002; 10 enum XINPUT_GAMEPAD_DPAD_LEFT = 0x0004; 11 enum XINPUT_GAMEPAD_DPAD_RIGHT = 0x0008; 12 enum XINPUT_GAMEPAD_START = 0x0010; 13 enum XINPUT_GAMEPAD_BACK = 0x0020; 14 enum XINPUT_GAMEPAD_LEFT_THUMB = 0x0040; 15 enum XINPUT_GAMEPAD_RIGHT_THUMB = 0x0080; 16 enum XINPUT_GAMEPAD_LEFT_SHOULDER = 0x0100; 17 enum XINPUT_GAMEPAD_RIGHT_SHOULDER = 0x0200; 18 enum XINPUT_GAMEPAD_A = 0x1000; 19 enum XINPUT_GAMEPAD_B = 0x2000; 20 enum XINPUT_GAMEPAD_X = 0x4000; 21 enum XINPUT_GAMEPAD_Y = 0x8000; 22 23 enum XINPUT_KEYSTROKE_KEYDOWN = 0x0001; 24 enum XINPUT_KEYSTROKE_KEYUP = 0x0002; 25 enum XINPUT_KEYSTROKE_REPEAT = 0x0004; 26 27 enum VK_PAD_A = 0x5800; 28 enum VK_PAD_B = 0x5801; 29 enum VK_PAD_X = 0x5802; 30 enum VK_PAD_Y = 0x5803; 31 enum VK_PAD_RSHOULDER = 0x5804; 32 enum VK_PAD_LSHOULDER = 0x5805; 33 enum VK_PAD_LTRIGGER = 0x5806; 34 enum VK_PAD_RTRIGGER = 0x5807; 35 enum VK_PAD_DPAD_UP = 0x5810; 36 enum VK_PAD_DPAD_DOWN = 0x5811; 37 enum VK_PAD_DPAD_LEFT = 0x5812; 38 enum VK_PAD_DPAD_RIGHT = 0x5813; 39 enum VK_PAD_START = 0x5814; 40 enum VK_PAD_BACK = 0x5815; 41 enum VK_PAD_LTHUMB_PRESS = 0x5816; 42 enum VK_PAD_RTHUMB_PRESS = 0x5817; 43 enum VK_PAD_LTHUMB_UP = 0x5820; 44 enum VK_PAD_LTHUMB_DOWN = 0x5821; 45 enum VK_PAD_LTHUMB_RIGHT = 0x5822; 46 enum VK_PAD_LTHUMB_LEFT = 0x5823; 47 enum VK_PAD_LTHUMB_UPLEFT = 0x5824; 48 enum VK_PAD_LTHUMB_UPRIGHT = 0x5825; 49 enum VK_PAD_LTHUMB_DOWNRIGHT = 0x5826; 50 enum VK_PAD_LTHUMB_DOWNLEFT = 0x5827; 51 enum VK_PAD_RTHUMB_UP = 0x5830; 52 enum VK_PAD_RTHUMB_DOWN = 0x5831; 53 enum VK_PAD_RTHUMB_RIGHT = 0x5832; 54 enum VK_PAD_RTHUMB_LEFT = 0x5833; 55 enum VK_PAD_RTHUMB_UPLEFT = 0x5834; 56 enum VK_PAD_RTHUMB_UPRIGHT = 0x5835; 57 enum VK_PAD_RTHUMB_DOWNRIGHT = 0x5836; 58 enum VK_PAD_RTHUMB_DOWNLEFT = 0x5837; 59 60 enum XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE = 7849; 61 enum XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE = 8689; 62 enum XINPUT_GAMEPAD_TRIGGER_THRESHOLD = 30; 63 64 enum XINPUT_DEVTYPE_GAMEPAD = 0x01; 65 enum XINPUT_DEVSUBTYPE_GAMEPAD = 0x01; 66 enum XINPUT_DEVSUBTYPE_WHEEL = 0x02; 67 enum XINPUT_DEVSUBTYPE_ARCADE_STICK = 0x03; 68 enum XINPUT_DEVSUBTYPE_FLIGHT_SICK = 0x04; 69 enum XINPUT_DEVSUBTYPE_DANCE_PAD = 0x05; 70 enum XINPUT_DEVSUBTYPE_GUITAR = 0x06; 71 enum XINPUT_DEVSUBTYPE_DRUM_KIT = 0x08; 72 73 enum XINPUT_CAPS_VOICE_SUPPORTED = 0x0004; 74 enum XINPUT_FLAG_GAMEPAD = 0x00000001; 75 76 enum BATTERY_DEVTYPE_GAMEPAD = 0x00; 77 enum BATTERY_DEVTYPE_HEADSET = 0x01; 78 enum BATTERY_TYPE_DISCONNECTED = 0x00; 79 enum BATTERY_TYPE_WIRED = 0x01; 80 enum BATTERY_TYPE_ALKALINE = 0x02; 81 enum BATTERY_TYPE_NIMH = 0x03; 82 enum BATTERY_TYPE_UNKNOWN = 0xFF; 83 enum BATTERY_LEVEL_EMPTY = 0x00; 84 enum BATTERY_LEVEL_LOW = 0x01; 85 enum BATTERY_LEVEL_MEDIUM = 0x02; 86 enum BATTERY_LEVEL_FULL = 0x03; 87 88 enum XUSER_MAX_COUNT = 4; 89 enum XUSER_INDEX_ANY = 0x000000FF; 90 91 struct _XINPUT_GAMEPAD { 92 WORD wButtons; 93 BYTE bLeftTrigger; 94 BYTE bRightTrigger; 95 SHORT sThumbLX; 96 SHORT sThumbLY; 97 SHORT sThumbRX; 98 SHORT sThumbRY; 99 } 100 alias _XINPUT_GAMEPAD XINPUT_GAMEPAD; 101 alias _XINPUT_GAMEPAD* PXINPUT_GAMEPAD; 102 103 struct _XINPUT_STATE { 104 DWORD dwPacketNumber; 105 XINPUT_GAMEPAD Gamepad; 106 } 107 alias _XINPUT_STATE XINPUT_STATE; 108 alias _XINPUT_STATE* PXINPUT_STATE; 109 110 struct _XINPUT_VIBRATION { 111 WORD wLeftMotorSpeed = 0; 112 WORD wRightMotorSpeed = 0; 113 } 114 alias _XINPUT_VIBRATION XINPUT_VIBRATION; 115 alias _XINPUT_VIBRATION* PXINPUT_VIBRATION; 116 117 struct _XINPUT_CAPABILITIES { 118 BYTE Type; 119 BYTE SubType; 120 WORD Flags; 121 XINPUT_GAMEPAD Gamepad; 122 XINPUT_VIBRATION Vibration; 123 } 124 alias _XINPUT_CAPABILITIES XINPUT_CAPABILITIES; 125 alias _XINPUT_CAPABILITIES* PXINPUT_CAPABILITIES; 126 127 struct _XINPUT_KEYSTROKE { 128 WORD VirtualKey; 129 WCHAR Unicode; 130 WORD Flags; 131 BYTE UserIndex; 132 BYTE HidCode; 133 } 134 alias _XINPUT_KEYSTROKE XINPUT_KEYSTROKE; 135 alias _XINPUT_KEYSTROKE* PXINPUT_KEYSTROKE; 136 137 struct _XINPUT_BATTERY_INFORMATION { 138 BYTE BatteryType; 139 BYTE BatteryLevel; 140 } 141 alias _XINPUT_BATTERY_INFORMATION XINPUT_BATTERY_INFORMATION; 142 alias _XINPUT_BATTERY_INFORMATION* PXINPUT_BATTERY_INFORMATION; 143 144 import core.sys.windows.basetyps: GUID; 145 146 void XInputEnable(WINBOOL); 147 DWORD XInputSetState(DWORD, XINPUT_VIBRATION*); 148 DWORD XInputGetState(DWORD, XINPUT_STATE*); 149 DWORD XInputGetKeystroke(DWORD, DWORD, PXINPUT_KEYSTROKE); 150 DWORD XInputGetCapabilities(DWORD, DWORD, XINPUT_CAPABILITIES*); 151 DWORD XInputGetDSoundAudioDeviceGuids(DWORD, GUID*, GUID*); 152 DWORD XInputGetBatteryInformation(DWORD, BYTE, XINPUT_BATTERY_INFORMATION*);