Layout Buffet is a series about the many things your keyboard can do. Each post explains an Oryx feature or layout idea and how you can try it a little at a time. Just like a buffet, how much you grab is up to you. If you try a bite and love it, you can come back for more. If it’s not for you, there are other options. Sample, experiment, and figure out what you like and what you don’t.

Every Layout Buffet post is typed using the concept covered in that post, so you know it’s not just theory.

Let’s dig in!

Dual-function keys do one thing when you tap them and something else when you hold them, and they're one of the most powerful core features of Oryx layouts.

At the same time, dual-function keys take some time to get used to, and no two dual-function key setups (and really layouts in general) look exactly the same. So, rather than tell you the single “best” way to use dual-function keys (which doesn’t exist), this article is all about figuring out your own personal best dual-function key setup.

Dual-function key examples

Most dual-function keys will fall into one of a few big categories. The exact actions you set up your dual-function keys with are up to you, of course, but I’d start by thinking about these types.

Mod Tap

This is a key with a modifier (Shift, Ctrl, etc.) on hold and something else on tap. The default Voyager layout comes with a few of these.

An example mod tap key

Mod Taps are handy because there is almost never a reason to just tap a modifier — they are held to combine with other keys. Since there's no need to tap modifiers, making them do something else on tap just makes sense.

Layer Tap

The other most common type of dual-function key is a Layer Tap, a momentary (MO) layer switch on hold and something else on tap. The principle here is exactly like Mod Taps, just for layers instead of modifiers.

An example layer tap key

Shortcut Tap

A Shortcut Tap is a character on tap and a shortcut (Ctrl+C, Cmd+A, etc.) on hold. This is a type of dual-function key that's exclusive to Oryx (it can be done in QMK of course, but it's not a simple feature you toggle on). The important thing to remember here is your shortcut action may start to get repeated if you continue to hold the key depending on how your OS treats this, so be aware of creating keys that could be destructive if held too long.

An example shortcut tap key

Two-Character Tap-Hold

A Two-Character key is simple: one character on tap and a different character on hold. This is another dual-function key that's more or less Oryx-only. This is personally my least-used dual-function key type, but it can work. Just remember that like a Shortcut Tap, your held character can start to repeat.

An example two-character tap-hold key

Experimenting with dual-function keys

A quick caveat about dual-function key settings: As much as I can try to explain these settings, it's always so much clearer to just try them. You can try to make sense of them intellectually, but it's no substitute for how they feel to your fingers. It’s worth trying lots of dual-function settings even if you’re pretty confident one isn’t for you. You might be surprised at how some feel in practice.

The Core Decisions: Tapping term and position

There are two decisions at the heart of all dual-function keys: your tapping term and where your dual-function keys are positioned.

Your tapping term is the length of time a dual-function key needs to be held down to register as held. When you press a dual-function key, the tapping term begins. If you release the dual-function key before the end of the tapping term, it sends the tapped action. If you hold it longer than the the tapping term, it starts sending the held action. The tapping term can be set globally or customized for a specific key, and you can also adjust it in the middle of typing (without having to recompile and reflash your firmware). If you'd like some more information on this, check out our Tap Hold Explained article.

Everyone prefers a different tapping term depending on typing style and settings. Usually, as you get more used to dual-function keys, a slightly lower tapping term starts to feel better, but again, there are no hard rules to this.

The other crucial aspect to dual-function keys is where they are. Our fingers are not all equally strong and dextrous. You know your own hands best, but for most people, the thumbs, pointer fingers, and middle fingers are much more dextrous than the ring and pinky fingers. This means that triggering dual-function keys consistently is often more challenging with your outer fingers than your inner ones, but this is where per-key tapping terms come in.

If you set your tapping term in a way that works for the majority of your dual-function keys, but not all of them, consider trying a per-key term. Usually, dual-function keys on the outer parts of your board benefit from a slightly higher tapping term.

While your tapping term and key positions are foundational, they may still change depending on the other dual-function key settings. In other words, you can't necessarily lock in a tapping term first, then try other settings — everything is connected. It's worthwhile to try out some tapping term values without extra settings just to get a sense of what the values feel like, but stay flexible with your tapping term as you try other settings and get more comfortable with dual-function keys.

Chordal Hold, Tap Flow, and Permissive Hold

These are the main dual-function key settings to consider. They all change how your dual-function keys feel in big ways.

Chordal Hold is the biggest change, and also the most reliable if you practice using it. We have a whole article about Chordal Hold, but basically it makes it so any dual-function keys on the same hand (aside from your thumb keys by default) will not trigger their held actions when hit with other keys. This can nearly completely eliminate typos with dual-function keys. The tradeoff is you'll need to get used to using your opposite hand for shortcuts when you do need them. For example, if I want to write a capital "T" with a dual-function Shift key, I need to use a dual-function Shift key on my right hand (because I'm hitting T with my left). Hitting my left dual-function Shift key and T won't capitalize it unless I go very slowly. Sometimes this constraint can be nice because it forces you to use both hands more evenly.

The chordal hold setting

