
VoidHHKB Hotswap
hungrygeek/HSKB
Open-source HHKB-layout MX custom keyboard — KiCad PCB, case STL, QMK/VIA firmware. Personal iteration of the HSKB (Happy Sabi Keyboard).

Open-source HHKB-layout MX custom keyboard — KiCad PCB, case STL, QMK/VIA firmware. Personal iteration of the HSKB (Happy Sabi Keyboard).
VoidHHKB Solder is an open-source printed circuit board by hungrygeek, from the hungrygeek/HSKB repository on GitHub. It is a 2-layer board of 286.4 × 96.1 mm with 163 parts on 112 nets, routed with 798 tracks and 85 vias.
It is built around the STM32F072CBT6, 1N4148W and NSMD050, with the PRTR5V0U2X, TS-1187A-B-A-B and TYPE-C-31-M-12 among its other parts. Its parts include 63 diodes, 10 capacitors, 6 switches, 2 resistors and 1 IC. It belongs with the keyboards and input boards and the STM32 boards of this library.


Head to the JLCPCB order page.
Upload the VoidHHKB-Solder.zip file in production/.
Set the quantity of the PCBs you want made.
Set your desired PCB parameters. Here are some suggested parameters: (Everything else can be kept at their default)
Press Confirm at the bottom or NEXT on the right to get to the next page.
Click NEXT to get to the Bill of Materials tab.
Click Add BOM File and select the bom.csv file in production/.
Click Add CPL File and select the positions.csv file in production/. Click Process BOM & CPL to proceed.
You should be presented with a list of all the components and quantities needed. Double check there are no missing components. If there are, you will have to find substitute components for it. Click NEXT to proceed.
You should be presented with a view of the PCB and its components. Click NEXT to proceed.
You should see a breakdown of the price for the PCBs you want to order. Select Keyboard - HS Code 847330 under Office Appliance Accessories for the Product Description.
Save to cart, and pay for it!
Install and launch QMK Toolbox
Connect PCB via USB. Hold down reset button to enter bootloader
Under 'Local file' open firmware/void_voidhhkb_via.bin. Everything else can be left as default (MCU is STM32F072 / STM32 DFU — QMK Toolbox auto-detects it in bootloader mode)
Click Flash!
Unplug and plug in again to complete set up
Temp instructions until I get around to merging files into QMK repo...
To edit keymap in via open web page and select 'Design' on the top ribbon
Click 'Load Draft Definition' and load '/firmware/voidhhkb/via.json'
| Qty | Value | Footprint | References |
|---|---|---|---|
| 62 | 1N4148W | Diode_SMD:D_SOD-123 | D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24 +46 |
| 4 | 100nF | Capacitor_SMD:C_0402_1005Metric | C2, C3, C7, C9 |
| 4 | 1uF | Capacitor_SMD:C_0402_1005Metric | C4, C5, C6, CR2 |
| 3 | LOGO | LOGO | G***, G***, G*** |
| 2 | 4.7uF | Capacitor_SMD:C_0402_1005Metric | C1, C8 |
| 2 | 5k1 | Resistor_SMD:R_0402_1005Metric | R1, R2 |
| 2 | Alt | PCM_marbastlib-mx:SW_MX_1u | MX63, MX67 |
| 2 | NUHS | PCM_marbastlib-mx:SW_MX_1u | MX43, MX48 |
| 2 | Super | PCM_marbastlib-mx:SW_MX_1.5u | MX64, MX66 |
| 1 | ' | PCM_marbastlib-mx:SW_MX_1u | MX42 |
| 1 | , | PCM_marbastlib-mx:SW_MX_1u | MX56 |
| 1 | - | PCM_marbastlib-mx:SW_MX_1u | MX12 |
| 1 | . | PCM_marbastlib-mx:SW_MX_1u | MX57 |
| 1 | / | PCM_marbastlib-mx:SW_MX_1u | MX58 |
| 1 | 1 | PCM_marbastlib-mx:SW_MX_1u | MX2 |
| 1 | 10 | PCM_marbastlib-mx:SW_MX_1u | MX11 |
| 1 | 100k | Resistor_SMD:R_0402_1005Metric | RR3 |
| 1 | 10k | Resistor_SMD:R_0402_1005Metric | RR2 |
| 1 | 10uF | Capacitor_SMD:C_0402_1005Metric | CR1 |
| 1 | 2 | PCM_marbastlib-mx:SW_MX_1u | MX3 |
| 1 | 2.25 LShift | PCM_marbastlib-mx:STAB_MX_2.25u | S4 |
| 1 | 2.25u ANSI Enter | PCM_marbastlib-mx:STAB_MX_2.25u | S2 |
| 1 | 2.75 RShift | PCM_marbastlib-mx:STAB_MX_2.75u | S5 |
| 1 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | QR1 |
| 1 | 2u Backspace | PCM_marbastlib-mx:STAB_MX_2u | S1 |
| 1 | 3 | PCM_marbastlib-mx:SW_MX_1u | MX4 |
| 1 | 33k | Resistor_SMD:R_0402_1005Metric | RR1 |
| 1 | 4 | PCM_marbastlib-mx:SW_MX_1u | MX5 |
| 1 | 5 | PCM_marbastlib-mx:SW_MX_1u | MX6 |
| 1 | 500mA | Fuse:Fuse_1206_3216Metric_Pad1.42x1.75mm_HandSolder | F1 |
| 1 | 6 | PCM_marbastlib-mx:SW_MX_1u | MX7 |
| 1 | 6u Spacebar | PCM_marbastlib-mx:STAB_MX_6u_New | S6 |
| 1 | 7 | PCM_marbastlib-mx:SW_MX_1u | MX8 |
| 1 | 8 | PCM_marbastlib-mx:SW_MX_1u | MX9 |
| 1 | 9 | PCM_marbastlib-mx:SW_MX_1u | MX10 |
| 1 | ; | PCM_marbastlib-mx:SW_MX_1u | MX41 |
| 1 | = | PCM_marbastlib-mx:SW_MX_1u | MX13 |
| 1 | A | PCM_marbastlib-mx:SW_MX_1u | MX32 |
| 1 | ANSI Enter | PCM_marbastlib-mx:SW_MX_1u | MX44 |
| 1 | B | PCM_marbastlib-mx:SW_MX_1u | MX53 |
| 1 | Backspace | PCM_marbastlib-mx:SW_MX_1.5u | MX30 |
| 1 | C | PCM_marbastlib-mx:SW_MX_1u | MX51 |
| 1 | Caps | PCM_marbastlib-mx:SW_MX_1.75u | MX45 |
| 1 | D | PCM_marbastlib-mx:SW_MX_1u | MX34 |
| 1 | E | PCM_marbastlib-mx:SW_MX_1u | MX20 |
| 1 | Esc | PCM_marbastlib-mx:SW_MX_1u | MX1 |
| 1 | F | PCM_marbastlib-mx:SW_MX_1u | MX35 |
| 1 | Full Backspace | PCM_marbastlib-mx:SW_MX_1u | MX16 |
| 1 | G | PCM_marbastlib-mx:SW_MX_1u | MX36 |
| 1 | H | PCM_marbastlib-mx:SW_MX_1u | MX37 |
| 1 | I | PCM_marbastlib-mx:SW_MX_1u | MX25 |
| 1 | ISO Enter | PCM_marbastlib-mx:STAB_MX_ISO-ROT | S3 |
| 1 | ISO Enter | PCM_marbastlib-mx:SW_MX_1u | MX46 |
| 1 | J | PCM_marbastlib-mx:SW_MX_1u | MX38 |
| 1 | K | PCM_marbastlib-mx:SW_MX_1u | MX39 |
| 1 | L | PCM_marbastlib-mx:SW_MX_1u | MX40 |
| 1 | LShift | PCM_marbastlib-mx:SW_MX_1u | MX47 |
| 1 | LShift 1.25u | PCM_marbastlib-mx:SW_MX_1.25u | MX61 |
| 1 | M | PCM_marbastlib-mx:SW_MX_1u | MX55 |
| 1 | N | PCM_marbastlib-mx:SW_MX_1u | MX54 |
| 1 | O | PCM_marbastlib-mx:SW_MX_1u | MX26 |
| 1 | Off Center Spacebar | PCM_marbastlib-mx:SW_MX_1u | MX68 |
| 1 | P | PCM_marbastlib-mx:SW_MX_1u | MX27 |
| 1 | PRTR5V0U2X | Package_TO_SOT_SMD:SOT-143 | D1 |
| 1 | Q | PCM_marbastlib-mx:SW_MX_1u | MX18 |
| 1 | R | PCM_marbastlib-mx:SW_MX_1u | MX21 |
| 1 | RShift 1.75u | PCM_marbastlib-mx:SW_MX_1.75u | MX59 |
| 1 | RShift 2.75u | PCM_marbastlib-mx:SW_MX_1u | MX62 |
| 1 | S | PCM_marbastlib-mx:SW_MX_1u | MX33 |
| 1 | STM32F072CBT6 | Package_QFP:LQFP-48_7x7mm_P0.5mm | U2 |
| 1 | Spacebar | PCM_marbastlib-mx:SW_MX_1u | MX65 |
| 1 | Stepped Caps | PCM_marbastlib-mx:SW_MX_1.75u_STP_1.25 | MX31 |
| 1 | T | PCM_marbastlib-mx:SW_MX_1u | MX22 |
| 1 | TC2030_SWD | PCM_marbastlib-various:CON_TC2030_outlined | J2 |
| 1 | TS-1187A-B-A-B | Button_Switch_SMD:SW_SPST_TL3342 | SWR1 |
| 1 | Tab | PCM_marbastlib-mx:SW_MX_1.5u | MX17 |
| 1 | U | PCM_marbastlib-mx:SW_MX_1u | MX24 |
| 1 | USB_C_Receptacle_USB2.0_16P | PCM_marbastlib-various:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | USB1 |
| 1 | V | PCM_marbastlib-mx:SW_MX_1u | MX52 |
| 1 | W | PCM_marbastlib-mx:SW_MX_1u | MX19 |
The 154 most common of 163 parts.

