Cadence

v1.9.0 — Layout Documentation · Ferris Sweep · Colemak-DH · Vial / QMK

Cadence is a 34-key split keyboard layout for the Ferris Sweep, built on Colemak-DH and configured in Vial. It is the Sweep adaptation of the Cadenza layout (36-key Corne Choc) — same design philosophy, same muscle memory, two thumb keys less.

v1.9.0 — Sonata-aligned Colemak-DH 11 reachable layers Tap Dance HRM Code & CLI Tiling WM Direct umlauts Firmware Control 50/64 TD · 19/32 Macros Vial / QMK · 34 keys
Cadenza without compromise — minus two thumbs.

Cadence v1.9.0 — Design Decisions and Layer Documentation

What's new in v1.9.0 — direct AltGr-based umlaut access on L10. Three new Tap Dances (TD48/49/50) on the A/U/O positions: tap = ä/ü/ö, hold = Ä/Ü/Ö (via macros M16/M17/M18). The existing " dead-key path is unchanged. Firmware now requires TAP_DANCE_ENTRIES = 64.

Contents

  1. What is different from Cadenza
  2. Why Cadence over standard Miryoku
  3. Design Principles
  4. Layer Access Map
  5. Layer Reference (L0–L12)
  6. Tap Dance Reference
  7. Macro Reference
  8. Firmware Notes

★ Changelog · v1.8.0 → v1.9.0 — Sonata-aligned release

v1.9.0 reorganizes Cadence's layer system to mirror Sonata v3.0 wherever physically possible. The intent: future migration to Sonata hardware becomes a "learn the new alpha grid" exercise rather than a complete relearning of the layer architecture. Layers L1–L9 now match Sonata's numbering; L10 (Clipboard) and L11 (Firmware Control) are Cadence-only extras.

Layer renumbering

v1.8.0 layerv1.9.0 layerChange
L1 Mediamerged into L6Combined with F-Keys into single Fn+Media layer
L2 NavigationL4 NavigationRenumbered (Sonata position)
L3 MouseL5 MouseRenumbered
L4 SymbolsL2 SymbolsRenumbered
L5 NumbersL3 NumbersRenumbered
L6 F-Keysmerged into L6Combined with Media; chord trigger eliminated
L7 ClipboardL10 ClipboardRenumbered to "Cadence extra" range; trigger removed
L8 BracketsL9 BracketsRenumbered to "Cadence extra" range
L9 Code & CLIL7 Code & CLIRenumbered (Sonata position)
L10 InternationalL1 Overflow + InternationalRenumbered + renamed
L11 WorkspacesL8 Tiling WMRenumbered + renamed
L12 Firmware ControlL11 Firmware ControlRenumbered to "Cadence extra" range

Access key reassignment

Access keys reassigned by usage frequency × ergonomic strength × hold-detection safety. The Bsp+Spc chord trigger (formerly for F-Keys) is eliminated since L6 Fn+Media now has direct bilateral access via C+,. All access keys remain configured as Tap Dance for per-key tapping-term control.

Layerv1.8 accessv1.9 access
L1 Overflow + IntlD + H bilateral (was L10)Hold Spc (single thumb)
L2 SymbolsHold Bsp (was L4)Hold Bsp (unchanged)
L3 NumbersHold Ent (was L5)Hold Ent (unchanged)
L4 NavigationHold Spc (was L2)Hold Tab
L5 MouseHold Tab (was L3)F + U (Middle Top)
L6 Fn + MediaL1: W+Y · L6: Bsp+Spc chordC + , (Middle Bottom)
L7 Code & CLIX + . (was L9)W + Y (Ring Top)
L8 Tiling WMF + U (was L11)Z + / (Pinky Bottom)
L9 BracketsC + , (was L8)D + H (Index Bottom)
L10 ClipboardZ + / (was L7)no trigger (unreachable)
L11 FirmwareQ + ' long-hold (was L12)Q + ' long-hold (unchanged)

Other changes

Migration notes for users coming from v1.8.0

What is different from Cadenza

