Skip to content

MX Master 3 gesture capture remains dead after sleep until background agent restarts #348

Description

@MoosaTae

Affected version

OpenLogi v0.6.18 with an MX Master 3 or 3S using the dedicated gesture button (HID++ CID 0x00c3).

Reproduction

  1. Configure gesture-button click and directional swipe actions.
  2. Confirm that the actions work.
  3. Let the mouse sleep, or put the Mac to sleep and wake it.
  4. Try the gesture button again.

Actual behavior

Gesture click and swipe events can remain dead after wake. Reopening the OpenLogi GUI may not recover them because the persistent openlogi-agent process owns HID++ capture separately from the GUI.

Expected behavior

The background agent automatically restores gesture capture after device reconnection or system wake, without requiring either process to restart.

Temporary workaround

Restart openlogi-agent so it opens a new HID++ session and reapplies diversion.

Root cause

Gesture capture uses temporary HID++ control diversion for CID 0x00c3. Firmware can discard that volatile diversion during a mouse or system sleep transition while the capture task remains alive and considers the same route and configuration active. The capture identity therefore does not change, so the manager does not recreate the session or run arm_controls again.

Inventory wake recovery currently reapplies DPI and SmartShift settings but does not invalidate and re-arm the selected device capture session. Short Mac sleeps can also evade the polling-gap wake heuristic.

Proposed fix

  • Observe native macOS wake notifications.
  • Track a shared capture restart generation.
  • Increment it when the selected device wakes, reconnects, or requires volatile restoration.
  • Include generation in the capture identity so orderly teardown and recreation reapplies diversion.
  • Preserve pairing exclusion and avoid restarts for unrelated devices.

Related work

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions