Shift the right half's top two rows: 6 and F6 lead the right hand

Resolves the ragged outer edge on both halves at once. Left drops to 34 keys
in six columns each five deep, with no orphans. Right goes to 41: six full
columns, then F12/=/]/Enter, then Bksp and backslash sharing the outer pinky
column instead of backslash sitting alone two columns out.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
William Rickert
2026-08-27 15:09:21 -05:00
co-authored by Claude Opus 5
parent 13c5ca5d5d
commit 5e527bb7b9
4 changed files with 114 additions and 118 deletions
+17 -19
View File
@@ -11,8 +11,8 @@ Status: **design**. No boards ordered, no firmware written.
| Board | Qty | Keys | Carries |
|---|---|---|---|
| `hardware/half-left` | 1 | **36** | MCU, matrix, USB-C, SBU split link |
| `hardware/half-right` | 1 | **39** | MCU, matrix, USB-C, SBU split link |
| `hardware/half-left` | 1 | **34** | MCU, matrix, USB-C, SBU split link |
| `hardware/half-right` | 1 | **41** | MCU, matrix, USB-C, SBU split link |
| `hardware/numpad` | 1 | 25 (16 numpad + 9 nav) | MCU, matrix, 1 encoder, **CH334R hub**, 3 downstream ports |
**Numpad layout is settled** — see `docs/numpad-layout.svg`, and
@@ -148,7 +148,7 @@ for footprints — don't draw them.
### The halves are two different boards
Splitting a full 104 at the 6/T/G/B boundary gives **36 keys left, 39 right**
Splitting a full 104 gives **34 keys left, 41 right** (after moving `6`/`F6` right)
the right side inherits Backspace, Enter, both brackets, the backslash and an
extra bottom-row key. They are therefore *not* mirrors, and the earlier plan of
one layout flipped for both halves does not survive.
@@ -199,27 +199,25 @@ board is used less.
`docs/half-right-staggered.svg`.
### The ragged outer edge — an open decision
### The outer edge — resolved
Splitting a row-staggered 104 leaves keys that have no column to belong to,
because the number row and the alpha rows are cut half a unit apart.
Splitting a row-staggered 104 leaves keys with no column to belong to: the
number row and the alpha rows are cut half a unit apart, so `6` sits between `T`
and `Y` with no alpha beneath it.
- **Left half:** `6` and `F6` end up alone in a 2-key column. `6` sits at x=6.0,
`T` at x=5.5, `Y` at x=6.5 — so `6` is *between* T and Y, and falls left of
the cut with no alpha beneath it.
- **Right half:** worse. Six clean columns, then an outer pinky column holding
Bksp / `]` / Enter, and **`\` alone in an eighth column**.
**Resolved by shifting the right half's top two rows over one column**, so `6`
leads the number row and `F6` leads the function row, both sitting above `Y`.
Three ways to resolve it, undecided:
- **Left: 34 keys, six columns, every one five deep.** No orphans at all.
- **Right: 41 keys.** Six full columns, then `F12`/`=`/`]`/`Enter`, then `Bksp`
and `\` sharing the outer pinky column.
1. **Keep it.** Authentic to touch-typing — `6` really is a left-index stretch.
2. **Move `6`/`F6` right**, aligned above `Y`. Left becomes a clean 6 columns at
34 keys, right goes to 41.
3. **Duplicate `6` on both halves.** What the ErgoDox does. Costs one key, ends
the argument.
`\` no longer sits alone two columns out — it pairs with Backspace, and both
are genuine outer-pinky reaches. `docs/half-left-staggered.svg`,
`docs/half-right-staggered.svg`.
`\` has no equivalent escape — it either gets its own outer column, moves onto
a layer, or takes a thumb slot.
Still open: the right thumb is carrying **five** keys (Space / Alt / Win / Menu
/ Ctrl) and one thumb will not cover five. Menu is the obvious deletion.
### Tenting
+4 -4
View File
@@ -16,8 +16,8 @@ ALL,MCU,R1-R2,2,22R 0402,FRC0402F22R0TS,C2929994,0402,Extended,0.0007,"USB D+/D-
ALL,MCU,R3-R4,2,5.1k 0402,JLC basic library,-,0402,Basic,0.002,"USB-C CC1/CC2 pull-DOWN (Rd - device side)"
ALL,MCU,R5,1,1.5k 0402,JLC basic library,-,0402,Basic,0.002,"*** SWAP-DEPENDENT *** D+ pull-up. POPULATE for STM32F103. DNF for CH32L103 (internal 1.5k via RB_UC_DEV_PU_EN)"
ALL,MCU,R6-R7,2,10k 0402,FRC0402F1002TS,C25744,0402,Basic,0.003,"BOOT0 pulldown, BOOT1/PB2 pulldown"
HALF-L,Matrix,D1-D36,36,1N4148W,1N4148W,C81598,SOD-123,Basic,0.011,"Left half: 36 keys"
HALF-R,Matrix,D1-D39,39,1N4148W,1N4148W,C81598,SOD-123,Basic,0.011,"Right half: 39 keys"
HALF-L,Matrix,D1-D34,34,1N4148W,1N4148W,C81598,SOD-123,Basic,0.011,"Left half: 34 keys, six clean columns"
HALF-R,Matrix,D1-D41,41,1N4148W,1N4148W,C81598,SOD-123,Basic,0.011,"Right half: 41 keys"
HALF-L/R,Split,R14,1,100R 0402,JLC basic library,-,0402,Basic,0.002,"Series on the SBU net between connector and MCU USART pin"
HALF-L/R,Split,D-ESD,1,ESD 5V bidirectional,PESD5V0S1BA,C2827694,SOD-323,Extended,0.036,"On the SBU net - user-exposed signal going to a GPIO"
HALF-L/R,Split,J3,1,3-pin header DNF,JST SH,-,-,Consigned,0.02,"*** DNF INSURANCE *** VCC/GND/DATA fallback if SBU proves flaky (bad cables). 3 pads cost nothing"
@@ -36,8 +36,8 @@ NUMPAD,Hub,U8-U10,3,Ideal diode / OCP,CH213K,C5456874,SOT-23-3,Extended,0.073,"V
NUMPAD,Hub,R8-R13,6,56k 0402,FRC0402F5602TS,C2906875,0402,Extended,0.0018,"Rp pull-UPS on CC1/CC2 of each downstream port - host side. NOT 5.1k"
NUMPAD,SBU,-,-,SBU PASS-THROUGH,-,-,-,-,0.00,"*** Passive trace *** Tie SBU1+SBU2 on J5 (left half) and on J6 (right half), then connect the two nets together. Carries QMK split_common UART between the halves. Numpad MCU does NOT touch this net"
NUMPAD,SBU,D-ESD2,2,ESD 5V bidirectional,PESD5V0S1BA,C2827694,SOD-323,Extended,0.036,"One per half-port SBU net"
HALF-L,Switches,SW-,36,MX hotswap socket,CPG151101S11,C41430893,SMD 14.5x5.9mm,Extended,0.037,"BOTTOM SIDE. Alt: C49352235"
HALF-R,Switches,SW-,39,MX hotswap socket,CPG151101S11,C41430893,SMD 14.5x5.9mm,Extended,0.037,"BOTTOM SIDE. Alt: C49352235"
HALF-L,Switches,SW-,34,MX hotswap socket,CPG151101S11,C41430893,SMD 14.5x5.9mm,Extended,0.037,"BOTTOM SIDE. Alt: C49352235"
HALF-R,Switches,SW-,41,MX hotswap socket,CPG151101S11,C41430893,SMD 14.5x5.9mm,Extended,0.037,"BOTTOM SIDE. Alt: C49352235"
NUMPAD,Switches,SW-,25,MX hotswap socket,CPG151101S11,C41430893,SMD 14.5x5.9mm,Extended,0.037,"One per key. BOTTOM SIDE"
NOTE,Assembly,-,-,SINGLE-SIDED,-,-,-,-,-,"Put ALL SMD on the BOTTOM: sockets, MCU, passives, diodes, and any reverse-mount SK6812MINI-E. Top face bare except switch holes. Keeps JLC to one assembly pass"
NOTE,Mechanical,-,-,PLATE REQUIRED,-,-,-,-,-,"Hotswap needs a switch plate or socket pads tear off during switch insertion. FR4 plate = just another JLC board"
1 Board Section Ref Qty Value MPN LCSC Package JLC Unit USD Notes
16 ALL MCU R3-R4 2 5.1k 0402 JLC basic library - 0402 Basic 0.002 USB-C CC1/CC2 pull-DOWN (Rd - device side)
17 ALL MCU R5 1 1.5k 0402 JLC basic library - 0402 Basic 0.002 *** SWAP-DEPENDENT *** D+ pull-up. POPULATE for STM32F103. DNF for CH32L103 (internal 1.5k via RB_UC_DEV_PU_EN)
18 ALL MCU R6-R7 2 10k 0402 FRC0402F1002TS C25744 0402 Basic 0.003 BOOT0 pulldown, BOOT1/PB2 pulldown
19 HALF-L Matrix D1-D36 D1-D34 36 34 1N4148W 1N4148W C81598 SOD-123 Basic 0.011 Left half: 36 keys Left half: 34 keys, six clean columns
20 HALF-R Matrix D1-D39 D1-D41 39 41 1N4148W 1N4148W C81598 SOD-123 Basic 0.011 Right half: 39 keys Right half: 41 keys
21 HALF-L/R Split R14 1 100R 0402 JLC basic library - 0402 Basic 0.002 Series on the SBU net between connector and MCU USART pin
22 HALF-L/R Split D-ESD 1 ESD 5V bidirectional PESD5V0S1BA C2827694 SOD-323 Extended 0.036 On the SBU net - user-exposed signal going to a GPIO
23 HALF-L/R Split J3 1 3-pin header DNF JST SH - - Consigned 0.02 *** DNF INSURANCE *** VCC/GND/DATA fallback if SBU proves flaky (bad cables). 3 pads cost nothing
36 NUMPAD Hub R8-R13 6 56k 0402 FRC0402F5602TS C2906875 0402 Extended 0.0018 Rp pull-UPS on CC1/CC2 of each downstream port - host side. NOT 5.1k
37 NUMPAD SBU - - SBU PASS-THROUGH - - - - 0.00 *** Passive trace *** Tie SBU1+SBU2 on J5 (left half) and on J6 (right half), then connect the two nets together. Carries QMK split_common UART between the halves. Numpad MCU does NOT touch this net
38 NUMPAD SBU D-ESD2 2 ESD 5V bidirectional PESD5V0S1BA C2827694 SOD-323 Extended 0.036 One per half-port SBU net
39 HALF-L Switches SW- 36 34 MX hotswap socket CPG151101S11 C41430893 SMD 14.5x5.9mm Extended 0.037 BOTTOM SIDE. Alt: C49352235
40 HALF-R Switches SW- 39 41 MX hotswap socket CPG151101S11 C41430893 SMD 14.5x5.9mm Extended 0.037 BOTTOM SIDE. Alt: C49352235
41 NUMPAD Switches SW- 25 MX hotswap socket CPG151101S11 C41430893 SMD 14.5x5.9mm Extended 0.037 One per key. BOTTOM SIDE
42 NOTE Assembly - - SINGLE-SIDED - - - - - Put ALL SMD on the BOTTOM: sockets, MCU, passives, diodes, and any reverse-mount SK6812MINI-E. Top face bare except switch holes. Keeps JLC to one assembly pass
43 NOTE Mechanical - - PLATE REQUIRED - - - - - Hotswap needs a switch plate or socket pads tear off during switch insertion. FR4 plate = just another JLC board
+43 -46
View File
@@ -1,47 +1,44 @@
<svg width="100%" viewBox="0 0 680 721" role="img" xmlns="http://www.w3.org/2000/svg">
<title>Left half, column-staggered with a thumb cluster</title>
<desc>The same thirty-six keys as the straight 104 split, but each column offset vertically to match finger length, and the spacebar broken into a four-key thumb cluster stepped below the inner columns.</desc>
<text class="th" x="18" y="24">Left half &#8212; column stagger + thumb cluster</text>
<text class="ts" x="18" y="44">Same 36 keys. Columns offset for finger length; the spacebar row becomes a thumb cluster.</text>
<g class="c-teal"><rect x="88" y="108" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="121" y="144" text-anchor="middle">Esc</text></g>
<g class="c-teal"><rect x="88" y="205" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="121" y="241" text-anchor="middle">`</text></g>
<g class="c-teal"><rect x="88" y="277" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="121" y="313" text-anchor="middle">Tab</text></g>
<g class="c-teal"><rect x="88" y="349" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="121" y="385" text-anchor="middle">Caps</text></g>
<g class="c-teal"><rect x="88" y="421" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="121" y="457" text-anchor="middle">Shift</text></g>
<g class="c-teal"><rect x="160" y="104" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="193" y="140" text-anchor="middle">F1</text></g>
<g class="c-teal"><rect x="160" y="200" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="193" y="236" text-anchor="middle">1</text></g>
<g class="c-teal"><rect x="160" y="272" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="193" y="308" text-anchor="middle">Q</text></g>
<g class="c-teal"><rect x="160" y="344" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="193" y="380" text-anchor="middle">A</text></g>
<g class="c-teal"><rect x="160" y="416" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="193" y="452" text-anchor="middle">Z</text></g>
<g class="c-teal"><rect x="232" y="88" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="265" y="124" text-anchor="middle">F2</text></g>
<g class="c-teal"><rect x="232" y="185" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="265" y="221" text-anchor="middle">2</text></g>
<g class="c-teal"><rect x="232" y="257" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="265" y="293" text-anchor="middle">W</text></g>
<g class="c-teal"><rect x="232" y="329" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="265" y="365" text-anchor="middle">S</text></g>
<g class="c-teal"><rect x="232" y="401" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="265" y="437" text-anchor="middle">X</text></g>
<g class="c-teal"><rect x="304" y="78" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="337" y="114" text-anchor="middle">F3</text></g>
<g class="c-teal"><rect x="304" y="174" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="337" y="210" text-anchor="middle">3</text></g>
<g class="c-teal"><rect x="304" y="246" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="337" y="282" text-anchor="middle">E</text></g>
<g class="c-teal"><rect x="304" y="318" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="337" y="354" text-anchor="middle">D</text></g>
<g class="c-teal"><rect x="304" y="390" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="337" y="426" text-anchor="middle">C</text></g>
<g class="c-teal"><rect x="376" y="85" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="409" y="121" text-anchor="middle">F4</text></g>
<g class="c-teal"><rect x="376" y="182" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="409" y="218" text-anchor="middle">4</text></g>
<g class="c-teal"><rect x="376" y="254" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="409" y="290" text-anchor="middle">R</text></g>
<g class="c-teal"><rect x="376" y="326" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="409" y="362" text-anchor="middle">F</text></g>
<g class="c-teal"><rect x="376" y="398" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="409" y="434" text-anchor="middle">V</text></g>
<g class="c-teal"><rect x="448" y="97" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="481" y="133" text-anchor="middle">F5</text></g>
<g class="c-teal"><rect x="448" y="193" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="481" y="229" text-anchor="middle">5</text></g>
<g class="c-teal"><rect x="448" y="265" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="481" y="301" text-anchor="middle">T</text></g>
<g class="c-teal"><rect x="448" y="337" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="481" y="373" text-anchor="middle">G</text></g>
<g class="c-teal"><rect x="448" y="409" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="481" y="445" text-anchor="middle">B</text></g>
<g class="c-teal"><rect x="520" y="108" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="553" y="144" text-anchor="middle">F6</text></g>
<g class="c-teal"><rect x="520" y="205" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="553" y="241" text-anchor="middle">6</text></g>
<g class="c-coral"><rect x="272" y="514" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="305" y="550" text-anchor="middle">Ctrl</text></g>
<g class="c-coral"><rect x="344" y="524" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="377" y="560" text-anchor="middle">Win</text></g>
<g class="c-coral"><rect x="416" y="537" width="66" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="449" y="573" text-anchor="middle">Alt</text></g>
<g class="c-coral"><rect x="488" y="553" width="102" height="66" rx="4" stroke-width="0.5"/><text class="ts" x="539" y="589" text-anchor="middle">Space</text></g>
<g class="c-teal"><rect x="18" y="659" width="13" height="13" rx="3" stroke-width="0.5"/></g>
<text class="ts" x="37" y="669">Alphas &#183; 32, column-staggered</text>
<g class="c-coral"><rect x="318" y="659" width="13" height="13" rx="3" stroke-width="0.5"/></g>
<text class="ts" x="337" y="669">Thumb cluster &#183; 4</text>
<text class="ts" x="18" y="699">Middle-finger column sits highest, pinky and inner-reach columns drop ~0.4u. Thumb keys step down and inward.</text>
<svg width="100%" viewBox="0 0 680 706" role="img" xmlns="http://www.w3.org/2000/svg">
<title>Left half &#8212; 34 keys, six clean columns</title><desc>6 and F6 moved to the right half. Every column is now five keys deep.</desc>
<text class="th" x="18" y="24">Left half &#8212; 34 keys, six clean columns</text>
<text class="ts" x="18" y="44">6 and F6 moved to the right half. Every column is now five keys deep.</text>
<g class="c-teal"><rect x="130" y="107" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="142" text-anchor="middle">Esc</text></g>
<g class="c-teal"><rect x="130" y="201" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="236" text-anchor="middle">`</text></g>
<g class="c-teal"><rect x="130" y="271" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="306" text-anchor="middle">Tab</text></g>
<g class="c-teal"><rect x="130" y="341" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="376" text-anchor="middle">Caps</text></g>
<g class="c-teal"><rect x="130" y="411" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="446" text-anchor="middle">Shift</text></g>
<g class="c-teal"><rect x="200" y="103" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="138" text-anchor="middle">F1</text></g>
<g class="c-teal"><rect x="200" y="197" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="232" text-anchor="middle">1</text></g>
<g class="c-teal"><rect x="200" y="267" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="302" text-anchor="middle">Q</text></g>
<g class="c-teal"><rect x="200" y="337" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="372" text-anchor="middle">A</text></g>
<g class="c-teal"><rect x="200" y="407" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="442" text-anchor="middle">Z</text></g>
<g class="c-teal"><rect x="270" y="88" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="123" text-anchor="middle">F2</text></g>
<g class="c-teal"><rect x="270" y="182" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="217" text-anchor="middle">2</text></g>
<g class="c-teal"><rect x="270" y="252" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="287" text-anchor="middle">W</text></g>
<g class="c-teal"><rect x="270" y="322" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="357" text-anchor="middle">S</text></g>
<g class="c-teal"><rect x="270" y="392" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="427" text-anchor="middle">X</text></g>
<g class="c-teal"><rect x="340" y="78" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="113" text-anchor="middle">F3</text></g>
<g class="c-teal"><rect x="340" y="172" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="207" text-anchor="middle">3</text></g>
<g class="c-teal"><rect x="340" y="242" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="277" text-anchor="middle">E</text></g>
<g class="c-teal"><rect x="340" y="312" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="347" text-anchor="middle">D</text></g>
<g class="c-teal"><rect x="340" y="382" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="417" text-anchor="middle">C</text></g>
<g class="c-teal"><rect x="410" y="85" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="120" text-anchor="middle">F4</text></g>
<g class="c-teal"><rect x="410" y="179" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="214" text-anchor="middle">4</text></g>
<g class="c-teal"><rect x="410" y="249" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="284" text-anchor="middle">R</text></g>
<g class="c-teal"><rect x="410" y="319" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="354" text-anchor="middle">F</text></g>
<g class="c-teal"><rect x="410" y="389" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="424" text-anchor="middle">V</text></g>
<g class="c-teal"><rect x="480" y="96" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="512" y="131" text-anchor="middle">F5</text></g>
<g class="c-teal"><rect x="480" y="190" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="512" y="225" text-anchor="middle">5</text></g>
<g class="c-teal"><rect x="480" y="260" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="512" y="295" text-anchor="middle">T</text></g>
<g class="c-teal"><rect x="480" y="330" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="512" y="365" text-anchor="middle">G</text></g>
<g class="c-teal"><rect x="480" y="400" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="512" y="435" text-anchor="middle">B</text></g>
<g class="c-coral"><rect x="238" y="502" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="270" y="537" text-anchor="middle">Ctrl</text></g>
<g class="c-coral"><rect x="308" y="512" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="340" y="547" text-anchor="middle">Win</text></g>
<g class="c-coral"><rect x="378" y="525" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="410" y="560" text-anchor="middle">Alt</text></g>
<g class="c-coral"><rect x="448" y="540" width="99" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="498" y="575" text-anchor="middle">Space</text></g>
<g class="c-teal"><rect x="18" y="644" width="13" height="13" rx="3" stroke-width="0.5"/></g>
<text class="ts" x="37" y="654">Alphas &#183; 30</text>
<g class="c-coral"><rect x="268" y="644" width="13" height="13" rx="3" stroke-width="0.5"/></g>
<text class="ts" x="287" y="654">Thumb cluster &#183; 4</text>
<text class="ts" x="18" y="684">Six columns, no orphans. ~6u wide, about 114 mm.</text>
</svg>

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

+50 -49
View File
@@ -1,50 +1,51 @@
<svg width="100%" viewBox="0 0 680 675" role="img" xmlns="http://www.w3.org/2000/svg">
<title>Right half, column-staggered with a thumb cluster</title>
<desc>Thirty-nine keys in eight columns. Six clean finger columns, then a ragged outer pinky edge holding Backspace, right bracket and Enter, plus a single backslash beyond it.</desc>
<text class="th" x="18" y="24">Right half &#8212; column stagger + thumb cluster</text>
<text class="ts" x="18" y="44">Same 39 keys. Six clean columns, then the outer pinky edge goes ragged.</text>
<g class="c-purple"><rect x="52" y="95" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="82" y="128" text-anchor="middle">F7</text></g>
<g class="c-purple"><rect x="52" y="184" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="82" y="217" text-anchor="middle">7</text></g>
<g class="c-purple"><rect x="52" y="250" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="82" y="283" text-anchor="middle">Y</text></g>
<g class="c-purple"><rect x="52" y="316" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="82" y="349" text-anchor="middle">H</text></g>
<g class="c-purple"><rect x="52" y="382" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="82" y="415" text-anchor="middle">N</text></g>
<g class="c-purple"><rect x="118" y="85" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="148" y="118" text-anchor="middle">F8</text></g>
<g class="c-purple"><rect x="118" y="173" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="148" y="206" text-anchor="middle">8</text></g>
<g class="c-purple"><rect x="118" y="239" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="148" y="272" text-anchor="middle">U</text></g>
<g class="c-purple"><rect x="118" y="305" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="148" y="338" text-anchor="middle">J</text></g>
<g class="c-purple"><rect x="118" y="371" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="148" y="404" text-anchor="middle">M</text></g>
<g class="c-purple"><rect x="184" y="78" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="214" y="111" text-anchor="middle">F9</text></g>
<g class="c-purple"><rect x="184" y="166" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="214" y="199" text-anchor="middle">9</text></g>
<g class="c-purple"><rect x="184" y="232" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="214" y="265" text-anchor="middle">I</text></g>
<g class="c-purple"><rect x="184" y="298" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="214" y="331" text-anchor="middle">K</text></g>
<g class="c-purple"><rect x="184" y="364" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="214" y="397" text-anchor="middle">,</text></g>
<g class="c-purple"><rect x="250" y="87" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="280" y="120" text-anchor="middle">F10</text></g>
<g class="c-purple"><rect x="250" y="176" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="280" y="209" text-anchor="middle">0</text></g>
<g class="c-purple"><rect x="250" y="242" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="280" y="275" text-anchor="middle">O</text></g>
<g class="c-purple"><rect x="250" y="308" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="280" y="341" text-anchor="middle">L</text></g>
<g class="c-purple"><rect x="250" y="374" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="280" y="407" text-anchor="middle">.</text></g>
<g class="c-purple"><rect x="316" y="102" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="346" y="135" text-anchor="middle">F11</text></g>
<g class="c-purple"><rect x="316" y="190" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="346" y="223" text-anchor="middle">-</text></g>
<g class="c-purple"><rect x="316" y="256" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="346" y="289" text-anchor="middle">P</text></g>
<g class="c-purple"><rect x="316" y="322" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="346" y="355" text-anchor="middle">;</text></g>
<g class="c-purple"><rect x="316" y="388" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="346" y="421" text-anchor="middle">/</text></g>
<g class="c-purple"><rect x="382" y="106" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="412" y="139" text-anchor="middle">F12</text></g>
<g class="c-purple"><rect x="382" y="194" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="412" y="227" text-anchor="middle">=</text></g>
<g class="c-purple"><rect x="382" y="260" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="412" y="293" text-anchor="middle">[</text></g>
<g class="c-purple"><rect x="382" y="326" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="412" y="359" text-anchor="middle">'</text></g>
<g class="c-purple"><rect x="382" y="392" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="412" y="425" text-anchor="middle">Shift</text></g>
<g class="c-purple"><rect x="448" y="194" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="478" y="227" text-anchor="middle">Bksp</text></g>
<g class="c-purple"><rect x="448" y="260" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="478" y="293" text-anchor="middle">]</text></g>
<g class="c-purple"><rect x="448" y="326" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="478" y="359" text-anchor="middle">Enter</text></g>
<g class="c-purple"><rect x="514" y="260" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="544" y="293" text-anchor="middle">\</text></g>
<g class="c-coral"><rect x="148" y="514" width="93" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="194" y="547" text-anchor="middle">Space</text></g>
<g class="c-coral"><rect x="247" y="499" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="277" y="532" text-anchor="middle">Alt</text></g>
<g class="c-coral"><rect x="313" y="487" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="343" y="520" text-anchor="middle">Win</text></g>
<g class="c-coral"><rect x="379" y="478" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="409" y="511" text-anchor="middle">Menu</text></g>
<g class="c-coral"><rect x="445" y="471" width="60" height="60" rx="4" stroke-width="0.5"/><text class="ts" x="475" y="504" text-anchor="middle">Ctrl</text></g>
<g class="c-purple"><rect x="18" y="613" width="13" height="13" rx="3" stroke-width="0.5"/></g>
<text class="ts" x="37" y="623">Alphas &#183; 34</text>
<g class="c-coral"><rect x="268" y="613" width="13" height="13" rx="3" stroke-width="0.5"/></g>
<text class="ts" x="287" y="623">Thumb cluster &#183; 5</text>
<text class="ts" x="18" y="653">Backslash ends up alone in an eighth column &#8212; the same artifact as the left half&#8217;s lonely 6, but further out.</text>
<svg width="100%" viewBox="0 0 680 706" role="img" xmlns="http://www.w3.org/2000/svg">
<title>Right half &#8212; 41 keys</title><desc>Top two rows shifted over: 6 and F6 now lead the right hand, above Y.</desc>
<text class="th" x="18" y="24">Right half &#8212; 41 keys</text>
<text class="ts" x="18" y="44">Top two rows shifted over: 6 and F6 now lead the right hand, above Y.</text>
<g class="c-purple"><rect x="60" y="96" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="92" y="131" text-anchor="middle">F6</text></g>
<g class="c-purple"><rect x="60" y="190" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="92" y="225" text-anchor="middle">6</text></g>
<g class="c-purple"><rect x="60" y="260" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="92" y="295" text-anchor="middle">Y</text></g>
<g class="c-purple"><rect x="60" y="330" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="92" y="365" text-anchor="middle">H</text></g>
<g class="c-purple"><rect x="60" y="400" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="92" y="435" text-anchor="middle">N</text></g>
<g class="c-purple"><rect x="130" y="85" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="120" text-anchor="middle">F7</text></g>
<g class="c-purple"><rect x="130" y="179" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="214" text-anchor="middle">7</text></g>
<g class="c-purple"><rect x="130" y="249" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="284" text-anchor="middle">U</text></g>
<g class="c-purple"><rect x="130" y="319" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="354" text-anchor="middle">J</text></g>
<g class="c-purple"><rect x="130" y="389" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="162" y="424" text-anchor="middle">M</text></g>
<g class="c-purple"><rect x="200" y="78" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="113" text-anchor="middle">F8</text></g>
<g class="c-purple"><rect x="200" y="172" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="207" text-anchor="middle">8</text></g>
<g class="c-purple"><rect x="200" y="242" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="277" text-anchor="middle">I</text></g>
<g class="c-purple"><rect x="200" y="312" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="347" text-anchor="middle">K</text></g>
<g class="c-purple"><rect x="200" y="382" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="232" y="417" text-anchor="middle">,</text></g>
<g class="c-purple"><rect x="270" y="88" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="123" text-anchor="middle">F9</text></g>
<g class="c-purple"><rect x="270" y="182" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="217" text-anchor="middle">9</text></g>
<g class="c-purple"><rect x="270" y="252" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="287" text-anchor="middle">O</text></g>
<g class="c-purple"><rect x="270" y="322" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="357" text-anchor="middle">L</text></g>
<g class="c-purple"><rect x="270" y="392" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="302" y="427" text-anchor="middle">.</text></g>
<g class="c-purple"><rect x="340" y="103" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="138" text-anchor="middle">F10</text></g>
<g class="c-purple"><rect x="340" y="197" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="232" text-anchor="middle">0</text></g>
<g class="c-purple"><rect x="340" y="267" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="302" text-anchor="middle">P</text></g>
<g class="c-purple"><rect x="340" y="337" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="372" text-anchor="middle">;</text></g>
<g class="c-purple"><rect x="340" y="407" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="372" y="442" text-anchor="middle">/</text></g>
<g class="c-purple"><rect x="410" y="107" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="142" text-anchor="middle">F11</text></g>
<g class="c-purple"><rect x="410" y="201" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="236" text-anchor="middle">-</text></g>
<g class="c-purple"><rect x="410" y="271" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="306" text-anchor="middle">[</text></g>
<g class="c-purple"><rect x="410" y="341" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="376" text-anchor="middle">'</text></g>
<g class="c-purple"><rect x="410" y="411" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="442" y="446" text-anchor="middle">Shift</text></g>
<g class="c-purple"><rect x="480" y="107" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="512" y="142" text-anchor="middle">F12</text></g>
<g class="c-purple"><rect x="480" y="201" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="512" y="236" text-anchor="middle">=</text></g>
<g class="c-purple"><rect x="480" y="271" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="512" y="306" text-anchor="middle">]</text></g>
<g class="c-purple"><rect x="480" y="341" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="512" y="376" text-anchor="middle">Enter</text></g>
<g class="c-purple"><rect x="550" y="201" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="582" y="236" text-anchor="middle">Bksp</text></g>
<g class="c-purple"><rect x="550" y="271" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="582" y="306" text-anchor="middle">\</text></g>
<g class="c-coral"><rect x="162" y="540" width="99" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="211" y="575" text-anchor="middle">Space</text></g>
<g class="c-coral"><rect x="266" y="525" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="298" y="560" text-anchor="middle">Alt</text></g>
<g class="c-coral"><rect x="336" y="512" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="368" y="547" text-anchor="middle">Win</text></g>
<g class="c-coral"><rect x="406" y="502" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="438" y="537" text-anchor="middle">Menu</text></g>
<g class="c-coral"><rect x="476" y="495" width="64" height="64" rx="4" stroke-width="0.5"/><text class="ts" x="508" y="530" text-anchor="middle">Ctrl</text></g>
<g class="c-purple"><rect x="18" y="644" width="13" height="13" rx="3" stroke-width="0.5"/></g>
<text class="ts" x="37" y="654">Alphas &#183; 36</text>
<g class="c-coral"><rect x="268" y="644" width="13" height="13" rx="3" stroke-width="0.5"/></g>
<text class="ts" x="287" y="654">Thumb cluster &#183; 5</text>
<text class="ts" x="18" y="684">Six full columns, then F12/=/]/Enter, then Bksp and backslash sharing the outer column.</text>
</svg>

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB