https://github.com/one7two99/cadence
[ 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
https://github.com/one7two99/cadence
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
Last synced: 3 days ago
JSON representation
[ 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
- Host: GitHub
- URL: https://github.com/one7two99/cadence
- Owner: one7two99
- License: mit
- Created: 2026-05-01T17:52:10.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-02T11:41:26.000Z (about 1 month ago)
- Last Synced: 2026-05-02T13:22:42.714Z (about 1 month ago)
- 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
- Language: C
- Homepage: https://one7two99.github.io/cadence/
- Size: 131 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
**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.**
Cadence 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.
The full design specification with per-layer rationale lives in [`docs/index.html`](docs/index.html). The version history is in [`CHANGELOG.md`](CHANGELOG.md).
---
## Quick start
1. **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.
In `keyboards/ferris/sweep/keymaps/vial/config.h`:
```c
#define TAP_DANCE_ENTRIES 64
```
2. **Flash the firmware** to your Sweep via QMK Toolbox or `qmk flash`.
3. **Load the layout** from [`configuration/Cadence-FerrisSweep_v1_12_3.vil`](configuration/) into Vial.
4. **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.
---
## Layer overview
| # | Layer | Access | Purpose |
|---|---|---|---|
| L0 | Base | always active | Colemak-DH alphas with Tap Dance Home Row Mods |
| L1 | Overflow + International | Hold **Tab** | The Dead Key Hub — direct ä/ö/ü, all five US-Intl dead keys, ß, €, Esc |
| L2 | Symbols | Hold **Bsp** | Frequency-ranked operator and bracket layout |
| L3 | Numbers | Hold **Ent** | Numpad on left, ASCII operators on right, Tab on Tab-thumb |
| L4 | Navigation | Hold **Spc** | Arrows, word-skip, page-nav, CapsLock, Insert, Delete, ScrollLock, Pause |
| L5 | Mouse | Spc **tap+hold** | Pointer (NEIO), scroll, mouse buttons on thumbs |
| L6 | Fn + Media | Hold **F** *or* **U** | F1–F12 numpad-spatial, media controls, PrintScreen |
| L7 | Code & CLI | Hold **W** *or* **Y** | Shell operators, path navigation, expansions, comparisons, arrows |
| L8 | Tiling WM | Hold **Z** *or* **/** | Workspaces 1–10, focus, window-move, Kill / Float / Fullscreen |
| L9 | Brackets | Hold **X** *or* **.** | Tap-open / hold-close pairs, bilateral mirror |
| L11 | Firmware Control | Long-hold (500 ms) **Q** *or* **'** | `QK_BOOT` and `QK_REBOOT` only — safety-gated |
L10 (Clipboard) is in firmware without a trigger by user choice. L12 is empty (Vial format placeholder).
For the per-layer design rationale, the Tap Dance and Macro tables, and the cross-cutting design principles, see [`docs/index.html`](docs/index.html).
---
## Highlights
- **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.
- **Spc Tap-Hold-TapHold** — `tap = Space`, `hold = Navigation`, `tap + hold = Mouse`. Three layer functions on a single thumb position.
- **Tab Tap-Hold** — `tap = Tab`, `hold = International`. Tab remains a normal character; umlauts via thumb hold.
- **Bilateral layer access** — Fn+Media (F+U), Code & CLI (W+Y), Tiling WM (Z+/), Brackets (X+.). Same finger on both hands, same row — symmetric muscle memory.
- **L1 Dead Key Hub** — all five US-International dead keys (`` ` ``, `'`, `"`, `^`, `~`) plus direct umlaut Tap Dances, plus ß and €, all centralised on one layer.
- **L7 Code & CLI** — Tap Dances for path navigation (`/` / `~/` / `../`), pipe with optional spaces, shell expansion, comparison, arrows; macros for `||`, `&&`, `2>&1`, `$?`.
---
## Why not standard Miryoku?
Cadence keeps Miryoku's core insight (layers via thumb holds, HRM on home row) and replaces parts that don't serve the use case:
- Miryoku's `MT()` HRM has one global tipping term; Cadence's per-key Tap Dance terms reduce false-trigger pressure on weaker fingers.
- 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.
- Miryoku has no native German or US-International support; Cadence's L1 covers it natively.
- Miryoku has no dedicated Code & CLI, Tiling WM, or Brackets layer; Cadence has all three with workflow-specific Tap Dances.
The 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.
A more thorough comparison lives in [`docs/index.html`](docs/index.html#vs-miryoku).
---
## Resource budget
| Resource | Used | Available |
|---|---|---|
| Tap Dance | 52 | 64 |
| Macros | 20 | 32 |
| Layers (firmware) | 12 | 16 |
| Layers (reachable) | 11 | — |
| Combos | 0 | 32 |
| Key Overrides | 0 | 32 |
Combos and Key Overrides are unallocated — reserve capacity for future iteration.
---
## Documentation
- [`docs/index.html`](docs/index.html) — full design specification with per-layer rationale, TD/macro tables, design principles, appendices
- [`CHANGELOG.md`](CHANGELOG.md) — version history and design-process record
- [`ROADMAP.md`](ROADMAP.md) — open items and planned work
- [`VERSIONING.md`](VERSIONING.md) — semantic versioning policy and release workflow
- [`CONTRIBUTING.md`](CONTRIBUTING.md) — contribution guidelines
## Layout family
Cadence is one of four related layouts maintained by the same author:
- **Cadence** (34 keys, Ferris Sweep) — this layout, the daily driver
- **Cadenza** (36 keys, Corne) — the parent layout, frozen at v1.0
- **Sonata** (28 keys, no inner column) — sister project, shares the L2 Symbols specification
- **Coda** (22 keys, three columns per hand) — minimal concept
## License
[MIT](LICENSE)