The Ferris Sweep has 34 keys (30 alpha + 4 thumb) versus the Corne Choc's 36 (30 alpha + 6 thumb). The two missing thumb keys force three structural decisions:

Cadenza (36)Cadence (34)Rationale
Esc on left thumb outerEsc on D-position (L2/L3 bottom row)Index-finger-down during Hold-Space — reachable without leaving home
Del on right thumb outerDel on right thumb inner (L2 / L6)Reassigned within the layers that need it
L6 F-Keys via Hold DelL6 F-Keys via Bsp + Spc chordHold Bsp → L4 active → Hold Spc-position → MO(6) → L6
L1 RGB & MediaL1 Media onlySweep has no RGB — feature dropped
L11 (WS Quick) + L12 (WS Full)L11 Workspaces (consolidated)Single unified WM layer, F/U → L11
(no firmware control layer)L12 Firmware ControlBootloader + reboot, accessible only via long pinky-top hold (500 ms) — deliberately uncomfortable
L10 with " dead-key onlyL10 with direct ä/ö/ü TDs + " fallbackMnemonic A/U/O placement, hold = capital. Faster than dead-key for daily writing.

Why Cadence over standard Miryoku

Cadence (via Cadenza) keeps Miryoku's core insight (layers via thumb holds, HRM on home row) and replaces the parts that don't serve the specific use case.

FeatureMiryokuCadence v1.9.0
HRM implementationMT() — global tipping termTap Dance — per-key tipping terms (200 / 250 ms)
Symbol layer designShifted symbols at numpad positionsFrequency + Strength ranking
Bracket accessScattered across layersL8: tap=open, hold=close, both halves, symmetric
Code & CLI layerNot standardL9: shell operators, path TD, expansion macros, pipe TD
German / InternationalNo supportL10: bilateral access · direct ä/ü/ö TDs on A/U/O · " dead key fallback · ß/€ via RAlt
Tiling WM integrationNoneL11 Workspaces (WS 1–10, focus, window-move, Kill/Float/Fullscreen)
Firmware controlNoneL12: bootloader + reboot, safety-gated 500 ms hold
Layer access keysThumb-onlyThumbs + top row + bottom row — priority by frequency × ergonomics
Inner column ruleG/M used for layer contentG/M never used for layer content
L6 access on a 34-key boardWould lose a layerBsp + Spc chord activation

Design Principles

1. No inner column for layer content

The inner column (G/M in Colemak-DH) requires a lateral inward index movement. G and M carry only their base letters plus App/Menu on hold. Never layer content. This rule holds without exception through v1.9.0.

2. Vertical movement only — no lateral stretches

