AprilNEA / AprilNEA/OpenLogi

[Feature]: Are keyboard remapping, shell-command actions, and wider keycode coverage planned?

Open
#431 3 comments 8 reactions 0 assignees View on GitHub
platform: linux
Dominant language
Rust
Stars
21k
Forks
675
Avg merge
2d 5h
Merged PRs (30d)
172

Description

### Pre-flight checklist

- [x] I searched existing issues and the [Roadmap](https://github.com/AprilNEA/OpenLogi#roadmap), and this isn't already tracked.

Partial overlap, noted for triage: #101 and #64 touch keyboard remapping, #258 touches custom/macro actions. Neither covers the keycode gap below, and none of the three has an answer on whether the feature is planned. Happy to have this closed as a duplicate if you'd rather answer in those threads.

### Problem / motivation

I'm evaluating a move from Solaar to OpenLogi on Ubuntu 24.04 / X11, with an MX Master 3 and an MX Keys S (both Bluetooth-direct). Most of my setup transfers — per-app profiles via `WM_CLASS`, DPI, SmartShift, Back/Forward/Gesture bindings all work as documented.

Three things I currently rely on have no equivalent in OpenLogi, so I can't complete the migration. Listing them here to ask whether they're on the roadmap.

**1. Keyboard key remapping**

`ButtonId` in `crates/openlogi-core/src/binding.rs` enumerates mouse buttons only. My MX Keys S has seven keys remapped in Solaar — Lock PC, Calculator, Voice Dictation, Emoji Panel, Snipping Tool, Mic Mute, and the App-Contextual-Menu key — and there's no place in the config schema to express any of them. Same for fn-swap and backlight timeout, which Solaar exposes over HID++.

**2. Running a command from a binding**

Two of my bindings shell out (Solaar's `Execute:` rule action). The `Action` enum has no variant for this.

**3. Keycode coverage in `CustomShortcut`**

`macos_vk_to_linux` in `crates/openlogi-inject/src/inject/linux.rs` maps A–Z, 0–9, punctuation, Tab/Space/Esc/Enter/Backspace, F1–F12, Home/End/PgUp/PgDn/Delete, and the arrows. `modifiers_to_keycodes` in the same file handles Ctrl, Shift, and Alt, with `MOD_CMD` folding into `KEY_LEFTCTRL`.

That leaves these unreachable from a binding:

- Numpad keys — I need `KP_Enter` and `Ctrl+KP_Enter` (RStudio binds these separately from main-row Enter, so `Enter` isn't a substitute)
- F13–F24 — I need `F16` for a LibreOffice macro
- Print Screen as a bindable key
- Media/system keys such as mic-mute (`MuteVolume` covers speaker mute only)
- Super/Meta as a modifier, and left/right modifier distinction

Three of my bindings fail on this: mode-shift button → `KP_Enter`, middle click → `Ctrl+KP_Enter` in RStudio, middle click → `F16` in LibreOffice.

### Proposed solution

No proposal — I'm asking whether these three are planned, and roughly where they sit if so. That determines whether I migrate now, wait, or stay on Solaar.

### Alternatives considered

Solaar does all three today; that's the setup I'd be leaving.

### Related area(s)

- [ ] GUI
- [ ] CLI
- [x] Button actions / remapping
- [ ] DPI
- [ ] SmartShift
- [ ] Per-application profiles
- [x] Configuration (TOML)
- [ ] Auto-update
- [x] Other

### Additional context

Ubuntu 24.04.4 LTS, X11/GNOME, OpenLogi v0.6.21. MX Master 3 (`046d:B023`, Bluetooth-direct) and MX Keys S (Bluetooth-direct). Source references are at tag `v0.6.21`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with crates/openlogi-core/src/binding.rs and the Action enum, then inspect macos_vk_to_linux and modifiers_to_keycodes in crates/openlogi-inject/src/inject/linux.rs. Define the intended scope for keyboard remapping, shell-command actions, and additional keycodes before implementation. Done means the maintainers have agreed on a concrete, testable feature scope or roadmap decision.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, rust
Domain
desktop, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.