Tenting Legs & LED Diffuser
Two parts that are not needed for a working keyboard, but that most builds end up wanting. Both
are in the PolyKybd hardware repo under parts/.
Tenting legs
Section titled “Tenting legs”The legs stick under each half and incline it towards you. Worth printing if you chose the stepped keycap stem profile, which is designed around the keyboard sitting at 5 degrees or more.
| Part | File |
|---|---|
| Legs, 8 per plate | parts/export/legs/legs_r2_8p.stl |
One plate is the whole set: eight legs in four mirrored pairs, 119 × 39 × 3.8 mm, so a single
print does both halves. legs_v0_1p.stl beside it is an older single leg, kept for reference.
The source is parts/legs/legs.scad; re-export it with parts/build_parts.sh legs.
LED diffuser frame
Section titled “LED diffuser frame”Each key has an LED behind it, shining through a half-round hole in the plate. Left bare, the light reads as a bright point rather than an even glow. The diffuser is a small light pipe that clips into that hole and spreads it.
The current generation is a one-piece frame: all 36 diffusers per half, held at their exact plate positions and rotations by a web that runs underneath the plate, through the solid material between the switch openings. So you fit one part per half instead of placing 36 loose pieces.
| Part | File |
|---|---|
| Frame, left half | parts/export/diffuser/diffuser_frame_left.stl |
| Frame, right half | parts/export/diffuser/diffuser_frame_right.stl |
| Four stacked per plate | ..._left_4x.stl / ..._right_4x.stl |
Print it in resin (SLA). It is a fine, spidery part, and the web is deliberately close to the minimum wall a print service will accept.
Why it is generated, not modelled
Section titled “Why it is generated, not modelled”The frame is not drawn by hand — parts/diffuser/gen_diffuser_frame.py reads the plate PCB
(poly_kybd/poly_kybd_split72_plate_<side>.kicad_pcb) directly and emits the OpenSCAD from it.
The board is the authoritative source for where every LED hole is and how it is rotated; the
Split72’s thumb keys sit at up to 20 degrees off axis, and those rotations are lost in the SVG
exports.
So if you change the plate, regenerate rather than nudge the model:
parts/diffuser/build_frame.sh # regenerate from the PCB, export, verifyparts/diffuser/build_frame.sh --check # verify the committed meshes onlyThe verify step is not decoration — parts/diffuser/check_frame.py gates the result on
watertightness, minimum wall thickness, left/right symmetry, whether the frame is trapped by the
plate, and clearance against the spacer in both flip orientations.
The older diffuser
Section titled “The older diffuser”Before the frame there were loose caps: 76 individual light pipes on a torus sprue
(parts/export/diffuser/diff_v2.stl, from parts/diffuser/led_caps.scad), clipped in one at a
time. It still prints, and it is what earlier builds used, but the frame is much less fiddly to
assemble.