Hi everyone, I'm here today to try and convince you that 34 is totally reasonable amount of keys to have on a keyboard and that I'm not a totally deranged individual.
Let's start by presenting myself * I'm Mattia Dal Ben * I'm from Italy * I have a master degree in Electronic Engineering * I work as a Software Engineer at Eurotech * I'm a keyboard addict * I designed a few projects that are quite popular in the keyboard community: the Redox keyboard and the Yampad
So... what are we going to talk about? * We're *NOT* gonna talk about your average custom mechanical keyboard * We're gonna talk about small from factor (which means less than 40 keys), ergonomic, open-source, mechanical keyboards * We're gonna talk about what firmware/software features make them a viable option (Features that can be applied even to normal keyboards) * ... and, above all, **why** should you want to use them. BTW, the keyboards in the bottom picture are all mine... I warned you I am a keyboard addict.
1. _Hardware_: We'll start by talking about how we can improve the ergonimics of a 100 years old design from the hardware perspective (spoiler alert: we'll remove a lot of keys in the process) 2. _Software_: Then we'll talk about the software features that make minimal keyboards viable for daily use 3. _Layout_: I'll also briefly cover the most common alternative layouts and why would you want to use them 4. _Miryoku_: Finally we'll put everything together with the Miryoku layout, one of the most popular layout for small form factor ergonomic keyboards
On the top half you can see a Corona Model 4 that was introduced around 1920 (I heard Corona stuff is pretty popular right now so I tried to keep up with the times) On the bottom half a 2020 MacBook Air There's a century between these two and they have a lot in common from the keyboard design perspective... Keyboard design essentially didn't change since 1880 when typewrites appeared. We're burdened by design choices due to mechanical/physical constraints that no longer exist. Nobody even question it... ... and this is dumb...
Let's start with the ulnar deviation. Ulnar deviation occurs when your wrist is bent outward in the direction of your little fingers. It is among the most common and potentially damaging keyboard postures and can lead to carpal tunnel syndrome and other serious repetitive strain injuries. Your wrist are not built to bend like that. So... we can split the keyboard to have a more natural posture.
This is a Taobao Supreme 65% split keyboard. This is not open source, even though you can easily find similar alternatives that are. I choose to use this picture only because it was pretty :) As you can see, by being split, we can move the two halves around however we want to, allowing us to assume a more natural posture while typing.
Another thing that we can improve is the fact that... Why is your strongest finger (the thumb) used to press only a key? Even worse: you use both your thumbs to press a single key: the spacebar. It's a waste! Let's create a dedicated set of keys only for the thumbs. This set of keys is called "Thumb Cluster" and is one of the most common features of ergonomic keyboards. There's no common rule for which function to dedicate to which button but, usually, you'll see the most used keys in the thumb cluster: space, enter, backspace, delete, tab, shift...
Here you can see a Dygma Raise keyboard with a 4-key thumb cluster (again: not open source, but it's the last one I promise)
The row staggered layout is a heritage from the old typewriters that needed such an arrangement to fit the mechanical linkages between the keys and the levers. Such a design is not needed anymore and doesn't fit with the human hand conformation. The common alternative is to use the "Columnar Stagger": keys are vertically aligned and displaced following the length of the fingers.
Here you can see a Redox keyboard (which I designed) featuring a columnar staggered layout. At this point there are a lot of alternatives: the Ergodox keyboard (which inspired the design of the Redox) being one, and more recently the Kirya. All of these are open hardware and open source obviously...
We're now at the heart of this talk. We'll talk about *how* we can reduced the number of keys in the following slides but let's focus on *why* this is something we want to do. - Reducing finger movement means reducing fatigue and strain on the hands. It is more ergonomic - Reducing finger movement means faster typing because your finger needs to travel less distance to press the keys you want - Reducing finger movement means fewer errors: you don't need to reposition your hands and thus reduce the probability of misplacing them making mistakes - Improving typing habits: you can't use incorrectly what doesn't exists. I've always used the pinkies incorrectly especially for pressing the "shift" key which made them hurt after a day of work. Reducing the number of keys means that you're constrained to use your keyboard properly. - Another advantage is the fact that is more portable - They look *adorable* To sum this up: essentially the idea here is that reducing the number of keys reduces the finger movement and this has a lot of ergonomic and typing speed advantages. We'll see shortly *how* we can reduce the number of keys by moving our keys to the fingers, and not the other way around.
Here's a Corne keyboard by Foostan. It features everything we just talked about: it's a split keyboard, it has a thumb cluster and features columnar stagger. All within 36 keys. We're now in "minimal" or "small form factor" territory.
There are further improvements we can make, for example: Pronation in the forearm and wrist occurs when typing with your palms face down towards the worksurface. The majority of this turning involves the rotation of both forearm bones (ulna and radius). Sustained pronation puts pressure on the forearm muscles and tissues which reduces blood circulation and can lead to fatigue and repetitive strain injuries (“RSI”). This can be avoided by eleveting the thumb side of the hand. Furthermore, adding concave key wells ensure the keys are reachable and mimic the curve drawn by our fingers.
Here you can see a Skeletyl from Bastardkb. It features both a concave key well and tilting. Again, this project is completely open source and the case is 3D printable. All files are provided by the author so that you can print it yourself.
We have now seen *what* we want to achieve and *why*. Let's talk about *how* we can do this.
Keyboard firmware is the software running on the microcontrollers, responsible for scanning the matrix state and reporting which keys are being pressed to the Operating System. Sounds pretty straightforward right? Wrong. In the keyboard enthusiast space we have mainly two projects for this: - QMK: Quantum Mechanical Keyboard firmware. Which is a mature project and the de-facto standard for custom keyboards, with a lively ecosystem of sub-projects. - ZMK: Zephyr Mechanical Keyboard firmware. Which is relatively new but already fairly mature (and my personal favourite). It's killer feature is the bluetooth support which QMK doesn't offer due to licensing issues. There are others (KMK, TMK) with their own merits but I'll not discuss them right now. Also.. fun fact: the Eclipse Foundation is member of the Zephyr project.
With these tools we can program much more smart behaviours in our keyboards: some of you might be familiar with the concept of macros. Maybe ramapping keys in more comfortable places without the need to configure every OS you connect to. (The caps lock doesn't deserve the place it has on the keyboard) There are much more useful behaviours though that we'll discuss now. You should be able to find these feature in each of the previously mentioned firmwares.
Let's start with the bread and butter of custom mechanical keyboards: layers. This amounts to changing the behaviour of a key by pressing another key. You might be familiar with the FN key on some laptops which turns the function row in brightness control or media control. This is essentially it. It's a space saving measure.
What if instead of reaching for the shift key we could just keep the key pressed a little bit longer to get the upper case version of it? This technique is called "Autoshift" and leverages the Hold-tap behaviour as you can see in the animation here. The hold-tap key will output the 'hold' behavior if it's held for a while (in the animation here the uppercase 'A'), and output the 'tap' behavior when it's tapped quickly (the lowercase 'a').
Let's take this concept a little further: what if we removed the need for modifier keys by using the hold-tap technique? If you think about it, it is the perfect application: modifiers keys (ctrl, alt, command) are rarely pressed by themselves, you need to keep them pressed. They're *modifiers* after all. In the animation here the F-key doubles as a Shift key: it normally outputs the F character when tapped, it becomes a SHIFT modifier when held. We can now put them anywhere we want, without the need for dedicated keys...
...let's put them where we don't need to reach for them: on the home row! Think about moving away from the home row as a cache miss: you incur in a higher latency when trying to write something that needs keys not on the home row. Modifiers are used pretty frequently, so having them where they're easier to reach is a no-brainer. I mean: we built our careers on CTRL-C, CTRL-V, we should know it right? This also have a big ergonomic advantage: you don't need to place your fingers awkwardly to press common shortcuts. Everything is comfortably reachable.
We talked about layers, the key for switching layers is another good target for the Hold-tap behaviour. It is pretty much identical to the Modifiers in the sense that they're rarely pressed by themselves. This creates a lot more room for placing this kind of keys on the keyboard: you don't need a dedicated key for layer switching anymore, you can place it wherever you want.
Finally, a more recent feature: combos. What if, instead of needing a dedicated caps lock button, you could just press the two shift keys together? Again... less keys. In the animation here the Q and W key behave as you would expect when pressed by themselves, but when pressed together they'll output the ESCAPE key. Keep in mind that all the behaviours we've just seen can be combined together: you can have a combo that triggers a layer using the hold-tap behaviour. These are the building blocks for the advanced layouts we see in the ergonomic keyboard community...
... and there's a lot more than this that you can achieve with these firmwares Some of you might be familiar with the "Leader key" by using Vim. Think about having it everywhere! Caps word is another nice feature: it's a smart caps lock, it deactivates on its own when a certain character is pressed (like the space key) I invite you to take a look at the QMK and ZMK documentation to understand what these firmwares are capable of.
No talk about keyboards would be complete without talking about the QWERTY layout. Unfortunately I'm not that knowledgable on alternative layout so I'll cover just the basics.
What's wrong with QWERTY? Why was it designed this way? First let's address a common misconception: allegedly the QWERTY layout was designed to slow down fast typist to avoid the typewriter to jam. During the research for my talk I discovered that this fact was actually debunked by a group of Japanese researchers and that the QWERTY design stems from the use of the typewriter by telegraph operators (which were the first users of this new technology). For instance: at the time they used to use the letter "I" to write the number "1". They decided to move it near the "8" to write the date faster (1870). Likewise they put "s", "z", "e" together because they usually got confused in the American Morse Code. Frankly speaking, I don't think the explaination of how this layout was designed got better. In the end we're still using somethingn that was designed for the needs of the 19th century...
Can we do better? Indeed we can... An attempt to propose a better layout for writing was done by August Dvorak *in 1936*. The Dvorak layout you can see here. The principle is simple: the most common character used in the English vocaboulary are the easiest to reach. Look at the vowels on the home row. It was designed from the start with ergonomics in mind and its proponents claim that it requires less finger motion (again) and as a result reduces errors, increases typing speed, reduces repetitive strain injuries.
During my research I found this paper comparing various keyboard layouts and, indeed, the claims are true, albeit maybe not as dramatic as you might expect (5% increase in typing speed). The issue here is that the perceived gain (5% speed increase and an objectively difficult to measure ergonomic gain) didn't convince the general public that the layout was worth the switch.
Then we have the Colemak layout, introduced by Shai Coleman in 2006, which tries to address the issues with the Dvorak layout. Preserving its efficiency and design principles but trying to lower the barrier of entry for people coming from the QWERTY layout. This is the most common alternative layout suggested today. A more recent variant, Colemak Mod-DH, is the most popular and suggested for newcomers. Personally, I'm still on the fence about it :)
Finally... the Miryoku layout We have now covered all the feature and techniques that can improve our keyboards.
Let's play a little game here: let's try and fit all the keys on our outdated and ugly full-size keyboard onto this super-cute ergonomic split 34-keys keyboard here. As you can see the hardware ticks all the boxes: it's split, it has a thumb cluster, columnar stagger and the right amount of keys. We'll need all the software features we talked before to make everything fit.
Let's start with the basics: simple characters are where we expect them to be.
We talked about the fact that we should use our thumbs more, let's assign them the most used keys: space, backspace, return, and tab. Esc and Delete are accessible through combos: by pressing the two left thumb keys we'll get the Escape key, by doing the same on the right we get the Delete key. Furthermore we'll need layers to fit everything into this keyboard, thumbs will be responsible for all the layer switching thanks to layer-tap we just talked about.
To cover the mods we'll simply use the home-row mods we talked about in the previous slides As you can see we've covered a large part of the keys from the full-size keyboard and we didn't even use a layer yet.
Let's start using our layers then: Let's start by putting the numbers on the left hand in a numpad layout so that it's easy to remember. To access symbols we can simply press shift while staying on the num layer or access a shortcut layer called Symbol layers. This layer is accessible by pressing the other right hand thumb key. Symbols are the same as reported in the num row, which means that you'll find the dollar sign above the 4 key, so nothing has changed from the normal keyboard. Nothing new to learn apart from the position of the 7 symbols here on the blank keys.
Following the same principle, let's put the function keys in the same spots as the number layer in a layer on their own. This means that we'll find the F1 key where the 1 key was found on the other layer. Easy to remember... We already know where most of our keys are located.
On the right hand let's put our nav cluster and the arrow keys. If you prefer the usual inverted T layout for the arrows there's an option for that. And just like that: all the keys from a normal keyboard are covered. But we can do much much more.
And here we are, this is the principle behind the Miryoky layout by Manna Harbour. One of the most common for minimal keyboards. As you can see it packs quite a lot more features that what I covered: - it has a media layer for controlling volume, media and bluetooth settings. - a mouse emulation layer - some copy paste shortucts for one handed use - in its default configuration uses the Colemak layout but supports QWERTY, Dvorak and others out of the box and more. I invite you to give a look at the awesome documentation provided in the official repo. Everything is open source obviously...
Finally... this is my current daily driver keyboard: a Ferris Sweep Half Swept running Miryoku ZMK... and I like it a lot
Here's why: - I've always used the pinkies incorrectly especially for pressing the "shift" key which made them hurt after a day of work. With the miryoku layout I am forced to use the index and to alternate between left and right hand (which is the correct way of doing it). I also used to press the spacebar with my index finger, these keyboard made me drop this bad habit. - The "limitation" of they keyboard made me discover new ways of typing: I can't keep backspace pressed to delete a word if I need to because this triggers the layer, due to this I discovered the alt+backspace/cmd+backspace combinations which improved my typing habits again. - Due to home-row mods placement, shortcuts are so much easier to type. For word-wise navigation I use the Option-Arrows to move around. Doing so on a normal keyboard would move my hand away, with this keyboard I can stay on the home row! And this is true for a lot of shortcuts - Accessing symbols is much easier now since I no longer need to reposition my hands and thus I'm using Vim command that depends on these symbols much more frequently. - I've yet to encounter a key combination that I cannot type - It is just plain **fun** to use, really
So finally I hope I convinced you that: - Minimal ergonomic keyboards are not just a novelty but offers serious ergonomic advantagees that makes them viable if not preferable to normal keyboards - Techniques and layouts that I showed you can benefit all keyboards. The Miryoku layout was implemented also on KMonad which works on any keyboard. - Give it a try!
Some of you might be thinking: is 34 keys the limit? Can we go further than that?
The top keyboard is a 18-key Ergogen-generated PCB running the ISRT layout. The owner says he can reach 60WPM which is an above-average speed. The bottom keyboard is a 10-key Ginny keyboard using the ASETNIOP layout. Reddit post: https://www.reddit.com/r/ErgoMechKeyboards/comments/wy4e3a/my_ergonomic_18key_keyboard_inspired_by_ben/