3D model of the keyboard's aluminum unibody case and keycaps

Drag to orbit

06 · May–Aug 2025

Custom Keyboard

A compact 70-key keyboard designed from scratch: a CNC-milled aluminum unibody case and blank aluminum keycaps, and a custom STM32 PCB with hotswap sockets and per-key RGB, running QMK.

Tools
KiCad, Fusion 360 CAD/CAM, CNC milling, STM32, QMK
Result
A finished 70-key keyboard with per-key RGB, on the second PCB revision

Overview

I wanted the fast, compact feel of a laptop keyboard with the tactile feel of a mechanical one, so I designed and built this one from scratch: the layout, the PCB, the firmware, and a CNC-milled aluminum case and keycaps.

Build log

May 15–20, 2025

Kickoff and layout planning. Right after my birthday, I decided to build a keyboard from scratch to push my limits before college. I planned the layout, shrinking the space bar to the size of an Enter key, which freed my other thumb for macros and modifiers. After removing the keys I never used, I settled on a compact 70-key layout.

May 21–31, 2025

Electronics planning. I defined the electronics: choosing the MCU, per-key RGB LEDs, Cherry MX hotswap sockets, and the USB power strategy, then mapped out the key matrix and the LED chain.

June 1–14, 2025

Schematic and PCB v1. I drew the first schematic and routed a 4-layer PCB with every SMD part on the back, putting the MCU and power circuitry under the space bar to keep the board compact.

June 15–22, 2025

Engineering review. Talking it through with electronics engineers, I learned my MCU needed a quartz crystal for USB. Together with a long USB trace from the top-right corner, that risked an unstable connection, so I redesigned the board.

June 23–26, 2025

PCB redesign. I switched to an STM32F072, which runs USB without a crystal, rotated it 45° and placed it under the Backspace key to make the USB trace much shorter, and cut the board to 2 layers to lower the manufacturing cost.

June 27 – July 5, 2025

Case and keycap CAD. In Fusion 360 I modeled the unibody aluminum case with tolerances for the switches and USB port, and planned three CNC setups: (1) the USB port and back arch, (2) the top typing surface and switch plate, (3) the cosmetic arches, feet, and screw holes. I also modeled blank keycaps for machining; no legends suited the minimal look, and I didn’t have a laser engraver anyway.

July 6–12, 2025

PCB fabrication and CAM. While JLCPCB manufactured and assembled the board, I programmed the CNC toolpaths for the case and keycaps, learning to tune feeds and speeds, tool changes, and fixturing for the three setups.

July 12–13, 2025

Board bring-up. The PCB arrived fully assembled. I flashed the STM32 with QMK, set up my keymap, and verified the matrix scanning. I also found that the LEDs had been placed backwards, reversing their 5V and GND, which went on the list for the next revision.

July 14–25, 2025

Machining and setbacks. In the first setup the endmill slipped in the collet and cut the switch plate wrong, which took a small redesign of the case and toolpaths. In the third setup, thin walls and too little clamping caused chatter until the part slipped and was damaged. With material delays and bad weather on top of that, machining paused.

August 2025

Finished. I thickened the thin walls and moved every critical feature into the first two setups, then machined the case again, this time cleanly. With the LED orientation fixed, I assembled the finished keyboard: a 70-key aluminum unibody with per-key RGB, running my own QMK keymap.

Render of the aluminum case with some keycaps removed, showing the switches and the PCB underneath
Photo of the assembled PCB, a black board with the key-switch footprints, the microcontroller rotated 45 degrees, and fox artwork in the silkscreen
KiCad schematic with the STM32F072 microcontroller, USB-C with ESD protection, 3.3 V regulator, decoupling capacitors, reset switch, the 70-key diode matrix, and a chain of 70 SK6812 Mini RGB LEDs
KiCad PCB layout of the whole board, with switch footprints, LED and diode placements, and routed traces
Key layout diagram of the compact 70-key arrangement, with a shortened space bar and function keys along the bottom row
Screenshots of the CAM toolpaths for the case's three machining setups
Render of the aluminum case and keycaps from a low angle along the front edge
Render of the keyboard case and keycaps from above at an angle
Render of the keyboard with black keycaps in the unibody case, seen from the front