Keyboard Evolve is a program that aims to develop the "best" keyboard layout. It was inspired by Peter M. Klausler's experiments. To find the best layout, random layouts are generated and scored based on a set of criteria, then the best layouts are mutated and re-scored until a layout emerges as the "best layout."
The best layout should allow for fast typing and reduce the risk of RSI (Repetitive Strain Injury). Ideally, it should also not be hard to learn.
One special characteristic of the layout I would like to generate is that the keys ZXCV should remain in the four left-most keys of the bottom row, so that Undo, Cut, Copy, and Paste shortcuts are still easy to hit.
New features in the coming version will allow for easy definition of scoring functions, allowing anyone, even non-programmers, to come up with their own personal best layout. This would allow people with unique typing needs to make their own layouts. For example, a person missing a finger could make a layout that put useful keys under other fingers.
This project was started in mid-2005, but will be re-written from scratch in the coming months. The old version was poorly written and difficult to extend (at the time, I was more interested in results than writing maintainable, extensible code, plus, it was my first C++ project).
For the moment, this project's main web page is at http://www.geocities.com/smozoma/programming/keyboardevolve.htm. Source code of this mishmash version is currently available from this page, but eventually will only be available through SourceForge.
To access the sourceforgey part of the project, go to http://sourceforge.net/projects/keyboardevolve. Sorry, I haven't created a source package yet in the Files section. If you would like to get the source code through SVN, see the SVN page.