Every layer access key requires straight vertical finger movement. Pinky down (Z//) → L7. Ring down (X/.) → L9. Middle down (C/,) → L8. Index down (D/H) → L10. Middle up (F/U) → L11. Ring up (W/Y) → L1.

3. Strongest finger gets highest priority

Index > Middle > Ring > Pinky. = (rank 1 symbol) sits on T. $ (rank 5) sits on N. AltGr and Meta on weaker fingers.

4. NEIO = ←↓↑→ on directional layers

The N-E-I-O home row positions carry ←/↓/↑/→ on L2 Navigation. The same pattern repeats on L11 Workspaces and L2 word-skip. Once learned, the spatial pattern transfers automatically.

5. No pinky-top holds — with one deliberate exception

Cadence enforces this rule strictly. The single exception: L12 Firmware Control on Q and ', with a 500 ms hold. The uncomfortable position plus the long hold serves as a deliberate safety mechanism for functions that must never accidentally trigger.

6. Frequency × Ergonomic quality = access key rank

The most-frequently-used layers earn the best key positions. Symbols (L4) → right thumb middle (Bsp). International (L10) → strongest index pair (D/H). F-Keys (L6, rare) → chord. Firmware Control (L12, very rare) → worst position with longest hold.

Layer Access Map

v1.9.0 reorganizes layer numbering and access keys for compatibility with Sonata v3.0. The first 9 modal layers (L1–L9) match Sonata's layer order, simplifying any future migration to Sonata hardware.

LayerNameAccessPositionNotes
L0BaseAlways activeColemak-DH + Tap Dance HRM
L1Overflow + InternationalHold SpcL thumb outerä Ä ö Ö ü Ü as TD · " dead key · ß · €
L2SymbolsHold BspR thumb outer= and - on thumbs · brackets as TD on right top
L3NumbersHold EntR thumb innerNumpad on left · 0 on Spc · - on Tab
L4NavigationHold TabL thumb innerArrows on right home · word jumps · Home/End/PgUp/PgDn
L5MouseHold F · Hold UMiddle TopStrong + safe pair · most-used non-thumb layer
L6Function Keys + MediaHold C · Hold ,Middle BottomF1–F12 left, media right · merged from v1.8 L1+L6
L7Code & CLIHold W · Hold YRing TopPipe macros · path/expansion/comparison TDs
L8Tiling WMHold Z · Hold /Pinky BottomWS 1–10 · numpad spatial memory · safest hold pair
L9BracketsHold D · Hold HIndex BottomBilateral mirror · tap = open, hold = close · needs term tuning
L10Clipboard(no trigger)Layer present but unreachable — user opts out
L11Firmware ControlLong-hold (500 ms) Q · 'Pinky TopSafety-gated bootloader access

Bilateral pair finger-symmetry

All five bilateral letter-pair triggers in v1.9.0 are finger-symmetric: the left-hand and right-hand triggers are played by the same finger on both hands, in the same row. This makes the muscle memory uniform — the brain learns "Mouse = both middle fingers, top row" rather than memorizing two separate positions.

LayerPairFingerRowLetter frequency
L5 MouseF + UMiddleTopmoderate (~2-3% each) — safe
L6 Fn+MediaC + ,MiddleBottomC ~3%, , very frequent in prose — riskier
L7 Code & CLIW + YRingTopboth rare — very safe
L8 Tiling WMZ + /PinkyBottomboth rare — safest pair
L9 BracketsD + HIndexBottom~5% each — needs tapping-term tuning

Frequency-driven assignment rationale

Layer access positions in v1.9.0 follow a deliberate priority: most-used layers get the strongest+safest finger pairs, least-used get the weakest. The user's actual usage hierarchy on a Windows corporate laptop drives the assignment:

  1. L5 Mouse (most used) → F+U Middle Top: strong finger, safe hold-detection. Used heavily on a laptop without trackpad-replacement options.
  2. L9 Brackets → D+H Index Bottom: strongest fingers, slight hold-risk on common letters. Acceptable for the second-most-used layer with tapping-term tuning.
  3. L7 Code & CLI → W+Y Ring Top: medium-strength position, very safe hold-detection. Used during shell/code work.
  4. L6 Fn+Media → C+, Middle Bottom: middle-finger curl, mid-frequency layer.
  5. L8 Tiling WM (currently not used) → Z+/ Pinky Bottom: weakest position, but safest hold-detection. Acceptable since user does not currently use a tiling WM.
  6. L10 Clipboard (currently not used) → no trigger: layer kept in firmware but unreachable; the user does not currently use it.

Layer Reference

All 12 layers as configured in the Vial keymap. Each card shows the complete 34-key board with activator highlighting, access-key markings on Base, and finger-position labels at the bottom of each key.

Active key
Layer activator (★ held)
Base-layer access key (Hold → Layer N)
No function on this layer
L1Triggers layer N
TDTap Dance
MMacro
L0 Base Always active

Colemak-DH alpha grid with Tap Dance Home Row Mods on the eight home positions (A R S T / N E I O). Layer triggers are placed by frequency × ergonomic strength: thumbs for the four most-used modal layers, bilateral letter pairs for the next five, long-hold pinky-top for safety-gated firmware control. L10 Clipboard has no access key by user choice.

L11QQ
L7WW
L5FF
PP
BB
TDAA
TDRR
TDSS
TDTT
TDGG
L8ZZ
TDXX
L6CC
L9DD
VV
L1SpcSpc
L4TabTab
JJ
LL
L5UU
L7YY
L11''
TDMM
TDNN
TDEE
TDII
TDOO
KK
L9HH
L6,,
TD..
L8//
L3EntEnt
L2BspBsp
L1 Overflow + International Hold Spc

German letters and currency: ä Ä ö Ö ü Ü as Tap Dance (tap = lowercase, hold = capital), ß and € as direct AltGr keycodes, " and ' as Tap Dance for either-hand access. Q and X are also reachable here for Sonata-compatibility (already on Cadence Base, but mirrored here so muscle memory transfers if the user later moves to Sonata hardware).

Q
W
F
P
B
TDä · ÄA
R
ßS
TD" · " T
G
Z
X
C
TD' · ' D
V
·★ Spc
Tab
J
L
TDü · ÜU
Y
'
M
TD" · " N
QE
XI
TDö · ÖO
K
TD' · ' H
,
.
/
Ent
EscBsp
L2 Symbols Hold Bsp

Symbols sorted by daily usage frequency in German IT writing, then assigned to fingers in strength order. - on Spc-thumb, = on Tab-thumb (the two most-used operators on the strongest positions). * on T (left index home, strongest finger after thumbs); ! on S; + on R; \ on A. Bracket pairs as Tap Dance on right top: (·) on L, [·] on U, {·} on Y, <·> on '. Prose punctuation on right home: . on N, , on E, "·' TD on I, ; on O. Less common math/logic on bottom rows.

~Q
@W
#F
$P
B
\A
+R
!S
*T
G
Z
X
_C
/D
V
-Spc
=Tab
J
TD( · )L
TD[ · ]U
TD< · >Y
TD{ · }'
M
.N
,E
TD' · "I
;O
K
?H
:,
%.
/
Ent
·★ Bsp
L3 Numbers Hold Ent

Numpad on the left hand: ring=1/4/7, middle=2/5/8, index=3/6/9. 0 on Spc-thumb, minus on Tab-thumb. Right hand carries math operators (+ − ×) on top, modifier mirror on home, keypad equivalents on bottom.

Q
7W
8F
9P
B
A
4R
5S
6T
G
Z
1X
2C
3D
V
0Spc
-Tab
J
+L
U
×Y
'
M
N
E
AltGrI
O
K
=H
,,
..
//
·★ Ent
Bsp
L4 Navigation Hold Tab

Arrow cluster on right home (← ↓ ↑ →). Word-jump (Ctrl+arrow) on right top. Home/PgDn/PgUp/End on right bottom. Modifier mirror on left home for Shift+arrow selection. Esc on Tab-thumb (trans on hold), Caps Lock on P-position.

Q
W
F
CapsP
B
A
R
S
T
G
Z
X
InsC
D
V
Spc
·★ Tab
J
C+←L
C+↓U
C+↑Y
C+→'
M
N
E
I
O
K
HomeH
PgDn,
PgUp.
End/
DelEnt
BspBsp
L5 Mouse Hold F or Hold U

Most-used non-thumb layer per the user's workflow (Windows corporate laptop, no trackpad-replacement). Bilateral activation via F or U (both Middle Top — strong finger, safe hold-detection). Cursor on right home, scroll wheel on right bottom, mouse buttons on right thumbs (Bsp=MB1, Ent=MB2). Tab-thumb=Esc; Spc-thumb=MB3 (middle click).

Q
W
·★ F
P
B
A
R
S
T
G
Z
X
C
D
V
MB3Spc
EscTab
J
L
·★ U
Y
'
M
M←N
M↓E
M↑I
M→O
K
Wh←H
Wh↓,
Wh↑.
Wh→/
MB2Ent
MB1Bsp
L6 Function Keys + Media Hold C or Hold ,

Merged in v1.9 from the former L1 Media + L6 F-Keys. F1–F12 on left in numpad-spatial layout (matches L_NUM and L_WM positions for muscle-memory transfer): ring=F4/F7/F1, middle=F5/F8/F2, index=F6/F9/F3; F10/F11/F12 on pinky column. Right hand carries media controls: Prev/Vol−/Vol+/Next on home, Bri−/Bri+ on bottom, Mute/Play-Stop TD on thumbs.

F12Q
F7W
F8F
F9P
B
F11A
F4R
F5S
F6T
G
F10Z
F1X
F2★ C
F3D
V
Spc
Tab
J
L
U
Y
'
M
PrevN
Vol−E
Vol+I
NextO
K
H
Bri−★ ,
Bri+.
/
MuteEnt
TDPlay · StopBsp
L7 Code & CLI Hold W or Hold Y

Shell-tuned layer activated bilaterally via W or Y (Ring Top, low-frequency letters → safe hold-detection). Left home: || on A, 2>&1 on R, && on S, pipe Tap Dance on T (tap = |, hold =  |  with surrounding spaces for shell readability). Left bottom: backtick ` on C, backslash \ on D. Right home as Tap Dances: path TD on N (tap = /, hold = ~/, double = ../); shell expansion TD on E (tap = $(), hold = ${}); comparison TD on I (tap = !=, hold = ==); arrow TD on O (tap = =>, hold = ->). Right bottom: $? macro on H (last command exit status), tilde ~ on comma position.

Q
·★ W
F
P
B
M||A
M2>&1R
M&&S
TD| / | T
G
Z
X
`C
\D
V
Spc
Tab
J
L
U
·★ Y
'
M
TD/ · ../N
TD$() · ${}E
TD!= · ==I
TD=> · ->O
K
M$?H
~,
.
/
Ent
Bsp
L8 Tiling WM Hold Z or Hold /

Bilateral activation via Z or / (Pinky Bottom — both letters very rare in DE+EN, safest hold-detection of all bilateral pairs). Workspaces 1–9 on left in numpad spatial layout (matches L_NUM): X/C/D = WS1/2/3, R/S/T = WS4/5/6, W/F/P = WS7/8/9. WS10 on Spc-thumb. Right hand carries window focus arrows (⌘+arrow) on home and window-move arrows (⌘⇧+arrow) on bottom.

Q
TD⌘+7 · S⌘+7W
TD⌘+8 · S⌘+8F
TD⌘+9 · S⌘+9P
B
A
TD⌘+4 · S⌘+4R
TD⌘+5 · S⌘+5S
TD⌘+6 · S⌘+6T
G
·★ Z
TD⌘+1 · S⌘+1X
TD⌘+2 · S⌘+2C
TD⌘+3 · S⌘+3D
V
TD⌘+0 · S⌘+0Spc
S⌘+QTab
J
L
U
Y
'
M
⌘+←N
⌘+↓E
⌘+↑I
⌘+→O
K
S⌘+←H
S⌘+↓,
S⌘+↑.
S⌘+→★ /
⌘+SpcEnt
⌘+FBsp
L9 Brackets Hold D or Hold H

Bilateral mirror of bracket pairs as Tap Dance (tap = open, hold or double-tap = close). Bilateral access via D or H (Index Bottom — strongest fingers; needs HOLD_ON_OTHER_KEY_PRESS + tapping-term tuning since both letters are common ~5%). Brackets are also available on L_SYM, but L_BRK provides the bilateral mirror for two-handed code entry.

Q
W
F
P
B
TD{ · }A
TD< · >R
TD[ · ]S
TD( · )T
G
Z
X
C
·★ D
V
Spc
Tab
J
L
U
Y
'
M
TD( · )N
TD[ · ]E
TD< · >I
TD{ · }O
K
·★ H
,
.
\/
Ent
Bsp
L10 Clipboard No trigger (intentional — currently unused)

Layer present in firmware but no access key assigned. Per user decision: clipboard layer is not currently in active use, so no trigger has been allocated. Layer can be reactivated at any time by adding a hold target in Vial.

UndoQ
CutW
CopyF
PasteP
RedoB
A
R
S
T
AppG
UndoZ
CutX
CopyC
PasteD
RedoV
MB1Spc
MB2Tab
RedoJ
PasteL
CopyU
CutY
Undo'
AppM
N
E
AltGrI
O
RedoK
PasteH
Copy,
Cut.
Undo/
MB2Ent
MB1Bsp
L11 Firmware Control Long-hold (500 ms) Q or '

Safety-gated bootloader access. Q (left pinky top) and ' (right pinky top) both act as Tap Dance with 500 ms tapping term — accidental triggering on prose typing is unlikely. Hold opens the layer where QK_BOOT (bootloader) and QK_REBOOT live on the home row.

·★ Q
W
F
P
B
A
R
BOOTS
REBOOTT
G
Z
X
C
D
V
Spc
Tab
J
L
U
Y
·★ '
M
REBOOTN
BOOTE
I
O
K
H
,
.
/
Ent
Bsp

Tap Dance Reference

Cadence v1.9.0 uses 50 of 64 available Tap Dance slots. The remaining slots (TD(10), TD(21), TD(52)–TD(63)) are reserved for future expansion. All values are extracted directly from the Vial configuration file.

Tap Dance summary by group

GroupCountUsed in
Home Row Mods10L0 Base
Layer access keys (top row)6L0 Base
Layer access keys (bottom row)8L0 Base
Action TDs (Media)1L6 Fn+Media
Action TDs (Symbols/Brackets)5L2 Symbols, L9 Brackets
Action TDs (Code & CLI)7L7 Code & CLI
Action TDs (Workspaces)10L8 Tiling WM
Action TDs (Umlaut capitals)3L1 Overflow + International
Total used50

Detailed Tap Dance table

TD#TapHoldDoubleTap-HoldTermUsed in
Home Row Mods — left hand
TD(0)A250 msL0 Base (HRM)
TD(1)R200 msL0 Base (HRM)
TD(2)S200 msL0 Base (HRM)
TD(3)T200 msL0 Base (HRM)
TD(4)G200 msL0 Base (HRM)
Home Row Mods — right hand
TD(5)MApp200 msL0 Base (HRM)
TD(6)N200 msL0 Base (HRM)
TD(7)E200 msL0 Base (HRM)
TD(8)IAltGr200 msL0 Base (HRM)
TD(9)O250 msL0 Base (HRM)
Layer access — top row
TD(11)W→ L7200 msL0 → Hold to L7
TD(14)F→ L5200 msL0 → Hold to L5
TD(22)U→ L5200 msL0 → Hold to L5
TD(23)Y→ L7200 msL0 → Hold to L7
TD(46)Q→ L11500 msL0 → Long-hold to L11
TD(47)'→ L11500 msL0 → Long-hold to L11
Layer access — bottom row
TD(12)Z→ L8200 msL0 → Hold to L8
TD(13)/→ L8200 msL0 → Hold to L8
TD(15)X200 msL0 (no hold)
TD(16)C→ L6200 msL0 → Hold to L6
TD(17)D→ L9200 msL0 → Hold to L9
TD(18)H→ L9200 msL0 → Hold to L9
TD(19),→ L6200 msL0 → Hold to L6
TD(20).200 msL0 (no hold)
Action TDs — Media (L6)
TD(24)MPLYMSTP200 msL6 R thumb
Action TDs — Symbols / Brackets (L2 / L9)
TD(25)())200 msL2 R idx top, L9 R idx home, L9 L idx home
TD(26)[]]200 msL2 R mid top, L9 R mid home, L9 L mid home
TD(27)<>>200 msL2 R ring top, L9 R ring home, L9 L ring home
TD(28){}}200 msL2 R pinky top, L9 R pinky home, L9 L pinky home
TD(51)'"200 msL2 I position
Action TDs — Code & CLI (L7)
TD(29)/Macro 1Macro 6200 msL7 R idx home
TD(30)Macro 8Macro 9200 msL7 R mid home
TD(31)Macro 12Macro 13200 msL7 R ring home
TD(32)Macro 14Macro 15200 msL7 R pinky home
TD(33)"Macro 4200 msL1 T position, L1 N position
TD(34)'Macro 2Macro 3200 msL1 D position, L1 H position
TD(45)|Macro 5200 msL7 T position
Action TDs — Workspaces (L8)
TD(35)⌘+1⌘⇧+1200 msL8 X
TD(36)⌘+2⌘⇧+2200 msL8 C
TD(37)⌘+3⌘⇧+3200 msL8 D
TD(38)⌘+4⌘⇧+4200 msL8 R
TD(39)⌘+5⌘⇧+5200 msL8 S
TD(40)⌘+6⌘⇧+6200 msL8 T
TD(41)⌘+7⌘⇧+7200 msL8 W
TD(42)⌘+8⌘⇧+8200 msL8 F
TD(43)⌘+9⌘⇧+9200 msL8 P
TD(44)⌘+0⌘⇧+0200 msL8 Spc thumb
Action TDs — Umlaut capitals (L1)
TD(48)AltGr+QMacro 16200 msL1 A position
TD(49)AltGr+YMacro 17200 msL1 U position (right ring top)
TD(50)AltGr+PMacro 18200 msL1 O position

