// Copyright © 2015, Peter Atashian // Licensed under the MIT License //! XInput procedure declarations, constant definitions and macros pub const XINPUT_DEVTYPE_GAMEPAD: ::BYTE = 0x01; pub const XINPUT_DEVSUBTYPE_GAMEPAD: ::BYTE = 0x01; pub const XINPUT_DEVSUBTYPE_WHEEL: ::BYTE = 0x02; pub const XINPUT_DEVSUBTYPE_ARCADE_STICK: ::BYTE = 0x03; pub const XINPUT_DEVSUBTYPE_FLIGHT_SICK: ::BYTE = 0x04; pub const XINPUT_DEVSUBTYPE_DANCE_PAD: ::BYTE = 0x05; pub const XINPUT_DEVSUBTYPE_GUITAR: ::BYTE = 0x06; pub const XINPUT_DEVSUBTYPE_DRUM_KIT: ::BYTE = 0x08; pub const XINPUT_CAPS_VOICE_SUPPORTED: ::WORD = 0x0004; pub const XINPUT_GAMEPAD_DPAD_UP: ::WORD = 0x0001; pub const XINPUT_GAMEPAD_DPAD_DOWN: ::WORD = 0x0002; pub const XINPUT_GAMEPAD_DPAD_LEFT: ::WORD = 0x0004; pub const XINPUT_GAMEPAD_DPAD_RIGHT: ::WORD = 0x0008; pub const XINPUT_GAMEPAD_START: ::WORD = 0x0010; pub const XINPUT_GAMEPAD_BACK: ::WORD = 0x0020; pub const XINPUT_GAMEPAD_LEFT_THUMB: ::WORD = 0x0040; pub const XINPUT_GAMEPAD_RIGHT_THUMB: ::WORD = 0x0080; pub const XINPUT_GAMEPAD_LEFT_SHOULDER: ::WORD = 0x0100; pub const XINPUT_GAMEPAD_RIGHT_SHOULDER: ::WORD = 0x0200; pub const XINPUT_GAMEPAD_A: ::WORD = 0x1000; pub const XINPUT_GAMEPAD_B: ::WORD = 0x2000; pub const XINPUT_GAMEPAD_X: ::WORD = 0x4000; pub const XINPUT_GAMEPAD_Y: ::WORD = 0x8000; pub const XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE: ::SHORT = 7849; pub const XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE: ::SHORT = 8689; pub const XINPUT_GAMEPAD_TRIGGER_THRESHOLD: ::BYTE = 30; pub const XINPUT_FLAG_GAMEPAD: ::DWORD = 0x00000001; pub const BATTERY_DEVTYPE_GAMEPAD: ::BYTE = 0x00; pub const BATTERY_DEVTYPE_HEADSET: ::BYTE = 0x01; pub const BATTERY_TYPE_DISCONNECTED: ::BYTE = 0x00; pub const BATTERY_TYPE_WIRED: ::BYTE = 0x01; pub const BATTERY_TYPE_ALKALINE: ::BYTE = 0x02; pub const BATTERY_TYPE_NIMH: ::BYTE = 0x03; pub const BATTERY_TYPE_UNKNOWN: ::BYTE = 0xFF; pub const BATTERY_LEVEL_EMPTY: ::BYTE = 0x00; pub const BATTERY_LEVEL_LOW: ::BYTE = 0x01; pub const BATTERY_LEVEL_MEDIUM: ::BYTE = 0x02; pub const BATTERY_LEVEL_FULL: ::BYTE = 0x03; pub const XUSER_MAX_COUNT: ::DWORD = 4; pub const XUSER_INDEX_ANY: ::DWORD = 0x000000FF; pub const VK_PAD_A: ::WORD = 0x5800; pub const VK_PAD_B: ::WORD = 0x5801; pub const VK_PAD_X: ::WORD = 0x5802; pub const VK_PAD_Y: ::WORD = 0x5803; pub const VK_PAD_RSHOULDER: ::WORD = 0x5804; pub const VK_PAD_LSHOULDER: ::WORD = 0x5805; pub const VK_PAD_LTRIGGER: ::WORD = 0x5806; pub const VK_PAD_RTRIGGER: ::WORD = 0x5807; pub const VK_PAD_DPAD_UP: ::WORD = 0x5810; pub const VK_PAD_DPAD_DOWN: ::WORD = 0x5811; pub const VK_PAD_DPAD_LEFT: ::WORD = 0x5812; pub const VK_PAD_DPAD_RIGHT: ::WORD = 0x5813; pub const VK_PAD_START: ::WORD = 0x5814; pub const VK_PAD_BACK: ::WORD = 0x5815; pub const VK_PAD_LTHUMB_PRESS: ::WORD = 0x5816; pub const VK_PAD_RTHUMB_PRESS: ::WORD = 0x5817; pub const VK_PAD_LTHUMB_UP: ::WORD = 0x5820; pub const VK_PAD_LTHUMB_DOWN: ::WORD = 0x5821; pub const VK_PAD_LTHUMB_RIGHT: ::WORD = 0x5822; pub const VK_PAD_LTHUMB_LEFT: ::WORD = 0x5823; pub const VK_PAD_LTHUMB_UPLEFT: ::WORD = 0x5824; pub const VK_PAD_LTHUMB_UPRIGHT: ::WORD = 0x5825; pub const VK_PAD_LTHUMB_DOWNRIGHT: ::WORD = 0x5826; pub const VK_PAD_LTHUMB_DOWNLEFT: ::WORD = 0x5827; pub const VK_PAD_RTHUMB_UP: ::WORD = 0x5830; pub const VK_PAD_RTHUMB_DOWN: ::WORD = 0x5831; pub const VK_PAD_RTHUMB_RIGHT: ::WORD = 0x5832; pub const VK_PAD_RTHUMB_LEFT: ::WORD = 0x5833; pub const VK_PAD_RTHUMB_UPLEFT: ::WORD = 0x5834; pub const VK_PAD_RTHUMB_UPRIGHT: ::WORD = 0x5835; pub const VK_PAD_RTHUMB_DOWNRIGHT: ::WORD = 0x5836; pub const VK_PAD_RTHUMB_DOWNLEFT: ::WORD = 0x5837; pub const XINPUT_KEYSTROKE_KEYDOWN: ::WORD = 0x0001; pub const XINPUT_KEYSTROKE_KEYUP: ::WORD = 0x0002; pub const XINPUT_KEYSTROKE_REPEAT: ::WORD = 0x0004; STRUCT!{struct XINPUT_GAMEPAD { wButtons: ::WORD, bLeftTrigger: ::BYTE, bRightTrigger: ::BYTE, sThumbLX: ::SHORT, sThumbLY: ::SHORT, sThumbRX: ::SHORT, sThumbRY: ::SHORT, }} pub type PXINPUT_GAMEPAD = *mut XINPUT_GAMEPAD; STRUCT!{struct XINPUT_STATE { dwPacketNumber: ::DWORD, Gamepad: ::XINPUT_GAMEPAD, }} pub type PXINPUT_STATE = *mut XINPUT_STATE; STRUCT!{struct XINPUT_VIBRATION { wLeftMotorSpeed: ::WORD, wRightMotorSpeed: ::WORD, }} pub type PXINPUT_VIBRATION = *mut XINPUT_VIBRATION; STRUCT!{struct XINPUT_CAPABILITIES { Type: ::BYTE, SubType: ::BYTE, Flags: ::WORD, Gamepad: ::XINPUT_GAMEPAD, Vibration: ::XINPUT_VIBRATION, }} pub type PXINPUT_CAPABILITIES = *mut XINPUT_CAPABILITIES; STRUCT!{struct XINPUT_BATTERY_INFORMATION { BatteryType: ::BYTE, BatteryLevel: ::BYTE, }} pub type PXINPUT_BATTERY_INFORMATION = *mut XINPUT_BATTERY_INFORMATION; STRUCT!{struct XINPUT_KEYSTROKE { VirtualKey: ::WORD, Unicode: ::WCHAR, UserIndex: ::BYTE, HidCode: ::BYTE, }} pub type PXINPUT_KEYSTROKE = *mut XINPUT_KEYSTROKE;