{"id":50423745,"url":"https://github.com/one7two99/cadence","last_synced_at":"2026-05-31T09:31:05.935Z","repository":{"id":355207542,"uuid":"1226681612","full_name":"one7two99/cadence","owner":"one7two99","description":"  [ CADENCE ] — 34-key split keyboard layout. The third iteration: every lesson from Cadenza and Sonata applied. Colemak-DH · Tap Dance HRM · 13 layers · bilateral access · Code/CLI macros · Tiling WM · safety-gated Firmware layer · Vial/QMK · Ferris Sweep","archived":false,"fork":false,"pushed_at":"2026-05-02T11:41:26.000Z","size":134,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-02T13:22:42.714Z","etag":null,"topics":["34-keys","cadence","colemak","colemak-dh","ergonomic-keyboard","ferris-sweep","firmware","home-row-mods","keyboard-layout","keyboards","mechanical-keyboard","miryoku-inspired","qmk","qmk-keymap","rp2040","split-keyboard","tap-dance","tiling-wm","vial","vial-qmk"],"latest_commit_sha":null,"homepage":"https://one7two99.github.io/cadence/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/one7two99.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"one7two99","github":"one7two99"}},"created_at":"2026-05-01T17:52:10.000Z","updated_at":"2026-05-02T11:37:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/one7two99/cadence","commit_stats":null,"previous_names":["one7two99/cadence"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/one7two99/cadence","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/one7two99%2Fcadence","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/one7two99%2Fcadence/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/one7two99%2Fcadence/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/one7two99%2Fcadence/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/one7two99","download_url":"https://codeload.github.com/one7two99/cadence/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/one7two99%2Fcadence/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33726718,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["34-keys","cadence","colemak","colemak-dh","ergonomic-keyboard","ferris-sweep","firmware","home-row-mods","keyboard-layout","keyboards","mechanical-keyboard","miryoku-inspired","qmk","qmk-keymap","rp2040","split-keyboard","tap-dance","tiling-wm","vial","vial-qmk"],"created_at":"2026-05-31T09:31:05.867Z","updated_at":"2026-05-31T09:31:05.929Z","avatar_url":"https://github.com/one7two99.png","language":"C","funding_links":["https://ko-fi.com/one7two99","https://github.com/sponsors/one7two99"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/cadence-logo.svg\" alt=\"Cadence\" width=\"320\"\u003e\n\u003c/div\u003e\n\n**A 34-key Colemak-DH layout for the Ferris Sweep, designed around per-key Tap Dance Home Row Mods, frequency-ranked symbols, and a Dead Key Hub for German + US-International completeness.**\n\nCadence is a daily-driver keyboard layout for [Ferris Sweep](https://github.com/davidphilipbarr/Sweep) hardware running [Vial](https://get.vial.today/) firmware. It is the descendant of [Cadenza](https://github.com/one7two99/cadenza) (36-key Corne) — adapted to the Sweep's four-thumb form by encoding layer access as Tap Dance triggers on the alpha keys rather than dedicated thumb keys.\n\nThe full design specification with per-layer rationale lives in [`docs/index.html`](docs/index.html). The version history is in [`CHANGELOG.md`](CHANGELOG.md).\n\n---\n\n## Quick start\n\n1. **Build the Vial-QMK firmware** with `TAP_DANCE_ENTRIES = 64`. The default Vial-Sweep build ships with 48; Cadence uses 52 of 64 slots so a custom build is required.\n\n   In `keyboards/ferris/sweep/keymaps/vial/config.h`:\n   ```c\n   #define TAP_DANCE_ENTRIES 64\n   ```\n\n2. **Flash the firmware** to your Sweep via QMK Toolbox or `qmk flash`.\n\n3. **Load the layout** from [`configuration/Cadence-FerrisSweep_v1_12_3.vil`](configuration/) into Vial.\n\n4. **Set your OS keyboard layout to US International** (with dead keys). Cadence's German and other accent support relies on US-International dead-key behaviour at the OS level.\n\n---\n\n## Layer overview\n\n| # | Layer | Access | Purpose |\n|---|---|---|---|\n| L0 | Base | always active | Colemak-DH alphas with Tap Dance Home Row Mods |\n| L1 | Overflow + International | Hold **Tab** | The Dead Key Hub — direct ä/ö/ü, all five US-Intl dead keys, ß, €, Esc |\n| L2 | Symbols | Hold **Bsp** | Frequency-ranked operator and bracket layout |\n| L3 | Numbers | Hold **Ent** | Numpad on left, ASCII operators on right, Tab on Tab-thumb |\n| L4 | Navigation | Hold **Spc** | Arrows, word-skip, page-nav, CapsLock, Insert, Delete, ScrollLock, Pause |\n| L5 | Mouse | Spc **tap+hold** | Pointer (NEIO), scroll, mouse buttons on thumbs |\n| L6 | Fn + Media | Hold **F** *or* **U** | F1–F12 numpad-spatial, media controls, PrintScreen |\n| L7 | Code \u0026 CLI | Hold **W** *or* **Y** | Shell operators, path navigation, expansions, comparisons, arrows |\n| L8 | Tiling WM | Hold **Z** *or* **/** | Workspaces 1–10, focus, window-move, Kill / Float / Fullscreen |\n| L9 | Brackets | Hold **X** *or* **.** | Tap-open / hold-close pairs, bilateral mirror |\n| L11 | Firmware Control | Long-hold (500 ms) **Q** *or* **'** | `QK_BOOT` and `QK_REBOOT` only — safety-gated |\n\nL10 (Clipboard) is in firmware without a trigger by user choice. L12 is empty (Vial format placeholder).\n\nFor the per-layer design rationale, the Tap Dance and Macro tables, and the cross-cutting design principles, see [`docs/index.html`](docs/index.html).\n\n---\n\n## Highlights\n\n- **Per-key HRM tipping terms via Tap Dance** — 250 ms on pinky/ring (A, O), 200 ms on index/middle. Departs from Miryoku's single global term.\n- **Spc Tap-Hold-TapHold** — `tap = Space`, `hold = Navigation`, `tap + hold = Mouse`. Three layer functions on a single thumb position.\n- **Tab Tap-Hold** — `tap = Tab`, `hold = International`. Tab remains a normal character; umlauts via thumb hold.\n- **Bilateral layer access** — Fn+Media (F+U), Code \u0026 CLI (W+Y), Tiling WM (Z+/), Brackets (X+.). Same finger on both hands, same row — symmetric muscle memory.\n- **L1 Dead Key Hub** — all five US-International dead keys (`` ` ``, `'`, `\"`, `^`, `~`) plus direct umlaut Tap Dances, plus ß and €, all centralised on one layer.\n- **L7 Code \u0026 CLI** — Tap Dances for path navigation (`/` / `~/` / `../`), pipe with optional spaces, shell expansion, comparison, arrows; macros for `||`, `\u0026\u0026`, `2\u003e\u00261`, `$?`.\n\n---\n\n## Why not standard Miryoku?\n\nCadence keeps Miryoku's core insight (layers via thumb holds, HRM on home row) and replaces parts that don't serve the use case:\n\n- Miryoku's `MT()` HRM has one global tipping term; Cadence's per-key Tap Dance terms reduce false-trigger pressure on weaker fingers.\n- Miryoku's symbol layer mirrors numpad positions for mnemonic value; Cadence's L2 ranks symbols by frequency × finger strength so the most-typed operators land on the strongest fingers.\n- Miryoku has no native German or US-International support; Cadence's L1 covers it natively.\n- Miryoku has no dedicated Code \u0026 CLI, Tiling WM, or Brackets layer; Cadence has all three with workflow-specific Tap Dances.\n\nThe trade-off: Cadence has more layers (11 reachable vs. ~6) and a higher learning curve. The bet is that the additional structure pays off after muscle memory is established.\n\nA more thorough comparison lives in [`docs/index.html`](docs/index.html#vs-miryoku).\n\n---\n\n## Resource budget\n\n| Resource | Used | Available |\n|---|---|---|\n| Tap Dance | 52 | 64 |\n| Macros | 20 | 32 |\n| Layers (firmware) | 12 | 16 |\n| Layers (reachable) | 11 | — |\n| Combos | 0 | 32 |\n| Key Overrides | 0 | 32 |\n\nCombos and Key Overrides are unallocated — reserve capacity for future iteration.\n\n---\n\n## Documentation\n\n- [`docs/index.html`](docs/index.html) — full design specification with per-layer rationale, TD/macro tables, design principles, appendices\n- [`CHANGELOG.md`](CHANGELOG.md) — version history and design-process record\n- [`ROADMAP.md`](ROADMAP.md) — open items and planned work\n- [`VERSIONING.md`](VERSIONING.md) — semantic versioning policy and release workflow\n- [`CONTRIBUTING.md`](CONTRIBUTING.md) — contribution guidelines\n\n## Layout family\n\nCadence is one of four related layouts maintained by the same author:\n\n- **Cadence** (34 keys, Ferris Sweep) — this layout, the daily driver\n- **Cadenza** (36 keys, Corne) — the parent layout, frozen at v1.0\n- **Sonata** (28 keys, no inner column) — sister project, shares the L2 Symbols specification\n- **Coda** (22 keys, three columns per hand) — minimal concept\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fone7two99%2Fcadence","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fone7two99%2Fcadence","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fone7two99%2Fcadence/lists"}