GECKO searches for the best keyboard layout for any physical keyboard, and later for the best keyboard itself (2D → 3D). It is first a data-analysis system for judging layouts thoroughly and fast, with optimization on top.
- Score any layout on any board: 47 metrics (same-finger bigrams, rolls, stretches, reach and wrist posture from a hand model, …) weighted by editable profiles, checked against independent judges (typing time fitted to 136M keystrokes, measured comfort).
- Optimize with several algorithms (simulated annealing, tabu, memetic, MAP-Elites, NSGA-II, …) using fast swap-delta evaluation; every run is reproducible.
- Explore the landscape of good layouts, not just one optimum.
- Boards from TOML, keyboard-layout-editor.com, or parameters (stagger, splay, split, 3D keywells).
- Web UI with a 3D viewer; the browser scores with the same Rust code through WASM.
Needs Rust (stable), and for the web UI Node and wasm-pack.
cargo build --release
./target/release/gecko compare # rank the reference layouts
./target/release/gecko judge --community # typing time, comfort, percentiles among community layouts
./target/release/gecko compare --robust # how sure each rank is under weight noise
./target/release/gecko optimize --time 30s # writes runs/<id>/
make && ./target/release/gecko serve # web UI at http://127.0.0.1:7777
make test # everything CI runs
Every command takes --json. See context/cli.md.
| Path | |
|---|---|
crates/gecko-core |
Library: geometry, corpora, metrics, scorer, optimizers, hand model |
crates/gecko-cli |
The gecko binary and gecko serve |
crates/gecko-wasm |
The scorer for the browser |
web/ |
TypeScript / React / Three.js UI |
data/ |
Boards, corpora, profiles, reference layouts |
context/ |
Design docs: start at context/README.md |
research/ |
Evidence behind the metrics and parameters |
Human contributors: see CONTRIBUTING.md. AI agents: follow AGENTS.md.
Experiment reports (PDF), each with its data in bench/. Index and drafts: docs/papers/.
| Paper | |
|---|---|
| Is the cost function right? | cost-validity |
| Optimizing the cost function | cost-optimization |
| Ranking the modern layouts | layout-ranking |
| The best English layout | english-layout |
| The best programming layout with a symbol layer | programming-layout |
| The best layout for a Vim programmer | vim-layout |
| What layout designers value: inverse optimization | inverse-fit |
| Symbol layers for programming and Vim | symbol-layer |
| Software paper: how GECKO works | software |
Code: MIT. Some bundled data (the cmini-derived corpora and layout list) is GPL-3.0; see NOTICE.md.