Monday, 12 October 2026

How to shift with just two thumb keys?

It seems that most users and builders of DIY ergonomic keyboards, once they've got over the hurdle of wanting a dedicated number pad or number row, or cursors, would agree there is a sweet spot around 36 keys.  That gives each hand three rows of five plus three thumbs (often written as 3x6+3, or 33333+3).

The logic here is each finger should only have to move at most one key away from the home position. Stretching/contracting gives four columns of three (index, middle, ring and pinky fingers), and three more keys for the thumb. Then an extra inner column with a lateral movement for the nimble index finger makes 36 keys. Many like to have an extra outer  column for their pinky too (making 42 keys), either for things like tab and modifiers, stenography, or practicalities of languages like Korean or Russian.

For an English layout, I would say below 34 keys is when people get creative in what single key actions are dropped. Even at that point, not all 26 letters are guaranteed to get dedicated keys, since lots of the punctuation gets used more than the rarest letters Q and Z.

30-key keyboard base layer diagram with English letters colour coded by usage
My current combo-rich 30 key layout base layer on ZMK

Getting to just 30 keys just pushes that further - and for me the shift key was the trickiest point.

But why make that effort? For me it has been an iterative process dropping the physically least comfortable keys at the cost of making my keymap slightly more complicated. More comfortable for my hands but more work for my brain? One way to keep mentally active I suppose!

Going below 34 keys 

The conventional 34 key layout is three rows of five columns (pinky, ring, middle, index, and inner) with two thumb keys for each hand — often denoted 33333+2. Other than the rarer punctuation this has room for Qwerty, Colemak or indeed most English focused layouts — with some choice on which of Escape, Backspace, Enter, Shift etc get dedicated keys.

Which physical key locations people drop seems rather personal, but reducing the inner column from three to two is common, giving 33332+2 for 32 keys. I did this initially with my Bivvy16D and Goldilocks32 designs, although I've tweaked the top pinky key to be easy for alternative fingering by the ring finger in what might be called a 24332+2 usage.

Many people also reduce their pinky column from three to two, or just one (I have not gone that far). The 30-key Hummingbird keyboard did this for a 23332+2 layout of 30 keys. This has inspired a whole family of awesome Hummingbird keyboards, and my recent designs are in this general style.

I have recently gone to just one key per thumb, which is less common but has its fans. This doesn't feel that strange given I grew up with just one thumb key (the space bar). That takes me to a 30 key layout - just not the more typical way to do this as mine is 33332+1 rather than the more common 23332+2. This is an option on the Goldilocks32 and the only choice on my current projects — the Rugby Union (blog post) and Wee Bit Warped (30 keys) (blog post once built).

I went from 42 keys (333333+3) to 36 keys (33333+3) to 34 keys (33333+2) to 32 keys (33332+2) to 30 keys (33332+1). It is probably a fair summary that each individual change wasn't dramatic, it did get harder. This has all been with my own variant of the Hands Down Promethium layout (with letter R on the left home-thumb, and space on the right home-thumb), which started by juggling the outer less common keys a little & repositioning the punctuation - in part to have Escape top-left. In hindsight, I might have tried Escape on a thumb key...

Essentially I have moved the rarer letters to combos: Q and Z (both from the start), then V (to keep Escape top top left when dropping the outer column), and then X (when reducing the inner column to just two keys and preserving the K/J pair for use as up/down where vi shortcuts are supported).

My numbers have always been on a layer (now accessed by holding space but originally with a dedicated thumb key), and most of symbols and punctuation are two key combos. Those required minor tweaks when reducing the inner columns to just two keys each. 

The hardest part has been the final step to just two thumb keys (letter R on the left and space on the right when tapped), and dealing with shift.

The Shift issue 

If I didn't already have a letter and space as my home thumb keys, then shift and space would be a logical choice to make. But I have the letter R and space as my thumb keys, so how to deal with shift?

