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 exclusive 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):
- modifiers on the left, except for Shift;
- Space and layer-shifts (Sym and Nav to access layers) on the right;
- Nav+OS gets to the Fn/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;
- introduction to hold-taps: modifier keys Ctrl, OS and Alt act as Backspace, Tab and Enterwhen tapped;
- 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 Fn/Media.
Shift and Sym are mirrored, not doubled:
- unlike Nav and Fn, 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:
- Fn/Media is activated by holding both Nav 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
Nav/Num
A navigation half-layer on the left:
- arrow keys on ESDF (inverted T), along with home/end and page up/down;
- common keyboard shortcuts on ASZXCV;
- Escape on Q.
A numpad on the right:
- positive numbers on a 3×3 grid, 0 on the homerow;
- not a full-featured numpad, but enough for numbers and dates.
The Nav key is accessible from the home position of both thumbs, with a catch: it has tap-preferred priority on the right (Space), hold-preferred on the left. This allows unmissable, single-hand shortcuts.
Symbols
All 30 programming symbols are available on this single layer, and their placement has been optimized for comfort:
- the most common symbols are in the most comfortable positions;
- no symbol ever requires Shift;
- common sequences of programming symbols can be typed without same-finger bigrams,
either by alternating hands (
~/,);,</>,+=,[''], etc.) or with a single-hand roll (>=,/*,";,(),\", etc.).
Besides, this layer has truly been designed with Vim in mind, to ease advanced
navigation tricks like vertical jumps with {}, (), []
followed by +- (on the JK positions), to adjust the
movement line by line without releasing the Sym key.
The Symbols layer is a core part of the Ergol layout and the Arsenik keymap: it’s been tested and improved over years. Rough edges have been polished over time.
Selenium adds a specific concern to ease sequences with non-alpha characters without releasing the Sym key, thus avoiding same-thumb bigrams and preserving the typing flow. This is why the Symbols layer features these three actions in the left-hand thumb cluster, from right to left:
- Enter, to easily type a line ending after a symbol (e.g.
;); - Space, for long symbol sequences like
:(){ :|:& };:; - num, which activates the default numeric layer (either Nav/Num or NumRow,
see below), to type Symbols/Digits combos like
(0),[1], etc. This key is sticky for all flavors with three thumb keys.
Fn/Media
- Function keys on the left: F1-F12 on a 3×4 grid;
- Media keys on the right: prev/play/next, volume +/-/mute, brightness +/-/lock.
Note: homerow-mods are always enabled on the Media half-layer, no matter which flavor is chosen. This is by far the easiest way to do an Alt‑F4 or a Ctrl‑F5 — and a safe opportunity to start learning HRMs.
Options
Vim Variant
This variant uses two layers instead of the Nav/Num one.
The NumRow layer mostly picks the number row of your keyboard layout (QWERTY, AZERTY…):
- Numbers on the homerow, Shift + number on the top row. This suits experienced touch-typists, who are often more efficient with a numrow than with a numpad.
- Comma, period, dash, slash, everything else needed to write numbers, hours and dates under the right hand.
The VimNav layer offers advanced navigation possibilities:
- the right part has arrows on HJKL, along with home/end and page up/down on the top row — Vim-like cursor movements in any app, no matter which keyboard layout you use;
- the left part has Tab and ShiftTab on the homerow (DF, mirroring JK in the right hand), prev/next on the top row (ER ), along with general keyboard shortcuts.
Escape replaces Tab on the left thumb, which makes it even more symmetrical:
- the right hand confirms (Enter, Space), the left hand cancels (Escape, Backspace);
- Enter mirrors Escape, Space mirrors Backspace.
This variant is very popular and extensively tested.
Shift as Pinky HRM
TODOImplementations
The reference implementation is called “Ækeynox”, and is available both for ZMK and QMK: