Skip to the content
PCBKitNew board
2 layers144.2 × 110.8 mmKeyboard left, the printed circuit board in 3D

Like the thenar keyboard but built for pick-and-place

Size
144.2 × 110.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
62
Nets
106
Pads
530
Tracks, vias
1,918, 193
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
6 Jul 2026
Updated
21 Jul 2026

Overview

Keyboard left is an open-source printed circuit board by lytedev, from the lytedev/hypothenar-keyboard repository on GitHub. It is a 2-layer board of 144.2 × 110.8 mm with 62 parts on 106 nets, routed with 1,918 tracks and 193 vias.

It is built around the MCP23017-E/SS, TP4056 and USBLC6-2SC6, with the XC6206P332MR and MS88SF3 among its other parts. Its parts include 28 switches and 17 connectors. It belongs with the keyboards and input boards of this library.

Main components

5

README

README.md

Hypothenar PCB

The v1 redesign — chip-direct nRF52840 module + I/O expanders, designed for JLCPCB PCBA assembly. See docs/v1-design.md (in the repo root) for architectural decisions and BOM rationale.

This directory is a work-in-progress. The PCB hasn't been drawn yet.

Repositories

What's here

  • ref-designguide-schematic/ — vendored copy of ebastler/zmk-designguide (CERN-OHL-P licensed). A reference schematic showing tested wireless-keyboard topologies: USB-C + ESD, TP4056 charge IC, XC6206 LDO, three different nRF52840 module options. This is our primary reference for the power tree and MCU section. Open ref-designguide-schematic/designguide-schematic.kicad_sch in KiCad to view.

  • lib/kleeb/ — vendored MIT-licensed KiCad library from crides/kleeb. The only public source of the MS88SF3 nRF52840 module footprint + symbol (in lib/kleeb/mcu.pretty/ms88sf3.kicad_mod and the mcu.kicad_sym symbol library). Add this to KiCad's path when drawing the schematic.

  • lib/marbastlib/ — CERN-OHL-P keyboard-focused KiCad library by ebastler. Used by zmk-designguide. Contains symbols + footprints for TP4056, XC6206, USB-C connectors, etc.

3D models from both libraries are stripped (~88 MB saved). Re-fetch the original repos if you want 3D viewer support.

Project skeleton

Two KiCad projects ready to open:

text
kicad/hypothenar-left/
  hypothenar-left.kicad_pro    # start with: nix develop -c kicad
  hypothenar-left.kicad_sch    # currently == designguide schematic (verbatim copy)
  hypothenar-left.kicad_pcb    # empty, will populate from netlist later
  sym-lib-table               # project-local symbol library wiring
  fp-lib-table                # project-local footprint library wiring

kicad/hypothenar-right/
  hypothenar-right.{kicad_pro,kicad_sch,kicad_pcb,sym-lib-table,fp-lib-table}

Open either project file (.kicad_pro) in KiCad and the kleeb + marbastlib libraries are wired up automatically — search the symbol browser for MS88SF3, TP4056, XC6206, USB_C etc. and they're all present.

Roadmap

  1. Prune the designguide schematic to just what we want:

    • Keep: USB-C input + ESD, TP4056 charge IC, XC6206 LDO, one MCU module slot, Vsense divider (for battery reporting)
    • Delete: the other two MCU modules (Holyiot and Moko — we use the third slot for our MS88SF3), the alternative BQ24075 charge IC, the LED underglow circuit, the battery protection (DW01A/FS8205) — optional, depends on whether we want belt-and-suspenders
    • Replace: the Ebyte E73 module footprint slot with MS88SF3
    • Save. ERC should drop from 409 to <50.
  2. Add the MCP23017 section (not in designguide):

    • Two MCP23017 ICs per half, I²C-connected to the MCU
    • Address straps for 0x20 and 0x21
    • 4.7 kΩ I²C pull-ups
    • Reset line tied to MCU GPIO
    • Reference: SolderedElectronics/IO-expander-MCP23017-breakout-hardware-design
  3. Add the matrix section: 28 switches per half. With switch-per-pin topology, each switch has one pin → GPIO pin on one of the MCP23017s, other pin → GND. No diodes.

    • Will eventually come from the ergogen scaffold (regenerated for v1 without diodes); for now stub with a placeholder.
  4. Add the rest of the per-half peripherals: scrollwheel encoder, Nice!View headers, slider switch, reset button.

  5. Run ERC clean on the schematic.

  6. Layout in KiCad: import netlist into the .kicad_pcb, place footprints in the chip area, then bring in the ergogen scaffold matrix and stitch the two together.

  7. Routing: probably mostly by hand again (autoroute will hit similar plateaus as rc1).

  8. Generate: gerbers + pick-place CSV + BOM CSV → submit to JLCPCB.

Working on this branch

v1 is a git branch off main. To work on v1:

sh
jj edit v1                                       # check out v1 branch
jj new                                           # start a new commit
# ... edit files ...
jj describe -m "v1(...): what I changed"
jj git push --bookmark v1

main continues to be the validated rc1 design.

License notes

This repository bundles work under three licenses that are compatible with this project's MIT licence:

  • ref-designguide-schematic/ — CERN-OHL-P v2 (ebastler/zmk-designguide)
  • lib/kleeb/ — MIT (crides/kleeb)
  • lib/marbastlib/ — CERN-OHL-P v2 (ebastler/marbastlib)

Both CERN-OHL-P and MIT permit redistribution + modification. Attribution preserved by keeping each library's original LICENSE file untouched.

Parts

62
QtyValueFootprintReferences
28PG1350S1, S2, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23 +12
4Hole_2, _3, _4, _5
2MCP23017MCP23017_SOIC-28W19.052, 19.053
1lib:text
1ceoloide:display_nice_viewDISP1
1kbd:ResetSW_1
1E73:SPDT_C128955T1
1BATTERYbattery_padsBT1
1C1passive_0603P1
1C2passive_0603P2
1C3passive_0603P3
1C4passive_0603P4
1C5passive_0603P5
1C6passive_0603P6
1C7passive_0603P7
1C8passive_0603P8
1D1passive_0603P17
1R1passive_0603P9
1R2passive_0603P10
1R3passive_0603P11
1R4passive_0603P12
1R5passive_0603P13
1R6passive_0603P14
1R7passive_0603P15
1R8passive_0603P16
1TP4056TP4056_SOP-819.056
1USBLC6-2SC6USBLC6-2SC6_SOT-23-619.055
1USB_C_Receptacle_HRO_TYPE-C-31-M-12USB_C_Receptacle_HRO_TYPE-C-31-M-1219.054
1XC6206P332MRXC6206_SOT-89-319.057
1ms88sf3ms88sf319.051

The 61 most common of 62 parts.

Questions

How big is the Keyboard left PCB?

It measures 144.2 × 110.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Keyboard left use?

62 parts, built around the MCP23017-E/SS, TP4056, USBLC6-2SC6 and XC6206P332MR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Keyboard left KiCad files?

From the lytedev/hypothenar-keyboard repository on GitHub, at the commit this page was made from: the board is routed/keyboard-left.kicad_pcb and its schematic kicad/hypothenar-left/hypothenar-left.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Keyboard left design in my own project?

Its repository states no licence, so its author keeps all rights: ask lytedev before reusing the design.

Similar boards

  • 2 layers100 × 90 mmTfm, the printed circuit board in 3D

    Tfm

    GuilleGonzzalez/tfm_pcb

    108 parts
  • 2 layers180 × 100 mmKi pultforsterker main, the printed circuit board in 3D

    Ki pultforsterker main

    SebastianKristo/pult-forsterker

    Ett kort (180 × 100 mm, 2 lag) som erstatter alle modulene, og som i tillegg har USB-delingsswitch, to AUX-innganger som digitaliseres (så alt kan mikses), «smart relé» for strømmen til forsterkerdelen…

    264 partsMIT
  • 2 layersPCB PD, the printed circuit board in 3D

    PCB PD

    Taran-the-Idiot/Flippy

    73 partsMIT
  • 4 layers100 × 74 mmMission board, the printed circuit board in 3D

    Mission board

    tmb5932/fixed-wing-drone

    The basics needed to allow a RC plane to be turned autonomous on signal.

    128 parts
  • 2 layers80 × 25 mmLedGateController, the printed circuit board in 3D

    LedGateController

    Knifa/ws28xx-led-driver

    A straightforward DIY WS28xx LED driver.

    73 parts3
  • 4 layers45.1 × 45.1 mmSuperPower uC KiCad, the printed circuit board in 3D

    SuperPower uC KiCad

    SuperPower/Artemis

    All hardware designs and products you can find in this repository is licensed under CERN Open Hardware Licence Version 2 - Weakly Reciprocal

    99 parts2