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.

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 through the device’s HID++ native wheel-inversion mode when supported. 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