carpalx - keyboard layout optimizer - save your carpals
Carpalx optimizes keyboard layouts to create ones that require less effort and significantly reduced carpal strain!

Have ideas? Tell me.

the best layout

Partially optimized QWKRFY and fully optimized QGMLWY layouts are the last word in easier typing.

the worst layout

A fully anti-optimized TNWMLC layout is a joke and a nightmare. It's also the only keyboard layout that has its own fashion line.

download and explore

Download keyboard layouts, or run the code yourself to explore new layouts. Carpalx is licensed under CC BY-NC-SA 4.0.


Download and install the layouts.


                             ___   __
                            | \ \ / /
   ___ __ _ _ __ _ __   __ _| |\ V /
  / __/ _` | '__| '_ \ / _` | | > <
 | (_| (_| | |  | |_) | (_| | |/ . \
  \___\__,_|_|  | .__/ \__,_|_/_/ \_\
                | |
                |_| v0.12

 carpalX - keyboard layout optimizer - save your carpals

 Martin Krzywinski 


Lots of typing for 10 years can leave your hands looking like cranky
twigs. Moving that pinky over and over again and rotating the
wrist. Ouch. Your fingers deserve better.

carpalx is a keyboard layout optimizer. Given a training corpus
(e.g. English text) and parameters that describe typing effort,
carpalx uses simulated annealing to find a keyboard layout to minimize
typing effort.

Typing effort is modeled using three contributions

 - base effort derived from finger travel distance
 - row, hand and finger penalties to limit use of weaker fingers/hands
      and distinguish harder-to-reach keys
 - stroke path effort, a complex figure of merit that rates the effort
      based on finger, row and hand alternation (e.g. asd is much easier to
      type than sad - this is captured by the stroke path effort)


To install, untar the distribution

  > tar xcvf carpalx-x.xx.tgz
  > cd carpax-x.xx

Binaries are in bin/ and the first line of each script should be
adjusted to reflect the location of your perl binary. For example, if
you are using /usr/bin/perl, then change




Each script has a manpage that can be accessed using -man. For example,

  bin/generatetriads -man

For brief usage, 

  bin/generatetriads -h


Optimization is performed by the carpalx script and all others in bin/
are utility scripts that are not necessary for carpalx. However, they
are helpful in generated useful data files (e.g. triad lists).

carpalx uses an Apache-like configuration file which defines
variable-value pairs that control the script. Several configuration
files are found in etc/ and these are discussed in the online
tutorials (etc/tutorial-xx.conf).

Documentation for carpalx is available in the form of tutorials, e.g.


carpalx is a sandbox keyboard simulator - experiment, have fun and
drop me a line if you find anything interesting!