[Bug]: MX Mechanical Mini for Mac lock/Focus key binding does nothing
- Dominant language
- Rust
- Stars
- 21k
- Forks
- 675
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 172
Description
### Pre-flight checklist
- [x] I searched [existing issues](https://github.com/AprilNEA/OpenLogi/issues?q=is%3Aissue) and this is not a duplicate.
- [x] I am on the [latest release](https://github.com/AprilNEA/OpenLogi/releases/latest) or a recent `master` build.
- [x] I quit **Logi Options+** before running OpenLogi (the two apps fight over HID++ access and only one can own a receiver at a time).
### Which part of OpenLogi?
GUI (desktop app)
### OpenLogi version
0.8.1
### Operating system
macOS
### OS version & architecture
MacOS 27
### Device model
MX Mechanical Mini for Mac (2b36d)
### How is the device connected?
Logi Bolt receiver
### Affected area(s)
- [ ] Device discovery / detection
- [x] Button remapping
- [ ] DPI control
- [ ] SmartShift
- [ ] Per-application profiles
- [ ] Battery status
- [ ] Settings / configuration (TOML)
- [ ] Auto-update
- [ ] Menu bar / tray
- [ ] Other
### What happened?
I can click the top-right lock/moon key in OpenLogi and assign an action, but the binding never fires.
- Pressing the key alone still toggles macOS Focus / Do Not Disturb.
- Pressing it with Fn also does nothing for the assigned action.
- Official Logi Options+ remaps this same key correctly. I use it to put the Mac to sleep.
Expected: the assigned action should run (Sleep, or any other binding), with or without Fn depending on how it’s mapped.
### Steps to reproduce
1. Connect MX Mechanical Mini for Mac. Quit Options+.
2. Open OpenLogi → keyboard → click the top-right lock/moon key.
3. Assign an action (e.g. Sleep or a shortcut).
4. Press the key.
5. Press Fn + the key.
Result: assigned action never runs. Key still only toggles Focus.
### Diagnostics report
```markdown
OpenLogi Diagnostics
App
- OpenLogi (GUI): v0.8.1 (release)
- Agent: v0.8.1 (connected)
- IPC protocol: GUI 28 / agent 28
- Inventory: ready
- OS: macOS 27.0 (arm64)
- Locale: en-US (UI: follow system)
- Accessibility: granted · Input hook: installed
- Launch at login: yes · Menu bar: no · Update check: on
- Running from: source build (dev)
- Config: schema 6 · 5 configured device(s) · thumbwheel 14
Assets
- Source: user cache · Index: loaded (210 models) · User cache: present
- Cache path: ~/.local/share/openlogi/assets · Bundle assets: absent
Devices (5)
- MX Mechanical Mini for Mac — keyboard (codename: MX MCHNCL M)
- Connection: Logi Bolt receiver · Online: yes · Battery: 85% (discharging, full)
- Capabilities: buttons=yes, pointer=no, lighting=no
- DPI: unsupported
- Model: 0b36d (model-ids: b36d/0000/0000, ext-model: 00)
- Transports: BTLE
- Render: mx_mechanical_mini_mac · Slot 1
- MX Master 3S — mouse
- Connection: Logi Bolt receiver · Online: no · Battery: n/a
- Capabilities: not probed
- DPI: read failed
- Model: slot2
- Render: ⚠️ none (silhouette) · Slot 2
- PRO X 2 — mouse (codename: PRO X 2)
- Connection: Logi Unifying receiver · Online: yes · Battery: 54% (discharging, good)
- Capabilities: buttons=no, pointer=yes, lighting=no
- DPI: 800 dpi (range 100–44000, 957 steps)
- Model: 140a9 (wpid: 40a9, model-ids: 40a9/c09b/0000, ext-model: 01)
- Transports: USB, eQuad
- Render: ⚠️ none (silhouette) · Slot 1
- MX Master 3S — mouse (codename: MX Master 3S)
- Connection: Bluetooth (direct) · Online: yes · Battery: 50% (discharging, good)
- Capabilities: buttons=yes, pointer=yes, lighting=no
- DPI: 800 dpi (range 200–8000, 157 steps)
- Model: 1b034 (model-ids: b034/0000/0000, ext-model: 01)
- Transports: BTLE
- Render: mx_master_3s · direct
- Logitech BRIO — camera
- Connection: unknown · Online: yes · Battery: n/a
- Capabilities: not probed
- Model: 085e
- Render: brio · Slot 0
Receivers (2)
- Lightspeed Receiver (VID 046d / PID c54d)
- Logi Bolt Receiver (VID 046d / PID c548)
```
### `openlogi list` output
```text
```
### Logs
```shell
2026-08-29T12:51:49.818741Z DEBUG RPC{rpc.deadline=2026-08-29T12:51:59.818298042Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: SendRequest
2026-08-29T12:51:49.818965Z DEBUG RPC{rpc.deadline=2026-08-29T12:51:59.818298042Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: ReceiveResponse
2026-08-29T12:51:49.819090Z DEBUG RPC{rpc.deadline=2026-08-29T12:51:59.819072917Z otel.kind="client" otel.name=Agent.snapshot rpc.trace_id=00}: tarpc::client: SendRequest
2026-08-29T12:51:49.819207Z DEBUG RPC{rpc.deadline=2026-08-29T12:51:59.819072917Z otel.kind="client" otel.name=Agent.snapshot rpc.trace_id=00}: tarpc::client: ReceiveResponse
(inventory read from the running agent)
Lightspeed Receiver (F40CB6D7, vid=046d pid=c54d)
└─ slot 1 ● PRO X 2 (mouse, wpid=40a9, battery=54% good (discharging))
model_ids=[40a9,c09b,0000] ext=01 serial=24XXXE8NPNE8 unit_id=80c29740 transports=usb+equad
MX Master 3S (—, vid=046d pid=b034)
└─ slot 255 ● MX Master 3S (mouse, wpid=?, battery=50% good (discharging))
model_ids=[b034,0000,0000] ext=01 serial=240XXX3ES58 unit_id=8c444e93 transports=btle
Logi Bolt Receiver (ECBB0A24E4AE4502, vid=046d pid=c548)
├─ slot 1 ● MX MCHNCL M (keyboard, wpid=?, battery=85% full (discharging))
│ model_ids=[b36d,0000,0000] ext=00 serial=251XXX81C828 unit_id=ce3e21c7 transports=btle
└─ slot 2 ○ MX Master 3S (mouse, wpid=?, battery=—)
Cameras (1 Logitech UVC)
└─ ● Logitech BRIO (camera, vid=046d pid=085e, up to 4096x2160@30, id=0x3242300046d085e)
```
### macOS permissions (if applicable)
- [x] OpenLogi has **Accessibility** permission (needed to remap buttons via the event tap).
- [x] OpenLogi has **Input Monitoring** permission (needed for Bluetooth-direct devices and capture).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at the GUI keyboard button-remapping flow and reproduce the MX Mechanical Mini for Mac case using the Logi Bolt connection described here, testing both the key alone and Fn plus the key. Compare the assigned action with the observed Focus behavior; done means the configured action fires reliably in both applicable mapping modes without relying on Logi Options+.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100