HaoboGu / rmk

Rust keyboard firmware library with layers, macros, real-time keymap editing, wireless(BLE) and split support
https://haobogu.github.io/rmk/
Apache License 2.0
596 stars 41 forks source link

[Feature Request] Chords and Layers and Modifiers combined #55

Open w-jablonski opened 3 months ago

w-jablonski commented 3 months ago

Thank you for this promising project!

(Then you get people like me who come and start Feature Requests like: I need 777 features that are present in QMK, but done better! So please forgive.)

Scenario: I wanna have numbers under left hand like so: press a Button_1+{z,x,c,...} simultaneously to type {1,2,3,...} so like Chords in QMK. Easy. But then, if typing longer numbers, why repeat these chords with each digit? No, I wanna keep holding Button_1 down while I release the {z,x,c,...} and then tap the subsequent {z,x,c,...} keys to type subsequent digits. So in summary, pressing such a Chord activates a layer which remains active until the Button_1 is released.

If we implement config for features like Chords, Layers separately (like in QMK), then there might be no elegant way to mix them, like in above scenario. So ideally, these would be declared in a one, unified way which allows for any possible scenario, including Chords, Modifiers, Layers, One-shot Action, Tap-or-hold, Multiple Tap (known as Tap Dance in QMK).

I could try design the elegant config, but not the implementation since I don't know Rust. Or maybe this has been done before by another project?

HaoboGu commented 3 months ago

RMK doesn't have Chord right now, I'm still considering how these features(Chord, Layers, Tap/Hold, One-Shot, etc) can be implemented in an ergonomic way. Obviously, they have something common but are totally different. If I understand you correct, this feature is somehow like a partial layer switch: Button_1 actually activates another layer, but only for the specific keys.

w-jablonski commented 3 months ago

Thanks. I am not quite sure about "partial layer switch". I see it simply as activating another layer, even if a small one consisting of only 10 keys.

HaoboGu commented 3 months ago

Yeah that's what I mean.