Skip to main content

DeviceConfig

Struct DeviceConfig 

Source
pub struct DeviceConfig {
    pub gesture_owner: Option<GestureOwner>,
    pub identity: Option<DeviceIdentity>,
    pub bindings: BTreeMap<ButtonId, Binding>,
    pub per_app_bindings: BTreeMap<String, BTreeMap<ButtonId, Action>>,
    pub dpi_presets: Vec<u32>,
    pub dpi: Option<u32>,
    pub lighting: Option<Lighting>,
    pub smartshift: Option<SmartShift>,
    pub invert_scroll: bool,
}
Expand description

Settings scoped to a single physical device (keyed by HID++ model+ext).

Deserialization goes through RawDeviceConfig (#[serde(from)]) so pre-v2 files — which split bindings across button_bindings + gesture_bindings — fold into the unified Self::bindings map. Only bindings is ever serialized, so a migrated file self-heals to the v2 shape on its next save.

Fields§

§gesture_owner: Option<GestureOwner>

Which button owns the device’s single gesture role, once the user has chosen explicitly. Absent means “infer” (the thumb pad owns gestures if present) — see Config::gesture_owner. Listed first so it serializes as a scalar ahead of the bindings sub-table.

§identity: Option<DeviceIdentity>

Last-known identity (name / kind / capabilities), captured while the device was online. Lets the UI render this device — with the right config panels — on a cold start before any probe, or while it sleeps. None for configs written before this field existed or by hand.

§bindings: BTreeMap<ButtonId, Binding>

Every rebindable button’s binding: a single Action, or — for the gesture button (and, later, any raw-XY-capable button) — a Binding::Gesture per-direction map.

§per_app_bindings: BTreeMap<String, BTreeMap<ButtonId, Action>>

Per-application binding overlays (P1.4). Keyed by bundle identifier (e.g. "com.microsoft.VSCode" on macOS). When the foreground app’s id matches a key here, those bindings take precedence; anything not listed falls through to bindings. Deliberately Action-valued (not Binding): a per-app override replaces the whole button with one action, never a per-direction gesture overlay.

§dpi_presets: Vec<u32>

Ordered list of DPI presets cycled through by Action::CycleDpiPresets and indexed by Action::SetDpiPreset. Empty means “no presets configured” — the cycle action becomes a no-op until the user adds at least one.

§dpi: Option<u32>

The sensor DPI the user committed for this device. Persisted because the value lives in device RAM and resets on a power cycle (#189); the agent re-applies it when the device reconnects. None until the user first changes DPI.

§lighting: Option<Lighting>

Per-device RGB lighting (static color + brightness + on/off). None until the user changes it, so it stays out of config.toml otherwise.

§smartshift: Option<SmartShift>

Per-device SmartShift wheel configuration, re-applied on reconnect for the same reason as Self::dpi. None until the user changes it.

§invert_scroll: bool

Invert this device’s scroll-wheel direction relative to the OS setting (issue #126): on, a wheel tick scrolls the opposite way, so a user who keeps macOS “natural scrolling” for the trackpad can have a traditional “reverse” wheel on the mouse. Vertical only; the agent applies it in the OS hook and leaves continuous trackpad scrolling untouched. false (default) is the native direction, and is omitted from config.toml.

Trait Implementations§

Source§

impl Clone for DeviceConfig

Source§

fn clone(&self) -> DeviceConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DeviceConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DeviceConfig

Source§

fn default() -> DeviceConfig

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for DeviceConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for DeviceConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more