usbhidusage 0.1.3

A general purpose library for working with usb Human Interface Device Descriptors from the HID Usage Tables for Universal Serial Bus (USB) v1.5
Documentation
#[derive(Clone, Copy, PartialEq, PartialOrd, Ord, Eq, Hash, Debug, Default)]
#[non_exhaustive]
#[repr(u16)]
pub enum GenericDeviceControlsUsage {
    #[default]
    Undefined,
    Background_NonuserControls,
    Reserved02_1F(u16),
    BatteryStrength = 32,
    WirelessChannel,
    WirelessID,
    DiscoverWirelessControl,
    SecurityCodeCharacterEntered,
    SecurityCodeCharacterErased,
    SecurityCodeCleared,
    SequenceID,
    SequenceIDReset,
    RFSignalStrength,
    SoftwareVersion,
    ProtocolVersion,
    HardwareVersion,
    Major,
    Minor,
    Revision,
    Handedness,
    EitherHand,
    LeftHand,
    RightHand,
    BothHands,
    Reserved35_3F(u16),
    GripPoseOffset = 64,
    PointerPoseOffset,
    Reserved42_FFFF(u16),
}
impl<T> From<T> for GenericDeviceControlsUsage
where
    T: TryInto<u16>,
{
    fn from(value: T) -> Self {
        let value = value.try_into().unwrap_or(0);
        match value {
            0 => Self::Undefined,
            1 => Self::Background_NonuserControls,
            2..32 => Self::Reserved02_1F(value),
            32 => Self::BatteryStrength,
            33 => Self::WirelessChannel,
            34 => Self::WirelessID,
            35 => Self::DiscoverWirelessControl,
            36 => Self::SecurityCodeCharacterEntered,
            37 => Self::SecurityCodeCharacterErased,
            38 => Self::SecurityCodeCleared,
            39 => Self::SequenceID,
            40 => Self::SequenceIDReset,
            41 => Self::RFSignalStrength,
            42 => Self::SoftwareVersion,
            43 => Self::ProtocolVersion,
            44 => Self::HardwareVersion,
            45 => Self::Major,
            46 => Self::Minor,
            47 => Self::Revision,
            48 => Self::Handedness,
            49 => Self::EitherHand,
            50 => Self::LeftHand,
            51 => Self::RightHand,
            52 => Self::BothHands,
            53..64 => Self::Reserved35_3F(value),
            64 => Self::GripPoseOffset,
            65 => Self::PointerPoseOffset,
            66..=65535 => Self::Reserved42_FFFF(value),
        }
    }
}