Skip to the content
PCBKitNew board
2 layers308 × 153 mmKeyboard pcb, the printed circuit board in 3D

Keyboard pcb

jonathan512/KB79

Custom 79-key mechanical keyboard designed in KiCad, featuring an ATmega32A, USB-C, and QMK firmware.

Size
308 × 153 mm
Copper layers
2
Thickness
1.6 mm
Parts
219
Nets
128
Pads
904
Tracks, vias
2,096, 150
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
8 Oct 2026
Updated
8 Oct 2026

Overview

Keyboard pcb is an open-source printed circuit board by jonathan512, from the jonathan512/KB79 repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 308 × 153 mm with 219 parts on 128 nets, routed with 2,096 tracks and 150 vias.

It is built around the ATMEGA32A-PU and USB4085-GF-A. Its parts include 81 switches, 7 resistors, 5 capacitors, 2 diodes and 2 connectors. It belongs with the keyboards and input boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

KB79

Custom 79-key mechanical keyboard | Jonathan Li

KB79 is a custom 75% mechanical keyboard designed around an ATmega32A microcontroller. The project covers the complete hardware development process, including schematic design, PCB layout, component sourcing, fabrication, assembly, firmware integration, and testing.

The finished keyboard features USB-C connectivity, a rotary encoder for media controls, and a hybrid switch footprint designed for both Kailh Choc V2 low-profile and MX-style switches.

Finished KB79 keyboard

Overview

After using a 60% keyboard for several years, I wanted a compact layout that retained dedicated arrow keys and a function row without the additional size and keys of a tenkeyless keyboard. KB79 was designed around those requirements. Its 79-key layout includes a function row, arrow keys, Delete, Home, End, and Insert, alongside a rotary encoder for volume and playback controls.

The project also provided an opportunity to gain experience with KiCad and the complete PCB development workflow, from component selection and schematic capture to manufacturing, assembly, and hardware bring-up.

Features

  • Custom 79-key, 75% layout
  • ATmega32A-PU microcontroller
  • 6 × 15 keyboard matrix
  • USB-C connectivity using V-USB
  • 16 MHz crystal
  • Rotary encoder with volume and play/pause controls
  • QMK firmware
  • Hybrid Kailh Choc V2 / MX-style switch footprints
  • Through-hole component construction
  • FR4 switch plate and baseplate
  • 2-layer, 1.6 mm PCB

Hardware & PCB Design

KB79 uses an ATmega32A-PU microcontroller and a custom 6 × 15 keyboard matrix. USB connectivity is provided through V-USB, allowing the ATmega32A to communicate with a computer over USB-C.

The PCB was designed in KiCad, including the keyboard matrix, component placement, trace routing, board geometry, and manufacturing preparation.

The PCB uses modified ScottoKeebs switch footprints, with additional mounting holes added to accommodate both Kailh Choc V2 low-profile and MX-style switches. The completed keyboard uses Kailh low-profile Cream switches; MX compatibility has not yet been physically tested.

The design primarily uses through-hole components, allowing the PCB to be assembled entirely by hand.

KB79 PCB layout KB79 PCB 3D render

Fabrication & Assembly

Five bare PCBs were manufactured by JLCPCB. All electronic components were sourced separately through Taobao and hand-soldered without PCB assembly services.

The finished keyboard uses:

  • Kailh low-profile Cream switches
  • FR4 switch plate
  • FR4 baseplate
  • Low-profile spacebar stabilizer

The first PCB revision was successfully assembled and brought into operation without requiring a hardware revision.

KB79 assembly with switches installed

Firmware

KB79 runs QMK firmware configured for the ATmega32A using V-USB and USBaspLoader.

The firmware configuration implements the custom keyboard matrix, keymap, USB interface, and rotary encoder functionality.

The encoder provides the following media controls:

  • Clockwise: Volume Up
  • Counterclockwise: Volume Down
  • Press: Play/Pause

A secondary function layer (MO(1)) is included and currently reserved for future functionality.

Firmware configuration and source files are available in the firmware/ directory.

Bring-Up & Validation

Hardware and firmware bring-up involved testing USB connectivity, verifying the keyboard matrix, validating key mappings, and confirming rotary encoder operation.

Matrix configuration and USB enumeration issues were resolved through incremental testing, including simplified test keymaps and adjustments to the V-USB configuration.

The completed keyboard has been used regularly for two weeks without observed hardware or firmware issues.

Repository Structure

text
KB79/
├── LICENSE
├── README.md
├── firmware/
│   ├── builds/
│   │   └── handwired_kb79_default.hex
│   ├── keymaps/
│   │   └── default/
│   │       └── keymap.c
│   ├── keyboard.json
│   ├── readme.md
│   ├── rules.mk
│   └── usbconfig.h
├── hardware/
│   ├── fabrication/
│   │   ├── gerbers/
│   │   └── KB79_BOM.xlsx
│   └── kicad files/
│       ├── keyboard_pcb.kicad_pcb
│       ├── keyboard_pcb.kicad_pro
│       └── keyboard_pcb.kicad_sch
└── images/

