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 http://mtgap.bilfo.com/Typing.zip. 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.

    into

    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. […] : "http%3A%2F%2Fmtgap.wordpress.com%2F2009%2F12%2F18%2Fwhy-only-30%2F" } 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 http://www.abkey.com)

Leave a comment