Skip to the content
PCBKitNew board
2 layers136.3 × 100.2 mmCloudy-36-kb, the printed circuit board in 3D

This repo contains a complete design for a 36 key split wireless keyboard. Fabricate two copies and flip one for the opposite half.

Size
136.3 × 100.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
46
Nets
68
Pads
458
Tracks, vias
818, 110
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
11 Sep 2026
Updated
4 Nov 2026

Overview

Cloudy-36-kb is an open-source printed circuit board by schultz-dev0, from the schultz-dev0/cloudy-36-kb repository on GitHub. It is a 2-layer board of 136.3 × 100.2 mm with 46 parts on 68 nets, routed with 818 tracks and 110 vias.

Its parts include 18 diodes and 18 switches. It belongs with the keyboards and input boards of this library.

README

README.md

Cloudy Choc 36

This repo contains a complete design for a 36 key split wireless keyboard. Fabricate two copies and flip one for the opposite half. The board uses Kailh Choc hot swap sockets (Choc v2 switches) and one nice!nano v2 and nice!view per half, each half also contains one 110 mAh 301230 LiPo battery. Board has 5 M2 mounting holes per half. A 3D-printed case (tray + top deck that doubles as the switch plate) is in cad/; the case uses 4 of the holes. Keycaps are low-profile MX-stem.

Populate all visible components on the top face of each assembled half: use the front side of one PCB and the back side of the other. Choc sockets and diodes go on the underside. Bridge only the jumper pads for the chosen nice!nano, nice!view, and JST side. The YAML disables footprint-supplied copper links, so those short jumper connections are part of the manual routing work too.

Bill of materials

Full list in bom.csv.

CategoryItemQtyOn pre-soldered boardNotes
PCBCustom PCB (reversible)2n/aorder gerbers from reversible.kicad_pcb, flip one when populating
SwitchesKey switches36 (18/half)NoKailh Choc v2 (PG1353) low-profile, e.g. salvaged Lofree Flow Lite switches; hot-swap, you press these in yourself; PCB centre hole is 5.0 mm for the v2 post
SwitchesHot-swap sockets36 (18/half)NoKailh Choc hot-swap socket, 1 per switch; the footprint itself is flagged excluded from assembly by ceoloide, always hand-soldered
SwitchesKeycaps36 (18/half)Nolow-profile MX-stem keycaps (Choc v2 cross stem), e.g. salvaged Lofree caps; layout assumes 17.5x16.5mm keycaps
SwitchesDiodes36 (18/half)Yes1N4148W, SOD-123 package
Controllernice!nano v22 (1/half)Nocontroller module; socketed not soldered directly, plug in after flashing ZMK
Controllernice!nano socket headers4 (2/half)Nomedium-profile sockets, 2 rows of 12 + 25 pins per controller; case CAD assumes ~3.8 mm nano standoff (nano_socket_height); measure and update
Controllernice!view display2 (1/half)Nodisplay module; socketed like the nano
Controllernice!view socket headers2 (1/half)No5-pin socket + header, bundled with the display; case CAD assumes ~8.3 mm PCB-to-display (display_socket_height); must clear the nano USB-C shell
PowerLiPo battery2 (1/half)No110mAh 301230, protected, JST PH 2.0 connector; sits under the PCB between the nano socket rows; leads go up through the old 3.5 mm trackpoint hole to the JST; check polarity
PowerBattery connector2 (1/half)YesJST PH 2-pin
PowerPower switch2 (1/half)Yesside-actuated SMD slide switch
PowerReset switch2 (1/half)Yesside-actuated SMD switch
CaseCase tray2 (1/half)n/a3D-printed, white; floor, walls, USB-C / power / reset openings, MagSafe recess
CaseTop deck2 (1/half)n/a3D-printed, white, 1.2 mm; doubles as the switch plate (plate.dxf cutouts); open window over the nano, nice!view and power/reset; C♥ logo inlay
CasePlate foam2 (1/half)n/athin foam (Poron-like) between PCB and deck, cut to plate.dxf; e.g. salvaged Lofree plate foam
CaseBottom foam2 (1/half)n/aspongy foam bed under the PCB, ~3.5 mm, pocketed for the battery; e.g. salvaged Lofree case foam
CaseMagSafe sticker2 (1/half)n/aMagSafe-compatible steel ring sticker; sits in the floor recess, sticks to tenting stands and clamps
CaseM2 screws8 (4/half)n/aM2 x 6 countersunk; through the deck and PCB mounting holes MH1-MH4
CaseHeat-set inserts8 (4/half)n/aM2 brass heat-set insert, ~3.2 mm OD x 3 mm; melted into the tray posts

