
Mysterium pcb
coseyfannitutti/mysterium
TKL keyboard that can be entirely assembled using only through hole components, including usb type-c

Custom 79-key mechanical keyboard designed in KiCad, featuring an ATmega32A, USB-C, and QMK firmware.
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.
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.
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.
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.
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:
The first PCB revision was successfully assembled and brought into operation without requiring a hardware revision.
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:
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.
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.
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.
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.
KB79 is distributed under the GNU General Public License v3.0. See LICENSE for details.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 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.00u | S0, 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.50u | S28, S41, S75, S76 |
| 3 | ~ | ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_1.25u | S71, S72, S73 |
| 2 | 0.1u | easyeda:CAP-TH_L4.0-W3.5-P5.00-D0.5 | C1, C2 |
| 2 | 1.5k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R6, R7 |
| 2 | 22pF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | C4, C5 |
| 2 | 3.6V | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D87, D88 |
| 2 | 5.1k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R2, R3 |
| 2 | 75 | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R4, R5 |
| 2 | LOGO | LOGO | G***, G*** |
| 2 | ~ | ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_2.25u | S55, S57 |
| 2 | ~ | ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_1.75u | S43, S68 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R1 |
| 1 | 4.7u | Capacitor_THT:C_Radial_D5.0mm_H5.0mm_P2.00mm | C3 |
| 1 | 500mA | easyeda:FUSE-TH_L7.8-W3.0-P5.10-D0.5-S2.00 | F1 |
| 1 | ATmega32A-P | Package_DIP:DIP-40_W15.24mm | U1 |
| 1 | AVR-ISP-6 | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J1 |
| 1 | Crystal | Crystal:Crystal_HC49-4H_Vertical | Y1 |
| 1 | RotaryEncoder_Switch | ScottoKeebs_Scotto:Encoder_EC11_MX | SW1 |
| 1 | USB4085-GF-A_C7095263 | easyeda:USC-C-SMD_USB4085-GF-A | J2 |
| 1 | boot | Button_Switch_THT:SW_PUSH_6mm | BOOT |
| 1 | pwr | LED_THT:LED_D3.0mm | LED |
| 1 | reset | Button_Switch_THT:SW_PUSH_6mm | RESET |
| 1 | ~ | ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_2.00u | S26 |
| 1 | ~ | ScottoKeebs_Choc:CUSTOM_CHOCV2_MX_Solder_6.25u | S74 |
The 202 most common of 219 parts.
It measures 308 × 153 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
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).

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




null-ll/basketweave
Through-hole Alice-style keyboard with arrow keys and a rotary encoder


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

dsanchezseco/punk75
Ortholinear keyboard with 75 keys and all components through hole