Home > Keyboard Release, Keyboards, Software Release > New Keyboard Layout Project: Program Release

New Keyboard Layout Project: Program Release

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?

  1. phynnboi
    September 13, 2009 at 1:31 am

    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
    September 13, 2009 at 2:46 am

    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. September 13, 2009 at 12:36 pm

    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
    September 16, 2009 at 11:22 am

    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?

    • September 16, 2009 at 12:20 pm

      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.

  1. December 18, 2009 at 9:14 pm

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 )

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: