Settle the numpad layout: 25 keys, one encoder
Six by five. Arrows on the outer column, PgUp/PgDn beside them, no Num key. The scroll wheel is dropped - no good physical implementation - which also removes the pointing-device path from the firmware entirely, frees a USB endpoint, and retires the detentless-EC11 sourcing risk. The freed 2u at the top takes a single volume encoder with room for a full-size knob. BOM: diodes and sockets 26 -> 25, encoders 2 -> 1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
a9e550e065
commit
f8d22252ad
@@ -12,7 +12,15 @@ Status: **design**. No boards ordered, no firmware written.
|
||||
| Board | Qty | Keys | Carries |
|
||||
|---|---|---|---|
|
||||
| `hardware/half` | 2 (mirrored) | TBD — layout not designed | MCU, matrix, USB-C, SBU split link |
|
||||
| `hardware/numpad` | 1 | 26 (17 numpad + 9 nav) | MCU, matrix, 2 encoders, **CH334R hub**, 3 downstream ports |
|
||||
| `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`. Six columns by five
|
||||
rows, ~114 × 95 mm. Arrows take the **outer** left column on the principle that
|
||||
the most-used keys go furthest out, PgUp/PgDn sit beside them, and Del/Home/End
|
||||
fill the rest of the two nav columns. **No Num key** — the firmware resolves
|
||||
keypad vs number-row at press time, so the pad never needed one. The 2u that
|
||||
frees up at the top holds the single volume encoder, which means a full-size
|
||||
knob fits rather than two cramped ones colliding at 19.05 mm centres.
|
||||
|
||||
Cabling:
|
||||
|
||||
@@ -189,10 +197,19 @@ Plan is belt-and-braces:
|
||||
Only eleven keys need this (1–9, 0, `.`). `KP_SLASH`/`ASTERISK`/`MINUS`/`PLUS`/
|
||||
`ENTER` mean the same thing either way.
|
||||
|
||||
**Encoders:** volume wants a **detented** EC11; scroll wants a **detentless** one,
|
||||
because hi-res scrolling (`POINTING_DEVICE_HIRES_SCROLL_ENABLE`, resolution
|
||||
multiplier, 1/120 tick) fights physical detents. Confirm the detentless SKU from
|
||||
the datasheet — vendor descriptions are unreliable.
|
||||
**One encoder, volume only.** The scroll wheel was dropped — no good physical
|
||||
implementation. That removes more than it looks like:
|
||||
|
||||
- No `POINTING_DEVICE_ENABLE`, no `MOUSEKEY_ENABLE`, no hi-res scroll resolution
|
||||
multiplier. **The numpad stops enumerating as a mouse entirely** — it's a
|
||||
keyboard plus consumer control and nothing else.
|
||||
- One fewer USB endpoint, which matters because the L103's USBFS has eight and
|
||||
QMK's composite device was going to be tight against that.
|
||||
- The detentless-EC11 sourcing risk is gone. A stock EC11 is detented, which is
|
||||
exactly what volume wants, so `C2991196` is simply correct with nothing to
|
||||
verify.
|
||||
|
||||
Rules file is now just `ENCODER_ENABLE` + `EXTRAKEY_ENABLE`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
+3
-4
@@ -22,9 +22,8 @@ HALF,Split,D-ESD,1,ESD 5V bidirectional,PESD5V0S1BA,C2827694,SOD-323,Extended,0.
|
||||
HALF,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"
|
||||
HALF,Split,-,-,SBU1+SBU2 TIE,-,-,-,-,0.00,"Tie A8 and B8 together on the board. SBU is CROSSED in the cable, so this makes it orientation-proof and doubles the conductor"
|
||||
NUMPAD,DNF,J1/U3/R3/R4/R5,0,DO NOT POPULATE,-,-,-,-,0.00,"*** From the ALL block: numpad MCU has NO connector of its own. Its D+/D- route internally to hub downstream port 1. No connector = no ESD part and no CC resistors needed. Saves ~$0.19"
|
||||
NUMPAD,Matrix,D1-D26,26,1N4148W,1N4148W,C81598,SOD-123,Basic,0.011,"26 keys: 17 numpad + 9 nav"
|
||||
NUMPAD,Encoder,ENC1,1,EC11 detented,EC11L1525G01,C2991196,THT,Extended,1.27,"VOLUME - wants detents. THT: hand-solder or JLC THT surcharge"
|
||||
NUMPAD,Encoder,ENC2,1,EC11 detentless,verify variant,-,THT,Extended,1.27,"SCROLL - wants NO detents for hi-res scroll. Confirm detentless SKU"
|
||||
NUMPAD,Matrix,D1-D25,25,1N4148W,1N4148W,C81598,SOD-123,Basic,0.011,"25 keys: 16 numpad (no Num key) + 9 nav"
|
||||
NUMPAD,Encoder,ENC1,1,EC11 detented,EC11L1525G01,C2991196,THT,Extended,1.27,"VOLUME - detented, which is what a stock EC11 already is. Occupies a 2u cell so a full-size knob fits. THT: hand-solder or JLC THT surcharge"
|
||||
NUMPAD,Hub,U4,1,USB2.0 4-port hub,CH334R,C4154405,QSOP-16-150mil,Extended,0.50,"Ports: 1=own MCU (internal FS) 2=left half 3=right half 4=spare"
|
||||
NUMPAD,Hub,Y2,1,12MHz crystal,X322512MSB4SI,C9002,SMD3225-4P,Basic,0.101,"CH334 has built-in load caps - verify internal value vs this 20pF CL crystal; fit DNF cap pads"
|
||||
NUMPAD,Hub,C12-C14,3,100nF 0402,CL05B104KO5NNNC,C1525,0402,Basic,0.006,"hub decoupling"
|
||||
@@ -37,6 +36,6 @@ NUMPAD,Hub,R8-R13,6,56k 0402,FRC0402F5602TS,C2906875,0402,Extended,0.0018,"Rp pu
|
||||
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,Switches,SW-,1,MX hotswap socket,CPG151101S11,C41430893,SMD 14.5x5.9mm,Extended,0.037,"One per key. BOTTOM SIDE. Alt: C49352235 (CPG151101S11-2)"
|
||||
NUMPAD,Switches,SW-,26,MX hotswap socket,CPG151101S11,C41430893,SMD 14.5x5.9mm,Extended,0.037,"One per key. BOTTOM SIDE"
|
||||
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"
|
||||
|
||||
|
@@ -0,0 +1,41 @@
|
||||
<svg width="100%" viewBox="0 0 680 470" role="img" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>Numpad board, settled layout</title>
|
||||
<desc>Six columns by five rows. Arrows on the outer left column, page up and down beside them, the numpad on the right without a Num key, and a single volume encoder spanning two cells at the top.</desc>
|
||||
<text class="th" x="18" y="24">Numpad board — settled</text>
|
||||
<text class="ts" x="18" y="44">25 keys and one encoder. Arrows on the outside, no Num key, no scroll wheel.</text>
|
||||
<g class="c-purple"><rect x="212" y="70" width="123" height="59" rx="4" stroke-width="0.5"/></g>
|
||||
<g class="c-purple"><circle cx="274" cy="100" r="25" stroke-width="0.5"/></g>
|
||||
<text class="ts" x="274" y="104" text-anchor="middle">Volume</text>
|
||||
<g class="c-teal"><rect x="148" y="70" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="178" y="104" text-anchor="middle">Del</text></g>
|
||||
<g class="c-teal"><rect x="148" y="134" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="178" y="168" text-anchor="middle">Home</text></g>
|
||||
<g class="c-teal"><rect x="148" y="198" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="178" y="232" text-anchor="middle">↑</text></g>
|
||||
<g class="c-teal"><rect x="148" y="262" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="178" y="296" text-anchor="middle">↓</text></g>
|
||||
<g class="c-teal"><rect x="148" y="326" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="178" y="360" text-anchor="middle">←</text></g>
|
||||
<g class="c-teal"><rect x="212" y="134" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="242" y="168" text-anchor="middle">End</text></g>
|
||||
<g class="c-teal"><rect x="212" y="198" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="242" y="232" text-anchor="middle">PgUp</text></g>
|
||||
<g class="c-teal"><rect x="212" y="262" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="242" y="296" text-anchor="middle">PgDn</text></g>
|
||||
<g class="c-teal"><rect x="212" y="326" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="242" y="360" text-anchor="middle">→</text></g>
|
||||
<g class="c-coral"><rect x="276" y="134" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="306" y="168" text-anchor="middle">7</text></g>
|
||||
<g class="c-coral"><rect x="276" y="198" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="306" y="232" text-anchor="middle">4</text></g>
|
||||
<g class="c-coral"><rect x="276" y="262" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="306" y="296" text-anchor="middle">1</text></g>
|
||||
<g class="c-coral"><rect x="276" y="326" width="123" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="338" y="360" text-anchor="middle">0</text></g>
|
||||
<g class="c-coral"><rect x="340" y="70" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="370" y="104" text-anchor="middle">/</text></g>
|
||||
<g class="c-coral"><rect x="340" y="134" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="370" y="168" text-anchor="middle">8</text></g>
|
||||
<g class="c-coral"><rect x="340" y="198" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="370" y="232" text-anchor="middle">5</text></g>
|
||||
<g class="c-coral"><rect x="340" y="262" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="370" y="296" text-anchor="middle">2</text></g>
|
||||
<g class="c-coral"><rect x="404" y="70" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="434" y="104" text-anchor="middle">*</text></g>
|
||||
<g class="c-coral"><rect x="404" y="134" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="434" y="168" text-anchor="middle">9</text></g>
|
||||
<g class="c-coral"><rect x="404" y="198" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="434" y="232" text-anchor="middle">6</text></g>
|
||||
<g class="c-coral"><rect x="404" y="262" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="434" y="296" text-anchor="middle">3</text></g>
|
||||
<g class="c-coral"><rect x="404" y="326" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="434" y="360" text-anchor="middle">.</text></g>
|
||||
<g class="c-coral"><rect x="468" y="70" width="59" height="59" rx="4" stroke-width="0.5"/><text class="ts" x="498" y="104" text-anchor="middle">-</text></g>
|
||||
<g class="c-coral"><rect x="468" y="134" width="59" height="123" rx="4" stroke-width="0.5"/><text class="ts" x="498" y="200" text-anchor="middle">+</text></g>
|
||||
<g class="c-coral"><rect x="468" y="262" width="59" height="123" rx="4" stroke-width="0.5"/><text class="ts" x="498" y="328" text-anchor="middle">Ent</text></g>
|
||||
<g class="c-teal"><rect x="18" y="414" width="13" height="13" rx="3" stroke-width="0.5"/></g>
|
||||
<text class="ts" x="37" y="424">Nav · 9 keys</text>
|
||||
<g class="c-coral"><rect x="223" y="414" width="13" height="13" rx="3" stroke-width="0.5"/></g>
|
||||
<text class="ts" x="242" y="424">Numpad · 16 keys</text>
|
||||
<g class="c-purple"><rect x="428" y="414" width="13" height="13" rx="3" stroke-width="0.5"/></g>
|
||||
<text class="ts" x="447" y="424">Encoder · 2u, fits a real knob</text>
|
||||
<text class="ts" x="18" y="452">Six by five units — about 114 by 95 mm on 19.05 mm spacing.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
Reference in New Issue
Block a user