Philosophical Multicore

Sometimes controversial, sometimes fallacious, sometimes thought-provoking, and always fun.

New Keyboard Layout Project: Program Release

Posted by Michael Dickens on September 12, 2009

You can find my source code at The new and faster algorithm was written by Chris Johnson, a.k.a. Phynnboi.

The algorithm repeatedly returns this result.

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

Fitness:       2263451098
Distance:      9003112
Inward rolls:  7.04%
Outward rolls: 4.48%
Same hand:     22.80%
Same finger:   0.68%
Row change:    9.01%
Home jump:     0.34%
To center:     4.17%

This is a very good layout. Strangely enough, though, if you run the algorithm for longer it comes up with this layout, even though it has a lower score:

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

Fitness:       2263597180
Distance:      9599916
Inward rolls:  7.20%
Outward rolls: 2.20%
Same hand:     16.85%
Same finger:   0.64%
Row change:    7.64%
Home jump:     0.28%
To center:     1.74%

Which is better and why? How can improvements be made?


9 Responses to “New Keyboard Layout Project: Program Release”

  1. phynnboi said

    One thing I like to do to get a feel for new layouts is to translate some text, like TypeFaster’s “Common Words” drill, from some layout I know to the layout I want to test. For instance, I’m good with Qwerty, so if I wanted to test the first layout you gave, I’d translate

    The man almost called to the boy.


    Khd mls lum;fk rluudi k; khd t;qp

    and then type the latter on Qwerty.

    (I took it for a run on the whole translated Common Words file. It feels like the right hand is doing an awful lot of work. There also seem to be a lot of awkward, mostly same-hand sequences, like THOUGHT and THAT. My hunch is, it’s optimizing for rolls that’s causing this. I assume your “To center” metric is measuring for sequences like pinkie -> ring, ring -> index, etc. If so, you might consider cranking that one up and turning the roll ones off and seeing how that works.)

  2. phynnboi said

    I suppose it’s worth mentioning that I originally tried optimizing for rolls, as well, and ended up with layouts that had the same problem. Actually, before I wrote any program, I manually designed a layout around the “rolling” theme:

    kbul/ ;frwp
    oina, .ehts
    qvmgz xcydj

    It’s not exactly a stellar example of layout design, but it is very rolly. 🙂

  3. I increased the to center cost and got this.

    . p l d b  x c u h ,
    o i n t g  f s e r a
    q ' v w j  ; m y k z
    Fitness:       2309987607
    Distance:      8989568
    Inward rolls:  8.44%
    Outward rolls: 5.33%
    Same hand:     25.20%
    Same finger:   0.89%
    Row change:    11.58%
    Home jump:     0.50%
    To center:     2.19%

    And this:

    y c o u ;  k l d p w
    i s e a .  m h t n r
    q j ' , z  v f g b x
    Fitness:       2290452641
    Distance:      9578700
    Inward rolls:  7.05%
    Outward rolls: 2.23%
    Same hand:     16.82%
    Same finger:   0.61%
    Row change:    7.50%
    Home jump:     0.58%
    To center:     1.13%
  4. feurry said

    In the second layout, 16.85% same hand is a lot of hand alternation. I was getting 15% when trying to optimize for hand alternation. It seems really weird that you got that result after running the program longer.

    Looks like the same thing happened again. 25.2% vs 16.82%. Strange, or did you change the costs?

    • I did not change the costs. It just happened that way. I’m not sure why. But actually, considering that a is on the index finger, the same finger cost is amazingly low. Distance is pretty high, though. That’s the main problem.

  5. […] : "" } As you may have noticed, my keyboard designs have been limited to only the central 30 characters — on a traditional […]

  6. Denys said

    I rate 9.5/10 on your layout. The only 2 things I find slightly awkard is typing “ght”, and also I don’t thing the “k” should be at the Qwerty’s “y” position. But I thing that everything else is perfect.

  7. Bob Teo said

    This is a fantastic blog! Can someone let me know if there’s a way I can do an analysis on a given layout? Qwerty, Dvorak, or – check this: abkey (see

Leave a Reply

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

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

Google+ photo

You are commenting using your Google+ 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 )


Connecting to %s

%d bloggers like this: