I haven't been this excited about a new feature in a while.

One of the most basic things our keyboards can do is have a key do more than one thing. So when I tap my spacebar, it's just a spacebar. But when I hold it down, it turns into Shift!

We can also make keys do different things when you tap-tap them, and when you tap-hold them. In total, one key can do up to four different things. This is called Tap Dance and we've had this for a couple of years now.

Here's are a few important details, though:

  1. Our fingers aren't all the same. Some are quicker and more dextrous than others.
  2. Some keys are harder to reach than others, which means it can be a little harder to control your timing as you use them.
  3. As the day wears on, our dexterity often degrades. We often start the day quick, sharp, and alert — and then slow down a little after a few hours of work.
We get tired as the day wears on

Tapping Term

The most important question when it comes to a multi-function key is "What's a hold?"

If I hold down a key for 200 milliseconds, is that still a tap? Or am I now holding it down? If we take the example above, does it count as a Space or as a Shift?

Up until today, this was a keyboard-wide setting. It's 200ms by default, but you could change it by going to Advanced Settings > Tapping.

This was a one-time, global operation. You set it before you compiled your layout, then you compiled your layout and flashed it to your board, and that was it. If you got that timing mostly right, your multi-function keys were mostly comfortable to use.

We're now introducing two features that work in tandem to make tapping term much more granular and powerful.

Introducing Dynamic Tapping Term

When you can only set tapping term ahead of time, before compiling your layout, it's not so easy to get it right. You need to try multiple times until you find a timing that mostly works for you. And I say "mostly" because our own "tapping terms" change throughout the day.

This is where Dynamic Tapping Term comes in. It's actually just three keycodes:

Dynamic Tapping Term Keycodes
  • Tapping term down reduces your tapping term by 5ms. So it "speeds up" what counts as a hold, for when you're sharp and snappy.
  • Tapping term up increases your tapping term by 5ms. So it slows things down, counting more leisurely or "sloppy" taps as taps rather than holds.
  • Tapping term print types out your current tapping term. So right now when I hit this key while working in my text editor, my keyboard suddenly types "200" (that's my current tapping term).

These keys affect your tapping term at runtime. This is a nerdy way of saying they let you adjust tapping term without having to compile or flash your layout!

So when I find myself making a lot of mistakes with my Space/Shift key, injecting random capital letters instead of making spaces between words, I know I just need to slow things down a little. I tap "Tapping term up" a couple of times, and voila, I'm suddenly able to type much more accurately and comfortably.

Another use I found for dynamic tapping terms is while typing passwords: When I need to type a long password (such as the master password for my password manager), I first slow down the tapping term, then I take my time typing, and I find that I get far fewer mistypes.

Of course, this is also a good way to find a more permanent "base tapping term." If, over time, I find out that I tend to be more comfortable around 190ms, I can set my tapping term to 190ms ahead of time.

Introducing Per-Key Tapping Term

My thumb is pretty strong and quick — and my Space/Shift thumb cluster key tends to be directly under my thumb at all times, which means I don't ever have to reach for it. I also need it to work as Shift quite often.

I have some other multi-function keys, too: The home row keys under my right hand work as modifiers. So when I hold down my right index finger, it sends a Cmd modifier. And when I hold down my middle finger, that sends the Opt modifier.

There is a big difference between holding down Shift and holding down Cmd or Opt (Ctrl/Alt). I need to hold down Shift far more often, and more briefly. And when I hold down Cmd/Opt, I tend to hold those down for longer and more intentionally. Now, I can have my keyboard reflect this and work the way I do:

Adjusting the per-key tapping term

Here you can see me adjust the tapping term for my "index finger" key (That's "N" in Colemak, the keyboard layout I use) to make it slower. That's because I tend to take my time when holding down Cmd.

The side effect here is that I never inadvertently hold down Cmd when I'm just trying to type, even when I'm being relatively slow. And I can do this while keeping my Shift/Space thumb key fast and snappy!

How to enable Per-Key Tapping Term

Per-Key Tapping Term is an opt-in feature, since it's advanced and can be confusing for some new users. To enable it, go to Advanced Settings > Tapping and turn on "Per-key tapping term":

Enabling Per-Key Tapping Term

These two settings work together!

Finally, here is what really blows my mind about these two features: They work together.

Slowing down or speeding up my tapping term using dynamic tapping term slows down and speeds up all of my keys, relative to each individual key!

So let's say I'm working, and I feel a little tired; I realize I'm starting to mess up on my multi-function keys and it's time to slow things down a little bit. So I tap "Tapping term up" to give myself more time before a tap becomes a hold. This instantly updates all of my tapping terms, while keeping their relative speeds!

So my Space/Shift combo under my thumb remains fast compared to my N/Cmd combo under my index finger, but now they're both a little bit slower than they were before. Obviously, this work the other way too, for speeding all of the timings up.

Your keyboard, your way

Dynamic tapping terms and per-key tapping terms are a great example of ergonomics, because they let us adapt our technology to how our body really works. Some fingers are faster than others, and our typing style changes throughout the day.

Now, your keyboard can match your body even better.