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 to type. 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.

25 Oct 21 — Added vertical and horizontal alphabetic layouts to the layouts analysis.

19 Mar 21 — Added BEAKL 15, Hieamtsr, Colemak Mod-DH and Mtgap 2.0 layouts to the layouts analysis.

15 Mar 21 — Added the Engram layout by Arno Klein to the layouts analysis.

6 Aug 20 — The search for the world’s best keyboard layout by Paul Guerin

4 May 20 — An interview with Bloomberg's Arianne Cohen Splurge on a Better Keyboard, It's Worth It.

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.


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