AprilNEA / AprilNEA/OpenLogi

Feature: Hold-to-modifier

Open
#652 1 comment 1 reaction 0 assignees View on GitHub
platform: all type: feature
Dominant language
Rust
Stars
21k
Forks
675
Avg merge
2d 5h
Merged PRs (30d)
172

Description

**Summary**

New action type: press a bound button → modifier key-down (Super/Mod held); release the button → modifier key-up. Currently impossible — KeyCombo requires a non-modifier key, and press_key fires down+up instantly.

**Use case**

Hold the MX Master 4 haptic panel → Super is held → scroll wheel switches workspaces (GNOME/KDE). Release → Super released. No timer — modifier follows the physical button.

**Blockers**

1. KeyCombo parser rejects modifier-only chords (MissingKey).
2. Inject backends emit down+up back-to-back — no split hold/release path.

**Proposed**

Action::HoldModifier(u8) — modifier bitmask reusing existing MOD_* flags. Capture layer already sees press/release; dispatch calls hold_modifier_down(bits) on press, hold_modifier_up(bits) on release. All three backends have the primitives.

Contributor guide

No contributing guide indexed for this repository

Research direction

Trace the KeyCombo parser, press_key path, capture layer, dispatch logic, and the three inject backends mentioned in the issue. Confirm how modifier bits and button press/release events flow before implementing the action. Done means modifier-only bindings parse successfully, key-down occurs on button press, key-up on release, and all three backends preserve the hold rather than emitting an immediate pair.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.