Home > Keyboard Release, Keyboards, Software Release > Introducing the First Fully-Optimized Shifted Layout

Introducing the First Fully-Optimized Shifted Layout

The typing program now fully supports shifted keys. The updated version is on GitHub.

Optimized shifted layout for Kinesis:

Hands: 51% 48%
Fingers: 9% 9% 18% 14% 14% 14% 11% 8%

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

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

Fitness: 18449175
Distance: 89177
Finger work: 326100
Inward rolls: 10.08%
Outward rolls: 2.53%
Same hand: 34.47%
Same finger: 1.69%
Row change: 12.64%
Home jump: 0.89%
Ring jump: 2.89%
To center: 2.47%
To outside: 0.19%

Shifted layout for a standard (asymmetric) keyboard:

Hands: 50% 49%
Fingers: 8% 9% 19% 14% 17% 11% 12% 8%

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

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

Fitness: 18019920
Distance: 27161
Finger work: 87915
Inward rolls: 8.63%
Outward rolls: 2.77%
Same hand: 34.45%
Same finger: 1.93%
Row change: 13.34%
Home jump: 1.35%
Ring jump: 2.02%
To center: 2.63%
To outside: 0.43%

Compare this to Colemak for a standard keyboard:

Hands: 46% 53%
Fingers: 8% 7% 11% 18% 18% 15% 10% 9%

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

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

