SONATA 28

Sonata

28 keys. Cadence's layer architecture, half a column lighter.
v0.5.1 Initial release 28 keys · 4 cols × 3 rows + 2 thumbs Inherits from Cadence v1.11.1 Specification only ★ View on GitHub
Sonata (n.): a complete musical form — theme, development, resolution.

⚠ Project status

v0.5.0 was the initial public release of the Sonata specification (current version: v0.5.1, a documentation update). This document defines the Sonata Base Layer and explains how all other layers are inherited from Cadence v1.11.1.

Sonata currently has no dedicated Vial configuration. It is a layout specification, not a flash-ready build. The next major milestone, v1.0, will be tagged when a dedicated Vial configuration exists. From that point on, documentation will track two version numbers: the Sonata version (Base Layer state) and the inherited Cadence version.

What Sonata is, and how it relates to Cadence

Sonata is built around two strict ergonomic constraints:

  1. No lateral inward movement of the index fingers — drop the inner column entirely.
  2. Thumbs only move outward, never inward — keyboard layouts often expect the thumb to push laterally toward the keyboard centre, which is biomechanically awkward.

Both constraints proved viable on a 28-key layout, and the design lessons that emerged carried over into Cadence:

Sonata's contributions to Cadence

In other words: Sonata supplied the design ideas, Cadence's iterative work refined them into a production layout, and Sonata now inherits the refined result back. A clean cycle.

The Family

ProjectKeysHardwareStatus
Cadence34Ferris SweepDaily driver, actively maintained
Sonata (this project)28dedicated 28-key, or Sweep with unprogrammed inner columnSpecification, initial release
Coda22dedicated 22-keyConcept-stage parallel exploration (independent design, not Cadence-aligned)
Cadenza (archived)36Corne ChocPredecessor, archived in favour of Cadence

Cadence and Sonata share the same layer architecture and trigger philosophy. Coda is a separate design exploration with its own layer system. Cadenza is the predecessor that started the family.

The Sonata Base Layer

The 28-key alpha grid, with Home Row Mods on the eight home positions:

L11Zpinky top
L7Wring top
L6Gmid top
Midx top
TDApinky home
TDRring home
TDSmid home
TDTidx home
L8Vpinky bot
L9Cring bot
Umid bot
Didx bot
L4/L5Spcthumb outer
L1Tabthumb inner
Lidx top
L6Ymid top
L7Pring top
L11Jpinky top
TDNidx home
TDEmid home
TDAltGrIring home
TDOpinky home
Hidx bot
Fmid bot
L9Bring bot
L8Kpinky bot
L3Entthumb inner
L12Bspthumb outer

Badges show the layer triggered when each key is held. TD = Tap Dance (tap = letter, hold = modifier or layer).

Home Row Mods

PositionTapHoldTerm
L pinky homeAMeta / Cmd / GUI250 ms
L ring homeRAlt / Option200 ms
L mid homeSCtrl200 ms
L idx homeTShift200 ms
R idx homeNShift200 ms
R mid homeECtrl200 ms
R ring homeIAltGr200 ms
R pinky homeOMeta / Cmd / GUI250 ms

Identical to Cadence v1.11.1 — bilateral Meta+Alt is cross-hand, avoiding same-hand HRM conflicts.

Overflow letters X and Q are not on the Base Layer. They are reachable on L1 Overflow + International at the same positions as in Cadence: X on R_ring_home (I-position), Q on R_mid_home (E-position).

The alpha grid was optimised for SFB rate under the no-inner-column constraint. It is not derivable by removing letters from Cadence's grid — several letters are repositioned to columns they don't occupy in Cadence.

Layer triggers — same physical positions as Cadence

The key design decision: layer triggers occupy the same physical positions as in Cadence v1.11.1 — same finger, same row — even though the letter on that position differs. A user proficient with Cadence can move to Sonata hardware without retraining the layer-trigger fingers.

