Keyboard layout philosophies

I’m curious as to whether others have designed their own layouts here (the letters themselves I mean, not just the symbols etc, playing around with them makes sense whether or not you want to learn a new layout). I’d love to hear your thought processes about it. Some things I’ve definitely ignored that other people consider important, like rolling inwards vs outwards.

I’ve only recently finalised mine after finally getting a good hunk of free time to test out keyboardio. I’ve probably talked about it enough, but I’m doing it once more:

To start with, definitely wanted all my letters on the inner 5 columns of each hand, and not on the top row. That gives 30 keys, with 4 for punctuation etc. that I hadn’t already offloaded to the thumb keys. I settled on / - ’ and redial (there’s a plugin for that, just repeats whatever you typed last, hoping I can avoid single finger use by learning to use this).

My priorities were:

  1. Increasing home row usage (not the fake home row keys in the middle, like G and H in QWERTY, since you have to move your index finger to reach those) and decreasing lower row usage and other awkward positions like little finger upper row and index finger down and across (upon testing as mentioned).

  2. Decreasing single finger use, both through use of the redial plugin and by not grouping keys commonly used consecutively in the same column (or two columns, since the index finger basically controls 2).

  3. I wanted any shortcuts I often do while using the mouse to be able to be done purely left-handed. This obviously meant some work on thumb key modifiers, but also assigning keys like yzxcv to the left (also buitds I use a lot, and ended up there).

To do 1 and 2, I found bigram frequencies (thankfully for both symbols and letters) and used them to make a spreadsheet (and made double letter bigrams count instead for the redial key). Upon applying heatmap colouring, it was clear that o, c and y would be problematic to combine while minimising bigram occurrence on single fingers, so I made them a priority to place carefully. Ultimately I decided to make 3 major compromises based on them:

  • I grouped O with E despite both being common enough to justify them being home row, as the aren’t use together all that much and they are used together with almost every other letter all the time
  • I broke up my intended preservation of zxcv, making it zyxcv on the bottom row so that y could combine with I and U with which it works well (and having Z and Y together makes a lot of sense to me, and shifting XCV over by one actually makes them more intuitive to me from QWERTY somehow)
  • I made D a home row letter despite it being only I think the 10th most popular letter, as it combined really well with C where few other letters did, and worked well with many other letters making it ideal for ring fingers, where it has to deal with up to 6 letters, all of which have to not interfere with each other too much.

I ended up making upper pinky keys the absolute least preferenced keys, and gave them to Q and K. This worked very nicely with my placement of the letter U as a ring finger upper letter, incidentally.

1 Like

The heatmap I used, if anyone could make use of it, I’d be happy to send over excel files etc. Not sure how accurate the figures for some of the characters are. The bottom & right columns show percentage key use overall, the values for bigram use is in thousandths of a percent. Highlighted are the values for which a finger is used twice to make that bigram, and are therefore the values I’ve tried to minimise.

1 Like

I developed my own layout too, although in a very different way than you did. Before going into details, this is how ADORE looks (currently, it is still a work in progress):


I started from a Dvorak layout, the original intent was to swap a few things only, but… I got carried away. My main priorities were:

  • Hand alteration instead of finger rolls. While rolls could be considered more efficient, I do not have the skills to do them fast, my brain is better wired for hand alteration instead. So I wanted my layout to reflect that too.
  • Top row is easier to reach than bottom, so more often used letters go top, less used to bottom.
  • Numbers are delegated to a numpad-like layer, number row can therefore become shifted symbols, arranged according to usage frequency. Most used ones should be on middle and index fingers.
  • Only one set of modifiers, all one-shot.
  • It must feel comfortable to use.

