1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// Copyright © 2015, Peter Atashian
// Licensed under the MIT License <LICENSE.md>
//! 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;