Macro Reference

Cadence v1.9.0 uses 19 of 32 available macro slots. Macros are categorised by purpose: shell helpers, code operators, and German uppercase umlauts.

Shell helpers

MacroOutputAction sequencePurpose
M0$?Text: $?Shell: last command exit status
M1~/Text: ~/Shell: home directory shortcut
M5 | Text: | Shell: pipe with surrounding spaces
M6../Text: ../Shell: parent directory
M72>&1Text: 2>&1Shell: redirect stderr to stdout
M8$()Tap: $ ( ) LEFTShell: command substitution (cursor inside)
M9${}Tap: $ { } LEFTShell: variable expansion (cursor inside)
M10&&Text: &&Shell: logical AND
M11||Text: ||Shell: logical OR

Code operators

MacroOutputAction sequencePurpose
M12!=Text: !=Code: not-equal comparison
M13==Text: ==Code: equality comparison
M14=>Text: =>Code: fat arrow (lambdas)
M15->Text: ->Code: thin arrow (function return type, pointer member)

German uppercase umlauts

QMK keycode S(RALT(KC_X)) is supported, but Vial UI represents these via macros for clarity. The action sequence below uses explicit Shift+AltGr down/up to ensure consistent behaviour across operating systems.

MacroOutputAction sequencePurpose
M16ÄHold down: ⇧ AltGr → Tap: Q → Release: AltGr ⇧Capital ä via Shift+AltGr+Q
M17ÜHold down: ⇧ AltGr → Tap: Y → Release: AltGr ⇧Capital ü via Shift+AltGr+Y
M18ÖHold down: ⇧ AltGr → Tap: P → Release: AltGr ⇧Capital ö via Shift+AltGr+P