The BOM includes component specifications and part numbers used for the build.

Attribution

Portions of the ATmega32A, USB/V-USB, and supporting circuitry were adapted from the open-source Mysterium TKL keyboard project by Cosey Fannitutti (CFTKB), licensed under the GNU General Public License v3.0.

KB79 features a separately developed keyboard matrix, physical layout, PCB placement and routing, component selection, assembly, and firmware integration.

Switch footprints were adapted from [ScottoKeebs](https://github.com/joe-scotto/scottokeebs?utm_source=chatgpt.com) by Joe Scotto, with two additional holes added for dual switch compatibility.

License

KB79 is distributed under the GNU General Public License v3.0. See LICENSE for details.

Parts

219
QtyValueFootprintReferences
81~Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal*D80, D0, D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21 +65
67~ScottoKeebs_Scotto:CUSTOM_CHOCV2_MX_Solder_1.00uS0, S1, S2, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22 +51
16, , , , , , , , , , , , , , ,
4~ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_1.50uS28, S41, S75, S76
3~ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_1.25uS71, S72, S73
20.1ueasyeda:CAP-TH_L4.0-W3.5-P5.00-D0.5C1, C2
21.5kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR6, R7
222pFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC4, C5
23.6VDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD87, D88
25.1kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR2, R3
275Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR4, R5
2LOGOLOGOG***, G***
2~ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_2.25uS55, S57
2~ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_1.75uS43, S68
110kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1
14.7uCapacitor_THT:C_Radial_D5.0mm_H5.0mm_P2.00mmC3
1500mAeasyeda:FUSE-TH_L7.8-W3.0-P5.10-D0.5-S2.00F1
1ATmega32A-PPackage_DIP:DIP-40_W15.24mmU1
1AVR-ISP-6Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ1
1CrystalCrystal:Crystal_HC49-4H_VerticalY1
1RotaryEncoder_SwitchScottoKeebs_Scotto:Encoder_EC11_MXSW1
1USB4085-GF-A_C7095263easyeda:USC-C-SMD_USB4085-GF-AJ2
1bootButton_Switch_THT:SW_PUSH_6mmBOOT
1pwrLED_THT:LED_D3.0mmLED
1resetButton_Switch_THT:SW_PUSH_6mmRESET
1~ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_2.00uS26
1~ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_6.25uS74

The 202 most common of 219 parts.

Questions

How big is the Keyboard pcb PCB?

It measures 308 × 153 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Keyboard pcb use?

219 parts, built around the ATMEGA32A-PU and USB4085-GF-A. 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 Keyboard pcb KiCad files?

From the jonathan512/KB79 repository on GitHub, at the commit this page was made from: the board is hardware/kicad files/keyboard_pcb.kicad_pcb and its schematic hardware/kicad files/keyboard_pcb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Keyboard pcb design in my own project?

Its repository publishes it under the GPL-3.0 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 layers347.7 × 146.6 mmMysterium pcb, the printed circuit board in 3D

    Mysterium pcb

    coseyfannitutti/mysterium

    TKL keyboard that can be entirely assembled using only through hole components, including usb type-c

    227 parts541GPL-3.0
  • 2 layers344.4 × 130.8 mmSesame, the printed circuit board in 3D

    Sesame

    str-dst/sesame

    Alice type ergo keyboard using only THT parts

    168 parts331
  • 2 layers364.4 × 167.3 mmRedherring, the printed circuit board in 3D

    Redherring

    dcpedit/redherring

    Red Herring Keyboard PCB and case files

    226 parts253CC-BY-4.0
  • 2 layers228 × 114 mmPlanck thk, the printed circuit board in 3D

    Planck thk

    olkb/planck_thk

    Planck Through Hole Kit

    134 parts169GPL-3.0
  • 2 layers371.5 × 145.3 mmBasketweave, the printed circuit board in 3D

    Basketweave

    null-ll/basketweave

    Through-hole Alice-style keyboard with arrow keys and a rotary encoder

    177 parts129GPL-2.0
  • 2 layers439 × 141.6 mmAek2 usb, the printed circuit board in 3D

    Aek2 usb

    str-dst/aek2_usb

    drop-in replacement pcb for the AEK II

    241 parts55
  • 2 layers317.3 × 154.8 mmLCK75, the printed circuit board in 3D

    LCK75

    lyso1/LCK75

    a 75% through-hole keyboard designed by myself with inspiration from the CFTKB Discipline and Yiancar Gingham

    207 parts45
  • 2 layers285.8 × 124.6 mmPunk75, the printed circuit board in 3D

    Punk75

    dsanchezseco/punk75

    Ortholinear keyboard with 75 keys and all components through hole

    194 parts44GPL-3.0