Skip to the content
2 layers290 × 120 mmHackPad, the printed circuit board in 3D

my own keyboard

Size
290 × 120 mm
Copper layers
2
Thickness
1.6 mm
Parts
129
Nets
85
Pads
470
Tracks, vias
677, 9
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
30 Apr 2026
Updated
9 May 2026

Overview

HackPad is an open-source printed circuit board by ggkchen, from the ggkchen/custom-keyboard repository on GitHub. It is a 2-layer board of 290 × 120 mm with 129 parts on 85 nets, routed with 677 tracks and 9 vias.

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

README

README.md

Custom Keyboard

This is a keyboard shortened mainly to optimize mouse space for Valorant while keeping enough keys to everyday computer use. It uses an arduino micro pro as a microcontroller and Kailh Box Thick Clicky switches. PCB is not hot swappable but should be simple to mount microcontroller, switches and keycaps onto it. The case has minimal parts for easy lightweight assembly. Arrow keys have been replaced to serve as customizable macros or other special functions.

PCB

Screenshot 2026-02-22 at 7 22 25 PM

CAD ASSEMBLY

Screenshot 2026-02-22 at 11 21 22 PM Onshape Link: https://cad.onshape.com/documents/7541f2100a52e2a8fb9d96d0/w/174a04ea7bc7f7ecaec00ce4/e/b31f0979a24da6a144661240?renderMode=0&uiState=699c00031957867eacc0531d

BOM

ItemPartQtySourceUnit (USD)Total (USD)Description
SwitchesNavy-CPG1511F01S09110Kailh0.6571.23Kailh Box Thick Clicky switches
Diodes1N4148FS-ND70Digikey (onsemi)0.042.731N4148 switching diodes for the matrix
ControllerArduino Pro Micro1AliExpress5.335.33ATmega32U4 Pro Micro board
PCBHackPad PCB5JLCPCB5.4327.17Custom PCB (JLCPCB minimum order qty 5)
KeycapsBlank PBT ANSI Set1AliExpress15.0015.0064-key blank PBT ANSI set, 6.25u spacebar
Grand Total121.46

Keycap set must include: 6.25u spacebar, 2u Backspace, 2u L-Shift, 2.25u Enter, 1.75u Caps, 1.5u Tab + Backslash, 1.25u modifiers. Any standard 60%/64-key ANSI kit works.

Build Guide

Heads up before you start: this whole build took me a weekend, but most of that was waiting for parts. Actual hands-on time is maybe 4–5 hours if you're slow with a soldering iron like me.

Stuff you need

Parts are all in the BOM up there. Beyond that you'll want:

  • soldering iron + solder (any decent iron works, I used a TS100)
  • flush cutters for trimming diode legs
  • tweezers — really helpful for placing diodes, get a pair if you don't have one
  • some masking tape

You'll also need a printed case. STL is in CAD/KEEBASSEMBLY.stl, or grab the STEP if you want to tweak it. I printed mine in PETG at 0.2 layer height and it was fine.

1. Get the PCB made

The gerbers are sitting in PCB/kicad/gerbers/Keyboard Gerbers.zip. Just upload that zip to JLCPCB, and order 5.

2. Solder the diodes

The diodes are directional, so the black band on the diode lines up with the square pad on the PCB. If the diode is facing the wrong direction the key won't work, or it will register the wrong keys.

What worked for me:

  • bend all 64 diodes into little staples first, in a batch
  • drop them all into the board before soldering anything (saves you from picking up the iron 64 separate times)
  • tape something flat over the back, flip the board, and the diodes will sit flush from gravity
  • solder one leg of each, do a pass for alignment, then solder the other legs
  • snip the leads when you're done

3. Solder the Pro Micro

Do the Pro Micro before the switches.

4. Switches

Push 4 switches into the corners, and one in the middle. These hold everything in place, then flip it, and solder just those 5. After that, keep putting switches in and solder them in.

Firmware