Thumb triggers (1:1 identical to Cadence)

ThumbTapHoldTap+Hold
SpcSpace→ L4 Navigation→ L5 Mouse
TabTab→ L1 Overflow + International
EntEnter→ L3 Numbers
BspBackspace→ L12 Symbols

Bilateral letter triggers — same positions, different letters

LayerPositionSonata lettersCadence letters at same positions
L6 Fn + Mediamid topHold G or YF + U
L7 Code & CLIring topHold W or PW + Y
L8 Tiling WMpinky botHold V or KZ + /
L9 Bracketsring botHold C or BX + .
L11 Firmware Controlpinky topLong-hold (500 ms) Z or JQ + '

The trigger position is what matters for muscle memory, not the letter on the key. The same finger doing the same hold motion activates the same layer on either keyboard.

Layer reference — see Cadence

All layer contents (what each key produces while a layer is active) are inherited 1:1 from Cadence v1.11.1. This documentation does not duplicate that information.

For the complete layer reference, see Cadence's documentation:

LayerPurpose
L1 Overflow + InternationalUmlauts (ä/ö/ü), ß, €, dead-key fallback, X and Q overflow letters
L3 NumbersNumpad layout
L4 NavigationArrows, word-skip, page navigation
L5 MousePointer, scroll, mouse buttons
L6 Fn + MediaF1–F12 plus media controls
L7 Code & CLIShell operators, path navigation, expansion macros
L8 Tiling WMWorkspaces 1–10, focus, window movement
L9 BracketsBilateral mirror of bracket pairs as Tap Dance, App/Menu on outer thumbs
L10 ClipboardPresent in firmware, no trigger by user choice
L11 Firmware ControlQK_BOOT and QK_REBOOT, safety-gated by long-hold
L12 SymbolsFrequency-and-strength symbol layout, specification shared with Cadence

Cadence's layer contents are designed to leave the inner column (G/M/B/V/J/K positions in Cadence) free of layer content. This is what makes them directly compatible with Sonata's 28-key grid where the inner column doesn't exist physically.

Hardware

Sonata can run on two hardware options:

Option 1 — Dedicated 28-key split

A custom PCB with exactly 28 keys: 4 finger columns × 3 rows × 2 sides + 2 thumbs × 2 sides. No commercial off-the-shelf 28-key board exists with this exact geometry; this would be a custom build.

Option 2 — Ferris Sweep with unprogrammed inner column

The Ferris Sweep has 34 keys (5 columns per side + 2 thumbs per side). Sonata can run on Sweep hardware by leaving the inner column physical keys (5th column each side: G, M, B, V, J, K positions on Cadence) unprogrammed — they exist physically but carry KC_NO and produce no output. The remaining 28 keys behave identically to a dedicated 28-key build.

This is the practical option for trying Sonata without commissioning custom hardware.

Why Sonata exists alongside Cadence

If Cadence is the daily driver, what's the point of Sonata?

Sonata is not a competitor to Cadence. It's the smaller variant of the same design family.

Versioning

The current release is v0.5.1. Sonata uses a 0.x series during the specification phase. The next major milestone is v1.0, tagged when a dedicated Vial configuration exists.

Versioning policy

Change typeBumpExample
Documentation update (text, diagrams, fixes)Patchv0.5.0 → v0.5.1
Configuration change (Base Layer, triggers, HRM)Minorv0.5.0 → v0.6.0
Dedicated Vial configuration availableMajorv0.x.y → v1.0.0

v0.5.0 was the initial public release. v0.5.1 (this version) is a documentation update — the Base Layer keyboard visualisation now correctly places the thumb keys (Spc/Tab on the left, Ent/Bsp on the right) below the index columns, matching the physical Ferris Sweep geometry.

From v1.0 onward, documentation will reference two version numbers: the Sonata version (Base Layer state) and the inherited Cadence version (whose layer contents Sonata adopts).