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