AprilNEA / AprilNEA/OpenLogi

[Bug]: macOS: "Capture Region" binding triggers full screenshot instead of region selector

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

Not sure

### OpenLogi version

0.8.3

### Operating system

macOS

### OS version & architecture

macOS Tahoe 26.6.2

### Device model

MX Keys

### 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
- [ ] Settings / configuration (TOML)
- [ ] Auto-update
- [ ] Menu bar / tray
- [ ] Other

### What happened?

I bound key F17 to the "Capture Region" action (confirmed selected/checked in the binding picker under System > Capture Region). Pressing F17 fires a full-screen screenshot instead of opening the interactive region selector.

"Capture Region" was added in #296 as a distinct action from "Screenshot" (System > Screenshot), specifically to send the region-selection shortcut (Cmd+Shift+Ctrl+4 on macOS) instead of the full-screen one. On 0.8.3 / macOS Tahoe 26.6.2, binding to "Capture Region" behaves the same as binding to "Screenshot" — the full screen is captured, with no region selection.

### Steps to reproduce

1. Open OpenLogi > Devices > (keyboard) > Keys
2. Select an unused key (e.g. F17) and bind it to System > Capture Region
3. Press the bound key
4. Observe: a full-screen screenshot is taken/copied, not a region selection

### Expected behavior

Pressing the key should invoke the interactive region-selection capture (equivalent to Cmd+Shift+Ctrl+4), matching the behavior described in #296.

### 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.6.2 (arm64)
- Locale: en-UA (UI: follow system)
- Accessibility: granted · Input hook: installed
- Launch at login: no · Menu bar: yes · Update check: off
- Running from: source build (dev)
- Config: schema 7 · 2 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 (2)**
- G604 Lightspeed — mouse (codename: G604 Wireless Gaming Mouse)
- Connection: Bluetooth (direct) · Online: yes · Battery: 90% (discharging, full)
- Capabilities: buttons=no, pointer=yes, lighting=yes
- Model: 0b024 (model-ids: b024/4085/0000, ext-model: 00)
- Transports: eQuad, BTLE
- Render: g604 · direct
- MX Keys — keyboard (codename: MX Keys Wireless Keyboard)
- Connection: Bluetooth (direct) · Online: yes · Battery: 100% (discharging, full)
- Capabilities: buttons=yes, pointer=no, lighting=no
- DPI: unsupported
- Model: 0b35b (model-ids: b35b/408a/0000, ext-model: 00)
- Transports: eQuad, BTLE
- Render: mx_keys · direct
```

### `openlogi list` output

```text
inventory read from the running agent)
MX Keys (—, vid=046d pid=b35b)
└─ slot 255 ● MX Keys Wireless Keyboard (keyboard, wpid=?, battery=100% full (discharging))
model_ids=[b35b,408a,0000] ext=00 serial=— unit_id=ae46b4d1 transports=equad+btle

G604 LIGHTSPEED (—, vid=046d pid=b024)
└─ slot 255 ● G604 Wireless Gaming Mouse (mouse, wpid=?, battery=90% full (discharging))
model_ids=[b024,4085,0000] ext=00 serial=— unit_id=56adffdc transports=equad+btle
```

### Logs

```shell
2026-09-02T10:50:54.599115Z DEBUG RPC{rpc.deadline=2026-09-02T10:51:04.599000375Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-02T10:50:54.599274Z DEBUG RPC{rpc.deadline=2026-09-02T10:51:04.599000375Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: ReceiveResponse
2026-09-02T10:50:54.599316Z DEBUG RPC{rpc.deadline=2026-09-02T10:51:04.599308333Z otel.kind="client" otel.name=Agent.declare_client rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-02T10:50:54.599395Z DEBUG RPC{rpc.deadline=2026-09-02T10:51:04.599308333Z otel.kind="client" otel.name=Agent.declare_client rpc.trace_id=00}: tarpc::client: ReceiveResponse
2026-09-02T10:50:54.599439Z DEBUG RPC{rpc.deadline=2026-09-02T10:51:04.599428250Z otel.kind="client" otel.name=Agent.snapshot rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-02T10:50:54.599580Z DEBUG RPC{rpc.deadline=2026-09-02T10:51:04.599428250Z otel.kind="client" otel.name=Agent.snapshot rpc.trace_id=00}: tarpc::client: ReceiveResponse
(inventory read from the running agent)
MX Keys (—, vid=046d pid=b35b)
└─ slot 255 ● MX Keys Wireless Keyboard (keyboard, wpid=?, battery=100% full (discharging))
model_ids=[b35b,408a,0000] ext=00 serial=— unit_id=ae46b4d1 transports=equad+btle

G604 LIGHTSPEED (—, vid=046d pid=b024)
└─ slot 255 ● G604 Wireless Gaming Mouse (mouse, wpid=?, battery=90% full (discharging))
model_ids=[b024,4085,0000] ext=00 serial=— unit_id=56adffdc transports=equad+btle
```

### 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 by tracing the System > Capture Region binding and comparing its action handling with System > Screenshot and the behavior introduced in #296. Reproduce the F17 binding on macOS, then verify that the action sends the region-selection shortcut and opens the interactive selector rather than capturing the full screen.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, rust
Domain
desktop
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
66/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.