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?
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.)
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:
It’s not exactly a stellar example of layout design, but it is very rolly. 🙂
Michael Dickens said
I increased the to center cost and got this.
And this:
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?
Michael Dickens said
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.
Why Only 30? « Philosophical Multicore said
[…] : "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 […]
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.
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)
Michael Dickens said
I’m not sure what you mean. Do you mean analyze it using my program, or just analyze it in general, or something else entirely?