As you may know, I learned Dvorak 6 months ago. But after substantial research, I have decided to learn Colemak.
q w f p g j u y ;
a r s t d h n e i o
z x c v b k , . /
Colemak was designed to be easy to learn for people coming from QWERTY: Many keys remain in the same position. After doing a lot of research, I would have to say that this is THE best layout (but it isn’t perfect). I have only been using it for 3 days, and am already at 20 words per minute, compared to 65 on Dvorak after 6 months and 75 on QWERTY after 8 years.
Go learn Colemak. Now.
Here is my genetic algorithm program, written in Ruby.
When you open keyboard_score.rb, you will see a part that says
Change that number to change the number of initial layouts that are generated.
Farther down it says:
while @best_layout_count 13.7215686882507, “rowskipcount”=>2419, “handcount”=>50803, “chars”=>257999, “fingercount”=>9697
amuseum score: “score”=>8.25649324222187, “rowskipcount”=>7249, “handcount”=>42227, “chars”=>257999, “fingercount”=>5410
arensito score: “score”=>7.8785886767003, “rowskipcount”=>5765, “handcount”=>42782, “chars”=>257999, “fingercount”=>2872
capewell score: “score”=>7.81765316553373, “rowskipcount”=>8658, “handcount”=>35671, “chars”=>251411, “fingercount”=>2918
klausler score: “score”=>7.4888546079636, “rowskipcount”=>5486, “handcount”=>32517, “chars”=>257999, “fingercount”=>2427
ddvorak score:”score”=>7.28595847270726, “rowskipcount”=>2531, “handcount”=>27180, “chars”=>257999, “fingercount”=>5448
colemak score: “score”=>7.21897371695239, “rowskipcount”=>4894, “handcount”=>31334, “chars”=>257999, “fingercount”=>2270
Not surprisingly, DDvorak scores lowest on handcount. But I was a bit surprised to find that QWERTY scored the lowest on rowskipcount, which has been redefined. The possibilities aren’t exactly plentiful.
qs sq dr rd uk ku lp pl xq qx cr rc u, ,u .p p.
None of which are common, and many of which will never occur. SQ is very rare; the only examples I can think of are squish, squeamish and squirm, none of which are at all common words. Probably about 50% of these are from CR, from words such as cream, crack, and describe.
Back on topic, the 2nd best on row skip count is DDvorak, and everything else is far behind. Colemak does best on same finger, even better than Arensito, which came in second. Capewell makes a close third.
In order to test my parameters, here are the scores on my 4 favorite layouts. Remember, lower is better.
Arensito (with H and P switched, because Arensito was designed for an ergonomic keyboard, which I don’t have): 7.4217
Capewell Evolved Layout: 7.0544
Dvorak (with U and I switched, which is what I am currently using): 6.6079
This was a bit surprising. I expected Arensito to be the best, or at least to beat Dvorak. This strangeness might have something to do with the bug that skews the count of same finger use. In order to get really accurate data, I should probably fix it. Also, a guy at the Colemak Forum pointed out to me that this program should not weigh same finger use so heavily. That would probably explain this result.
Here are 2 of the best layouts that have been generated, scoring 6.2 and 6.1, respectively.
l d m b ; k p u o w
r h t n g c i e a s
v z f j x . y ‘ , q
b f l m ‘ q y u o p
s n r t d g h e a i
z v j w x c k , . ;
You’ll notice that there are some similarities between them. Those, as well as a couple other of the best-scoring layouts, put all the vowels (not counting U because it is less common) on one side of the home row, and the most common consonants on the other.
Before I tell you the following thing, I want you to remember that these layouts were developed separately. The only similarity is that I used the same algorithm for both.
BOTH layouts have the SAME HUGE PROBLEM: O and A are on the SAME FINGER!!!!!!!! And it’s not even the middle finger, it’s the RING FINGER!!!! HOW DID THAT HAPPEN?????????? It probably happened because of an over-weighted sense of same finger use.
With help from Bilfo, I have designed a program in Ruby to score keyboard layouts, and a genetic algorithm program to determine the best layout. I got the idea from Michael Capewell who in turn got the idea from Peter Klausler. Unfortunately, because Ruby is a fairly high-level language, it takes a while to do things that could be done faster in Java or C.
I ran the program for 6 hours, and it generated this layout:
w f l m ; j p y , ‘
r s n t d h i o a e
z x c g v u b k . q
Through the scoring program, it got 6.3. However, Dvorak scores 5.8 on the genetic algorithm program. It has not yet generated a layout better than Dvorak.
Notes on the above layout:
The home row looks good. The 8 most common letters are on the home row, but e is on the pinky which is not good. I also notice that, like Dvorak, all the vowels are on one side of the keyboard. Other potential problems here are that C is on the bottom row, which some people like because it makes ctrl-c easy, but in terms of letter frequency it’s not the best spot. Also h and i are on the same finger, and hi is a pretty common digraph. Other than that, same-finger usage looks good.
Hmm, what is same finger usage? That is when the same finger is used twice in a row, like ed on QWERTY. It is a very bad thing, and slows down your typing a lot.
NOTICE: There is currently a small bug in the program which may cause a problem with scoring. The development team is working hard to fix it.