1 // Copyright © 2015, Peter Atashian 2 // Licensed under the MIT License <LICENSE.md> 3 //! XInput procedure declarations, constant definitions and macros 4 pub const XINPUT_DEVTYPE_GAMEPAD: ::BYTE = 0x01; 5 pub const XINPUT_DEVSUBTYPE_GAMEPAD: ::BYTE = 0x01; 6 pub const XINPUT_DEVSUBTYPE_WHEEL: ::BYTE = 0x02; 7 pub const XINPUT_DEVSUBTYPE_ARCADE_STICK: ::BYTE = 0x03; 8 pub const XINPUT_DEVSUBTYPE_FLIGHT_SICK: ::BYTE = 0x04; 9 pub const XINPUT_DEVSUBTYPE_DANCE_PAD: ::BYTE = 0x05; 10 pub const XINPUT_DEVSUBTYPE_GUITAR: ::BYTE = 0x06; 11 pub const XINPUT_DEVSUBTYPE_DRUM_KIT: ::BYTE = 0x08; 12 pub const XINPUT_CAPS_VOICE_SUPPORTED: ::WORD = 0x0004; 13 pub const XINPUT_GAMEPAD_DPAD_UP: ::WORD = 0x0001; 14 pub const XINPUT_GAMEPAD_DPAD_DOWN: ::WORD = 0x0002; 15 pub const XINPUT_GAMEPAD_DPAD_LEFT: ::WORD = 0x0004; 16 pub const XINPUT_GAMEPAD_DPAD_RIGHT: ::WORD = 0x0008; 17 pub const XINPUT_GAMEPAD_START: ::WORD = 0x0010; 18 pub const XINPUT_GAMEPAD_BACK: ::WORD = 0x0020; 19 pub const XINPUT_GAMEPAD_LEFT_THUMB: ::WORD = 0x0040; 20 pub const XINPUT_GAMEPAD_RIGHT_THUMB: ::WORD = 0x0080; 21 pub const XINPUT_GAMEPAD_LEFT_SHOULDER: ::WORD = 0x0100; 22 pub const XINPUT_GAMEPAD_RIGHT_SHOULDER: ::WORD = 0x0200; 23 pub const XINPUT_GAMEPAD_A: ::WORD = 0x1000; 24 pub const XINPUT_GAMEPAD_B: ::WORD = 0x2000; 25 pub const XINPUT_GAMEPAD_X: ::WORD = 0x4000; 26 pub const XINPUT_GAMEPAD_Y: ::WORD = 0x8000; 27 pub const XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE: ::SHORT = 7849; 28 pub const XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE: ::SHORT = 8689; 29 pub const XINPUT_GAMEPAD_TRIGGER_THRESHOLD: ::BYTE = 30; 30 pub const XINPUT_FLAG_GAMEPAD: ::DWORD = 0x00000001; 31 pub const BATTERY_DEVTYPE_GAMEPAD: ::BYTE = 0x00; 32 pub const BATTERY_DEVTYPE_HEADSET: ::BYTE = 0x01; 33 pub const BATTERY_TYPE_DISCONNECTED: ::BYTE = 0x00; 34 pub const BATTERY_TYPE_WIRED: ::BYTE = 0x01; 35 pub const BATTERY_TYPE_ALKALINE: ::BYTE = 0x02; 36 pub const BATTERY_TYPE_NIMH: ::BYTE = 0x03; 37 pub const BATTERY_TYPE_UNKNOWN: ::BYTE = 0xFF; 38 pub const BATTERY_LEVEL_EMPTY: ::BYTE = 0x00; 39 pub const BATTERY_LEVEL_LOW: ::BYTE = 0x01; 40 pub const BATTERY_LEVEL_MEDIUM: ::BYTE = 0x02; 41 pub const BATTERY_LEVEL_FULL: ::BYTE = 0x03; 42 pub const XUSER_MAX_COUNT: ::DWORD = 4; 43 pub const XUSER_INDEX_ANY: ::DWORD = 0x000000FF; 44 pub const VK_PAD_A: ::WORD = 0x5800; 45 pub const VK_PAD_B: ::WORD = 0x5801; 46 pub const VK_PAD_X: ::WORD = 0x5802; 47 pub const VK_PAD_Y: ::WORD = 0x5803; 48 pub const VK_PAD_RSHOULDER: ::WORD = 0x5804; 49 pub const VK_PAD_LSHOULDER: ::WORD = 0x5805; 50 pub const VK_PAD_LTRIGGER: ::WORD = 0x5806; 51 pub const VK_PAD_RTRIGGER: ::WORD = 0x5807; 52 pub const VK_PAD_DPAD_UP: ::WORD = 0x5810; 53 pub const VK_PAD_DPAD_DOWN: ::WORD = 0x5811; 54 pub const VK_PAD_DPAD_LEFT: ::WORD = 0x5812; 55 pub const VK_PAD_DPAD_RIGHT: ::WORD = 0x5813; 56 pub const VK_PAD_START: ::WORD = 0x5814; 57 pub const VK_PAD_BACK: ::WORD = 0x5815; 58 pub const VK_PAD_LTHUMB_PRESS: ::WORD = 0x5816; 59 pub const VK_PAD_RTHUMB_PRESS: ::WORD = 0x5817; 60 pub const VK_PAD_LTHUMB_UP: ::WORD = 0x5820; 61 pub const VK_PAD_LTHUMB_DOWN: ::WORD = 0x5821; 62 pub const VK_PAD_LTHUMB_RIGHT: ::WORD = 0x5822; 63 pub const VK_PAD_LTHUMB_LEFT: ::WORD = 0x5823; 64 pub const VK_PAD_LTHUMB_UPLEFT: ::WORD = 0x5824; 65 pub const VK_PAD_LTHUMB_UPRIGHT: ::WORD = 0x5825; 66 pub const VK_PAD_LTHUMB_DOWNRIGHT: ::WORD = 0x5826; 67 pub const VK_PAD_LTHUMB_DOWNLEFT: ::WORD = 0x5827; 68 pub const VK_PAD_RTHUMB_UP: ::WORD = 0x5830; 69 pub const VK_PAD_RTHUMB_DOWN: ::WORD = 0x5831; 70 pub const VK_PAD_RTHUMB_RIGHT: ::WORD = 0x5832; 71 pub const VK_PAD_RTHUMB_LEFT: ::WORD = 0x5833; 72 pub const VK_PAD_RTHUMB_UPLEFT: ::WORD = 0x5834; 73 pub const VK_PAD_RTHUMB_UPRIGHT: ::WORD = 0x5835; 74 pub const VK_PAD_RTHUMB_DOWNRIGHT: ::WORD = 0x5836; 75 pub const VK_PAD_RTHUMB_DOWNLEFT: ::WORD = 0x5837; 76 pub const XINPUT_KEYSTROKE_KEYDOWN: ::WORD = 0x0001; 77 pub const XINPUT_KEYSTROKE_KEYUP: ::WORD = 0x0002; 78 pub const XINPUT_KEYSTROKE_REPEAT: ::WORD = 0x0004; 79 STRUCT!{struct XINPUT_GAMEPAD { 80 wButtons: ::WORD, 81 bLeftTrigger: ::BYTE, 82 bRightTrigger: ::BYTE, 83 sThumbLX: ::SHORT, 84 sThumbLY: ::SHORT, 85 sThumbRX: ::SHORT, 86 sThumbRY: ::SHORT, 87 }} 88 pub type PXINPUT_GAMEPAD = *mut XINPUT_GAMEPAD; 89 STRUCT!{struct XINPUT_STATE { 90 dwPacketNumber: ::DWORD, 91 Gamepad: ::XINPUT_GAMEPAD, 92 }} 93 pub type PXINPUT_STATE = *mut XINPUT_STATE; 94 STRUCT!{struct XINPUT_VIBRATION { 95 wLeftMotorSpeed: ::WORD, 96 wRightMotorSpeed: ::WORD, 97 }} 98 pub type PXINPUT_VIBRATION = *mut XINPUT_VIBRATION; 99 STRUCT!{struct XINPUT_CAPABILITIES { 100 Type: ::BYTE, 101 SubType: ::BYTE, 102 Flags: ::WORD, 103 Gamepad: ::XINPUT_GAMEPAD, 104 Vibration: ::XINPUT_VIBRATION, 105 }} 106 pub type PXINPUT_CAPABILITIES = *mut XINPUT_CAPABILITIES; 107 STRUCT!{struct XINPUT_BATTERY_INFORMATION { 108 BatteryType: ::BYTE, 109 BatteryLevel: ::BYTE, 110 }} 111 pub type PXINPUT_BATTERY_INFORMATION = *mut XINPUT_BATTERY_INFORMATION; 112 STRUCT!{struct XINPUT_KEYSTROKE { 113 VirtualKey: ::WORD, 114 Unicode: ::WCHAR, 115 UserIndex: ::BYTE, 116 HidCode: ::BYTE, 117 }} 118 pub type PXINPUT_KEYSTROKE = *mut XINPUT_KEYSTROKE; 119