hid-types 0.1.1

Rust types for working with USB HID report descriptors
Documentation
//! Well-known Usage ID values from the Haptics Usage Page.

use num_enum::{IntoPrimitive, TryFromPrimitive};

use crate::Ident;

/// Well-known Usage ID values from the Haptics Usage Page.
///
/// See [HID Usage Tables for Universal Serial Bus](https://www.usb.org/document-library/hid-usage-tables-17),
/// section 17.
#[expect(missing_docs)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive, IntoPrimitive)]
#[repr(u16)]
pub enum KnownUsage {
    Undefined = 0x00,
    SimpleHapticController = 0x01,
    // 0x02-0x0F reserved
    WaveformList = 0x10,
    DurationList = 0x11,
    // 0x12-0x1F reserved
    AutoTrigger = 0x20,
    ManualTrigger = 0x21,
    AutoTriggerAssociatedControl = 0x22,
    Intensity = 0x23,
    RepeatCount = 0x24,
    RetriggerPeriod = 0x25,
    WaveformVendorPage = 0x26,
    WaveformVendorId = 0x27,
    WaveformCutoffTime = 0x28,
    // 0x29-0x1000 reserved
    WaveformNone = 0x1001,
    WaveformStop = 0x1002,
    WaveformClick = 0x1003,
    WaveformBuzzContinuous = 0x1004,
    WaveformRumbleContinuous = 0x1005,
    WaveformPress = 0x1006,
    WaveformRelease = 0x1007,
    WaveformHover = 0x1008,
    WaveformSuccess = 0x1009,
    WaveformError = 0x100A,
    WaveformInkContinuous = 0x100B,
    WaveformPencilContinuous = 0x100C,
    WaveformMarkerContinuous = 0x100D,
    WaveformChiselMarkerContinuous = 0x100E,
    WaveformBrushContinuous = 0x100F,
    WaveformEraserContinuous = 0x1010,
    WaveformSparkleContinuous = 0x1011,
    // 0x1012-0x2000 reserved
    // 0x2001-0x2FFF reserved for vendor waveforms
    // 0x3000-0xFFFF reserved
}

/// A __Usage ID__ value.
pub type Usage = Ident<KnownUsage, u16>;