I assume this is QMK, because changing the settings clears or introduces the issue. I’m using Vial for the programming/configuration.
I have a key configured tap-dance, like many others: - on tap, and ctrl on hold. The issue is that most of the time when I type something like -p
, I get only the -
. Then, the next time I type p
, I get 2 of them. So something like this will happen:
I type foo -p bar baz
, but don’t notice the p
is missing until after baz
, cursor left and type p
again, and end up with -pp
Most of my keys are tap-dance of some pattern: <char> on tap, layer shift in hold, <char> on tap-hold. I’ve noticed this buffered character after -
on other characters; it isn’t just p
. Changing the timeout does affect the frequency, but doesn’t entirely eliminate it. I haven’t noticed it on any other combo, although they’re all of the same pattern; it seems to be only happening with the -/ctrl tap-dance. Removing the multitap on -
eliminates the issue.
This is my first QMK. I’d been using an Ergodox for years, and kmonad
on my laptop for a year or so, although I recently switched to kanata
(fantastic piece of software, incidentally), so I’m more or less familiar with the world of layers, multi-tap/tap-dance, combos, and so on. This one has me stumped, though.
I’ve checked and there’s no combo defined that involves dash. I’ve never created a QMK macro, but it occurs to me that I didn’t check if there are any defined.
Does anyone have a suggestion of how I can debug this? Could there be some bug, some bit that I accidentally set, that’s causing this? Is there some QMK feature that does exactly this thing, and I’ve somehow enabled it? I’ve power cycled the keyboard, although I haven’t yet tried a hard or factory reset.
Any ideas would be appreciated!
Edit corrected “multi-tap” to “tap-dance”, as QMK calls it the one thing and not t’other
Might have something to do with tap hold configuration, though im not sure which one. This applies to almost all key interactions in qmk, so its worth to at least understand the underlying principle.
You can check the better explanation here
Thanks for the link. I am using tap-hold quite a bit.
I made a mistake going straight for a 36 board. I was a pretty fast touch typer, but I can’t seem to get the settings tweaked such that I’m not either having annoying delays waiting for layer shifts, or getting accidental layer shifts. And because (I know it’s not the most minimal) so many keys have to be in layers, it’s really put a cramp both in my speed, and my confidence (that I typed what I think I typed, especially when I’m transposing).
I have less trouble with kanata, even with very similar layer configurations. After I got this board configured, I changed my kanata layout to match, and I get much more accuracy out of kanata. I’ve started thinking maybe I should just go to a minimal QMK layout - no layers, etc - and use kanata instead. Or, if there’s a way to extrapolate a QMK config from how kanata’s behavior is programmed.
Personally, most of my 36 and below boards are programmed such that i’d rely on tap dance less. I’d rather put it in a layer, explode it inside the layer for things like parantheses and brackets, or arrange a combo for things that are frequently used but cannot be assigned into a designated first layer.
Partially because I already have a layout that works on a bigger 40% boards, but another factor of it is how awkward tapdance have always felt to me.
As for the kanata thing: can’t say I can comment further as I’ve never used it before.
I tend to use tap-dance for modifiers, like my thumb Esc is also Alt, because one I tap (and never hold) and the other I always hold (and has no use taped). Having (e.g.) a key only dedicated to Alt is a wasted key; Alt isn’t a good key to have on a layer; and it would be not only annoying to have to tap a layer switch key to get to Alt, and even then there’d be a chording issue where you still need to have access to all your keys and Alt so you can type chords like Ctrl-Alt-X.
How do you manage the four(-ish) modifier keys without tap-dance, or having dedicated, single-purpose keys for them? On a 36, that’s 11% of the keyboard dedicated to modifiers (Ctrl, Shift, Meta, Alt) at best, or 19% if you make use of the fact that there are left/right distinctions for three of those keys (is there a Right Meta?).
Honestly, I’d be happy with a different solution. Modifier keys are hard enough; I still have trouble with accuracy with only three thumb keys. I had an ErgoDox for years and never really used all twelve of the thumb keys; it was just too hard to reliable hit that inner column.
For that matter, how do you do layer switches without tap dance, or dedicated keys? Are you using momentary layers, or layer switch? Are they dedicated layer keys, and if so, where are your modifiers keys and things like space/return? Can you post your config so I can load it in Vial and look at it?
I might misunderstood some terms here, but I feel like our understanding of what tap-dance is might be different.
That said, here’s an ilustration of what I got on my Minidox. I also use something similar on my QAZ, although that one got 32 keys instead of 36.
Edit: actually, I think the latest version got the whole semicolon and Backspace switched. The semicolon button is backspace by default and P + Backspace gives me semicolon. Main reasoning are: rarely use semicolon and fighting the primal urge of pinky finger to backspace is hard (I rotate between sub40s and 40s at least once a week)
Oh, Yeah. I’m just calling it what Vial/QMK calls it. I don’t think the *Dox’s use vanilla QMK - they have their own proprietary firmware and configuration format (ZSA), although I think it is based on QMK. I did a bunch of research on this once because I got tired of having to use Oryx and wanted to use a desktop app like Vial, and eventually found out they’re incompatible.
Tap-dance in QMK terms is different behavior of a key based on whether it’s tapped or held; there’s a hold timeout where it can go into repeat if no other key is typed while it’s held, and it can also be configured to have different behavior on double-tap and tap+hold. I haven’t yet set up any double-taps, but I used them a lot in my ErgoDox because of all of the extra in the middle.
Thanks for the screen cap!