Your board's thumb keys are excluded from this rule by default, though. So, if you want to set up dual-function layer switches or even use specific dual-function modifiers on your thumbs, you can still do that. For example, if I'm okay with using opposite Shifts but I like to hit shortcuts like Ctrl + C with one hand, I can set up a dual-function Ctrl key on my thumb cluster, and I'll still be able to do these shortcuts with one hand (holding a thumb key and tapping another key). Another example is having your Spacebar double as a Shift key.

Permissive Hold and its more intense friend Hold on Other Key Press both make it so your board will prefer the held actions of your keys in more cases. The exact mechanics get a little complicated, but just think of it like this: If you're pressing a dual-function key and another key together, you may be trying to get two tapped actions or the held action of the dual-function key and the tapped action of the other key. How does the keyboard know what you want? Permissive Hold will prefer the held action a little more often (it has to do with when you release each key), and Hold on Other Key Press will prefer the held action a lot more often. In practice, I see a lot more people using Permissive Hold than Hold on Other Key Press, but feel free to try for yourself. Permissive Hold also works nicely with Chordal Hold when you turn both on.

The permissive hold setting

Tap Flow is a smaller change that is also meant to help avoid typos with dual-function keys. Again we have a whole article about Tap Flow, but basically it makes it so you can't trigger the held action of keys while in the middle of typing. You have to wait a beat (an amount of time you can define) before sending held actions. I think Tap Flow is ideal for people who mainly write prose. It gets a little trickier if you're writing code and using camelCase often because you tend to want the ability to quickly capitalize even in the middle of a word. Tap Flow works best if the main shortcuts you're using are things like capitalizing new words or sentences and standard app shortcuts (Ctrl + C, Ctrl + A, etc.): things that will naturally have a beat before you hit them. Anyone can take advantage of Tap Flow, but you may find you want a pretty short Tap Flow term depending on your workflow.

The tap flow setting

Experimenting with dual-function keys

Hopefully that gives you some idea of the settings, but again, reading about them is no substitute for just giving them a try for 10 minutes or so. Here is how I suggest approaching dialing in your dual-function key setup. Start with the default setup (no special settings and 200ms tapping term) and just type a little bit. See how it feels and notice what (if anything) is going wrong.

"I'm always getting tap actions when I want held actions."

What this means is your dual-function keys are not being held down long enough.

  1. The simplest fix is to reduce your tapping term (or use a lower per-key tapping term if this is only happening with some keys). This will make it so you don't need to hold your dual-function keys as long for them to register as held. Of course, you will also have less time to tap them for tapped actions. You can try this on the fly using the dynamic tapping term keys until you hit on a tapping term that feels good, and then “lock it in” in Oryx and recompile/flash just once to keep the new term.
  2. You can try the Permissive Hold or the more extreme Hold On Other Key Press settings (Hold On Other Key Press also covers all the situations Permissive Hold covers, so you don't need both).

"I'm always getting held actions when I want tapped actions."

On the other hand, this means your dual-function keys are being held down too long.

  1. Again the simplest fix is to adjust your tapping term, this time raising it. You'll have more time to press and release a key to get the tapped action.
  2. This is also where technique comes into play. If you're someone who tends to linger on keys, holding them down even when you just want the tap action, it's worth practicing quicker taps and releases. You want to think of it like bouncing on the keys, not really pressing them.

"Sometimes I get held actions and sometimes I get tapped actions, but not when I want them."

This is where most people who try dual-function keys end up early on, and broadly what this whole article has been about. In summary, these are the changes you can experiment with from biggest to smallest:

  1. Enable Chordal Hold. This requires you to get used to using opposite hands for things like modifiers, but in practice, it really isn't that difficult, and it is the most reliable way to get dual-function keys to feel like they just work. Enabling Permissive Hold alongside Chordal Hold works well.
  2. Speaking of Permissive Hold, enable that or Hold On Other Press. This is more for if you only have trouble triggering the held actions of keys, but I'm including it here because it changes how all your dual-function keys feel, so you may need to adjust other settings accordingly.
  3. Enable Tap Flow. Tap Flow is the smallest of the bigger changes. It does affect your whole layout, but not quite as noticeably as other settings. This can be ideal if you feel like your dual-function key usage is almost there, but not quite.
  4. Adjust your tapping term. If you feel you're consistently getting misfires with dual-function keys across your whole layout, that's a good sign that your overall tapping term isn't right.
  5. Add per-key tapping terms. And if you feel like you're consistently getting misfires of dual-function keys but only in one part of your layout, especially with certain fingers, that's where per-key tapping terms come into play.

If you’re completely lost when it comes to dual-function keys, I’d try either the combination of Chordal Hold and Permissive Hold or Tap Flow. Chordal Hold + Permissive Hold is good if you want to incorporate a lot of dual-function keys. Tap Flow might be preferable if you just want to incorporate a few dual-function keys.

And finally, the step that goes with any of these settings is practice. Dual-function keys don't take months and months to master, but it doesn't happen overnight either. The thing to remember is it's worth it: getting double the use out of your most accessible keys lets you type more comfortably and often even faster. Leaning to use them is time well-spent. Get the settings that are right for you, and before you know it, you’ll be wishing the keyboard built into your laptop could do this out of the box.