Home > Keyboard Release, Keyboards > Fully Optimized Standard Keyboard

Fully Optimized Standard Keyboard

I recently proposed a fully optimized layout built for the Kinesis physical keyboard. By popular request, I have now created a fully optimized layout for the standard keyboard.

= 1 2 3 4 5 6 7 8 9 0 q z
y p o u - k d l c w x / j
i n e a , m h t s r "
( ) ; . _ v f g b '

Fitness: 184428299
Distance: 364416
Inward rolls: 10.16%
Outward rolls: 2.36%
Same hand: 34.93%
Same finger: 1.60%
Row change: 13.17%
Home jump: 0.27%
To center: 2.38%
To outside: 0.52%

It looks strikingly similar to the latest version of the Kinesis layout:

1 2 3 4 5 6 7 8 9 0 q
y p o u - v d l c w x
i n e a , m h t s r "
( ) ; . _ k f g b '
/ =             z j

Fitness: 186751864
Distance: 959128
Inward rolls: 10.16%
Outward rolls: 2.36%
Same hand: 34.94%
Same finger: 1.60%
Row change: 13.40%
Home jump: 0.30%
To center: 2.38%
To outside: 0.39%

Most of what I have to say about fully optimized keyboard layouts has been said. I do find it interesting that the standard and Kinesis layouts look so similar; it looks like the rare keys around the edges have barely any effect at all.

  1. Atle
    January 16, 2011 at 12:44 pm

    Its a beautiful thing to see those parentheses there in the corner where Iv had them all along. 🙂

  2. Atle
    January 16, 2011 at 2:25 pm

    By the way thats also where I keep my equal sign =, in the upper corner. 🙂

  3. Atle
    January 18, 2011 at 2:35 pm

    Re the number row of the ‘standard’ suboptimal keyboard:

    Iv been using the advice to relocate both hands one key to the right. So, the left middle finger hits the 4-key and the right middle finger hits the 9-key.

    In this way, the right ring finger becomes very good at reaching the zero 0-key, which happily is the most frequent number. In my opinion, because of the length of the ring finger and the angle of the hand, the ring finger has even better reach (less penalty) among the number row than the index finger does.

    With this hand-to-key mapping, the left pinky finger is responsible for both the 1-key and the 2-key. Importantly, 1 is the next most frequent number. Conveniently, I find the pinky actually reaches the 1-key more easily, tho it is outward to the side, even better than the 2-key. In my experience, because the pinky is shorter than the other fingers, the pinky simply cant reach the the 2-key, and the entire hand must move whenever the pinky tries to hit it. However, the hand can cover more distance when stretching diagonally with a kind of ‘handspan’ gesture, thus can actually reaches the 1-key while the heel of the hand remains in place without the entire hand moving. Thus in this case, the outward position is easier than one might expect.

    Symmetrically, my right pinky has an easier time reaching the outward QWERTY equal-sign-key than the nearer QWERTY dash-key.

    Elsewhere, this hand-to-key arrangement assigns the left index finger to the 5-key, which is also a relatively frequent number. The right index finger is to the 8-key.

    Finally, this arrangement assigns the left index finger to the 6-key too, which is therefore to the center. It assigns the right index finger is to the 7-key, likewise to the center. The 6-key is the most difficult key to reach in this arrangement, but 6 and 7 are the least frequent numbers anyway. So the arrangement works well here too.

    In my experience, with this arrangement for the number row, with the left middle finger hitting the 4-key and the right middle finger hitting the 9-key, I estimate the penalties for the keys as something like the following:

    Referring to the QWERTY keyboard positions:

    `•150 1•130 2•140 3•90 4•75 5•95 6•160 7•110 8•95 9•75 0•90 −•140 =•130 [backspace]•150

    Im not sure about the precise penalty values, but some numbers being easier than others is true enough. The middle-4 arrangement seems pretty good ergonomically with good reach to frequent numbers, all things considered.

    • Atle
      January 20, 2011 at 1:00 am

      Im thinking of going with an asymmetrical finger assignment for the number row. Keeping the mid-9 (middle finger on the 9 key) for the right hand, but going with a mid-3 for the left hand. Thus the right hand continues to reach ring-0 well, and the left hand reaches the frequent pinky-1, ring-2, and index-5 well. This means the left index actually covers 4,5, and 6. Since 6 is relatively infrequent, it seems optimal.

      Has anyone seen an assymetrical finger assignment like this before?

      • January 20, 2011 at 1:28 pm

        You have quite a lot of ideas about the number row. You could always try something like Arensito, where the numbers and rarer punctuation are all on a special keyboard accessed with the AltGr- key. I tried that for a while and I found it more comfortable but a lot slower. You might like it though.

        • Atle
          January 21, 2011 at 6:08 am

          Yeah, I came to similar conclusions. I havent used Arensito, but I did create an AltGr layer with an ‘adding machine’ number pad. It was more pleasant to reach the numbers, but the AltGr key itself seems suboptimal for heavy use. ( 😀 I still get a lot of mileage out of AltGr even Shift-AltGr tho!)

          Out of sheer curiosity: I was thinking about the paper that Pieter linked earlier, about the honeycomb tapping keyboard. It had the space key be one of the normal-sized keys, rather than an oversized spacebar. …

          What would an optimized typing keyboard look like, if the [space]-key was just a normal key, presumably under the home middle finger where the t-key is now?

          It would free up the thumb. Then the thumbs could become exclusively responsible for navigating keyboard layers, including [shift], [altgr], [ctrl], maybe [backspace] too.

          Placing space among the keys could gain powerful access to the keyboard while optimizing ergonomic reach.

  4. Atle
    February 14, 2011 at 7:45 pm

    Quick update. I love these mid-e-o keyboard layouts.

    Regarding the pinky outside reach, I feel the top-row QWERTY-[ (open bracket) is much easier than than the home-row QWERTY-‘ (apostrophe) reach. Even tho ‘ is on the homerow, [ causes much less wrist strain after prolonged use.

    Note, I my laptop makes it difficult to move the heel of my hand when reaching keys, so the strain of the homerow outside may be ideosyncratic. Even so, its probably true for all ‘lazy’ typists who rest their heels, so I figured it worth mentioning.

  5. Patience
    November 1, 2011 at 10:27 pm

    I’ve been debating about whether to try this keyboard layout or not for a little while. I previously hunted and pecked on Qwerty (this summer) at about 80-90 wpm. I decided to switch to Dvorak and after two months I reached 110 wpm (on TypeRacer, which by the way is an excellent tool for learning to type faster).

    I then bought myself a Kinesis and learned Arensito (subsequently completely forgetting Dvorak). Within a week I was typing at 50 wpm on TypeRacer. Around this time I discovered Colemak and for reasons I will not get into I began to learn it at the same time. (For the purpose of comparison, I reached about 40 wpm after about two weeks of Colemak.) I stopped playing TypeRacer so often after picking up Colemak because of school, though. My max on Arensito was 94 wpm and on Colemak it was 80 or so.

    (I started playing with the idea of putting “e” on my left thumb on my Kinesis but eventually gave up.)

    I just gave this layout a shot. (Okay, to be perfectly honest I tried a few races with this layout some time ago.) After 15 races I am at 30 wpm average with a high score of 39. Those rolls are drool-worthy.

    (Only thing that bothers me is how I should place the shifted characters. Any ideas?

    • November 2, 2011 at 5:39 pm

      You hunt and peck at 90 wpm? That’s impressive. I didn’t even know that was physically possible.

      I’m glad you want to try my layout and I would love to help you out. I assume you are using the Kinesis version.


      1 2 3 4 5 6 7 8 9 0 q
      y p o u - v d l c w x
      i n e a , m h t s r "
      ( ) ; . _ k f g b '
      / =             z j


      ! @ # $ % ^ & * { } Q
      Y P O U + V D L C W X
      I N E A ? M H T S R \
      [ ] : < > K F G B |
      ` ~

      I created the shifted layout by hand so it’s probably not as good as it would be if it were computer-generated, but it should be adequate.

      In my experience it is a lot more difficult to re-learn both shifted and unshifted characters than just the main 30 keys. But if you think you can do it, I encourage you to go for it. I don’t think I have published the most recent version of my main-30 layout, so here it is:


       b  l  m  p  v   j  u  o  c  q
       n  s  t  h  d   .  i  e  r  a
       w  x  g  f  k   ;  y  ,  z  '


      B L M P V J U O C Q
      N S T H D > I E R A
      W X G F K : Y < Z "
      • Atle
        December 30, 2011 at 9:47 am

        b l m p v j u o c q
        n s t h d . i e r a
        w x g f k ; y , z ‘

        Wait. Most recent? So, is this “arei” layout outperforming the “inea” layout that you use for the Kinesis?

        • December 31, 2011 at 5:27 am

          NSTHIERA is for just the main 30 keys on a standard (asymmetric) keyboard. INEAHTSR is for Kinesis. Each outperforms the other on its respective physical keyboard.

          • Stephen O'Connor
            January 3, 2012 at 7:08 pm

            Just to make sure, the period is in fact suppose to be on the homerow and not the comma? In your other layouts the comma is on the home row and the period is on the bottom as the comma is used far more frequently. Also, I assume that the /? key would be where the ‘” key is on Qwerty?

          • June 9, 2013 at 5:24 pm

            Wait, what do you mean INEAHTSR is for the Kinesis? Your post starts off. ”By popular request, I have now created a fully optimized layout for the standard keyboard”, referring to INEAHTSR?

            I have to assume INEAHTSR for the standard keyboard is just an ill-fitting work for the standard keyboard for the sake of popular request.

            I’ll have a go at

            b l m p v j u o c q
            n s t h d . i e r a
            w x g f k ; y , z ‘

            B L M P V J U O C Q
            N S T H D > I E R A
            W X G F K : Y < Z "

            since INEAHTSR on a standard keyboard seems to cause me pain and cramping on my left hand anyway.

  6. Patience
    November 2, 2011 at 8:36 pm

    Well by hunt and peck I meant that I never learned to touch type Qwerty. After nine years or so of typing, I could easily type without looking at the keys, but I primarily used my index, middle and ring fingers. Not sure if that counts as hunting and pecking anymore.

    I’m actually using a similar shifted layout to the one you suggested, but I don’t find it that difficult to relearn them. It’s certainly easier than relearning the letters of the alphabet (which I have now done four times…).

    Thanks for the help, and the layout too.

  7. Patience
    November 8, 2011 at 5:50 am

    Okay here’s what I’m going to be using (on a standard keyboard):

    = 9 3 1 5 7 6 4 0 2 8 q z
      y p o u - v d l c w x / j
      i n e a , m h t s r "
      ( ) ; . _ k f g b '
    ~ & # $ + % ^ \ * @ | Q Z
      Y P O U < V D L C W X ` J
      I N E A > M H T S R !
      [ ] : { } K F G B ?

    (Check out those numbers…)

    • November 8, 2011 at 3:25 pm

      Two questions:

      1. Why are you arranging the number keys non-linearly?

      2. How did you determine where to place the special characters that are on the number keys?

  8. Patience
    November 10, 2011 at 12:30 am

    For the numbers, although I guess their frequency is not that high, I figured why not place the most common numbers on the middle fingers. I also decided that I would separate them odd and even. Then I used the your compare function to check which of a few options I had were the best (fitness varies very little anyway). Okay, to be honest, I also really wanted to try changing the numbers (challenging myself we could say).

    As for the programming characters, I used your digraph page (http://mtgap.bilfo.com/digraph_frequency.html) to try to optimize them, taking into account the fact that the pinky has to reach for shift every time. For example, writing ‘!=’ (ignore the apostrophes), your pinkies are doing a whole lot of stretching. I can’t really optimize it as well as a program can, but I can sure make it better than Qwerty.

    I don’t seem to have a problem relearning keyboards (not that it’s easy, but I wouldn’t make easy learning a priority). I don’t understand why ease to learn is such an important factor (Colemak). People are quite lazy it seems. Even the numbers, which is something I thought would be rather hard to relearn, is just a matter of practicing them a little.

    • November 12, 2011 at 7:06 pm

      You can probably optimize special characters about as well as a computer, if you know what you’re doing. They aren’t very common and they have relatively little interaction with the other letters. And if you let a computer do the work, it won’t incorporate any sense of aesthetics—and programming in a sense of aesthetics requires some pretty sophisticated AI.

      I think you find it easier to re-learn keyboards than most people do. For me it takes about two weeks to get up to a good speed and two months to get close to my original speed. Beyond that, I think that people overestimate the amount of work it takes to learn a new keyboard layout.

      Do you know how to type on multiple keyboard layouts, or do you forget the previous layout when you learn a new one? I find that remapping the special characters is a lot harder if you are trying to remember two different layouts.

  9. November 12, 2011 at 6:57 pm

    Just wondering about this. Does your program count “cross-row” rolls as a roll or as same hand? For example “pa” in the inea layout, or “hel” in arensito.

    • November 12, 2011 at 7:06 pm

      A roll has to be on the same row.

      To clarify, all the different scoring factors (same hand, same finger, roll, etc) are run in parallel. That means that any time two keys are hit on the same hand, the same hand penalty is added. If those two keys happen to be in a roll, the roll cost is subtracted, which outweighs the same hand cost and the net result is a decrease in effort.

      The code looks like this:

      k->inRoll += calcInRoll(loc0, loc1);
      k->outRoll += calcOutRoll(loc0, loc1);
      k->sameHand += calcSameHand(loc0, loc1);
      k->sameFinger += calcSameFinger(loc0, loc1);
      k->rowChange += calcRowChange(loc0, loc1);
      /* etc */

      So it tests every factor individually and adds them all to the final score.

  10. November 14, 2011 at 3:08 am

    Just want to say something about same hand. Although it appears to me that most people find it bad, I have found (in my experience with arensito) that it helps to remember patterns. If you know that you can write “new” in one outward (though row-changing) roll, you’ll tend to jump at words that have that trigraph in it and type it faster. Arensito also has a few alternating patterns, but they are on common words, so it balances out with the same hand I find. This is all my own experience, mind you (although I would say that I have tried enough layouts to judge more or less well).

  11. Patience
    November 19, 2011 at 4:29 pm

    Oh, sorry I missed one of your comments. About knowing more than one layout at the same time, the special characters don’t bother me overly much I find. Of course, I don’t do much programming, but the layouts I knew at the same time were qwerty, colemak and arensito. Qwerty and colemak have them in the same place, and arensito’s are different enough to not cause much problem.

    I found that if I switched from colemak to arensito or the other way around, I would be confused a little at first, because both layouts switch common keys from one hand to the other, which results in errors. It would take a little time to type faster again (I just need to concentrate on the keys more than if I were typing regularly).

  12. January 4, 2012 at 5:30 am

    Stephen O’Connor :

    Just to make sure, the period is in fact suppose to be on the homerow and not the comma? In your other layouts the comma is on the home row and the period is on the bottom as the comma is used far more frequently. Also, I assume that the /? key would be where the ‘” key is on Qwerty?

    The period is in the right place. Actually, period and comma are pretty close together in terms of frequency. I think the reason why they are not switched is that the e. digraph is significantly more frequent than e, so this reduces same-finger repeats.

    You are correct about /?. I generally put ‘” on the main 30 keys because that is how Dvorak does it, and I got into that habit after I used Dvorak for a while.

  13. Dave Ferree
    September 3, 2012 at 12:43 pm

    I know this defeats the purpose for a ‘fully optimized keyboard’, but has anyone run the optimizer for the main 30 with a zxcv and punctuation mask? Preferably with something like semi-colon (or q) locked to the qwerty B position (technically a zxcv; mask).

    Second question: Is the optimizer capable of running layouts with alternate home positions? For instance, the Wide-Mod (over at the colemak forums) slides the right hand over a key, giving more space between the hands and shortening the distance to R.Shift and Enter. I’d be interested to see how that effects the optimizations.

    • September 3, 2012 at 3:03 pm

      1. There is a keepZXCV option. If you set it to true, the optimizer will try to keep ZXCV in place. If you want to use this option, start up the program and then type “set keepZXCV 1”. Right now there is no way to keep the semicolon in that spot, but if the algorithm finds that it’s the best spot, it will put it there.

      2. There is not currently an option for alternate home positions. It is possible to create such an option, but it takes about an hour of work. I’ll see if I can modify the program to make it easier somehow.

      • Dave Ferree
        September 3, 2012 at 9:03 pm

        Heh, I suppose that is the polite way of telling me to stop asking uninformed(dumb) questions and fire up a linux distro, install gcc and run the optimizer myself, eh? 😉 Still, figured it would be easier for the guy who designed it.

        Anyway, I suppose this is a good time to point out that the current main 30 layout is not on the “Keyboard Layout Project” front page along with the full optimizations. Also, implementation of any of these layouts seems to be left up to the reader, which IMHO is pretty poor salesmanship.

        • September 4, 2012 at 2:39 am

          I could run the optimizer with keepZXCV turned on and tell you the result, but my focus right now is on trying to improve the algorithm. Once I’ve finished that, I can hook you up.

          May I ask why you only want to optimize the main 30 keys? Wouldn’t it be better to optimize the entire keyboard?

          And yes, right now I have not posted an optimized layout for the main 30 layout. I will fix that.

          You’re right, implementation of these layouts is left to the reader. I’m not trying to sell anything; I generally recommend that people use Colemak. My work here is mostly academic, and to help people make their own keyboard layouts.

          But I suppose I could write some sort of automatic keyboard file generator. That would be cool.

          • Dave Ferree
            September 4, 2012 at 1:21 pm

            Thanks! I didn’t mean for anyone to go out of their way for the zxcv layout, but I thought someone should have done it by now, and maybe they just forgot to share. Yeah, that was a bit optimistic of me.

            While I am interested in the Full Optimizations on an academic level, I want the LETTERS kept to the main 30 (31?) for more practical reasons. Keyboard standardization gets a little fudgy outside the main 30 (look at tablets for instance), and having letters in the number row and on the bracket buttons… that is a major hurdle if you are trying to get anyone to actually USE the layout. (Remember, the original Dvorak layout ‘optimized’ the number row. He couldn’t sell that idea either.) Anyway, I’ll tell you roughly the same thing I told the carpalx guy: After putting so much work into it, of showing us how much better these layouts are than the alternatives, not going that extra step to give people a way to use them, of making your work accessible… well that’s just criminal. Granted I probably worded that a lot better last time, as a week later the carpalx site had PKL files.

            … actually before that the carpalx site was mostly academic, failed to push ANY of the layouts and forced readers to go through the results to draw their own conclusions. So, you are already a couple steps ahead in that regard.

            Automatic keyboard file generation would be amazing!… for linux users. I was thinking more along the lines of keyboard files for the layouts on the front page. Not as awesome, but probably a lot less work.

            Before I forget, the main 30 layout on the front page has a bit of an issue. The shifted layer has only 28 keys. While I rarely use myself, they should probably still be on the keyboard somewhere.

          • September 4, 2012 at 4:17 pm

            I can see why you’d want to keep the letters to the main 30. I find that it’s much harder to re-learn the rarer keys—I tried remapping them a while ago, but it just didn’t work for me. I think for most practical purposes, just changing the main 30 keys is the way to go.

            And I fixed the problem with the angle brackets. That happens sometimes because it reads the angle brackets as HTML tags instead of characters.

  14. Dave Ferree
    September 4, 2012 at 2:53 pm

    Sorry, my mistake. The main 30 does have all the keys, it is just that the angle brackets aren’t showing up.

  15. evelyn
    May 17, 2013 at 2:56 pm

    Michael Dickens :
    A roll has to be on the same row.

    Just my experience: I find that particular multi-row rolls are quite easy too, and would wish to give them a good score. A roll like OIJ (qwerty pos.) or .KJ is just about as easy as a single row roll.

    • evelyn
      May 17, 2013 at 4:24 pm

      I just read the Fitness doc and never mind what I said ^

  16. June 10, 2013 at 2:31 am

    Mauro Andres :

    Wait, what do you mean INEAHTSR is for the Kinesis? Your post starts off. ”By popular request, I have now created a fully optimized layout for the standard keyboard”, referring to INEAHTSR?

    I have to assume INEAHTSR for the standard keyboard is just an ill-fitting work for the standard keyboard for the sake of popular request.

    The layout given here was independently generated to work for the standard keyboard. Both the optimized Kinesis and standard keyboard layouts have the same home keys.

    Do you know exactly what key combinations cause you discomfort with INEAHTSR?

  17. June 10, 2013 at 4:17 am

    Hey thanks for answering so quickly. My hand feels ok today. I reversed the layout yesterday to avoid any strain from mouse over use skewing my perception. I did notice strain but will report back once I reimplement my “lefty” layout variation.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: