Minimal typing trainer https://ts.barrettruth.com
  • JavaScript 91.6%
  • C++ 2%
  • Python 1.9%
  • Shell 1.3%
  • TypeScript 0.8%
  • Other 2.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Barrett Ruth 37dfa50934
All checks were successful
quality / Format (push) Successful in 6s
quality / Lint (push) Successful in 6s
quality / Build (push) Successful in 22s
deploy / Deploy (push) Successful in 55s
Restore expanded code corpus
2026-07-12 14:28:47 -05:00
.forgejo Skip quality wait for manual deploys 2026-07-09 14:01:19 -05:00
.github/workflows Rename project to ts 2026-07-08 17:17:22 -05:00
corpus/code Restore expanded code corpus 2026-07-12 14:28:47 -05:00
public Restore expanded code corpus 2026-07-12 14:28:47 -05:00
scripts/corpus Dedent code corpus excerpts 2026-07-12 14:19:16 -05:00
.gitignore Position level sidebar 2026-07-07 23:44:04 -05:00
biome.json Convert to vanilla JavaScript 2026-07-07 22:54:01 -05:00
flake.lock Convert to vanilla JavaScript 2026-07-07 22:54:01 -05:00
flake.nix Build code level from highlighted snippets 2026-07-08 17:41:38 -05:00
justfile Refresh code corpus and input handling 2026-07-09 14:55:16 -05:00
README.md Refresh code corpus and input handling 2026-07-09 14:55:16 -05:00

ts

Minimal typing trainer for QWERTY, Dvorak, Colemak-DH, and my custom keyboard layout "Baremak".

Note

Due to GitHub's historic unreliability, active development is hosted on Forgejo. GitHub is maintained as a read-only mirror.

Levels

The typing trainer is inspired by https://learn.dvorak.nl. "Levels" test your typing abilities with generally increasing difficulty. All levels respect the selected keyboard layout (for example, "home" tests asdf/aeou on QWERTY/Dvorak).

Level Name How it is made
01 home the home row; 3-6 letters mixed with eligible SCOWL words
02 top the home and top row, mixed with SCOWL words
03 bottom the home and bottom row, mixed with SCOWL words
04 short real lowercase SCOWL words less than 5 characters
05 prose real lowercase SCOWL words of any length
06 caps SCOWL words with a 75% lowercase, 12.5% title-case, 12.5% SCOWL abbreviation mix
07 punct SCOWL words with a mix of puncutation and prose spans
08 numbers Miscellant of generated numeric phrases including dates, times, counts, versions, etc.
09 symbols Uniform random symbol tokens from the active layout's symbol set
10 sentences Excerpts of Project Gutenberg texts sentences
11 code Tree-sitter-highlighted production excerpts from systems and tooling projects.

Baremak

My custom layout "Baremak" keeps Colemak-DH letters and uses a custom layer for convenience. See my config for the layout.

base
q w f p b   j l u y ;
a r s t g   m n e i o '
z x c d v   k h , . /
custom layer
! @ # < /   \ > & $ |
~ = [ { (   ) } ] - + `
% ^ * _ ?   : ; ' "