carpalx - keyboard layout optimizer - save your carpals

Carpalx optimizes keyboard layouts to create ones that require less effort and significantly reduced carpal strain!

Download keyboard layouts, or run the code yourself to explore new layouts.

X11 layouts are available! Patches to include Carpalx layouts in xkeyboard-config and kbd have been submitted by Perry Thompson. Meanwhile, many thanks to Sven Hallberg for providing X11 configuration for Carpalx layouts. Richard Gomes contributed an archive of these files for KDE/Gnome users.

Love your coworkers? Switch them to QWKRFY layout or a fully optimized QGMLWY layout.

Hate your coworkers? Switch them to TNWMLC layout. It's the only keyboard layout that has its own fashion line.

Have ideas? Tell me.

25/may/18 — The BBC article Why we can't give up this off way of typing by Tim McDonald discusses the history and persistence of QWERTY and my Carpalx work.

16/aug/16 — Ergonomic Keyboard Layout Designed for the Filipino Language at AHFE2016 derives layout for Filipino language using Carpalx

18/apr/16 — Carpalx layouts soon to appear in freedesktop (package xkeyboard-config) and kbd. Thanks to Perry Thompson.

9/sep/14 — A new layout—De Correspondent—for the Dutch language in collaboration with De Correspondent.

16/may/14 — Added evaluation of the Norman layout. This layout modifies 14/26 keys and has statistics similar to Colemak. Detailed statistics are available.

12/feb/14 — Added evaluation of the abKey layout. Its alphabetic layout makes no attempt at ergonomics. Detailed statistics are available.


                             ___   __
                            | \ \ / /
   ___ __ _ _ __ _ __   __ _| |\ 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!