Per key timings

I’ve been trying to configure my Atreus with home row modifiers, and have been struggling to make them work without misinterpreted keys. Currently, I’m struggling with setMaxIntervalForTapRepeat(). I discovered that with the default settings I was unable to type words with double letters (like “book” or “little”) without being very slow and deliberate. I kept playing with the value of that function, and got it pretty close when I noticed something very interesting. My left and right hand have very different requirements. If I adjust the timing to work for my left hand, it doesn’t work for my right. If I set it to 140, I can easily trigger key repeat with my right hand, but I find it’s almost impossible to trigger with my left. So I really think we need per-key timings to sort this out.

Another issue I have looks like it might be a bug. Sometimes when typing the same key quickly, it only registers as a single key. I suspect this might be a case where it was determined that this should be a repeating key, but it wasn’t held long enough for any repeat to occur. Not sure if this is solvable since it probably depends on the OS key repeat timings.

After messing with this some more and reading comments on the Keyboardio Discord, I’ve come to the conclusion that home row modifiers are just not feasible for me as there are just too many opportunities for rollover to be misinterpreted, and using timings to prevent them won’t work in all cases. Typos are one thing, but having the keyboard misinterpret things when I don’t make a typo is for me just too distracting.

So, following the advice of @gdxpr:

depending on how you type (and whether you are able or willing to make the necessary adjustments), it may be that home row modifiers are just not a good fit.
An adjacent row might be a reasonable compromise.

I’ve dropped my modifiers down one row from the home row. It’s slightly less convenient as modifiers (home row was awesome when it worked), but my misinterpretation problems seem to have vanished.

With this one simple change, I’ve got my Atreus almost perfectly dialed in for me, and I love it!


Yeah, I couldn’t get it to work reliably with Keyboardio’s software, so I’ve compiled and installed QMK on my Atreus and all my features now work perfectly. I use modifiers on the home row too.

It is actually very easy to compile and install QMK - highly recommended, especially with the features they have.

Did you have to do any customization with QMK to get home row modifiers working well? From what I’ve read it still takes a bit of fiddling with timings to get it working right.

It wasn’t fiddly at all. I simply applied the same TAPPING_TERM of 230 as I already had defined for my Ergodox - and it now matches my typing style perfectly.

I believe the default value is 200, and I got the occasional error with my Ergodox. So I knew I had to lengthen it just a bit. After that, no more errors on either keyboard.

If you really want to get fancy, QMK does allows for per-key tapping terms, but I have never had a need for that. :slight_smile:

I’m not an expert on QMK, but from the docs, setting TAPPING_TERM to 230 should have the same effect as calling Qukeys.setMinimumHoldTime(230) in Kaleidoscope.

1 Like