[Bug]: MX Keys for Mac (046d:b361): Screen Capture special key cannot be remapped
- Dominant language
- Rust
- Stars
- 21k
- Forks
- 675
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 174
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
8.3
### Operating system
macOS
### OS version & architecture
macOS 26.5.2, Apple Silicon (M2)
### Device model
Logitech MX Keys for Mac (046d:b361)
### How is the device connected?
Bluetooth (direct, no receiver)
### Affected area(s)
- [ ] Device discovery / detection
- [x] Button remapping
- [ ] DPI control
- [ ] SmartShift
- [ ] Per-application profiles
- [ ] Battery status
- [x] Settings / configuration (TOML)
- [ ] Auto-update
- [ ] Menu bar / tray
- [ ] Other
### What happened?
The Screen Capture special key on my Logitech MX Keys for Mac cannot be remapped.
OpenLogi detects the keyboard correctly and normal F-key remapping works. However, the physical Screen Capture key does not trigger the configured `KeyScreenCapture` binding when pressed without Fn.
The keyboard reports the corresponding HID++ control as divertable:
cid task flags capabilities
0x00bf 0x009b 0x047a divertable, analytics-events
I configured:
[devices."unit:be227ae0".bindings]
KeyScreenCapture = { CustomShortcut = "Cmd+Shift+5" }
Pressing the Screen Capture key without Fn does nothing.
As a comparison, this works correctly:
[keyboard.bindings]
f17 = { CustomShortcut = "Cmd+Shift+5" }
Pressing Fn + the same physical key produces F17 and correctly executes Cmd+Shift+5.
So the CustomShortcut/action path and the normal keyboard hook work; the problem appears to be specifically with capturing/diverting the HID++ special key.
Expected behavior:
Pressing the physical Screen Capture key without Fn should execute the configured KeyScreenCapture binding.
### Steps to reproduce
1. Connect a Logitech MX Keys for Mac (046d:b361) via Bluetooth.
2. Quit Logitech Options+ completely.
3. Configure:
[devices."unit:be227ae0".bindings]
KeyScreenCapture = { CustomShortcut = "Cmd+Shift+5" }
4. Restart OpenLogi.
5. Press the physical Screen Capture key without Fn.
6. Nothing happens.
7. Configure the normal F-key remapper:
[keyboard.bindings]
f17 = { CustomShortcut = "Cmd+Shift+5" }
8. Press Fn + the same physical key.
9. Cmd+Shift+5 is executed correctly.
Additionally, `openlogi diag controls` reports CID 0x00bf as divertable, but no `captured control` event appears in the OpenLogi agent log when the special key is pressed without Fn.
### Diagnostics report
```markdown
### OpenLogi Diagnostics
**App**
- OpenLogi (GUI): v0.8.3 (release)
- Agent: v0.8.3 (connected)
- IPC protocol: GUI 29 / agent 29
- Inventory: ready
- OS: macOS 26.5.2 (arm64)
- Locale: de-DE (UI: follow system)
- Accessibility: granted · Input hook: installed
- Launch at login: yes · Menu bar: yes · Update check: on
- Running from: source build (dev)
- Config: schema 7 · 3 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 (3)**
- MX Master 3 — mouse (codename: MX Master 3 for Mac)
- Connection: Bluetooth (direct) · Online: yes · Battery: 100% (discharging, full)
- Capabilities: buttons=yes, pointer=yes, lighting=no
- Model: 3b023 (model-ids: b023/4082/0000, ext-model: 03)
- Transports: eQuad, BTLE
- Render: mx_master_3 · direct
- MX Keys for Mac — keyboard (codename: MX Keys for Mac)
- Connection: Bluetooth (direct) · Online: yes · Battery: 50% (discharging, good)
- Capabilities: buttons=yes, pointer=no, lighting=no
- DPI: unsupported
- Model: 2b361 (model-ids: b361/4092/0000, ext-model: 02)
- Transports: eQuad, BTLE
- Render: mx_keys_mac · direct
- HD Pro Webcam C920 — camera
- Connection: unknown · Online: yes · Battery: n/a
- Capabilities: not probed
- Model: 082d
- Render: ⚠️ none (silhouette) · Slot 0
```
### `openlogi list` output
```text
(inventory read from the running agent)
MX Keys Mac (—, vid=046d pid=b361)
└─ slot 255 ● MX Keys for Mac (keyboard, wpid=?, battery=50% good (discharging))
model_ids=[b361,4092,0000] ext=02 serial=— unit_id=be227ae0 transports=equad+btle
MX Master 3 Mac (—, vid=046d pid=b023)
└─ slot 255 ● MX Master 3 for Mac (mouse, wpid=?, battery=100% full (discharging))
model_ids=[b023,4082,0000] ext=03 serial=— unit_id=70744535 transports=equad+btle
Cameras (1 Logitech UVC)
└─ ● HD Pro Webcam C920 (camera, vid=046d pid=082d, up to 1920x1080@30, id=0x134000046d082d)
```
### Logs
```shell
With the OpenLogi agent running and reachable via RPC, pressing the physical Screen Capture special key without Fn produces no OpenLogi input/capture event.
Verified that the agent is reachable:
(inventory read from the running agent)
Then tested with:
log stream --level debug --predicate 'process == "openlogi-agent"' | grep -Ei 'captured control|keyboard key|0x00bf|binding'
Pressing the Screen Capture key without Fn produced no output.
The control test still works:
Fn + the same physical key is handled as F17, and the configured global F17 binding executes successfully.
```
### 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 with the agent's HID++ control-capture path and compare the physical key flow with the working F17 path. Use `openlogi diag controls` and the agent log while testing CID `0x00bf`, then verify that a captured control event triggers the configured `KeyScreenCapture` binding and `Cmd+Shift+5`.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100