[Bug]: macOS: "Capture Region" binding triggers full screenshot instead of region selector
- 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