AprilNEA / AprilNEA/OpenLogi

[Bug]: MX Keys for Mac (046d:b361): Screen Capture special key cannot be remapped

Open
#1,254 0 comments 0 reactions 0 assignees View on GitHub
needs: triage type: bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.