

Keyboard
Custom board designs for MiSTle projects
- Size
- 222.3 × 63 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 153
- Nets
- 240
- Pads
- 723
- Tracks, vias
- 1,245, 58
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 11 Aug 2025
- Updated
- 21 Oct 2026
Overview
Keyboard is an open-source printed circuit board by MiSTle-Dev, from the MiSTle-Dev/Boards repository on GitHub. It is a 2-layer board of 222.3 × 63 mm with 153 parts on 240 nets, routed with 1,245 tracks and 58 vias.
It is built around the 74HC595, 74HC165D and 1N4148WS. Its parts include 81 switches, 25 resistors, 16 diodes, 3 capacitors and 3 ICs. It belongs with the keyboards and input boards of this library.
Main components
374HC595
SOP-16-40℃~+85℃ 1 100ns@5V,50pF 10MHz 2V~6V 74HC 8 Serial-to-Serial or Parallel Tri-State SOP-16 Shift Registers ROHSGRShift Registers74HC165D
SO-16-40℃~+125℃ 1 28ns@6V,50pF 2V~6V 35MHz 500mW 74HC 8 Parallel or Serial to Serial SOIC-16 Shift Registers ROHSNexperiaShift Registers1N4148WS
SOD-3231.25V@150mA 100V 150mA 1uA@75V 200mW 2A 4ns Independent SOD-323 Switching Diodes ROHSJiangsu Changjing Electronics Technology (CJ)Switching Diodes
README
misteryshield20k/README.mdMiSTeryNano MIDI shield for Tang Nano 20k

This is a base board for the Tang Nano 20K and optionally the M0S Dock. It features:
- Headers to plug the Tang Nano 20K
- A seperate USB power supply (old variant only)
- Used if the Tang Nano 20K is being used as a USB host itself
- Can be broken off to make room for a M0S Dock
- M0S Dock connector
- Atari style joystick
- Supports two buttons
- Including 5V supply and 5V level shifters
- Works with DB9 joystcks and mice
- MIDI
- MIDI OUT with driver chip to protect Tang Nano 20K
- MIDI IN with optocoupler to protect Tang Nano 20K
PCBA production files for JLCPCB are availble here.
Variants
There are now two variants of the board:
-
The original variant including a small PCB breakout with a USB-C connector. This variant could theoretically be used without M0S Dock. But in fact the M0S Dock is currently needed by many cores and the USB-C part needs to be cut off to make space for the M0S Dock. However, it turned out that some people damage the PCB in the process of cutting this part off. That's why the second M0S variant now exists.
-
The M0S variant does not include the USB-C part and can only be used in conjunction with a M0S Dock. This is the preferred version as nothing has to be cut to use it. However, this variant has not been tested, yet. No problems are expected, but please report back if you successfully order and use one of these.

The part carrying the USB connector can be cut away making room for a M0S Dock which will then also be used to provide power to the Tang Nano 20K.

