Principles for Keyboard Layouts (2022)
anniecherkaev.com
anniecherkaev.com
Not sure how you'd get around it being a huge security risk? Maybe only write totals for keypresses every 30 minutes?
Edited to add: Does anyone daily-drive a Keyboardio Model 100? I really liked the concept and participated in the kickstarter, but unfortunately found I didn't enjoy using it that much.
I've settled on a Keychron Q10 with the Alice layout[1]. It's a nice compromise between the full on split and standard keyboards. It's nice and heavy, with QMK/VIA customization, and some useful macro keys I assign to some Emacs shortcuts like M-x and C-g. I do wish it had a thumb wheel and/or some Moonlander-style thumb keys below the space bars.
[1] https://www.keychron.com/products/keychron-q10-alice-layout-...
A small program that locally collects data and lets you analyze it locally is pretty much a definition of a computer! IMHO this is not the place to worry about a security risk.
Note that the author had video of herself typing and it probably didn't trigger the "security risk" reflex because it's so obviously safe -- safe enough to post in this case. I mean I'm typing right now and when I push the "reply" button the result of my typing will be posted right to the Internet with no access restriction!.
Anyway, with that out of the way: I like your idea. With the raw data stream you can look not just for simple frequency but n-grams as well. The same data stream could be used to design single-handed chord keyboards as well, and even malleable layouts for programs with shitty key assignments (I refuse to call them "shortcuts").
You might enjoy toying around with this: https://patorjk.com/keyboard-layout-analyzer
Config in the top right lets you load other layouts.
The regular qwerty/qwertz keyboards are so ingrained in our muscle memory and society (think touchscreen keyboards) that they still work as backups and you do not "forget" how to efficiently use regular keyboards. I guess it does depend on how often you're swapping around.
It's like foreign languages: you don't forget English when you learn French.
The hardest part of switching is punctuation and shortcut keys, not the letters themselves. But I can use other people's computers and usually most people don't know that anything's odd.
I use dvorak so the first thing I have to do when I get a new phone is to install an alternative keyboard.
I wrote a little Emacs Lisp for this, never published it. I kinda doubt that a similar script would be as easy to write for an OS less friendly than Emacs.
Ignoring the obvious privacy issues, it provides great suggestions and learns some words that are not in the other keyboards' dictionaries.
Maybe you could apply the same for aiding an algorithm to create a personalized keyboard layout.
You do need a keylogger, and a context-aware one at that for proper analysis, otherwise it's better to just use an existing layout, won't get much extra from personal corpus anyway, so not worth the effort to do a poor personalized analysis
When creating my own (slightly) modified qwerty layout I found it helpful to identify which areas of the keyboard was overloaded.
[1] https://web.archive.org/web/20200220112444/http://nikolay.ro...
> Not sure how you'd get around it being a huge security risk? Maybe only write totals for keypresses every 30 minutes?
I did this once with a terrible script that just recorded keys with... I forget, probably either xev or `xinput test`. Anyways, yes, huge potential security/privacy risk but IMO it's fine if you keep it local and don't persist to disk without encryption (read: put the file on an encrypted filesystem or tmpfs). I specifically didn't want just the per-key total presses because I was interested in use of shortcuts and common substrings (IIRC I was looking at what to make macros of to save typing); if you just care about what actual keys get pressed the most and are only looking at rearranging the same keys then aggregation might make it safer.
if you don't, https://github.com/suurjaak/InputScope ... you can even track key presses per app!
--
I've been using a Model 01 (the original release of the 100) for a few years now. It's to the point where several switches are wearing out from regular use. I happen to enjoy nearly every design decision, but am most particularly fond of the thumb clusters. I plan to eventually build a dactyl-like from scratch, with very similar thumb clusters. My favorite feature by far is the thumb-knuckle/palm key.
When I switched to the Model 01, I also learned the Workman layout. Changing both together helped isolate the change of muscle memory to its own additive context. Right now, while I'm away from home, I'm typing on a traditional board (a generic laptop) configured with qwerty. I would rather be at home typing on my Model 01, but I can live without it: the traditional qwerty experience is no worse than it was before.
1. Don't use too many thumb buttons, especially at odd angles, they just make my thumbs hurt after too much typing.
2. Don't use layers for any frequently used buttons, having to keep a button held for a while frequently just leads to more pain.
3. Function keys are mandatory. They aren't used frequently enough that having them in a "far" location is a problem, but when I do use them it is great that they exist (and don't require some strange layer combination press).
4. Home/End/PgUp/PgDown/Delete are all mandatory and should be somewhere near the (also mandatory) cursor keys and a shift key. Not sure how people survive programming without these buttons ;)
I think your other principles are pretty personal. I obviously never use delete. Rarely use function keys or home/end/etc. I use cursor keys a bunch but the Kinesis has those in a spot I like.
With my thumb, since I'd need the other fingers to reach the actual buttons on the layer (usually). Sadly, this breaks my other principals so it doesn't work well for me. Not sure where you delete key is, but I guess it might work well with a pinky key instead (like I can use ctrl+something), but I don't really have a key like that I'd be willing to give up :)
> I think your other principles are pretty personal.
Very much so! Which is why the first sentence of my comment was "Here are my personal principals", emphasis on "personal" :)
See https://github.com/FrameworkComputer/qmk_firmware/tree/maste...
Really useful.
2. Layers are fine for frequently used keys if activated by the thumb. I have backspace, delete, numbers (home row), symbols, punctuation, and the f keys on layers.
3. Yes.
4. Vim is the answer.
I'm in the "I never use function keys" camp, in fact I'd prefer a keyboard without them, since every once in awhile I accidently hit one and strange things happen (like the menu bar goes away).
I posted that (I think on the comments to s.t. at Ars Technica) and was severely downvoted. So I guess your camp is bigger than mine... But I still don't know why anyone uses function keys.
I found Neo2, which is a German keyboard layout with 5-6 layers of keys (which is ironic since I don't actually... speak German). Tried Neo2 vanilla and Bone/other layout, but nowadays I'm just using QWERTZ + Neo2 layers, which is available for Linux and Windows/Mac with utilities.
Just look at the following layout!! https://dl.neo-layout.org/grafik/bilder-einzeln/flat/neo_qwe...
Now I'm thinking, maybe modifying Colemak with Neo2-style layer 3-6 might be perfect for me, and a few others...?
What I think is not so obvious is, that the staggering makes traditional non-split keyboards bearable, because it allows to touch type with both hands at a slight angle.
At least this is true when using the European fingering. In the US version the number row is awkward to type with angled hands.
I was appalled when I found out most people who think ortholinear keyboards are an improvement have been typing Z with their little fingers instead of their ring fingers, X with their ring fingers instead of their middle fingers, etc. Sure, ortholinear is an improvement on that disaster of a hand position! But that's a terrible way to type, so not a good thing to compare to!
I'm baffled that people have enjoyed the experience. To me it felt like a torture device.
Column stagger is what you want, and maybe even a concave keyboard.
I see this sort of thing repeated and I always feel compelled to disagree. I'm sitting here typing on a mono-ortho board and I can choose to angle my wrists or not angle my wrists. That part has nothing to do with the choice of ortho or stagger.
With a staggered layout the angle is somewhere between and similar to what most people angle their split halves.
I don't think wrist angle follows the keys. You simply move your hands and fingers to hit the proper key regardless of wrist angle. No alignment necessary. So then the benefit of ortho becomes the ability to judge the placement of the keys better by feel, particularly the top row. (And it has the side benefit of allowing you to map a numpad over the keys more naturally, which is particularly attractive to me.)
For these staggering was a necessity to prevent the typebars from clashing. The keys had a long travel and had to be hit with a lot of force from above like a diving eagle. Resting the palm was impossible and for a floating hand a short travel from key to key was more important than the angle.
A 2016 study[1] showed that consistency (always same finger for the same key) is a better predictor for typing performance than using a traditional 10-finger system or even ten fingers at all. Also the finger placement taught varies from where it is taught.
My point is that staggering doesn't make sense for a split keyboard and that most people unconsciously use the staggering of their regular keyboard as a poor replacement for a true split.
[1] https://dl.acm.org/doi/10.1145/2858036.2858233
EDIT:
"I don't think wrist angle follows the keys. You simply move your hands"
"minimal global hand motion" was the third best predictor for typing performance in the paper mentioned above. Unless you are typing on a Remington, anchor your palms and only move your fingers. Good for performance and good for your health.
I have some of my own principles for making a keyboard that embraces change while still being usable to someone passing by. Yes they might hate it, but at least they could use it in a pinch.
1. Label your keys. Yes it's nice to have your layout memorized, but they have labels for a reason. That reason being that not everyone who approaches a keyboard has the layout memorized. And this is especially important for mission-critical keypresses. (And guess what's difficult to label? A chord.)
2. Don't replace mission-critical keys with a chord. Function keys (like F5) can do bad things when pressed accidentally. Requiring a chord for such a key is asking for accidental presses.
3. Try to keep your keys generally where they are with a standard keyboard. I bend my slanted columns into vertical ones, but for the most part the keys can be found near where you'd normally find them.
I also question whether some of the optimizations claimed by people are truly optimizations. Were you really getting carpal tunnel by occasionally holding the Ctrl key with your pinky? Probably not. Most of the strain I observe comes from simple overuse. The only times I've ever felt fatigue were when doing typing tests repeatedly.
I'm not trying to "yuck" anyone's "yum"; I just think we should be honest and admit that most of the keyboard changes we make are more about having fun, and less about practicality. I use some chords and I have fun in doing so. But I also know that all of that nonsense will be completely rejected by most people sitting down to actually use my keyboard, unless they happen to be slightly adventurous like myself.
I like to imagine keyboards that could perhaps (however fantastical) eventually catch on with the general public, given enough time and attrition. Those are the kinds of keyboards I build and use.
[1]: https://github.com/qmk/qmk_firmware/blob/master/docs/mod_tap...
Highly recommend. I daily drive vim and still scroll around in there with the trackball haha.
My trackball's also on the right, and also use mouse buttons on the left, but of course everything's customizable.
If you want to take a peek at them I recommend these two layouts and their accompanying motivations: Graphite[1] and Gallium [2]. I especially recommend Graphite if you want to optimize your punctuation for programming as well as your alpha keys, since most layouts don't consider moving around punctuation beyond the semicolon and the comma keys. Feel free to ask me any questions you might have.
[0] https://www.reddit.com/r/KeyboardLayouts
- Shift: normal
- Level 3: mostly symbols
- Level 4: numpad on the home row (since I’ve repurposed the number row)
- Level 5: less used symbols
Also on the number row:
- Ctrl+V
- Ctrl+Insert (Linux: paste primary selection)
- Menu
- Compose key (both sides)
- Lock shift (Caps Lock leaves keys like `.` alone but this one locks to Shift for all keys)
In addition to the compose key I’ve mapped several unused keysyms (like Kanji) to map to various symbols and expansions. There I mostly use `key + <1> + <2>` where I can press `<1>` and `<2>` in any order (meaning two compose sequences for each). So I can press the initial key and then just mash the two others and get what I want. Those Kanji symbols are mapped to some fringe (to the sides) keys that I don’t need anymore because they’re on level 3.
It’s derived from my regional keyboard (Norwegian) but it could be modified to work with the standard US layout.
I’ve had some troubles with it after Ubuntu 22.04/Gnome 3. Now it only works in most applications. But not certain others like gnome-terminal. It seems to be because of the X/Wayland split. So there are some painpoints that I haven’t ironed out yet. And I’m not eager to start since debugging Xkb can be painful and non-obvious.
Relying on them will feel better, but it's a crutch and you'll learn faster if you force yourself to do it the hard way of remembering.
And before you mention it, the layout I use is quite complicated, and I still think it's much better to learn without any aid:
https://www.jonashietala.se/blog/2022/09/06/the_current_t-34...
Custom/mechanical keyboards are a rabbit hole and you might end up with a few of them, each configured slightly differently. You might want to know how to come back to them (especially if they have blank keycaps or extensive layers).
Personally, I find labeled keycaps pleasant for a few reasons: One is that I have a glowy keyboard, which is aesthetically enjoyable to me (or I wouldn't have one), and it wouldn't be as much fun if the LEDs were just shining up through identical dots.
Also, I find it useful to re-register my fingers. I added Braille dots to all the alphabetic keys, so I can also do this by touch, but a quick glance down also does the trick. For whatever reason, checking that my pinky will hit p is the most common case here.
Last, I find it helpful with chords, especially when I add a new one to the firmware. Layers as well. I do intend to converge on what my other two layers do, but there's been some churn, and it's easier to remember what a key does on a particular layer when it has a distinct symbol. Modified key commands which I frequently use are part of the muscle memory, but when I'm adding a new command to the repertoire, precisely where the key finger needs to go once the modifying finger has hit command/control/meta isn't kinesthetically obvious at first.
Note that this is from a baseline of touch typing, so I naturally stop double-checking things once I've done them enough. If you don't touch type, do yourself a huge favor and learn. Some people find blank keycaps helpful here, especially if they have many years of whatever ad-hoc system they use to type with.
Some people aesthetically prefer no keycaps as well. Also functionally: it's just easier for them to think about a key geometrically rather than symbolically. I don't think there's a one-for-all answer on this.
My comment was made with the context of learning a new layout (or a new keyboard or learning to touch type).
Yep, you do type faster. In my case, it was 10%. Honestly, it wasn't worth it. There are way too many disadvantages, not least of which is the fact that that only your computer has your weird keyboard. Also, typing 10% faster is pretty irrelevant: how much of your time are you typing flat-out?
If you need an ergonomic keyboard, that's a different thing. There are lots of those. Get one that uses qwerty.
Fair, but how often are most people typing on someone else's computer? (Outside of developers who do pairing.)
Then there's the reverse: My PC at home - wife wants to check something quickly without turning on her PC.
Finally: I regularly use both a PC and a laptop. Depending on how weird you want the layout to get, there may not be a way to use it on the laptop. Schlepping an external keyboard around - nope, not practical.
The direct with family is similar - you can have an extra layout installed
So the leaves even fewer cases where you really have to switch (but unfortunately not 0, no easy mechanisms to just easily switch to a some downloadable layout named after you on the fly at any computer)
At work there's less sharing but back when we were in the office, it happened. I also have two work provided laptops (one from my employer and one from client) which are heavily locked down.
Finally there's all the other keyboard manifestations in my life - on my work iphone and my personal android phone and the tablets and all the tv apps that pop up a keyboard to sign in etc.
Qwerty may be suboptimal but it's freaking everywhere.
I switched because I never typed with proper technique in QWERTY. I would only use ~2 fingers on my right hand. I tried multiple times to retrain myself but there was just too much muscle memory. The only way for me to switch to proper technique was to switch layouts.
Meh. I can type fine on both my weird layout and on a regular one (either Swedish or English layout).
Your point about speed I agree with, but I'll say that the point of an alternative layout shouldn't be speed, it's about comfort.
I built (two) ErgoDox(en) and ended up using the Norman layout with various attempts at layers over the years. I'm now using a Lily58 with low-profile choc switches that I'm generally happy with.
I'm fine switching back to Qwerty keyboards, but if I were to go down the path again, I would advise myself to stick with Qwerty. I still have a pretty crazy keyboard layout and appreciate the ergonomic features.
Also, I've realized that everyone is different, and what works for one might not work for someone else.
Advice that I think works for everyone is to listen to your body. If your body is telling you that something isn't right, take steps to address them.
The split key ortho plugged into my monitor, therefore, can be as weird as I want. It's heavily customized and I can do more with it, faster, easier. I do type about 15% faster flat-out with it, but more importantly, I can send λ with little more effort than `l`. But since the laptop has the default layout, I remain "bilingual", two independent muscle memories can be maintained pretty easily if one regularly uses both.
The ortho does have a QWERTY layout for the alphabetic keys, since I don't see the point in changing that, but I don't expect it would make a difference if it didn't.
Sweep is a 34-key split PCB design that you can print and assemble yourself.
Happy user for over 3 years.
But find myself switching back to a default keyboard nevertheless.
Instead of trying to reach everything with my fingers and reaching for those faraway keys, I just move my arm – that's far superior. Also I can switch which hands hit the middle keys like G and H.
Plus I can type some stuff one-handedly, which is simply not possible on a split keyboard.
For those people, I highly recommend you to go ahead and buy a Glove80, you will actually be able to type again without pain. It's a learning curve, but gaining back control of your own hands is so, so worth it. You also need to be patient, it took me about a month and a half before the pain was entirely gone. I also continue to do my daily hand, wrist and arm exercises which help greatly as well.
I have a new case to print which adds a number row and four keys down the bottom right so I can add dedicated arrow keys. I quite often want to hit some of those keys with a single hand but I may need the modifier from one half and a key on the other.
After testing a lot of different layouts I've settled on a slightly modified Colemak-DH.
The thumb layout is designed for very large hands and way too many keys in difficult to reach positions.
Fact is, there's no one keyboard that's ideal for everyone.
Looking at custom keyboards, the Dactyl is probably quite good.
[0] Even if it’s a huge step above normal keyboards.
The reason I'd recommend the Glove80 is because a keywell is just so much nicer to type on, especially if you want to actually be able to use the number row without straining your fingers. Their thumb cluster is also the most sane one that I've come across, and the absolute though put into the design is astounding and commendable [2]. The article is definitely worth a read.
I recommend the Voyager especially if you are a believer in 1DFH (1-distance-from-home)[3]. It has very few keys so you'll have to learn about layers [4] and/or home-row mods[5] or my favorite callum-style mods [6].
[1] https://www.zsa.io/voyager/
[2] https://www.moergo.com/pages/glove80-ergonomic-keyboard-desi...
[3] https://zealot.hu/absolem/
[4] https://blog.zsa.io/layers-explained/
[5] https://precondition.github.io/home-row-mods
[6] https://github.com/callum-oakley/qmk_firmware/tree/master/us...