

HackPad
A custom mini keyboard or macro board, where every physical key is fully programmable to launch apps, trigger shortcuts, control media, or run multi-step automated commands with a single press of a button.
- Size
- 101.7 × 66.7 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 38
- Nets
- 35
- Pads
- 173
- Tracks, vias
- 91, 1
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 12 Oct 2026
- Updated
- 18 Oct 2026
Overview
HackPad is an open-source printed circuit board by poojithas956, from the poojithas956/HackPad repository on GitHub, published under the MIT licence. It is a 2-layer board of 101.7 × 66.7 mm with 38 parts on 35 nets, routed with 91 tracks and 1 via.
It is built around the RP2040-ZERO. Its parts include 13 switches, 12 diodes, 1 IC and 1 connector. It belongs with the keyboards and input boards and the RP2040 boards of this library.
Main components
1README
README.mdHackPad
A 12-key macropad I built as my second hardware project for Stasis, designed to pair with my 60% keyboard for editing, shortcuts, media control, etc...
Hi there, this is my fully custom keypad from scratch, and I tried to keep it clean, practical, and actually buildable.
Quick Project Summary
- Project: 3x4 macropad + rotary encoder
- MCU: RP2040 Zero
- Switches: 12x MX-style
- Extra input: 1x EC11 rotary encoder with push switch
- Matrix: 3 rows x 4 columns
- PCB size target: about 100mm x 65mm
- Case workflow: KiCad PCB export -> Onshape assembly -> custom bottom case + plate
Why I Made This
I wanted a dedicated macropad next to my keyboard for common shortcuts (copy/paste, app switching, media, timeline scrubbing, etc.) and I wanted to learn the full flow:
- keyboard layout planning
- schematic capture
- PCB routing
- case CAD around real board geometry
Features
- 12 programmable keys (MX style)
- Rotary encoder with click for volume/scroll/tool size/etc.
- RP2040-based and easy to firmware-program
- Through-hole diodes for matrix
- UART header exposed
- Custom silkscreen logos for personality
Progress pictures












Onshape: Link
Bill of Materials (BOM)
Approximate vendor pricing based on 1 USD = 94 INR.
| Item | Qty | Vendor | Price (USD) | Price (INR) | Notes |
|---|---|---|---|---|---|
| PCB | 5 | Robu | $10 | Rs. 960 | PCB |
| Waveshare RP2040 Zero without header | 1 | Robu | $4.47 | ₹420 | Main controller |
| 1N4148 diode | 12 | Robu | $0.83 total | ₹78 total | Matrix diodes |
| EC11 rotary encoder with push switch | 1 | Robu | $0.62 | ₹58 | Knob + click |
| MDA Lavender numpad keycaps | 12 | Stackskb | $1.60 | ₹150 | Keycaps |
| Gateron Baby Kangaroo 2.0 tactile switches | 20 | Stackskb | $9.57 | ₹900 | Pack of 20 |
| Gateron hotswap sockets | 13 | Stackskb | $1.38 total | ₹130 total | Socketed switch support |
| 1x4 right-angle pin header | 1 | Self-supplied | $0.00 | ₹0 | UART / expansion |
| Tax and Shipping | $5 | Rs400 | incl. Tax + Shipping fee + Conversion rate to INR | ||
| Total | — | — | $35 | ₹2,636 | Estimated project total |
For the KiCad design BOM, see production/bom.csv. The full project buying list is also available in bom.csv.
Design Files Included
- Schematic: PCB/HackPad.kicad_sch
- PCB: PCB/HackPad.kicad_pcb
- KiCad project: PCB/HackPad.kicad_pro
- Layout JSON: PCB/keyboard-layout.json
- Plate DXF: PCB/plate.dxf
- CAD model: CAD/HackPad.step
- Production files:
Firmware
KMK firmware for this board is included in:
It is preconfigured for the exact matrix and encoder pins used in this PCB.
What I Learned
- Importing the actual PCB into CAD early saves a lot of pain later.
- Matrix labeling in schematic makes routing way less confusing.
- Tiny mechanical details (insert depth, nut traps, plate thickness) matter a lot more than expected.
- Silkscreen art is optional, but morale is not.
Parts
38| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12 |
| 12 | SW_Push_45deg | PCM_marbastlib-xp-mx:SW_MX_HS_KS-2P02B01-01_1u | SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12 |
| 5 | MountingHole | MountingHole:MountingHole_2.7mm_M2.5 | H, H1, H2, H3, H4 |
| 1 | Conn_01x04_Pin | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Horizontal | J1 |
| 1 | LOGO | logo:HackClub | Pogo |
| 1 | RP2040-ZERO | RP2040-ZERO:MODULE_RP2040-ZERO | U1 |
| 1 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_MountingHoles | SW13 |
The 33 most common of 38 parts.
Questions
How big is the HackPad PCB?
It measures 101.7 × 66.7 mm and has 2 copper layers, 1.6 mm thick.
What parts does the HackPad use?
38 parts, built around the RP2040-ZERO. 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 poojithas956/HackPad repository on GitHub, at the commit this page was made from: the board is PCB/HackPad.kicad_pcb and its schematic PCB/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 publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers132.3 × 94.9 mm

- 2 layers321 × 92.3 mm

- 2 layers255.9 × 99.3 mm

Zerosprey42
beekeeb/zerosprey42
Zerosprey42 Keyboard is a wired, beginner friendly, choc hotswap, MonoBlockSplit (Unibody), column-staggered, DIY mechanical keyboard.
96 parts140 - 2 layers146.3 × 69.5 mm

- 2 layers54 × 64 mm

DonConIOmini
ravinrabbid/DonCon2040
RP2040 based firmware and hardware for DIY Taiko no Tatsujin Drum Controllers
96 parts66MIT - 2 layers52 × 50 mm

RP2040-TestPatternGenerator VGA
nmur/RP2040-TestPatternGenerator
A simple test pattern generator running on the RP2040 microcontroller
12 parts64GPL-3.0 - 2 layers120 × 40 mm

Buinchiez40
ChrisChrisLoLo/bunchiez40
A pocket keyboard that makes use of mouse switches to achieve a miniscule size
90 parts56GPL-3.0 - 2 layers305.2 × 76.2 mm
