You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Device]: MX Anywhere 2S gesture button (CID 0x0052, task 0x00a9) is never captured — preserved MiddleClick map is dead and the factory Mission Control leaks #1471
Agent (capture plan). The GUI shows the binding exactly as configured.
OpenLogi version
0.8.5
Operating system
macOS 15.7.9 (x86_64)
Device model
MX Anywhere 2S
How is the device connected?
Bluetooth (direct, no receiver) — 046d:b01a — unit:e6c912de
Affected area(s)
Button remapping
What happened?
On the MX Anywhere 2S the physical button behind the wheel is the middle button, and HID++ reports it with the gesture-button task instead of an ordinary middle click. The control row from the agent's own capture log:
Launch OpenLogi; the GUI shows Middle Click → 5 directions.
Press the physical gesture/middle button → Mission Control (factory behavior).
Hold it and move up/down/left/right → nothing.
Expected: click → Close Tab, hold+Up → Mission Control, hold+Down → Show Desktop, hold+Left/Right → previous/next tab, with the factory action gone.
Why (reading v0.8.5)
capture_plan.rs::hidpp_side_gesture_maps_for keeps only Back/Forward, so a gesture-mode Middle Click stays in the OS-hook map and is never requested as a HID++ raw-XY source.
divert_buttons excludes it too (.filter(|(_, button)| !oshook.contains_key(button))), so 0x0052 is never diverted at all.
On Bluetooth-direct, auxiliary-button CGEvents arrive with no sender identity, so the macOS hook correctly fails closed (button_source_may_remap) and passes the press through — this is the same reason fix(macos): capture side-button gestures over HID++ #722 moved Back/Forward onto the device's own HID++ channel.
The control therefore keeps executing its firmware task (Gesture Button Navigation), which is where the Mission Control comes from.
The button advertises the same capabilities as the Back/Forward controls that #722 already handles over HID++ (divertable + raw-xy), so the same path is available to it.
openlogi list output
(inventory read from the running agent)
MX Anywhere 2S (—, vid=046d pid=b01a)
└─ slot 255 ● Wireless Mobile Mouse MX Anywhere 2S (mouse, wpid=?, battery=50% good (discharging))
model_ids=[b01a,406a,0000] ext=00 serial=— unit_id=e6c912de transports=equad+btle
Logs
INFO openlogi_device::session::gesture: control capture active index=255 gesture_sources=0 gesture_buttons=0 dpi_buttons=0 buttons=3 thumbwheel=false wake_rearm=true
macOS permissions (if applicable)
OpenLogi has Accessibility permission
OpenLogi has Input Monitoring permission
Notes
I have a candidate fix that requests 0x0052 as a device-owned raw-XY gesture source on macOS and arms it only when the device's own control table declares a gesture-button task (0x00a9/0x00ad), so ordinary middle buttons (task 0x003a, e.g. MX Master 3S) keep their current behavior. I'll open a PR referencing this issue.
Pre-flight checklist
Which part of OpenLogi?
Agent (capture plan). The GUI shows the binding exactly as configured.
OpenLogi version
0.8.5
Operating system
macOS 15.7.9 (x86_64)
Device model
MX Anywhere 2S
How is the device connected?
Bluetooth (direct, no receiver) —
046d:b01a—unit:e6c912deAffected area(s)
What happened?
On the MX Anywhere 2S the physical button behind the wheel is the middle button, and HID++ reports it with the gesture-button task instead of an ordinary middle click. The control row from the agent's own capture log:
(
0x00a9=Gesture Button Navigation; flags = mouse + reprogrammable + divertable + raw-xy.)v0.8.5 preserves my existing Middle Click gesture map and the GUI shows all five directions, but at runtime:
Click— the mouse's factory gesture action (Mission Control) fires instead;The agent never arms the control: every capture session logs
and there are no
gesture click/gesture committedlines in the log at all.Steps to reproduce
Expected: click → Close Tab, hold+Up → Mission Control, hold+Down → Show Desktop, hold+Left/Right → previous/next tab, with the factory action gone.
Why (reading v0.8.5)
capture_plan.rs::hidpp_side_gesture_maps_forkeeps only Back/Forward, so a gesture-mode Middle Click stays in the OS-hook map and is never requested as a HID++ raw-XY source.divert_buttonsexcludes it too (.filter(|(_, button)| !oshook.contains_key(button))), so0x0052is never diverted at all.button_source_may_remap) and passes the press through — this is the same reason fix(macos): capture side-button gestures over HID++ #722 moved Back/Forward onto the device's own HID++ channel.Gesture Button Navigation), which is where the Mission Control comes from.The button advertises the same capabilities as the Back/Forward controls that #722 already handles over HID++ (
divertable+raw-xy), so the same path is available to it.openlogi listoutputLogs
macOS permissions (if applicable)
Notes
I have a candidate fix that requests
0x0052as a device-owned raw-XY gesture source on macOS and arms it only when the device's own control table declares a gesture-button task (0x00a9/0x00ad), so ordinary middle buttons (task0x003a, e.g. MX Master 3S) keep their current behavior. I'll open a PR referencing this issue.