Skip to main content

hid_types/id/usage/
mod.rs

1//! HID Usage identifiers.
2
3pub mod arcade;
4pub mod auxiliary_display;
5pub mod barcode_scanner;
6pub mod battery_system;
7pub mod braille_display;
8pub mod camera_control;
9pub mod consumer;
10pub mod digitizers;
11pub mod eye_head_trackers;
12pub mod fido_alliance;
13pub mod game_controls;
14pub mod generic_desktop;
15pub mod generic_device_controls;
16pub mod haptics;
17pub mod keyboard_keypad;
18pub mod led_page;
19pub mod lighting_illumination;
20pub mod magnetic_stripe_reader;
21pub mod medical_instrument;
22pub mod monitor;
23pub mod physical_input_device;
24pub mod power;
25pub mod scales;
26pub mod sensors;
27pub mod simulation_controls;
28pub mod soc;
29pub mod sport_controls;
30pub mod telephony_device;
31pub mod vesa_virtual_controls;
32pub mod vr_controls;
33
34use num_enum::{IntoPrimitive, TryFromPrimitive};
35
36use crate::Ident;
37
38/// USB-HID Usage Page
39///
40/// See <https://www.usb.org/document-library/hid-usage-tables-17>
41#[expect(missing_docs)]
42#[derive(Clone, Copy, Debug, PartialEq, TryFromPrimitive, IntoPrimitive)]
43#[repr(u16)]
44pub enum KnownUsagePage {
45    Undefined = 0x00,
46    GenericDesktop = 0x01,
47    SimulationControls = 0x02,
48    VrControls = 0x03,
49    SportControls = 0x04,
50    GameControls = 0x05,
51    GenericDeviceControls = 0x06,
52    KeyboardKeypad = 0x07,
53    Led = 0x08,
54    Button = 0x09,
55    Ordinal = 0x0A,
56    TelephonyDevice = 0x0B,
57    Consumer = 0x0C,
58    Digitizers = 0x0D,
59    Haptics = 0x0E,
60    PhysicalInputDevice = 0x0F,
61    Unicode = 0x10,
62    Soc = 0x11,
63    EyeAndHeadTrackers = 0x12,
64    // 0x13 reserved
65    AuxiliaryDisplay = 0x14,
66    // 0x15-0x1F reserved
67    Sensors = 0x20,
68    // 0x21-0x3F reserved
69    MedicalInstrument = 0x40,
70    BrailleDisplay = 0x41,
71    // 0x42-0x58 reserved
72    LightingAndIllumination = 0x59,
73    // 0x5A-0x7F reserved
74    Monitor = 0x80,
75    MonitorEnumerated = 0x81,
76    VesaVirtualControls = 0x82,
77    // 0x83 reserved
78    Power = 0x84,
79    BatterySystem = 0x85,
80    // 0x86-0x8B reserved
81    BarcodeScanner = 0x8C,
82    Scales = 0x8D,
83    MagneticStripeReader = 0x8E,
84    // 0x8F reserved
85    CameraControl = 0x90,
86    Arcade = 0x91,
87    GamingDevice = 0x92,
88    // 0x93-0xF1CF reserved
89    FidoAlliance = 0xF1D0,
90    // 0xF1D1-0xFEFF reserved
91    // 0xFF00-0xFFFF vendor-defined
92}
93
94/// A __Usage Page__ value.
95pub type UsagePage = Ident<KnownUsagePage, u16>;