hid-types 0.1.1

Rust types for working with USB HID report descriptors
Documentation
//! HID Usage identifiers.

pub mod arcade;
pub mod auxiliary_display;
pub mod barcode_scanner;
pub mod battery_system;
pub mod braille_display;
pub mod camera_control;
pub mod consumer;
pub mod digitizers;
pub mod eye_head_trackers;
pub mod fido_alliance;
pub mod game_controls;
pub mod generic_desktop;
pub mod generic_device_controls;
pub mod haptics;
pub mod keyboard_keypad;
pub mod led_page;
pub mod lighting_illumination;
pub mod magnetic_stripe_reader;
pub mod medical_instrument;
pub mod monitor;
pub mod physical_input_device;
pub mod power;
pub mod scales;
pub mod sensors;
pub mod simulation_controls;
pub mod soc;
pub mod sport_controls;
pub mod telephony_device;
pub mod vesa_virtual_controls;
pub mod vr_controls;

use num_enum::{IntoPrimitive, TryFromPrimitive};

use crate::Ident;

/// USB-HID Usage Page
///
/// See <https://www.usb.org/document-library/hid-usage-tables-17>
#[expect(missing_docs)]
#[derive(Clone, Copy, Debug, PartialEq, TryFromPrimitive, IntoPrimitive)]
#[repr(u16)]
pub enum KnownUsagePage {
    Undefined = 0x00,
    GenericDesktop = 0x01,
    SimulationControls = 0x02,
    VrControls = 0x03,
    SportControls = 0x04,
    GameControls = 0x05,
    GenericDeviceControls = 0x06,
    KeyboardKeypad = 0x07,
    Led = 0x08,
    Button = 0x09,
    Ordinal = 0x0A,
    TelephonyDevice = 0x0B,
    Consumer = 0x0C,
    Digitizers = 0x0D,
    Haptics = 0x0E,
    PhysicalInputDevice = 0x0F,
    Unicode = 0x10,
    Soc = 0x11,
    EyeAndHeadTrackers = 0x12,
    // 0x13 reserved
    AuxiliaryDisplay = 0x14,
    // 0x15-0x1F reserved
    Sensors = 0x20,
    // 0x21-0x3F reserved
    MedicalInstrument = 0x40,
    BrailleDisplay = 0x41,
    // 0x42-0x58 reserved
    LightingAndIllumination = 0x59,
    // 0x5A-0x7F reserved
    Monitor = 0x80,
    MonitorEnumerated = 0x81,
    VesaVirtualControls = 0x82,
    // 0x83 reserved
    Power = 0x84,
    BatterySystem = 0x85,
    // 0x86-0x8B reserved
    BarcodeScanner = 0x8C,
    Scales = 0x8D,
    MagneticStripeReader = 0x8E,
    // 0x8F reserved
    CameraControl = 0x90,
    Arcade = 0x91,
    GamingDevice = 0x92,
    // 0x93-0xF1CF reserved
    FidoAlliance = 0xF1D0,
    // 0xF1D1-0xFEFF reserved
    // 0xFF00-0xFFFF vendor-defined
}

/// A __Usage Page__ value.
pub type UsagePage = Ident<KnownUsagePage, u16>;