Apostrophe / quote dead-key helpers

On dead-key keyboard layouts (US-International, German with dead keys), pressing apostrophe or quote alone produces no output until the next keystroke. These macros explicitly type the apostrophe + space to commit the character.

MacroOutputAction sequencePurpose
M2' Tap: ' SpcApostrophe + space (macro for dead-key avoidance)
M3' ' ' Tap: ' Spc ' Spc ' SpcThree apostrophe-spaces (markdown italic dance)
M4" Tap: " SpcDouble quote + space (macro for dead-key avoidance)

Firmware Notes

Vial-QMK build

Cadence v1.9.0 uses 50/64 Tap Dance slots. The standard Vial-Sweep firmware build ships with 48 entries — a custom build with TAP_DANCE_ENTRIES = 64 is required for v1.8 because TD(50) is now occupied.

Set in keyboards/ferris/sweep/keymaps/vial/config.h:

#define TAP_DANCE_ENTRIES 64

Mouse / scroll settings

The Vial settings section in v1.9.0 contains tuned QMK settings (unchanged from v1.5.0–v1.8.0). The values are stored as numeric Vial setting IDs that depend on the specific firmware build. Documenting the semantic mapping is on the v2.0 ROADMAP.

OS keyboard layout

Set the OS keyboard layout to US International. Required for:

Loading the layout

Open Vial → File → Load saved layout → select configuration/Cadence-FerrisSweep_v1_8_0.vil.

Recovery

If the keyboard becomes unresponsive: enter the bootloader by holding Q for 500 ms (left half) or ' for 500 ms (right half), then press the S-position (QK_BOOT). The half will appear as a USB drive; drop the .uf2 firmware file onto it.