Skip to content

A small PCB for hand-wired keyboards that uses all through-hole components.


BSD-2-Clause and 2 other licenses found

Licenses found

Notifications You must be signed in to change notification settings


Folders and files

Last commit message
Last commit date

Latest commit


This is a work in progress for now!

Table of Contents


The pin-check is a printed circuit board (PCB) for hand-wired keyboards that uses all through-hole components, and supports QMK firmware, MX or Alps keyswitches, and split layouts. The keyswitch spacing is 19.05 mm and the USB connector is USB-C.

It is inspired by the Plaid, Discipline, and Postage Board. It's called the pin-check because pin check is a smaller pattern than plaid and Gingham. It will stick up above your case or plate, both to show off the components 😎 and because through-hole components can't fit under the keyswitches on the back side of the PCB like the surface-mount device (SMD) components of something like Postage Board can.

It looks something like this (before any of the components are added).

3D render of front of PCB

3D render of back of PCB

There is a PDF of the schematic here.

Kits that include the PCB and all components (except for keyswitches) may be for sale at some point.


If you purchased a kit you can skip to building the kit!


To get a PCB, you can submit the files in this repository to any PCB manufacturer. OSH Park lets you upload .kicad_pcb files directly, or you can generate Gerber and drill files and submit them to your preferred PCB manufacturer (the manufacturer should have instructions to do this using KiCad).


All of the required electrical components and quantities are listed in the bill of materials (BOM). You can purchase these components (or equivalent components) from DigiKey, Mouser, or anywhere else you can find them. The BOM does not include parts like keyswitches or keycaps.


To flash new QMK keyboard layouts onto the keyboard (without using an AVR programmer or the ISP pins), the bootloader on the ATmega328P microcontroller unit (MCU) needs to support USB. USBaspLoader is a bootloader for AVR MCUs that uses V-USB for USB support.

TODO: Add instructions to use avrdude with either an AVR programmer or Raspberry Pi GPIO pins to flash the bootloader onto a fresh chip/MCU.

Acrylic Window

If you want to mount a clear acrylic window above the exposed portion of the PCB, you can upload the assets/window.svg file in this repository to your preferred laser cutting service or use it to cut a piece of clear acrylic yourself (something around 3mm thick should be good). To mount the window, you need four M2 female-female standoffs that are at least 10 mm long, and eight M2 screws to secure the standoffs to the window and the PCB.

There may be instructions here for assembling the kit (soldering components onto the PCB) at some point. It should be fairly straightforward if you know how to solder. The hardest part to solder is the USB-C jack. It's helpful to apply some flux (with a flux pen) to the smaller pins, get some solder on your iron, and drag it across the pins. It's also helpful to use some sort of magnifier to make sure all of the pins are soldered correctly.

Once all components are soldered onto the PCB (and before soldering the PCB onto your keyswitches) you should connect it with USB and press the RESET button while holding down the BOOT button. This should boot the chip into the USBaspLoader bootloader, which should be recognized by QMK Toolbox or avrdude. If it is not recognized, try the button combination again or check your solder joints.

Designing a Keyboard

If you already have a plate, case, and keyswitches, and are familiar with hand-wiring, you can skip to the QMK section.

TODO: Add information about limitations of the number of I/O pins on the ATmega328P (and implications for layouts).

TODO: Add example instructions of designing and purchasing a plate (probably using Keyboard Layout Editor, swillkb, and OSH Cut or another laser cutting service.

TODO: Add information about standoffs and screws for a sandwich-style case.

TODO: Add information about hand-wiring and required parts (more diodes!).


TODO: Add instructions about creating a keymap in QMK and flashing it onto the keyboard. Mention that H11 and H12 are not available to use for rows or columns if you're setting up a split keyboard!

FYI: The pin-check board alone has 18 I/O pins. If you use the TRRS jack (for a split keyboard) or I2C headers (to attach another device), pins C4 and C5 are used for I2C and are unavailable for I/O.

  • Thank you to coseyfannitutti who designed the Discipline PCB for the footprints D_DO-35_SOD27_P5.08mm_Horizontal.kicad_mod and USB_C_GCT_USB4085.kicad_mod! The Creative Commons license for these is included here.
  • Thanks to ai03-2725 for the symbol MX-NoLED (which I slightly modified to swap the ROW and COL labels) and footprint MX-1U-NoLED.kicad_mod from the MX_Alps_Hybrid repository. The footprint is also slightly modified (I added F.Mask to the technical layers of pads 1 and 2, so it would show up accurately in Pcbnew's 3D viewer) from the version in dsanchezseco's pull request. The MIT license for these is included here.
  • The symbol SJ-43514 and footprint CUI_SJ-43514.kicad_mod are from CUI Devices (with minor modifications to the footprint to move some weird edge cuts to the Cmts.User layer). These files are not licensed by CUI Devices and are free to use.
  • Lastly, I have to shout out the plaid PCB by hsgw one more time, because it was my first through-hole kit, it inspired me to learn more about circuit and PCB design, and it has been a great resource to learn from since it's open source.


A small PCB for hand-wired keyboards that uses all through-hole components.



BSD-2-Clause and 2 other licenses found

Licenses found