Runs QMK. The keyboard.json and keymap.c are in Keyboard_firmware/. There are three layers:

  • base — normal typing
  • fn (hold the key in the bottom right corner where you'd expect right-arrow) — gives you F1–F12, PrtSc, Pause, and the missing arrow nav keys
  • reset (fn + the second mod key) — hitting R on this layer puts the board into the bootloader, so you can re-flash without opening the case

Setting up QMK

If you've never used QMK before:

text
python3 -m pip install --user qmk
qmk setup

Hit yes when it asks to clone qmk_firmware to your home directory.

Copy the files in

QMK expects keyboards to live under qmk_firmware/keyboards/, so:

text
mkdir -p ~/qmk_firmware/keyboards/keeb/keymaps/default
cp Keyboard_firmware/keyboard.json ~/qmk_firmware/keyboards/keeb/keyboard.json
cp Keyboard_firmware/keymap.c       ~/qmk_firmware/keyboards/keeb/keymaps/default/keymap.c

Compile

text
qmk compile -kb keeb -km default

Should drop a .hex in the QMK root after a few seconds. If it complains about LAYOUT_64_ansi not existing, your keyboard.json didn't make it over — re-check the copy.

Flash

Plug the keyboard in, then:

text
qmk flash -kb keeb -km default

When it says Detecting USB port, reset your controller now..., you've got about 8 seconds to short the RST pin to GND on the Pro Micro twice in quick succession. Tweezers work. The flasher will grab it and write the firmware.

If you ever brick the keymap and lose access to your reset key, the layer-2 bootloader binding saves you — fn + mod + R. So even if you mess up the keymap badly, you can always get back into the bootloader without cracking the case open.

To customize anything — different keys, macros on the arrow positions, whatever — edit keymap.c and rerun the compile + flash steps.

Testing

Don't put the keycaps on yet.

1. Plug it in. The little power LED on the Pro Micro should come on. If it doesn't, unplug right away and look for solder bridges between adjacent pins on the Pro Micro.

2. Check that the OS sees it. On Windows it'll show up under Keyboards in Device Manager. On Mac you'll get the keyboard identification wizard popping up — just close it. On Linux, lsusb will show a feed:0000 device. (That's the default VID/PID baked into the firmware, no, it's not malware.)

3. Hit every key. https://config.qmk.fm/#/test is what I use. Press each key, check it lights up on screen, move on.

If something's wrong, it's almost always one of these:

  • one key does nothing → cold joint, reflow both pins
  • one key types something else → either a solder bridge between two switches, or a diode flipped on a different key (matrix scanning makes this confusing)
  • a whole row or column is dead → cold joint at the Pro Micro pin for that row/col, or a totally fried diode somewhere on the row
  • pressing one key triggers two → diode missing or backwards on one of them (the matrix can't isolate without it)
  • nothing at all → firmware didn't flash, or you're holding a perfectly good paperweight

4. Test the fn layer. Hold the fn key (bottom-right area, next to up-arrow) and tap the number row — should give you F1 through F12.

5. Test the bootloader combo. fn + the second mod + R. The keyboard should disappear from your machine and reappear as Arduino Leonardo or similar. Unplug and replug and you're back to normal. Once you've confirmed this works, you can flash new firmware forever without touching the reset pins again.

That's it. Keycaps on, screw the case shut, go play Valorant.

Parts

129
QtyValueFootprintReferences
631N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +47
63SW_Pushkeyswitches.pretty-master:SW_MXSW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +47
2Conn_01x12_SocketConnector_PinSocket_2.54mm:PinSocket_1x12_P2.54mm_VerticalArdLeft1, ArdRight1
1SW_MXkeyswitches.pretty-master:SW_MXRESET

Similar boards

  • 2 layers100 × 100 mmDb25 bob v2, the printed circuit board in 3D

    Db25 bob v2

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    129 parts990GPL-3.0
  • 2 layers101.3 × 128.5 mm3-phase lfo, the printed circuit board in 3D

    3-phase lfo

    tpcarlson/synth-diy

    Mostly Eurorack projects

    129 parts107
  • 2 layers124.4 × 80.4 mmFourier left, the printed circuit board in 3D

    Fourier left

    keebio/fourier

    PCB files for Fourier Keyboard, a 40% split keyboard

    129 parts96MIT
  • 2 layers243 × 72.7 mmTG4x, the printed circuit board in 3D

    TG4x

    MythosMann/tg4x

    A cheap, open source 45% keyboard

    129 parts81GPL-3.0
  • 2 layers89 × 55.5 mmMintypcb, the printed circuit board in 3D

    Mintypcb

    jackw01/pi-tin

    Open source raspberry pi handheld retro gaming console

    129 parts75CERN-OHL-W-2.0
  • 2 layers284.5 × 94 mmTutorial, the printed circuit board in 3D

    Tutorial

    BathroomEpiphanies/KiCAD-Keyboard-Tutorial

    Tutorial on making keyboard PCB layouts in KiCAD

    129 parts74MIT
  • 2 layers99.5 × 90.5 mmMRR ESPA, the printed circuit board in 3D

    MRR ESPA

    maplerainresearch/MRR_ESPA

    A basic 3D printer control board based on ESP32

    129 parts59
  • 2 layers100 × 116 mmQPCR main, the printed circuit board in 3D

    QPCR main

    hisashin/qNinja

    Open source Real-Time Quantitative PCR Implementation

    129 parts48GPL-3.0

Questions

How big is the HackPad PCB?

It measures 290 × 120 mm and has 2 copper layers, 1.6 mm thick.

What parts does the HackPad use?

129 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 HackPad KiCad files?

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

Can I use the HackPad design in my own project?

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