Electrical notes

The matrix is column-to-row through one 1N4148W diode per key. The nice!view uses P1 for CS, P2 for MOSI, and P3 for SCK. Each protected LiPo connects to its JST header; battery positive passes through the power switch to RAW, while battery negative connects to GND. Leave the nice!nano charge-rate boost jumper open for a 110 mAh battery.

Always verify battery connector polarity against the actual battery before plugging it in. Confirm part availability and assembly rotation in the board house preview before placing an order.

The third-party footprint sources in footprints/ retain their upstream license headers. Project-specific keepout footprints are kept alongside them.

Complete board CAD

Open output/cad/cloudy-choc-36.FCStd in FreeCAD, or import output/cad/cloudy-choc-36.step into another CAD application. Separate left-half.step and right-half.step exports are in the same directory. The FreeCAD tree groups individually selectable BOM components under each half, with named housing, contact, and other subfeatures. These are editable solid models, not a constrained mechanical assembly or manufacturing models for the purchased parts.

Complete assembly

Exploded left half · Underside · Instantiated BOM · Geometry validation

The generator reads bom.csv and checks all 179 component instances against it. PCB edge curves, thickness, footprint positions, rotations, and pad/via drills come from the current reversible.kicad_pcb. The right PCB is flipped with its back populated; switches and sockets retain their manufactured handedness. The original plate.dxf supplies the plate geometry, including 18 switch openings and four mounting holes per half. The fifth PCB mounting hole is in the electronics area outside the plate. Sockets and diodes are placed underneath, following the assembly instructions above rather than the fabrication CSV's layer field.

CAD assumptions are editable in cad/parameters.json:

DetailModel choice
LayoutBoth halves flat, 32 mm apart; left is the central TrackPoint half
PCB1.6 mm from KiCad; drilled substrate, without copper traces or silkscreen
Plates1.2 mm thick; upper surface 2.2 mm above the PCB top
SwitchesGeneric Choc V1: 15 mm housing rim, 5 mm housing height, 3 mm exposed stem; twin slots and locating/contact pins
CapsBlank, tapered, dished, hollow 17.5 × 16.5 mm caps with twin Choc prongs; 3 mm shell height; shell bottom 7.5 mm above PCB
Controller17.78 × 33.08 mm footprint envelope; generic radio package and USB-C shell; 1 mm module PCB
Sockets5 mm controller sockets; 10 mm display socket; 2.54 mm pitch at the actual footprint holes
Display14 × 36 mm config envelope; generic bezel and reflective screen; 1 mm module PCB
BatteryNominal 3 × 12 × 30 mm pouch, 0.2 mm above PCB, beneath controller
TrackPointGeneric T460s-style bracket/sensing head at TP1, using the footprint's 19.5 mm bracket-hole spacing and configured 3.5 mm stick hole; cap at key height
ResistorsBoth optional 0805 pull-ups shown fitted on the central half
ScrewsTen generic M2 × 6 mm envelopes with hex recesses; threads omitted

The generic switch dimensions use the manufacturer's PG1350 drawing. The local footprint outlines supply the controller, connector, controls, and TrackPoint reference geometry. Unspecified socket heights, keycap profile, component details, and screw lengths are assumptions for this assembly. Battery wires and the salvaged TrackPoint's remote controller/flex are not dimensioned in the repo and are not modeled. No case, spacers, or nuts are specified in the BOM. Confirm these choices against the actual purchased parts before designing a case.

