xinput/enumerations/devsubtype.rs
1#[cfg_attr(not(doc), allow(unused_imports))] use crate::*;
2use bytemuck::{Pod, Zeroable};
3use winapi::um::xinput::*;
4const XINPUT_DEVSUBTYPE_FLIGHT_STICK : u8 = 0x04; // winapi missing def
5
6
7
8/// \[[microsoft.com](https://learn.microsoft.com/en-us/windows/win32/xinput/xinput-and-controller-subtypes)\]
9/// XINPUT_DEVSUBTYPE_\*
10///
11/// Subtypes of [DevType::Gamepad].
12///
13/// **NOTE:** "Legacy" XInput (9.1.0 / Windows Vista) will always return [`DevSubType::Gamepad`], regardless of device.
14#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
15#[derive(Default, Pod, Zeroable)] // 0 = Unknown
16#[repr(transparent)] pub struct DevSubType(u8);
17
18enumish! { DevSubType => u8; Unknown, Gamepad, Wheel, ArcadeStick, FlightStick, DancePad, Guitar, GuitarAlternate, DrumKit, GuitarBass, ArcadePad }
19
20#[allow(non_upper_case_globals)] impl DevSubType {
21 /// An unknown style of Xbox 360 controller.
22 pub const Unknown : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_UNKNOWN);
23
24 /// A typical Xbox 360 gamepad, or fallback on XInput 9.1.0 / Windows Vista.
25 pub const Gamepad : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_GAMEPAD);
26
27 /// A wheel (such as the [Xbox 360 Wireless Racing Wheel](https://en.wikipedia.org/wiki/Xbox_360_Wireless_Racing_Wheel)?)
28 pub const Wheel : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_WHEEL);
29
30 #[allow(missing_docs)] // Would be nice to track down an actual example
31 pub const ArcadeStick : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_ARCADE_STICK);
32
33 #[allow(missing_docs)] // Would be nice to track down an actual example
34 pub const FlightStick : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_FLIGHT_STICK);
35
36 /// A dance pad (such as the one provided with [DDR](https://en.wikipedia.org/wiki/Dance_Dance_Revolution_Universe) and other dancing games?
37 pub const DancePad : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_DANCE_PAD);
38
39 /// A guitar (such as the one bundled with Guitar Hero or Rock Band?)
40 pub const Guitar : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_GUITAR);
41
42 /// A guitar (such as the one bundled with Guitar Hero or Rock Band?)
43 pub const GuitarAlternate : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE);
44
45 /// A drum kit (such as the one bundled with Rock Band?)
46 pub const DrumKit : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_DRUM_KIT);
47
48 /// A bass guitar (such as the one bundled with Guitar Hero or Rock Band?)
49 pub const GuitarBass : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_GUITAR_BASS);
50
51 #[allow(missing_docs)] // Would be nice to track down an actual example
52 pub const ArcadePad : DevSubType = DevSubType(XINPUT_DEVSUBTYPE_ARCADE_PAD);
53}
54
55#[doc(hidden)] impl DevSubType {
56}
57
58//#cpp2rust XINPUT_DEVSUBTYPE_UNKNOWN = xinput::DevSubType::Unknown
59//#cpp2rust XINPUT_DEVSUBTYPE_GAMEPAD = xinput::DevSubType::Gamepad
60//#cpp2rust XINPUT_DEVSUBTYPE_WHEEL = xinput::DevSubType::Wheel
61//#cpp2rust XINPUT_DEVSUBTYPE_ARCADE_STICK = xinput::DevSubType::ArcadeStick
62//#cpp2rust XINPUT_DEVSUBTYPE_FLIGHT_STICK = xinput::DevSubType::FlightStick
63//#cpp2rust XINPUT_DEVSUBTYPE_DANCE_PAD = xinput::DevSubType::DancePad
64//#cpp2rust XINPUT_DEVSUBTYPE_GUITAR = xinput::DevSubType::Guitar
65//#cpp2rust XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE = xinput::DevSubType::GuitarAlternate
66//#cpp2rust XINPUT_DEVSUBTYPE_DRUM_KIT = xinput::DevSubType::DrumKit
67//#cpp2rust XINPUT_DEVSUBTYPE_GUITAR_BASS = xinput::DevSubType::GuitarBass
68//#cpp2rust XINPUT_DEVSUBTYPE_ARCADE_PAD = xinput::DevSubType::ArcadePad