The Selenium layout (originally a 34 key layout, thus named for Element 34) description has some good stuff about shift keys. With three keys per thumb available, they dedicate a left thumb key to shift - but a sticky shift that can be tapped once to apply shift to the following key, or just held down like a traditional shift key. I did try that when I had two keys per thumb, but simplified it to just being a traditional thumb key (sticky shift hadn't clicked for me). With only two keys per  thumb, Selenium uses a tap/hold of tab/shift, with the hold action preferred.

I tried holding space for shift, but never got a comfortable typing experience. Holding space for a layer change is a more deliberate action that works much better for me, and that was an important step in reducing the number of thumb keys early on.

I had a working solution with Autoshift (long taps gave the shifted form of a short tap), but it never felt comfortable with the switches I was using. I think I would unconsciously use too much force on long taps, bottoming-out the switch and tiring my fingers. Curiously this hasn't bothered me on my MacBook with minimal travel laptop switches (here using Karabiner-Elements to implement the Autoshift). This suggests it is something about the physical feel of the switch action and/or travel distance. Autoshift was combined with modifiers as two-key horizontal combos on the home row (alt, control, and GUI). Shift was also a two-key horizontal combo on the bottom row, for use with the mouse (or shift+space), which wasn't immediately natural.

Giving up on Autoshift allowed holding the left thumb for shift (letter R, which was already the case on the numbers and navigation layer where this was zero when tapped), which worked very well for mouse usage. It also meant I could replace my home-row-combos with traditional single-key home-row-modifiers (HRMs), which is nice, but not transformational. The only puzzle here was how to type capital R easily, for which I settled on holding the left thumb for shift, and tapping the right thumb (in place of shift+space). I can still get shift+space for reverse pagination using the HRM shift instead. Technically this was done with a left-shift only mod-morph in ZMK (or override in QMK).

Then I tried a hybrid - Autoshift on the main keys but not on the thumb R, which is shift when held (capital R done as above). My modifiers remain as home-row combos, not ideal for combining modifiers, but that hasn't been an issue for me in months of usage. This lets me use either style, with Autoshift especially handy for one-handed typing, for example when my right hand is on the mouse. My shift/r thumb settings are now based off the Selenium ZMK timings - and this has reduced but not eliminated how often I get fullstop, space, lower case 'r', lower case letter when starting a new sentence. 

I also setup Caps Word, the smarter version of Caps Lock which deactivates automatically after a non-letter (details configurable in QMK or ZMK). In my case this is currently on a combo of both thumb keys. This is handy for constants while coding, but I keep forgetting and just holding shift with my left thumb instead. 

I have also had Magic Comma Shift setup too, a clever idea combining a one-shot or sticky shift key with the observation that you don't usually press comma before a letter. The idea here is typing comma then a letter gives the capital letter, but in other usage like comma space or comma enter you get those keys. It works pretty well, with pre-existing implementations for both QMK (try QMK Super Leader) and ZMK (I have tried using either ZMK Adaptive Key or ZMK Leader Key), but I would need to practice this deliberately to make it a habit. I eventually gave this up - I think it'd work much better if my comma key wasn't on the inner column on one of the least comfortable keys left on my 30 key layout? Maybe I could swap it to top row left middle finger (currently my quote key - surprisingly these are the only punctuation still in the canonical inverted Hands Down Promethium positions despite my other changes).

Another idea I am dabbling with is a combo for a new sentence macro (sending full stop, space, and sticky shift). This seem quite comfortable for typing text. There are potential variants like making that happen when full stop, question mark or exclamation mark are typed with a modifier held.

After all that experimentation, for now I use the tap/hold of R/shift on my left thumb as the primary shift mechanism (with the occasional unwanted letter and missed shift), and try to use my new sentence combo when writing text. For the occasional ALL_CAPS_STRINGS as code constants etc, my habit is still to hold down the thumb-shift and type, rather than remembering the CAPS_WORD_COMBO exists.

These experiments were all under ZMK with the layout source code under version control on my personal ZMK configuration repository.

Going below 30 keys?

Adjusting to 30 keys was less daunting than thinking about small 20s keyboards. Some of these use two alpha layers, like Rafael Romao's 24-key layout, or Ben Vallack's 18-key and later 16-key layouts. Others go all in on combos/chording, and some even work one-handed like the Tiapo layout (10 keys per hand) or the Anotha One (8 keys per hand). Or even just one-key per finger like Crescent (5 keys per hand). That's quite extreme!

The other downside would be giving up on trying to learn the kana-based Naginata Style (薙刀式) layout for Japanese. This was designed for at least 31 keys with at least one thumb key (the spacebar). While I've tweaked the core for just 30 keys, less than that just wouldn't be the same. It would also really mess up the recent direct kanji entry added in v18.

So I don't think I'll drop any more keys. I might even have to add a few if I try integrating a trackball in a future keyboard design! 

No comments:

Post a Comment