hungrygeek/HSKB
Open-source HHKB-layout MX custom keyboard — KiCad PCB, case STL, QMK/VIA firmware. Personal iteration of the HSKB (Happy Sabi Keyboard).


ilomon10/embedded-totalizer-hour-meter
ESP32 engine hour meter & totalizer: firmware, SensorFrame protocol, Node host tools, KiCad PCB and a Deno device simulator

protieusz/Q-Ballz
Q-Ballz, inspired by an anime with 2 trackballs, 2x CORE-A Mcus, 34 keys, 10 RGBs

sporkus/le_chiffre_keyboard_stm32
Le Chiffre keyboard pcb with stm32F072

ShrimpedKeyboard/Hokaku40
A 40% base kit compatible mx hotswap keyboard with a 2 peice aluminium case and 2 xt collums to the left and right sides of the keyboard

pierrechevalier83/ferris
A low profile split keyboard designed to satisfy one single use case elegantly


ymkn/YM60JIS
A JIS layout 60% hot swappable custom mechanical keyboard PCB powered by RP2040.
It measures 286.4 × 96.1 mm and has 2 copper layers, 1.6 mm thick.
163 parts, built around the STM32F072CBT6, 1N4148W, NSMD050 and PRTR5V0U2X. 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.
From the hungrygeek/HSKB repository on GitHub, at the commit this page was made from: the board is PCB Files/VoidHHKB-Solder/VoidHHKB-Solder.kicad_pcb and its schematic PCB Files/VoidHHKB-Hotswap/Matrix.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask hungrygeek before reusing the design.