-
Notifications
You must be signed in to change notification settings - Fork 79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Additional configuration for HoldTap #33
Comments
Can you specify the different behavior, and explain who it improves the experience. The doc is quite obscure, and I always see people saying "I've modified randomly these parameters until I was satisfied". Having a clear specification will help developping this feature, or open the discution to find something even better. |
I think this probably needs to be driven by usage experience, to find out what works. I'm will start experimenting with home row mods on my keyseebee to get some experience. Let's start with
will trigger How does keyberon modtap behave for such rolling combo situations? |
See also: qmk/qmk_firmware#8971 |
I suppose you mean In keyberon everything depend on the time the HoldTap key is holded, independently of any other keys. The other keys wait for the HoldTap to choose it's behavior, to keep key order. |
I think keyberon behave like the 2 first columns of the linked table. |
Well this is probably related to typing style. While playing around with modtap I have indeed realized that I typically roll my combos on a normal keyboard. Using modtap I've had to forcibly try to rewire my muscle memory to make it work. Looking at the linked table and the myriad ways of configuring modtap in QMK the purpose is probably to be able to fully tweak the behaviour to match the typist (rather then the other way around). As an example I've noticed that my fingers behave differently where my pinky seems to be a lot slower in releasing a mod. The effect isn't noticeable on a standard keyboard, but very much so when using modtap. An interesting case: https://www.reddit.com/r/ErgoMechKeyboards/comments/hdyw8c/111wpm_on_a_dactyl_manuform_with_homerow_mods_and/ |
But yeah, at this point I have no concrete suggestions of how it would be useful to configure modtap. But at the same time, without being able to tweak it, it's difficult to tell what works "for me". And you are right in that a lot of people probably fiddle blindly with modtap settings in QMK until they get something that works for them |
So, as of today, keyberon is like with IGNORE_MOD_TAP_INTERRUPT. It seems a saner default to me, and is consistent with the default behavior of QMK's LT behavior. You also have per key timeout. I think IGNORE_MOD_TAP_INTERRUPT is very popular because it allow rolling within the delay to do the tap behavior, as, when you type rapidly, you always press the next key before releasing the previous. I think we can search the different behavior proposed by QMK, and trying to expose some comprehensive configuration flags. Then, when we have a clear proposition, we can implement a first subset, and experiment. Note that I don't use home row modifiers, and that I think it will not suit my needs, as I use the BÉPO layout, a Dvorak like layout, making the home row keys highly used, and thus not really usable for home row modifiers. I personally use LayerTap on the rest position of the thumbs:
|
Agree, and I think this default takes you pretty far too. Probably even enough for the majority |
OK, so I think I managed to extract the different behavior QMK propose, without taking into account the different timings. Basically, looking at the LT features, as the MT features have a behavior corresponding to one of LT behavior, with possibly a different timing. So the alternatives:
It can be modeled as: pub enum HoldTapConfig {
Default,
HoldOnOtherKeyPress,
PermissiveHold,
}
pub enum Action {
// ...
HoldTap {
hold: &'static Action,
tap: &'static Action,
timeout: u16,
tap_hold_interval: u16,
config: HoldTapConfig,
},
} That's a breaking change. The behavior I want for my enter key is HoldOnOtherKeyPress. We can change the names if you have a better idea, I just retaken the QMK names. What do you think? |
I think it looks good! And reusing the QMK names I think makes sense unless there is a good reason for it. And a quick follow-up, should we add functionality corresponding to RETRO_TAPPING and TAPPING_FORCE_HOLD while we're making a breaking change? These probably are simpler |
RETRO_TAPPING doesn't really fit in keyberon model, as as soon as the timeout is passed, the hold action is done. For TAPPING_FORCE_HOLD, I was thinking of something like an additional field |
|
I've updated the spec. Ready to be implemented. If anyone start working on it, please leave a comment here. I might give it a shot later if I have some time and it's not started by someone. |
Was going to mention retrotaps - they sound good. I guess there’s no harm in sending event shift down then shift up, then also immediately following a char - that would be the equivalent of a retrotap. |
Well, they don't seems that good in practice https://precondition.github.io/home-row-mods#home-row-mods-order I think better to put a long timeout than using retro tap. |
He has removed its blog post that seems to be a wip. Here is what I wanted to link: https://github.com/precondition/precondition.github.io/blob/b5d08e13da2ca75b10c3e58226dfe030d4faa4ea/_posts/2020-11-01-home-row-mods.md#retro-tapping |
Sorry which spec is this referring to? Didn't spot any in the repo? |
Top post |
Working on it. |
To be able to use home row mods it's useful to able to tweak
HoldTap
. For example like IGNORE_MOD_TAP_INTERRUPT and PERMISSIVE_HOLD in QMK.@TeXitoi Proposition:
The different behaviors:
Also, we can add a
tap_hold_duration
corresponding to the maximal time within if you tap and hold the key, it will do the tap action, and stay holded, to allow holding the tapping behavior. (moved in #37)It can be modeled as:
That's a breaking change.
The text was updated successfully, but these errors were encountered: