Skip to main content

hid_types/id/usage/
mod.rs

1//! Usage Page and 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/// Usage Page identifiers.
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)]
44#[non_exhaustive]
45pub enum KnownUsagePage {
46    Undefined = 0x00,
47    GenericDesktop = 0x01,
48    SimulationControls = 0x02,
49    VrControls = 0x03,
50    SportControls = 0x04,
51    GameControls = 0x05,
52    GenericDeviceControls = 0x06,
53    KeyboardKeypad = 0x07,
54    Led = 0x08,
55    Button = 0x09,
56    Ordinal = 0x0A,
57    TelephonyDevice = 0x0B,
58    Consumer = 0x0C,
59    Digitizers = 0x0D,
60    Haptics = 0x0E,
61    PhysicalInputDevice = 0x0F,
62    Unicode = 0x10,
63    Soc = 0x11,
64    EyeAndHeadTrackers = 0x12,
65    // 0x13 reserved
66    AuxiliaryDisplay = 0x14,
67    // 0x15-0x1F reserved
68    Sensors = 0x20,
69    // 0x21-0x3F reserved
70    MedicalInstrument = 0x40,
71    BrailleDisplay = 0x41,
72    // 0x42-0x58 reserved
73    LightingAndIllumination = 0x59,
74    // 0x5A-0x7F reserved
75    Monitor = 0x80,
76    MonitorEnumerated = 0x81,
77    VesaVirtualControls = 0x82,
78    // 0x83 reserved
79    Power = 0x84,
80    BatterySystem = 0x85,
81    // 0x86-0x8B reserved
82    BarcodeScanner = 0x8C,
83    Scales = 0x8D,
84    MagneticStripeReader = 0x8E,
85    // 0x8F reserved
86    CameraControl = 0x90,
87    Arcade = 0x91,
88    GamingDevice = 0x92,
89    // 0x93-0xF1CF reserved
90    FidoAlliance = 0xF1D0,
91    // 0xF1D1-0xFEFF reserved
92    // 0xFF00-0xFFFF vendor-defined
93}
94
95/// A __Usage Page__ value.
96pub type UsagePage = Ident<KnownUsagePage, u16>;