GECKO finds optimal keyboard layouts and board shapes using a suite of data analysis systems. It has an extremely customizable system for design preferences and world class research tools for analyzing layout quality.
promo.mp4
- Score any layout on any board on over 50 metrics
- Optimize with several algorithms (simulated annealing, tabu, memetic, MAP-Elites, NSGA-II, ...)
- Every run is reproducible.
- Explore the whole landscape of good layouts, not just one optimum.
- Works with 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 using 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.