Parts
153| Qty | Value | Footprint | References |
|---|---|---|---|
| 23 | 10k | Resistor_SMD:R_0805_2012Metric | R1, R2, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23 +7 |
| 15 | 1N4148WS | Diode_SMD:D_SOD-323 | D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15 |
| 9 | MountingHole | MountingHole:MountingHole_3mm | H1, H2, H3, H4, H5, H6, H7, H8, H8 |
| 3 | 100nF | Capacitor_SMD:C_0805_2012Metric | C1, C2, C3 |
| 2 | 0 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW20, SW93 |
| 2 | 1 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW26, SW81 |
| 2 | 2 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW16, SW82 |
| 2 | 3 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW27, SW83 |
| 2 | 330 | Resistor_SMD:R_0805_2012Metric | R24, R25 |
| 2 | 4 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW17, SW58 |
| 2 | 5 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW28, SW70 |
| 2 | 6 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW18, SW59 |
| 2 | 7 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW29, SW35 |
| 2 | 74HC595 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U1, U3 |
| 2 | 8 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW19, SW46 |
| 2 | 9 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW30, SW36 |
| 1 | ' " | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW80 |
| 1 | ( | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW13 |
| 1 | ) | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW24 |
| 1 | * | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW25 |
| 1 | + | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW71 |
| 1 | , < | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW78 |
| 1 | - | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW47 |
| 1 | - _ | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW31 |
| 1 | . | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW94 |
| 1 | . > | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW79 |
| 1 | / | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW14 |
| 1 | / ? | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW92 |
| 1 | 74HC165 | Package_SO:SO-16_3.9x9.9mm_P1.27mm | U2 |
| 1 | ; : | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW67 |
| 1 | = + | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW21 |
| 1 | A | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW61 |
| 1 | Alt | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW72 |
| 1 | B | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW76 |
| 1 | BS | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW22 |
| 1 | C | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW75 |
| 1 | Caps | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW91 |
| 1 | Clr | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW34 |
| 1 | Ctrl | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW48 |
| 1 | D | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW74 |
| 1 | Del | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW33 |
| 1 | Down | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW57 |
| 1 | E | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW50 |
| 1 | ESC | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW15 |
| 1 | EU | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW73 |
| 1 | Ent | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW95 |
| 1 | F | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW63 |
| 1 | F1 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW1 |
| 1 | F10 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW10 |
| 1 | F2 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW2 |
| 1 | F3 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW3 |
| 1 | F4 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW4 |
| 1 | F5 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW5 |
| 1 | F6 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW6 |
| 1 | F7 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW7 |
| 1 | F8 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW8 |
| 1 | F9 | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW9 |
| 1 | G | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW52 |
| 1 | H | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW64 |
| 1 | Help | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW11 |
| 1 | I | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW53 |
| 1 | Ins | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW44 |
| 1 | J | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW65 |
| 1 | K | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW77 |
| 1 | L | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW66 |
| 1 | LShft | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW60 |
| 1 | Left | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW45 |
| 1 | M | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW89 |
| 1 | N | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW88 |
| 1 | O | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW42 |
| 1 | P | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW54 |
| 1 | PWR LED | LED_SMD:LED_0805_2012Metric | D16 |
| 1 | Q | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW49 |
| 1 | R | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW39 |
| 1 | RShft | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW84 |
| 1 | Ret | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW68 |
| 1 | Rght | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW69 |
| 1 | S | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW62 |
| 1 | SPI | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Horizontal | J1 |
| 1 | Spc | sw_dpdt_6pin:sw_7x7_dpdt_6pin | SW90 |
The 138 most common of 153 parts.
Questions
How big is the Keyboard PCB?
It measures 222.3 × 63 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Keyboard use?
153 parts, built around the 74HC595, 74HC165D and 1N4148WS. 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 KiCad files?
From the MiSTle-Dev/Boards repository on GitHub, at the commit this page was made from: the board is atarist_keyboard/pcb/keyboard.kicad_pcb and its schematic atarist_keyboard/pcb/keyboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Keyboard design in my own project?
Its repository states no licence, so its author keeps all rights: ask MiSTle-Dev before reusing the design.
More from MiSTle-Dev/Boards
12- 2 layers90 × 67 mm

- 2 layers110 × 67 mm

- 2 layers42.8 × 81.8 mm

- 2 layers100 × 57 mm

Misteryshield20k rpipico dual db9-rounded
MiSTle-Dev/Boards
Custom board designs for MiSTle projects
78 parts23 - 2 layers100 × 57 mm

- 2 layers22.6 × 54 mm

- 2 layers57 × 57 mm

- 2 layers57 × 57 mm

- 2 layers37.9 × 35.2 mm

- 2 layers61.4 × 23 mm

- 2 layers53.6 × 71.4 mm

- 2 layers17.4 × 55.1 mm

Similar boards
- 2 layers140 × 76.9 mm

- 2 layers70 × 110 mm

Quantizer control
lennartquerter/euro-rack-synth
Lenimal Github for DIY for a Eurorack Synth
106 parts13 - 2 layers100 × 45 mm

- 2 layers159.9 × 119.9 mm

- 2 layers200 × 115 mm

Musicbrain busboard v2
MarkWestbroek/MusicBrain
A central brain running on teensy or a lighter MCU to process any control signals (MIDI, CV, our own) into the same but adding logic, ADSRs, DCOs, CV matrices etc. to it
94 partsMIT - 2 layers245.1 × 160 mm

8-Bit CPU 32k
slu4coder/Minimal-64x4-Home-Computer
My DIY TTL home computer with VGA and PS/2 and 4x the processing power of a Commodore C64 or Apple II.
139 parts326 - 2 layers171.5 × 106.7 mm

Sequencer
westlicht/performer-hardware
PER|FORMER Eurorack Sequencer - Hardware Design Files
435 parts110 - 2 layers306.1 × 130.2 mm

8-Bit CPU 32k
slu4coder/Minimal-64-Home-Computer
Legacy: Full TTL-only home computer with VGA and PS/2 and twice the processing power of a Commodore 64
132 parts94