C++ source code
(Sep 19 2005)
(Compiles under VC++7.1 in Windows and gcc in Linux. If you have an old versin of gcc, you may have trouble.)
(The code is a mess due to it being my first C++ program, it growing
beyond my initial vision, and me desiring quick results over nice
Get AnalyzeText to be able to make combo lists.
is a program that uses an evolutionary algorithm to evolve an efficient
keyboard layout. I started this program in July 2005 after
reading about Peter M. Klausler's experiments.
I do not know when I will resume working on this project. When I
do get around to it, the program will undergo a complete re-write, as
current version hit a dead-end. Since I wrote the current
version, I've improved my knowledge of C++ and design patterns, which
should allow me to make a much more flexible and extensible
design. The new version will also be available at http://keyboardevolve.sourceforge.net/.
You can read about my other work on alternative keyboard layouts at Projects\Alternative Keyboard Layouts. By following the previous link, you can also download a few custom layouts I've created. If you use the Dvorak layout,
you might be interested in the modified Dvorak layout I created in 2004
that reduces finger movement an extra 10% (48% compared to QWERTY) and
also makes typing CTRL+Z/X/C/V much easier. If you want something easier, try QWERF -- it's similar to QWERTY, but rearranges things a little to make it more comfortable.
the code is a bit of a mess, since the program grew waay beyond my
initial vision and I just wanted to get results as soon as
possible. Not to mention that it was my first C++ program. It's not tooo hard to edit the settings, but I hope to
one day get it all working from INI files rather than having everything
Unfortunately, I have yet to find the holy grail of keyboard layout evolution
parameters! Things are complicated by there being a fundamental
difference in how curved, ergonomic keyboards and plain, rectangular
keyboards are used -- the way I see things, they have different home
"rows." This program works best for ergonomic keyboards.
I'm in the process of finding the right balance between the two...
Yes, root.. Internet is broken again (no WPA). Stupid Linux wireless.
Get AnalyzeText (below) to be able to make key combo lists for Keyboard Evolve.
Java source code
(Nov 14, 2005)
(About 130 times faster than the previous version, so it can now be used on large text files)
|AnalyzeText is a little
program that can take a text file and spit out a file listing the
character 'combos' in the text and the number of occurrences of each
combo. I use this list in Keyboard Evolve instead of stepping
through a text file since it's much faster and doesn't make much of a
difference in the scores for the layouts (+/-2%).
For example, this program tells me that in a certain 120kB test text file, the character combination 'th' occurs 2045 times.