Non-goals were:

  • No need to retain QWERTY shortcuts (zxcv), I don’t use them at all, so no need to keep them.
  • No need to consider the mouse much, because I don’t mouse much. And when I do, that slows me down enough to be able to not care about the keyboard layout. And with one-shot modifiers, chording a modifier + key combo from two different sides is a non-issue.
  • Feels over science: I tried to configure some layout generators with the properites I found important, the resulting layouts were all terrible. Some of my choices also made no sense, yet, felt comfortable. So I made comfort one of the primary goals.
  • Support for non-split, or thumb-key-less keyboards.
  • Support for one-shot less keyboards.

Hand alternation is something I somewhat deliberately ignored, since the decision to put shortcuts on left took that out of my hands. Otherwise, I’d have probably favoured avoiding alternation, I’ve always found rolling pretty comfortable. Funnily enough, since my work is in typing eye specialist reports, the word “cataract” comes up very often which is all left hand in QWERTY and has never bothered me.

Interesting that it turns out as a personal preference matter! I know Dvorak was designed with typewriters in mind in maximising alternation given the greater actuation force needed at the time, so it certainly makes sense to take Dvorak as a basis given your aims.

I did seriously consider replacing the top row numbers in a similar manner to you, but I ended up feeling that keyboardio makes sticking to the 3 letter rows so comfortable, keys outside that were going to incur a similar difficulty no matter what, and while I do mostly use numpad (especially on keyboardio with a few tweaks to the default layer), I don’t always. So while I plan to continue tweaking characters (especially with topsyturvy and shapeshifter etc.), I’m probably keeping the number row for the moment, but at some point I may abandon the top row letters.

I definitely agree with feel over science. I think I was lucky enough to hit on the right criteria that contributed to my feel while typing, and as such, only a few words really niggle me on my layout and for the expected reasons, like work (wrk all on right pinky) and you (y and u on left ring finger) - any layout will have some words like that. But actually typing with the layout I initially designed made it very clear that pinkies going up a row was something to avoid like the plague.

1 Like

Oh, unexpected benefit of my layout: though it wasn’t an aim of mine my fingers are used very roughly equally except for the 2nd/3rd fingers of the right hand, which are used almost twice as much as the others. Which is great, since they’ve been built up over so long with gaming on a mouse (especially minesweeper: I used to be one of the best in the world at minesweeper, still #3 best scores in Australia I think), they have plenty of strength and stamina.

If you don’t use them then how do you perform those operations?

If you type eye specialist reports (or anything else) repeatedly, you might benefit from something like Keyboard Maestro or Text Expander, or its many competitors. If I had to type ‘cataract’ more than twice, I’d have a macro for it. For example, in Keyboard Maestro, you could define this as ‘c.’, or ‘cat.’, possibly even a ‘c’ in isolation.
Things I’ve defined:
-^ is
-v is
:a: is α (alpha)
:b: is β (beta), etc.
The cool thing about Keyboard Maestro, is I can use the same shortcuts in my LaTeX editor, and they expand to the LaTeX commands, rather than characters (as they do in other editors). For example,
-^ expands to \uparrow{}
-v is \downarrow{}
:a: expands to \textalpha{}
:b: expands to \textbeta{}
:amn: expands to \textalpha{}-motor neuron, etc.
There is less to remember since there are common shortcuts across editors. If I forget, the shortcuts are sitting in a palette at the side of the screen that expands when the mouse is over it.


For things I type often, I use a character I never type to signify that Keyboard Maestro should expand it. That character for me is Option+L
For example, expands to function, in¬ expands to integration.
And there are many, many more things KM can do.
For example, I defined ^⌥N to resize the current window to the lower-right third of the screen, ^⌥R to the upper-right third. (N is below R on the Dvorak layout, so it’s intuitive).

Have a look, might reduce wear and tear on your hands.


I use different key bindings. Copy is y in normal state, paste is p, x is kill (or exterminate), and undo is u. No chording, and the shortcuts are more or less mnemonic.


I’ve thought about something like that, and I do autotext a few common longer phrases , but I think doing that for individual words would break the flow for me (I get very “in the zone” while typing from audio, very much from ears to fingers bypassing conscious thought). If I did do something like that, I’d probably go full bore and learn steno instead.