Fitness: 22955565
Distance: 25239
Finger work: 347475
Inward rolls: 4.51%
Outward rolls: 2.50%
Same hand: 42.63%
Same finger: 1.89%
Row change: 18.63%
Home jump: 1.33%
Ring jump: 3.86%
To center: 7.71%
To outside: 1.18%

  1. February 19, 2012 at 12:44 am

    You may notice that not all paired keys (parentheses, brackets, curly braces, arrows) are matched up. The program does penalize any keyboard where paired keys do not match, but it still considers these keyboards to be the best.

  2. Patience
    February 19, 2012 at 2:29 am

    Oh this is so cool!

  3. Mike Rouse
    February 25, 2012 at 4:05 pm

    I find research like this very interesting. I’m curious to see what your thumb-enabled version will be. I think the Maltron idea of putting “e” under the left thumb is a good one, since puts the second most common character under the second strongest digit (in right-handed people, anyway). That by itself will boost the fitness of any keyboard design you make. I also like Maltron’s idea of putting the number pad in the center — it spreads the arms apart, and puts a right-hand mouse closer to your right hand when typing. You can even remove the numbers from the top row, as in Xah Lee’s Dvorak proposal at http://xahlee.org/comp/ultimate_keyboard_layout.html

    As a brief digression, have you ever been on geekhack.org? They have a very large and lively community involved in every aspect of keyboard design (I’m just a newbie there, but it’s great fun). There is for example this interesting keyboard:


    this compact keyboard:


    and this beautiful one:


    (List of other custom keyboards here: http://geekhack.org/showwiki.php?title=Island:27776 )

    Heh, I have all sorts of keyboard design ideas, but A) I’m an amateur, and B) This is already an tl;dr wall of text. I just wanted to say I’m *very* curious to see your next keyboard layout.

  4. Mike Rouse
    February 25, 2012 at 4:30 pm

    Just one addendum (for now). You probably have seen many (or all!) of these already, but here are some links for bigram and trigram (and in one case, quadrigram) frequencies:



    And another (not comprehensive, but includes spaces): http://millikeys.sourceforge.net/freqanalysis.html

  5. Michael Rouse
    February 27, 2012 at 7:11 pm

    I decided to create an image of your optimized non-Kinesis layout, but with the number pad stuck in the center (plus various other tweaks and flourishes, like flipping numbers and punctuation, making it a matrix format, and adding a touchpad. No thumb-E, though). You can see it here: http://geekhack.org/showthread.php?27906-Ergonomic-keyboard-the-size-of-an-aircraft-carrier-First-Draft

    I rather like it, except for the size. 🙂 I also added the CarpalX (or carpalx, I never am sure on the capitalization) layout for comparison. If you prefer me to call your layout something other than MTGAP, let me know. I also put in my thoughts on keeping certain similar (in appearance, if not in function) keys together, more for aesthetics than efficiency.

    • February 27, 2012 at 7:15 pm

      That’s really cool, thanks for showing me! One small thing though, you put an X where the T is supposed to be.

      Sure, call it MTGAP. But if you think of a better name, let me know 😉

  6. Michael Rouse
    February 27, 2012 at 8:40 pm

    Sorry about that! I fixed it, I think, but the old one is still lurking in the thumbnails, and I don’t know how to completely expurgate it from memory. 🙂 But the edited version is up.

    • bogboar
      February 28, 2012 at 7:29 pm

      You give it a new filename. That way browsers won’t refer to cache since they haven’t loaded a file with that URL before.

  7. bogboar
    February 28, 2012 at 8:05 pm

    It seems like a program has to be told many restrictions to make the shifted layer look anywhere æsthetic.

    For instance, look at the greater than/lesser than signs. One of them is on top of a parenthesis, the other is not.

    If one in a pair is shifted over one in another pair, the counterpart needs to be shifted over the other’s counterpart too. Just my opinion.

    Also, maybe I suffer from traditional thinking, but if comma and semicolon are on the same key, I think that the period and colon should be on the same key too. On the standard Swedish QWERTY, that’s exactly how it is.

    • February 28, 2012 at 8:07 pm

      As you add more keys to the keyboard, keeping it aesthetic gets harder and harder, because different people have different opinions about aesthetics, so the program has to be able to handle dozens of different configurations. I’ll try to work in one that binds ()//[]/{} somehow.

  8. Frank
    July 24, 2012 at 2:00 pm

    Out of curiosity, what is the layout with the best fitness score You have found so far (for full standard keyboards that is)?

    • July 25, 2012 at 6:37 pm

      The one posted here is either the best or pretty close to the best. I haven’t altered the program much since I wrote this post.

  9. Frank
    July 26, 2012 at 1:51 am

    Interesting, the program gave Me one with a fitness of 16985895 and a distance of 34380. Then again, the finger work on this layout is 0 (huh?).

    • July 26, 2012 at 1:54 am

      If a layout has finger work 0, that’s the way it’s supposed to be. Finger work only kicks in once a finger has more than a certain percentage of the workload. So for example, there’s no cost if a pinky does less than 8% of the work, but more than that and it may get tired out, so there’s an additional penalty.

  10. Frank
    July 26, 2012 at 2:00 am

    Oh, good to know. I thought I had a bug.

    In case Anyone is interested, the layout looks like this (with apologies in advance if the result is unpleasant):

    ` | % # ~ 7 4 6 + Z ^
    Y P O U \ K D L C W X Q @
    I N E A = M H T S R *
    & [ ] { } B F G V J

    9 / ! ‘ _ ? 8 1 0 2 3 z 5
    y p o u – k d l c w x q $
    i n e a , m h t s r ”
    ( ) ; . : b f g v j

    • July 26, 2012 at 2:19 am

      It looks like keepNumbers is disabled (so all the numbers are moved around). Did you do that on purpose?

  11. Frank
    July 26, 2012 at 2:33 am

    I just took the built-in settings for “setfk standard”.

    • July 26, 2012 at 3:04 am

      I thought I had keepNumbers on by default. Oh well.

      Whatever layout you get is going to be slightly better than the one I post, because the one I post has keepNumbers enabled (which makes the layout slightly less efficient).

  12. Frank
    July 27, 2012 at 12:34 am

    This question may seem silly to Some but could You explain the meaning and possible settings of the different variables show via the `variables` command?

    • July 27, 2012 at 7:51 pm

      Let me know if you still don’t understand something.

      (bool) detailedOutput : provide additional information while running the algorithm (bool) keepZXCV : keep keys Z, X, C, and V in place (bool) keepQWERTY : try to keep keys in their QWERTY positions (bool) keepNumbers : keep numbers in place (bool) keepParentheses : keep parentheses symmetrical (bool) keepShiftPairs : shifted/unshifted pairs of special characters stay together (bool) keepTab : keep Tab in place (bool) keepNumbersShifted: numbers do not move between shifted and unshifted

      The rest of the variables determine the costs for particular key combinations. Higher cost is worse. Are there any specific variables other than the ones above that you do not understand?

  13. Frank
    July 27, 2012 at 12:34 am


  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: