Skip to content
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

tap-only combos #544

Open
okke-formsma opened this issue Dec 26, 2020 · 4 comments
Open

tap-only combos #544

okke-formsma opened this issue Dec 26, 2020 · 4 comments
Labels
behaviors enhancement New feature or request

Comments

@okke-formsma
Copy link
Collaborator

from makenova on discord:

Right now I use home-row-mods(hrm) but I also have combos on the home row.
My hrm are in the form of SCAG(asdf) and I also have a combo on DF.
If I want to hold alt + gui right now I have to hold one then the other or else the combo triggers if I tap them together.
With what I understand of the tap-only combos, there will be another constant defined which is > combo_term(time that a combo has to be held to trigger).
If the combo is held longer than the new constant, then the combo is not triggered but the hrm are.

@okke-formsma
Copy link
Collaborator Author

oops, sorry for the assignment. I thought I had a PR open

@urob
Copy link
Contributor

urob commented Jun 10, 2022

Seconding that this would be useful. I am using tap-only combos from the early combos branch for QMK and have found it very useful for precisely the reasons stated by OP. Without it, chording HRMs that also have a combo defined becomes very cumbersome, which is unfortunate, because by design HRMs involve the most ergonomic key positions.

@anderso
Copy link

anderso commented Jun 26, 2023

This is what keeps me from using zmk. Are there any workarounds?

@urob
Copy link
Contributor

urob commented Jun 26, 2023

This is what keeps me from using zmk. Are there any workarounds?

Workaround

Binding the combos to hold-taps with a hold-action equal to the corresponding combination of mods works. See example.

The downsides relative to a native solutions are:

  • It's more cumbersome, especially when the combo is for behaviors other than kp and to. Wrapping the hold-tap config into a macro as in the example above can alleviate the extra burden.
  • Dynamically adding and removing mods to a chord doesn't work. Say, you start holding index + middle, which trigger, say, LCTRL + LSHFT. Now adding the ring finger won't work.

Thoughts about a native solution

Let me just add some thoughts about a possible native solution. I see two approaches for implementing a tap-only option for combos:

  1. Replicate the hold-tap logic to check whether a candidate combo is held or tapped. One will need to decide what hold-tap flavor to adopt and/or whether one would expose any options?
  2. Instead of checking whether combos are held or tapped, check whether a candidate combo involves any hold-tap and only trigger the combo if all involved hold-taps resolve as tap.

To me, the second approach seems superior: (1) It's cleaner and does not require a re-implementation of the hold-tap logic for combos. (2) It automatically inherits any hold-tap configuration from the involved hold-taps. By contrast, the first approach would require taking a stand on a hold-tap logic that may conflict with the ones bound to the involved keys. (3) The second approach, is also easily extended to also adding a hold-only option that triggers a combo only if all involved hold-taps resolve as hold.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
behaviors enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants