[Bug / Feature Request]: Unable to assign custom single-key shortcuts (like 'C' or 'X') via GUI, and manual TOML edits are overwritten on app restart
- 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.6.23
### Operating system
Windows
### OS version & architecture
Windows 11 x64
### Device model
Logitech MX Master 2S
### 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
- [x] Settings / configuration (TOML)
- [ ] Auto-update
- [ ] Menu bar / tray
- [x] Other
### What happened?
### Bug Description
I am attempting to map single keyboard keys ('C' and 'X') to the side buttons (Forward/Back) of my Logitech MX Master 2S on Windows 11.
1. The OpenLogi GUI action-picker does not currently offer a native option to select single keyboard characters/letters for remapping.
2. When attempting to work around this by completely quitting the application and manually editing the device bindings block in `%USERPROFILE%\.config\openlogi\config.toml` to use `CustomShortcut = ["C"]` and `CustomShortcut = ["X"]`, the application completely overwrites my edits. The moment OpenLogi is relaunched or closed, the custom bindings section is stripped out and the TOML file reverts back to its default state.
### Steps to Reproduce
1. Ensure OpenLogi is completely closed (checked via Task Manager).
2. Open `config.toml` and manually append the custom shortcut bindings under the device section.
3. Save and close the TOML file.
4. Launch OpenLogi.
5. Observe that the buttons do not register the keystrokes.
6. Re-open `config.toml` and find that the entire bindings block has been deleted/reset.
### Steps to reproduce
1. Ensure OpenLogi is completely closed (checked via Windows Task Manager).
2. Open config.toml in Notepad and manually append the custom shortcut bindings under the device section:
Back = { CustomShortcut = ["X"] }
Forward = { CustomShortcut = ["C"] }
3. Save and close the TOML file.
4. Launch OpenLogi.
5. Press the mouse side buttons in Notepad (they do not register 'C' or 'X').
6. Re-open config.toml and find that the entire bindings block has been deleted
### Diagnostics report
```markdown
### OpenLogi Diagnostics
**App**
- OpenLogi (GUI): v0.6.23 (release)
- Agent: v0.6.23 (connected)
- IPC protocol: GUI 10 / agent 10
- Inventory: ready
- OS: Windows (x86_64)
- Locale: en-US (UI: follow system)
- Accessibility: granted · Input hook: installed
- Launch at login: no · Menu bar: yes · Update check: on
- Running from: source build (dev)
- Config: schema 3 · 1 configured device(s) · thumbwheel 14
**Assets**
- Source: user cache · Index: loaded (210 models) · User cache: present
- Cache path: C:\Users\whizy\.local/share/openlogi\assets · Bundle assets: absent
**Devices (1)**
- MX Master 2S — mouse (codename: )
- Connection: Bluetooth (direct) · Online: yes · Battery: n/a
- Capabilities: buttons=yes, pointer=yes, lighting=no
- Model: direct:046d:b019:unit:6e1d74a1 (model-ids: b019/4069/0000, ext-model: 03)
- Transports: eQuad, BTLE
- Render: mx_master_2s · direct
```
### `openlogi list` output
```text
CLI is unreachable / Windows platform is currently a stub.
```
### Logs
```shell
```
### macOS permissions (if applicable)
- [ ] OpenLogi has **Accessibility** permission (needed to remap buttons via the event tap).
- [ ] 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 GUI action-picker and the device bindings in config.toml, then reproduce the custom-shortcut reset on Windows using the listed Back and Forward entries. Trace how the GUI loads and saves the configuration, and verify both that single-key shortcuts can be selected or retained and that reopening the app no longer deletes valid bindings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100