Hold-Taps That Just Work
Compact keyboards rely on affecting several actions to some keys based on how long they are tapped or held (hold-taps behaviour). Bad timing configurations can however make hold-taps unreliable and very frustrating to use. We believe Selenium provides sane defaults to avoid the problem.
Timing is Key
The common approach for compact keyboard keymaps is to use a single configuration (and timing) for all hold-taps, which is often a compromise between “tap-preferred” and “hold-preferred” (like QMK’s “permissive hold”), and then rely on mitigating measures and fine timing adjustments to limit the number of typos.
In our experience, this doesn’t work reliably for most users and never will, because homerow-mods and thumb modifiers have two mutually excusive goals. Instead, Selenium uses three distinct kinds of hold-tap behaviors that define which action takes priority and timings:
|
Tap-Preferred Behaves as a letter key by default, becomes a modifier / layer-shift when pressed longer than 300ms. Perfect for Space and homerow-mods. |
|
|
Hold-Preferred Behaves as a modifier / layer-shift by default, becomes an input when pressed and released in less than 150ms. Perfect for adding actions like Enter, Backspace, Tab, Esc to any thumb modifier / layer-shift. |
|
|
Sticky Behaves as a one-time-shift when tapped, and as a modifier / layer-shift when held. Perfect for Shift and Symbols. |
With this approach, you’ll never have to think of it: as long as your keymap respects the proper behavior/key associations, it just works. No unwanted shortcuts while typing text, no accidental Return while chatting.
Thumb-Shifting
An opiniated choice with Selenium is that the Shift and Symbols keys belong to the thumbs, not to the homerow:
- to work seamlessly these keys must have “hold-preferred” priority, which is not suitable for homerow-mods;
- this setting makes it much easier to chain several uppercase letters or symbols.
Having Shift as a homerow-mod is often recommended… and a very common reason why HRMs as a whole are so difficult to tune right: capitalizing a word while typing text requires Shift to have an immediate action, which is exactly what you do NOT want for keyboard shortcuts. The problem can be partially mitigated with complex settings and practice, but it always ends up showing up at higher typing speeds.
Instead, placing the Shift on a thumb key with hold-preferred priority allows us to use a very long tapping-term on the other homerow-mods (300 ms by default), which ensures they’re never misfired.
It might take a bit to get used to Shift under the left thumb, but it’s totally worth it — even without these timing considerations. Probably the biggest comfort improvement you can expect on a keyboard.
One-Time-Shift
In its recommended flavor (HRM), Selenium affects a dual behaviour to Shift and Symbols keys under the thumbs:
- modifiers when held, similar to the behaviour of Shift on an ISO keyboard
- sticky key when tapped: the next key you tap will be affected (think of it as a dead key)
Because the sticky behavior only affects the following key (a one-time shift, then), this action is safe even with fast typing: no risk of timing your hold of Shift a bit wrong and ending up with two capital letters instead of one.
Besides decreasing frustration at higher speeds, these sticky behaviours provide a great confort improvement over the regular modifier behaviour (hold). Try rolling these thumb keys rather than chording them, and never again feel the pain of holding your thumb in place while trying to reach the top most inner key with your index!
In our opinion, these sticky keys are the main reason why you should have a keyboard with three good keys per thumb. Otherwise, 34 keys would be just fine.
From 42 to 34 Keys (and beyond)
Selenium is available in 4 different flavors: pick the HRM flavor right away, or start with EZ or TT to ease the learning process if you’re unsure.
EZ: No Hold-Taps
The most direct way to get started with compact keyboards (42+ keys):
- non-Shift modifiers on the left;
- Space and layer-shifts on the right;
- Nav+OS gets to the Fun/Media layer.
Special keys like Shift, Enter, Backspace or Tab remain on lateral columns, like on standard ANSI/ISO keyboards.
TT: Thumb-Taps
Learning hold-taps and thumb-shifting is the next step:
- Nav/Num is activated with a long press on Space;
- modifiers act as special keys when tapped: Backspace, Tab, Enter;
- Shift and Sym are sticky: modifiers when held, dead keys when tapped.
This flavor tries to be as symmetrical as possible, with keys mirrored by pairs: Shift/Sym, Backspace/Space, Tab/Enter.
HRM: Home-Row Mods
This is the default and recommended flavor. It pushes the symmetry even further:
- symmetrical modifiers on the home row (long press), making all keyboard shortcuts trivial;
- symmetrical layer-shifts under the thumbs, to handle the half-layers in Nav/Num and Fun/Media.
Shift and Sym are mirrored, not doubled:
- unlike Nav and Fun, these keys can be held to type several
characters with both hands, like
FULLCAPSwords or symbol sequences like:(){ :|:& };:(don’t); - when used for a single character, they’re used as dead keys.
This flavor quickly feels like the most natural way to use a keyboard.
2TK: Two Thumb Keys
Keyboards with three good keys per thumb are rare, but there are a lot of good 34-key keebs out there, and Selenium has a flavor for them — which is just a simplified version of the default HRM flavor:
- Fun/Media is activated by holding both Nav/Num keys;
- Shift and Sym become hold-preferred.
FTR: Selenium started as a 34-key configuration, and the name is a reference to the 34th element of the periodic table. This flavor used to be the default one — and would still be if sticky keys weren’t such a banger. ;-)
Layers
Symbols
TODONav/Num
TODOFun/Media
TODOOptions
Vim Variant
TODOSpace/Backspace Swap
TODOShift as Pinky HRM
TODOImplementations
The reference implementation is the ZMK firmware for the Quacken, a highly configurable keyboard (30-42 keys).