pub struct Capabilities {
pub buttons: bool,
pub pointer: bool,
pub lighting: bool,
pub scroll_inversion: bool,
}Expand description
What a device can be configured to do, derived from the HID++ feature
table it reports (feature 0x0001). This is the source of truth for which
configuration panels the UI offers — a panel shows iff the device exposes
the feature that drives it. Gating on capability rather than on
DeviceKind is what keeps a misclassified device from losing its panels
(issue #127): kind is an identity guess, capability is what the firmware
actually announced.
Fields§
Reprogrammable buttons — HID++ 0x1b00–0x1b04 (ReprogControls).
pointer: boolAdjustable pointer resolution — HID++ 0x2201 / 0x2202 (AdjustableDpi).
lighting: boolSolid-colour RGB the lighting panel can actually drive — HID++
ColorLedEffects (0x8070) or PerKeyLighting (0x8080), the features
set_keyboard_color writes. Backlight-only families aren’t driven by the
panel, so they don’t flip this and don’t earn an inert Lighting tab.
scroll_inversion: boolNative vertical wheel inversion — HID++ 0x2121 HiResWheel with the
firmware-reported has_invert capability.
Implementations§
Source§impl Capabilities
impl Capabilities
Sourcepub fn from_feature_ids(ids: &[u16]) -> Self
pub fn from_feature_ids(ids: &[u16]) -> Self
Derive capabilities from the set of HID++ feature IDs a device reports. Membership of a driving feature ID flips the corresponding flag.
Sourcepub fn presumed_from_kind(kind: DeviceKind) -> Self
pub fn presumed_from_kind(kind: DeviceKind) -> Self
Best-effort capabilities for a device we could not probe (offline /
never reached), guessed from its DeviceKind. Used only as a fallback
when no measured Capabilities exist — a sleeping mouse should still
show its button/pointer panels so its bindings (host-side) stay
configurable.
Trait Implementations§
Source§impl Clone for Capabilities
impl Clone for Capabilities
Source§fn clone(&self) -> Capabilities
fn clone(&self) -> Capabilities
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for Capabilities
Source§impl Debug for Capabilities
impl Debug for Capabilities
Source§impl Default for Capabilities
impl Default for Capabilities
Source§fn default() -> Capabilities
fn default() -> Capabilities
Source§impl<'de> Deserialize<'de> for Capabilities
impl<'de> Deserialize<'de> for Capabilities
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Capabilities
Source§impl PartialEq for Capabilities
impl PartialEq for Capabilities
Source§fn eq(&self, other: &Capabilities) -> bool
fn eq(&self, other: &Capabilities) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for Capabilities
impl Serialize for Capabilities
impl StructuralPartialEq for Capabilities
Auto Trait Implementations§
impl Freeze for Capabilities
impl RefUnwindSafe for Capabilities
impl Send for Capabilities
impl Sync for Capabilities
impl Unpin for Capabilities
impl UnsafeUnpin for Capabilities
impl UnwindSafe for Capabilities
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.