Carpalx optimizes keyboard layouts to create ones that require less effort and significantly reduced carpal strain!
Have ideas? Tell me.
18/may/14 — Updating text — some of the copy needs to be reworked.
17/may/14 — Made the CSS less useless.
I evaluate keyboard layouts using my own typing effort model—the better the layout, the lower the typing effort. The model is based on metrics (or figures of merit, FOMs) described here.
Metrics are based on relative usage frequencies (row, finger, hand), row jumps and runs (number of repeated strokes for same row, finger, hand). These metrics can be used to evaluate an existing layout, compare two layouts or to derive an optimized layout. When deriving a layout, the parameters are combined using weights into a single value (typing effort), which is minimized.
rowt), home (
rowh) and bottom (
rowb) rows are hit; layouts which a high value of
rowhand low value of
hL) and right (
hR) hands are used; layouts for which these two values are close to one another are desirable
f0 ... f3, f6 ... f9, with indeces starting at the left pinky and ending at right pinky (indeces 4 and 5 correspond to thumbs, normally not counted); it is desirable to transfer as much of the typing from the weaker fingers (pinky, ring) to the stronger fingers (middle, index)
hL-hR; desirable layouts have a low value for hand asymmetry
Runs describe how frequently the same row, hand or finger are used
N times in a row. The cumulative distribution of runs is best used for this quantity.
Given a value,
n, the cumulative distribution of a run (e.g. left hand run) gives the relative number of hand runs shorter or equal in length to
n. Row and hand runs are futher categorized by top, home and bottom (for rows) and left and right (for hands). Finger runs are not expressed for individual fingers (e.g. a finger run of 5 indicates one of the fingers was used 5 times in a row).
rhL(n), rhR(n)) - relative frequency of left or right hand runs of length
rrt(n), rrh(n), rrb(n)) - relative frequency of top, home and bottom row runs of length
rf(n)) - relative frequency of a finger run of length
Desirable layouts have most of their runs very short, with the exception of the home row runs (
rrh(n), i.e. the number of times keys of the home row are hit n times in succession), which should be lengthy.
The row jump is the total number of rows traversed by typed fingers within a hand run. The row jump distinguishes the case of typing "ttt" (hand run = 3, finger run = 3, row jump = 0) and tbt (hand run = 3, finger run = 3, row jump = 4).
rj(n)) - relative frequency of a total same-hand row jump of length
Detailed typing statistics, such as those described above, unambiguously characterize a layout's performance. However, these values can be hard to interpret and translate to typing in practise.
To give a more subjective impression of a layout's fitness, I have ranked words based on the effort (per unit length) required to type them. I have ranked words for
QGMLWY (fully optimized, Colemak-like),
TNWMLC (worst layout for English).