Skip to main content

hid_types/id/usage/
haptics.rs

1//! Usage ID values from the Haptics Usage Page.
2
3use num_enum::{IntoPrimitive, TryFromPrimitive};
4
5use crate::Ident;
6
7/// Usage ID values from the Haptics Usage Page.
8///
9/// See [HID Usage Tables for Universal Serial Bus](https://www.usb.org/document-library/hid-usage-tables-17),
10/// section 17.
11#[expect(missing_docs)]
12#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive, IntoPrimitive)]
13#[repr(u16)]
14#[non_exhaustive]
15pub enum KnownUsage {
16    Undefined = 0x00,
17    SimpleHapticController = 0x01,
18    // 0x02-0x0F reserved
19    WaveformList = 0x10,
20    DurationList = 0x11,
21    // 0x12-0x1F reserved
22    AutoTrigger = 0x20,
23    ManualTrigger = 0x21,
24    AutoTriggerAssociatedControl = 0x22,
25    Intensity = 0x23,
26    RepeatCount = 0x24,
27    RetriggerPeriod = 0x25,
28    WaveformVendorPage = 0x26,
29    WaveformVendorId = 0x27,
30    WaveformCutoffTime = 0x28,
31    // 0x29-0x1000 reserved
32    WaveformNone = 0x1001,
33    WaveformStop = 0x1002,
34    WaveformClick = 0x1003,
35    WaveformBuzzContinuous = 0x1004,
36    WaveformRumbleContinuous = 0x1005,
37    WaveformPress = 0x1006,
38    WaveformRelease = 0x1007,
39    WaveformHover = 0x1008,
40    WaveformSuccess = 0x1009,
41    WaveformError = 0x100A,
42    WaveformInkContinuous = 0x100B,
43    WaveformPencilContinuous = 0x100C,
44    WaveformMarkerContinuous = 0x100D,
45    WaveformChiselMarkerContinuous = 0x100E,
46    WaveformBrushContinuous = 0x100F,
47    WaveformEraserContinuous = 0x1010,
48    WaveformSparkleContinuous = 0x1011,
49    // 0x1012-0x2000 reserved
50    // 0x2001-0x2FFF reserved for vendor waveforms
51    // 0x3000-0xFFFF reserved
52}
53
54/// A __Usage ID__ value.
55pub type Usage = Ident<KnownUsage, u16>;