To rebuild, use Python with the FreeCAD Python modules and PyYAML installed (the script also checks /usr/lib/freecad/lib on Linux):

sh
python cad/build.py
python cad/present.py --gui
python cad/verify.py

The second command needs NumPy, Matplotlib, and a working Qt GUI environment. It stores colors and the initial camera, exports colored STEP files, and renders previews directly from the CAD solids. Prefix it with QT_QPA_PLATFORM=offscreen for a display-independent run. Omit --gui to render only the previews. The third command independently reopens the native file and all three STEP exports, checking visibility, BOM counts, solid validity, solid counts, volumes, dimensions, and STEP colors; its results are added to the validation report. Edit the JSON parameters and rebuild to change the stack; the document's build parameter properties record the settings and do not drive live recomputation. The validation report records BOM counts, solid validity, component intersection volumes above 0.01 mm³, and source hashes. It is a nominal mechanical check, not an electrical, tolerance, switch-travel, or manufacturing validation.

Parts

46
QtyValueFootprintReferences
18ceoloide:switch_choc_v1_v2S1, S2, S3, S4, S5, S6, S7, S10, S11, S12, S13, S14, S15, S16, S17, S18 +2
18ceoloide:diode_tht_sod123D1, D2, D3, D4, D5, D6, D7, D10, D11, D12, D13, D14, D15, D16, D17, D18 +2
5ceoloide:mounting_hole_npthMH1, MH2, MH3, MH4, MH5
1ceoloide:display_nice_viewDISP1
1ceoloide:reset_switch_smd_sideRST1
1ceoloide:battery_connector_jst_ph_2JST1
1ceoloide:power_switch_smd_sidePWR1
1ceoloide:mcu_nice_nanoMCU1

Questions

How big is the Cloudy-36-kb PCB?

It measures 136.3 × 100.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Cloudy-36-kb use?

46 parts. 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 Cloudy-36-kb KiCad files?

From the schultz-dev0/cloudy-36-kb repository on GitHub, at the commit this page was made from: the board is output/pcbs/reversible.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Cloudy-36-kb design in my own project?

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

Similar boards

  • 2 layers83.3 × 65.3 mmSimonShield, the printed circuit board in 3D

    SimonShield

    github-linguist/linguist

    Language Savant. If your repository's language is being reported incorrectly, send us a pull request!

    46 parts14kMIT
  • 2 layers27.8 × 22.3 mmAudio, the printed circuit board in 3D

    Audio

    byrantech/laptop

    anyon_e, a highly integrated, high end, open source laptop. Attempt the impossible.

    46 parts4.3kMIT
  • 2 layers370 × 11 mmDaylight XXL, the printed circuit board in 3D

    Daylight XXL

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    46 parts1.1kGPL-3.0
  • 2 layers87.5 × 50 mmMesabob, the printed circuit board in 3D

    Mesabob

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    46 parts990GPL-3.0
  • 2 layers38.8 × 62.5 mmESPAudio, the printed circuit board in 3D

    ESPAudio

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    46 parts915
  • 2 layers53.2 × 24.8 mmPicoLink, the printed circuit board in 3D

    PicoLink

    ErichStyger/mcuoneclipse

    McuOnEclipse projects and examples

    46 parts765
  • 2 layers23 × 29 mmESP32-epaper adapter, the printed circuit board in 3D

    ESP32-epaper adapter

    pcbreflux/espressif

    all espressif stuff will committed here

    46 parts608GPL-3.0
  • 2 layers25.5 × 73.5 mmTERES PCB2-IO Rev.B, the printed circuit board in 3D

    TERES PCB2-IO Rev.B

    OLIMEX/DIY-LAPTOP

    Do It Yourself Open Source Hardware and Software Modular Hacker's Friendly Laptop

    46 parts578Apache-2.0