Brian Lovin
/
Hacker News
Daily Digest email

Get the top HN stories in your inbox every day.

fwlr

Don’t swap to a new layout, it’s too much work to learn. Instead, swap your K and E keys. E being common but not being in your home row is responsible for a significant chunk of the inefficiency of the QWERTY layout and even if you stop here you’ve already made a huge improvement. You’ll make typos involving K and E for a few days but you’ll adapt very quickly without ever having to go through the “learning a layout” process.

(Once you’re comfortable and not mixing them them up, if you still want more, swap J and O, then F and T, then D and A, then G and N. At that point it’s probably not worth making any more swaps, but if you want to continue you can read the article I got this information from: http://mkweb.bcgsc.ca/carpalx/?partial_optimization)

ijlx

This reminds me of the Tarmak transitional layouts for learning Colemak. Tarmak has four intermediary layouts between QWERTY and Colemak, each changing a few (3-4) keys at a time. Tarmak #1 gets the N and E keys in the home row, for instance.

I ended up going cold turkey Colemak, but for those who are interested in learning a new layout Tarmak seems like an interesting way to make gradual progress without totally decimating your typing speed. Plus, it leads into a well-established layout instead of resulting in a bespoke layout you have to work on yourself.

sabellito

Also semicolon and P, minimal change, big gains.

fwlr

Another type of change to consider is flipping shift for an individual key:

semicolon/colon (if your language isn’t semicolon terminated, you probably type colon way more)

hyphen/underscore (if your language doesn’t have arrow functions or kebab casing, you probably type underscore a lot more)

singlequote/doublequote (the preeminent style guide for your language probably has an opinion on which quote character to use; that should be your non-shift character)

pipe/backslash (pipe operators are heavily used in some languages, but escaping characters is common too)

The first shift swap I tried was actually tilde/backtick, but I didn’t like it - turns out I use string templating in JS more often than I need to reference the home directory.

Outside of direct swaps, one related change I have made recently is using Karabiner to set up custom commands for “modifier key pressed and released alone”. Tap left shift by itself for an opening parenthesis, right shift for closing parenthesis. Command does bracket and option does braces in a similar fashion. I’m liking it so far, once I get familiar enough that I’m not using the old way I’ll remap the original [/{ and ]/} keys to some other symbols - whichever of %^*#!@$& I use most often, probably.

In general though I would highly encourage anyone who types for a living to consider making incremental key swaps instead of changing keyboard layouts. For Mac there is Ukelele (GUI, generates new layout file your OS uses) or Karabiner (config file, daemon intercepts keystrokes and carries out substitutions - more power but you have to be okay with “intercepts keystrokes”). For Linux the functionality is there with localectl and loadkeys, and there’s probably many utilities built on top of that. For Windows there is SharpKeys, PowerToys, and AutoHotKeys. (I don’t use Linux or Windows day to day, there may be better options here).

eviks

Has anyone seen someone use a great algorithm for layout selection that actually accounts for the more complete range of user typing?

For example, everyone makes typos and corrects them with a backspace or mod+backspace for the whole word, but this is never accounted for, so a very frequent Backspace key is very far away. Using a post-typo text corpus ignores this reality

Or allowing home row mods in a layout, what would be the algorithmic maximum across all the typing metrics?

Or allowing numbers to be in play as well, maybe hiding then behind a modifier, but in the home row or aligned in a numpad-like way on under your right hand

Or would it be better to type capitalized letters with a one-tap Shift or with a home row mod Shift? Or maybe a quick double tap on the same letter is more efficient?

Given the complexity of switching to a new layout, there is no great reason to keep all the non-alpha mistakes of the old qwerty design, the algorithms should run free from those limitations to get us to the future perfection

ecliptik

I used key combos [1] in QMK to map various keys to home and top row combos [2]. For example in QWERTY the combo of SD together is backspace, DF is tab, WE is escape, etc.

I also make the spacebar and key to the right of the spacebar (usually Alt) to a switch layers when held down with a thumb. This turns the left side of the board into a number [3] and symbol [4] like pad.

Advantage I find is it's much less motion and finger stress and is easily replicated on any keyboard that supports QMK while not QWERTY specific.

1. https://qmk.github.io/qmk_mkdocs/master/en/feature_combo/

2. https://github.com/ecliptik/qmk_firmware/blob/d79931185c2315...

3. https://github.com/ecliptik/qmk_firmware/blob/d79931185c2315...

4. https://github.com/ecliptik/qmk_firmware/blob/d79931185c2315...

enriquto

> everyone makes typos and corrects them with a backspace or mod+backspace for the whole word, but this is never accounted for, so a very frequent Backspace key is very far away.

This! I use a variant of the classic typematrix layout [0], where there are two huge backspace keys right in the middle of the keyboard, one for each index finger. Below them, huge enter and tab keys (that one, mapped to ESC inside vim).

[0] https://www.google.com/search?q=typematrix+2020&tbm=isch

3np

A common thing in split layouts is putting backspace on a thumb key or two.

makiaea

re: backspace etc. i've recently used dvorak+karabiner+goku on a mac to make homerow mod keys, based on gabriel-gardner's template. others have used QMK keyboards, or kmonad etc. on linux and windows

eviks

Sure, all good ideas in the meantime (and you could use right-thumb cmd/alt modifier or holdSpace as a vim-like cursor mod with the home keys as cursor and with H as backspace and G and delete and I as Enter to free your pinky (qwerty-layout))

But then dvorak is obviously not the best layout for this since it wasn't designed with all of that in mind. And neither were the home row mods themselves, for example, maybe only Shift is useful in the home row, and the others aren't used frequently enough (or maybe it's better to have numpad-mod key on the home row instead of the Windows key).

So I guess the focus of the layout collaboration effort could be on improving the algo/data, but instead we get a bunch of new layouts that only tackle a small(er)(and different) part of the problem without much of an improvement over he previous solutions (and, more importantly, with no good way to compare them). That would only leave you with the black magic of tweaking algo weights in the end :-)

P.S. There is also https://github.com/jtroo/kanata alternative to kmonad And re. homerow mod keys, it seems that there is an even better approach not relying on timings (which I think are impossible to resolve with full accuracy, though with per-key timings you can get pretty close), but that's not implementable within Karabiner, so someone had a homebrew Swift solution I haven't tried

dkersten

At least for backspace, Colemak puts it where caps lock is.

eviks

But it's a pinky lateral stretch, maybe AltGr+H (win/qwerty) that use your much stronger thumb+index fingers and also allow to put Delete conveniently close is better? What would the algo say? Maybe it's also not great since it's a lateral stretch, so a better alternative would be something else where you lift your fingers?

shanebellone

Left alt button would be my preference.

wussboy

This is Colemak’s killer feature. Changed my life

xupybd

On the Kinesis advantage back space is a thumb key. So easy to hit.

teddyh

The author seems to want to use symbols instead of words on keys, so I feel I have to inform them that “^” is not the proper symbol for the “Control” key; rather, the standardized (ISO 9995-7) symbol is “⎈” (2388, HELM SYMBOL).

Also, a less Mac-specific symbol than “⌘” for the Meta/Command key might be “◇‭” (25C7, WHITE DIAMOND), which has been used ever since the old Sun keyboards.

least

> The author seems to want to use symbols instead of words on keys, so I feel I have to inform them that “^” is not the proper symbol for the “Control” key; rather, the standardized (ISO 9995-7) symbol is “⎈” (2388, HELM SYMBOL).

I don't think it very much matters what the "proper" symbol is if no one uses it and almost no one knows about it. Symbols are supposed to be convey meaning and part of what lends that meaning to a symbol is actual usage. Apple has successfully done that with at least several of these symbols [1], which is quite evident in that you knew what it meant and so do many others, while I've never seen the "standard" being used in literally any context.

Obviously I alone do not make up the general consensus, and perhaps in certain fields the usage of these symbols is widespread, but if it were the general consensus, people would actually be using these symbols instead of the ones you're suggesting aren't "proper."

[1] https://support.apple.com/guide/mac-help/what-are-those-symb...

teddyh

> I don't think it very much matters what the "proper" symbol is if no one uses it and almost no one knows about it.

Well, they used the ⎇ symbol for the “Alt” key, which is also very rare, in my experience. But it is the standardized symbol. So I thought I’d contribute information about what the standardized symbols are, in the cases where other symbols were used.

You sound a bit like a language descriptivist, arguing that any word or spelling is OK so long as it is understood. I personally prefer standardized spelling and words being a bit more strict in their definitions. And, similarly, I give some weight to an ISO standard for keybord symbols, since such a standard does exist (especially when the author actually used one of those symbols already).

I am also loath to use company-specific words or symbols; I prefer neutral terms which does not have quite as much drift. I.e. I try not to “Google” or “Xerox” things. Likewise, I would avoid using a keyboard symbol exclusively used by Apple, since another symbol exists which is used by others.

least

> Well, they used the ⎇ symbol for the “Alt” key, which is also very rare

No, they used the ⌥ symbol, which is the option/alt key symbol also established by Apple. All of the symbols they used for their keyboard layout are Apple's symbols for a particular key.

> I personally prefer standardized spelling and words being a bit more strict in their definitions.

In order for something to be a standard it actually has to be used. A dictionary doesn't make up its own words then add it to the dictionary, then tries to tell everyone that's what they have to use. They add words that they find to be broadly used by the general public. Countries like France try to control this sort of thing, but I don't think it works all that well. People ultimately decide the language they use, especially when it comes to new phenomena.

> And, similarly, I give some weight to an ISO standard for keybord symbols, since such a standard does exist (especially when the author actually used one of those symbols already).

The author is using the symbols established by Apple. Any overlap with the ISO standard is coincidence.

> I am also loath to use company-specific words or symbols

What symbols aren't company-specific when it comes to symbols on keyboards? You even suggested in your original post to use "◇" as one of the symbols which is, shocker, company-specific. I've at least used a keyboard with such a symbol on it, but it is not used at all on keyboards today. The symbol they use in the ISO spec you're pointing towards is the "⌘." Are you sure you don't just have a distaste for Apple?

> Likewise, I would avoid using a keyboard symbol exclusively used by Apple, since another symbol exists which is used by others.

It's not used by others, though. It's not used on MacOS, Windows, Linux, or BSD in any of its menus. It's not printed on keyboards. It's not known by anyone but someone looking up ISO standards for keyboard layouts, which isn't even the established standard for keyboard layouts in a lot of the world!

donatj

Seems like a strange thing to get caught up on. This is the Mac Standard that has been around since the mid 80s. It’s well understood, far moreso than what you suggest.

Regardless, that’s not even what the article is about. The modifier keys have not been rearranged, just the characters.

ivanjermakov

Keyboard ergonomics is mostly contributed by factors other than the layout.

Switching to a different layout has a lot of complications:

- Steep learning curve: it might take months or even years to reach typing speeds of QWERTY

- Low software support: it's tricky to switch to a custom layout everywhere Some apps and games might read physical keycodes and the only workaround is to use the keyboard with custom firmware (e.g. QMK[1])

If you're willing to improve keyboard ergonomics, check out ergonomic mechanical keyboards. Most popular row-staggered layout is horrible for hand ergonomics and it only can be fixed with a keyboard that has a different physical key layout. r/ErgoMechKeyboards[2] is a good starting point.

[1]: https://docs.qmk.fm

[2]: https://www.reddit.com/r/ErgoMechKeyboards/wiki/resources

fallat

> Keyboard ergonomics is mostly contributed by factors other than the layout.

Simply not true.

krick

When somebody reminds me about keyboard layouts, I think about switching and wonder why didn't I do it yet, since I hate inefficiency so much. I think about it for several minutes, then I remember that I'm a vim user. Fuck.

kataklasm

I'm a (n)vim user as well and have been using Colemak for some time now. Since I couldn't get used to the weirdly arranged hjkl layout with Colemak, I've been using some remaps that make everything very nice to use on a Colemak layout. Feel free to message for more information.

sangpal

I'm also a vim user and I recently switched to Colemak-DH, but I didn't remap anything. It took a long time to get used to the new vim layout (longer than the time it took to learn Colemak itself), but now that I'm comfortable with it, I can be fluent without any remaps.

krick

Did you remap just hjkl or anything else? I see that there even are some vim-colemak plugins, but honestly just the idea that I'll have to think about it kinda intimidates me. Almost every key in vim has a meaning, most of them are kinda semantic (webdrtfi...), most used are on the home row too, and it's not like I think about letters anyway (funnily, yesterday I use Ctrl+y & Ctrl+e, which I didn't use for a very long time and honestly didn't even remember them, but my fingers somehow did). I feel okay about the idea that I'll have to learn to type again, but learning to use vim again, which is specifically tuned for qwerty, that feels a bit too much.

eviks

This

> it's not like I think about letters anyway

is exactly why the following is of little use and is a design mistake for heavily used keybinds

>Almost every key in vim has a meaning, most of them are kinda semantic (webdrtfi...),

Which unfortunately has persisted for ages reminding us yet again how defaults matter :(

(and due to the high frequency of their use the arrow keys shouldn't require you to move a finger off the home keys, so jkl; is better than hjkl; (in qwerty))

sdfjkl

I've relearnt keyboard layouts once and know I can do it, but I also remember how long it took to get fast on the new one and how I don't want to do that again.

Not to mention all the other issues with getting your new fancy layout to work in every operating system and app and then being really thrown when you try to type on any other "normal" person's keyboard for a minute.

It's already hard enough spending 15 minutes in every new computer game to change the default WASD keybinds to the superior ESDF.

mihaaly

I use several keyboard layouts and styles in parallel. Not a coice but I am forced. It is a bad thing having so many variants. Different number of keys, layouts (laptops, desktops), national variety. I can say that I am almost as quick in typing as I was when I was less experienced but used a single layout (full size international english 104 keys, Windows). All and every changes decrease the efficiency!

(role of Fn keys, placement of Fn switch key, shape of Enter, size and positioning of cursor keys, placement of simple symbols like slash/backslash, greater/smaller, @, #, [, ], `, etc., availability and placement of Ins/Del/Home/End, all can change just a bit with a new computer/keyboard system. All this without 'creative' regrouping or arrangement of the physical keys itself (like MS ergonomic keyboard). If we add the complication of shortcuts where keyboard plays an essential role and which changes constantly from one approach to an other inside and accross software (not improving! just changing.) we can see that the problem is too big already, no need to aggravate the situation further along questionable and marginal efficiency claims. There are other parts of personal computing that can use improvements if someone is bored.)

mightybyte

EDIT: Due to terminology differences I missed that my point here was indeed taken into account with this layout. Super excited to see this!

---

I think most of the efficiency functions that these kinds of efforts tend to optimize for miss the most important factor.

I've thought about this a fair amount drawing on my experience switching to dvorak 15 or so years ago and not getting the typing speed increase I was hoping for, and also from having a close friend with a PhD in piano performance. There's one thing that I've never seen taken into account by these kind of keyboard layout optimization efforts that pianists understand is very important, and that is runs. Most people seem to focus on individual finger movements, a meaningful component to be sure. But I think there's still a lot that could be gained from optimizing a layout for runs. Runs are sequences where the fingers are depressed in sequential order across the hand (possibly skipping one or more fingers). They can be played (typed) not so much by isolating individual finger movements, but by getting the hand into the correct shape in a single movement and then actually depressing keys with a single rotation of the arm/hand/wrist.

The interesting thing about optimizing for runs is that it's directly opposed to the alternating hand optimization that the dvorak layout uses. I would love to see some exploration in this area and think it could yield meaningful speedups. Unfortunately, getting proficient with a layout takes a long enough time that I'm not super likely to take the project on myself.

b3n

These runs (also known as "handroll combos") are one thing that the Colemak layout optimizes for.

See: https://colemak.com/Hand_alternation

mightybyte

Oh, I wasn't aware of that! Thanks for the pointer!

twh270

The article describes how he created a layout based on optimizing 'rolls', which is (I think) the same as piano runs as you describe: striking keys in sequential order across the hand. So for example 'the', 'you', 'in', and 'as' are all struck with adjacent fingers, just as you would play a piano or (as he describes) drum your fingers on a table.

He very much considers this important factor as the critical component of the layout he describes.

mightybyte

Oh good point, my bad. I was skimming for "runs" (more of a piano term) and missed the bits about "rolls". I also wasn't aware that this is a thing in tetris. Very cool!

hyperturtle

You could go one step further and build your own keyboard to match your hands as well. I've watched several of these videos and planning on eventually building one: https://www.youtube.com/watch?v=M_VuXVErD6E&list=PLCZYyvXAdQ...

comfypotato

Since you seem interested, may I spur you in a perhaps-not-thought-of direction?

I’m currently working on a hand-wired board. Since you mention pcb development, I don’t feel that hand-wiring is too much work to mention. The soldering and electronics work is trivial (nothing small). I was attracted because it allows me to move the customization into the 3rd dimension with a Dactyl-manuform clone (I’ve actually hacked some closure together).

I’ll make sure to post where appropriate once I’m finished. I’m basically hand-wiring a corne (CRKBD, so there are guides available) only I’ve created a custom 3D manifold fit to my hand.

Oddskar

The first thing I changed in my custom layout was to get rid of the number row.

Having all the numbers as a toggleable numpad (but not really numpad because numpad is archaic and dumb) under the left hand has been so good. I'm never going back.

I use this layout:

    1 2 3
  0 4 5 6
    7 8 9

goosedragons

This is pretty much what the Kinesis advantage has out of the box, although 0 is moved to a thumb key. I like it with the non-staggered layout there but on a normal (laptop) keyboard it's not as good IMO.

alexgrover

Miryoku does the same thing but the orientation is flipped vertically with the 0 below the center column, which is how it’s done on a full sized keyboard as well.

Oddskar

Miryoku basically has the numpad, which I still think is dumb to be quite frank since the numpad was only made like this for archaic historical reasons.

Having the 0 on the thumb is quite a good choice though. As long as one doesn't have to move outside +-1 of the home row of keys (like one has to with numpad).

alexgrover

I’ve never really been a numpad user, but I like having 123 on the bottom row for more comfortable reach as they’re more frequently used for me

nine_k

BTW creating really fancy keyboard layouts may be easier than you think: https://github.com/kmonad/kmonad

Kwpolska

I wouldn’t consider coding a keyboard layout with a lisp-esque language “easy”. Luckily, there are tools for humans, such as Ukulele [0] for macOS, or MSKLC [1] for Windows.

[0]: https://software.sil.org/ukelele/ [1]: https://www.microsoft.com/en-us/download/details.aspx?id=102...

goosedragons

Keyd is another option for Linux that is eaiser to configure than Kmonad at least for simple things.

nine_k

Ukulele is a different class: it creates standard keyboard layouts, while KMonad allows fancy stuff like chords, taps, layers, etc.

florianfmmartin

I use something very close to this http://thedarnedestthing.com/daily%20beakl

I also forked a tool of github to evaluate layouts considering multiple languages (ex: 40% french 60% english) https://github.com/florianfmmartin/kb-layout-evaluation

But i have not updated it recently, take a look at original repo also ;)

7839284023

I'd suggest to try Miryoku [1] on an ergonomic (split) keyboard running QMK, ZMK or KMK firmware. It's a very well though out layout using only 36 keys.

"Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout."

[1] https://github.com/manna-harbour/miryoku

nine_k

Miryoku has a ton of great ideas. The biggest problem I assume is that switching to a standard keyboard, when you can't plug your own, becomes a pain. Same applies to the layout from the article, of course.

3np

YMMV but I was surprised to find the opposite. Never been able to consistently touch-type properly before, learned it through switching to a corne with a miryoku-inspired layout and I now type better on the old laptop keyboard (which is not that often) than I did before.

7839284023

You could try to use https://github.com/manna-harbour/xmk from the same developer in order to run Miryoku on every keyboard.

Daily Digest email

Get the top HN stories in your inbox every day.

Making a keyboard layout - Hacker News