Skip to the content
2 layers391.4 × 136.8 mmKeyboard, the printed circuit board in 3D

Keyboards for Amstrad CPC Computers

Size
391.4 × 136.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
181
Nets
103
Pads
943
Tracks, vias
1,766, 82
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
2 Sep 2025
Updated
5 Sep 2025

Overview

Keyboard is an open-source printed circuit board by Bread80, from the Bread80/CPC_Keyboards repository on GitHub, published under the CERN-OHL-P-2.0 licence. It is a 2-layer board of 391.4 × 136.8 mm with 181 parts on 103 nets, routed with 1,766 tracks and 82 vias.

Its parts include 76 diodes, 68 switches and 3 connectors. It belongs with the keyboards and input and retro computing and games boards of this library.

README

Tactile/README.md

Keyboard for Amstrad CPC Computers

This project is a keyboard suitable for direct connection to an Amstrad CPC. The PCB uses tactile switches which can easily be labelled with suitable legends for the keytops. The current layout is that of an Amstrad CPC6128, but the key matrix is the same across all machines. The only differences are in the connector types and pinouts.

This board has connectors which are compatible with:

  • CPC464 with PCB keyboard (1x20 pin connector)
  • CPC464 with membrane keyboard (2x10 pin connectors)
  • CPC664 (1x20 pin connector) Untested
  • CPC6128 (2x10 pin connectors)

Plus machines: I'm not clear whether they use the same keyboard pinout or not. As such I can't say whether this board works with them or not.

Sadly it's not practical to add mounting holes suitable for mounting the keyboard on top of the CPC mainboard.

The repository includes an SVG file with key legend. This is suitable for the open source Inkscape software

BoM

74x Key switches[1]: Alps Apline SKHCBEA010. Mouser no: 688-SKHCBEA010 74x Keytops + Keycaps[2][3]: Alps Alpine SK2AA00090. Mouser: 688-SK2AA00090 'Standard pin header' (2.54mm spacing)[4] 2x Shunts[4] Connector(s) (to keyboard)[5] Connector(s) (to CPC)[6] Cable (keyboard to CPC)[7] 5x Standoffs, short)[8]: 13mm length, M3 x 0.5, 4.5mm OD, female/female. Mouser: M1260-3005-SS 5x Standoffs, long)[8]: 25mm, M3 x 0.5, 4.5mm OD, female/female. Mouser: 761-M1272-3005-SS 10x Screws[8]: M3 x 6mm. Mouser: 534-9191-3 --also-- key legend (printout)[9]

Notes:

Mouser codes can be used at http://mouser.com [1] PCB will accept any generic 12mm 'tactile switch'. The specified model allows a keytop + keycap to be attched. This enables a printed key legend to be used. The same design is available engineered for 'operating force' values. In my tests this model had the best feel. [2] Other colours are available (for the keytops), product codes SK2AA000x0 where x is 6,7,8,9 (NOTE: other digits are different products!). [3] This product code includes both keycap and keytop. These are also available separately, but the combined pack is slightly cheaper. Consult the keyswitch data sheet for the full list of available options: https://www.mouser.co.uk/datasheet/2/15/SKHC-1370786.pdf

[4] For configuration jumpers. Source from ebay etc for sensible pricing. If you don't intend to change settings you can solder an offcut of wire instead. [5] Unless you need to attach multiple machines your best option here is to directly solder wire to the board. Otherwise pin header is probably the most convenient. You'll either need 1x20 or 2x10 depending on the machine, plus [6] Options here depend on your machine. The 20-pin inline connect machines will accept 'Dupont' style connectors, pin header etc. The 2x10 matrix connectors are more of a pin. I've successfully used FPC/FFC cable. With some patience this can be persuaded into the connector. These cables only seem to be available in very short lengths but ribbon (etc) cable can be soldered to the other end to run to the keyboard. Obviously some insulation will be helpful on the joins to prevent it shorting against anything (or each other)! You'll need 2x 10-pin cables, 571-FSN-21A-10 is a suitable Mouser product code. [7] Discreet cables or a length or ribbon cable is up to you. Not every line is connected but using a 20pin or 2x 10-pin ribbon cable saves you having to etsablish which aren't needed. Cable length is up to you but anything too short will make it difficult to position the keyboard where you want it. I'd suggest a /minimum/ of about eight inches (40cm). [8] I use standoffs as feet to lift to board of the desk and give space for the wiring underneath. You can give the keyboard some 'raking' by using longer ones at the rear. another option is to use a male/female standoff as an extender. The board is engineered for M3 screws/threads. Note: The PCB has three rows of mounting holes but the central row has not proved necessary and I'll remove them if I do an update. Just use the top and bottom rows. [9] Provided as an SVG suitable for Inkscape) in this here repository. If creating your own key legend, each key needs to be a maximum 10mm x 10mm

Known Issues

  • The keyswitches have a pair of small lugs on the underside. Fitting them would be easier if the board had siutable holes for them. As is it just needs some care to ensure each switch sits flag and true.

Assembly guide

Soldering:

  • Pin header. Solder the pin header strips for the settings jumpers. Pin header can easily be snapped into short sections as needed.
  • Start with the keyswitches. Mount them any way which fits the holes and you'll be okay! Note that there are small lugs on the underside which make them want to sit at an angle. I /strongly/ recommend taking some care to check they are sitting flat and level. My method is to solder a single leg on each, then inspect and rework as needed to level them. Once they're level solder the remaining pins.
  • Connectors. Solder your preference of connector(s), or wire, to the rear of the board. The required connectors are as follows: For a CPC464 with PCB keyboard: connector J1 (1x20 pin) For a CPC464 with matrix keyboard: connectors J2 and J3 (2 of 1x10 pin) For a CPC664: connector J4 (1x20 pin) For a CPC6128: connectors J2 and J3 (2 of 1x10 pin)

Keycaps:

  • Print out the key legend sheet and cut up. Cutting as accurately to the lines as possible will be beneficial. If you have them available, using a cutting board, craft knife, and steel ruler will probably give a better finish than scissors.
  • Before assembling the key top + key legend + key cap consult the assembly diagram at the bottom of page three of the datasheet: https://www.mouser.co.uk/datasheet/2/15/SKHC-1370786.pdf Note the recommended orientation of keytop to keycap and plan which way you'll need to assemble things so your legend ends up the correct way around!
  • With the keycap (clear plastic piece) face down on the bench, insert the key legend (paper) face down. Then insert the keytop into the keycap, taking note of the corrent orientation with respect to the key legend.
  • Attach the keytop/keycaps to the keyswitches.

Configuration and Connection

All the connectors are orientated in the same way as those on the Amstrad motherboard. I.e. the pin(s) towards the top of rear of the keyboard PCB are those towards the rear of the motherboard PCB and, for the the dual 10-pin connectors, the right-most connector on the keyboard PCB (when viewed from the top) connects to the right-most connector on the motherboard PCB.

Configuration is only needed if using the pair of 10-pin connectors to connect to the motherboard. If connecting to a CPC464, short (with a 'shunt') JP2 and the left-most two pins of JP1. If connecting to a CPC6128 short JP3 and the two right-most pins of JP1. Note that when connecting to a CPC464 JP3 should be left open, when connecting to a CPC6128 JP2 should be left open.

Keyboard legend file(s)

Keyboard legend files are in the 'legend' folder. The following designs/layouts are available. SVG files can be created, edited and printed with the open source Inkscape software. If you create anything new/interesting please contribute it back to the repository.

UK-CPC6128-with-464-colours.svg - Amstrad CPC6128 layout with UK legend using the colour scheme of an original Amstrad CPC464.

Licence

My aim with this project is to share something potentially useful with the community but I don't want to see my work being exploited for profit.

Therefore, it's okay to have a board manufactured for your own use and sell off the spare boards for an amount to cover your costs and postage. If you want to sell boards, or derivatives, for profit or as part of a business then talk to me first.

Contact

Website: https://bread80.com Github: https://github.com/Bread80 Mastodon: https://mstdn.social/@bread80 Twitter: https://twitter.com/bread80com

Parts

181
QtyValueFootprintReferences
761N4148CPC_Keyswitch:D_SOD-123-HandsolderD0, D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22 +60
9MountingHoleMountingHole:MountingHole_2.2mm_M2_DIN965H7, H8, H9, H10, H11, H12, H13, H14, H15
4MountingHoleCPC_Keyswitch:MountingHole4.3mmx5.3mmNPTHH1, H3, H4, H6
4Stabiliser 2uKeyswitches:Stabilizer_MX_2uH16, H17, H19, H20
2ENTERKeyswitches:Kailh_socket_MX_optionalSW6, SW18
2Jumper_NC_SmallConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalLK2, LK3
2MountingHoleMountingHole:MountingHole_4.3mm_M4_DIN965H2, H5
2SHIFTKeyswitches:Kailh_socket_MX_optionalSW21, SW121
1, <Keyswitches:Kailh_socket_MX_optionalSW39
1- =Keyswitches:Kailh_socket_MX_optionalSW25
1.Keyswitches:Kailh_socket_MX_optionalSW7
1. >Keyswitches:Kailh_socket_MX_optionalSW31
1/ ?Keyswitches:Kailh_socket_MX_optionalSW30
10Keyswitches:Kailh_socket_MX_optionalSW15
10 _Keyswitches:Kailh_socket_MX_optionalSW32
11Keyswitches:Kailh_socket_MX_optionalSW13
11 !Keyswitches:Kailh_socket_MX_optionalSW64
12Keyswitches:Kailh_socket_MX_optionalSW14
12 "Keyswitches:Kailh_socket_MX_optionalSW65
13Keyswitches:Kailh_socket_MX_optionalSW5
13 #Keyswitches:Kailh_socket_MX_optionalSW57
14Keyswitches:Kailh_socket_MX_optionalSW20
14 $Keyswitches:Kailh_socket_MX_optionalSW56
15Keyswitches:Kailh_socket_MX_optionalSW12
15 %Keyswitches:Kailh_socket_MX_optionalSW49
16Keyswitches:Kailh_socket_MX_optionalSW4
16 &Keyswitches:Kailh_socket_MX_optionalSW48
17Keyswitches:Kailh_socket_MX_optionalSW10
17 'Keyswitches:Kailh_socket_MX_optionalSW41
18Keyswitches:Kailh_socket_MX_optionalSW11
18 (Keyswitches:Kailh_socket_MX_optionalSW40
19Keyswitches:Kailh_socket_MX_optionalSW3
19 )Keyswitches:Kailh_socket_MX_optionalSW33
1: *Keyswitches:Kailh_socket_MX_optionalSW29
1; +Keyswitches:Kailh_socket_MX_optionalSW28
1@ |Keyswitches:Kailh_socket_MX_optionalSW26
1AKeyswitches:Kailh_socket_MX_optionalSW69
1BKeyswitches:Kailh_socket_MX_optionalSW54
1CKeyswitches:Kailh_socket_MX_optionalSW62
1CAPSKeyswitches:Kailh_socket_MX_optionalSW70
1CLRKeyswitches:Kailh_socket_MX_optionalSW16
1COMMONConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalLK6
1COPYKeyswitches:Kailh_socket_MX_optionalSW9
1CPC ModularConnector_IDC:IDC-Header_2x10_P2.54mm_VerticalJ2
1CTRLKeyswitches:Kailh_socket_MX_optionalSW23
1Conn_01x19_PinConnector_PinHeader_2.54mm:PinHeader_1x19_P2.54mm_VerticalJ3
1DKeyswitches:Kailh_socket_MX_optionalSW61
1DELKeyswitches:Kailh_socket_MX_optionalSW79
1DOWNKeyswitches:Kailh_socket_MX_optionalSW2
1EKeyswitches:Kailh_socket_MX_optionalSW58
1ESCKeyswitches:Kailh_socket_MX_optionalSW66
1FKeyswitches:Kailh_socket_MX_optionalSW53
1F1Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalLK5
1F1Keyswitches:Kailh_socket_MX_optionalSW902
1F2Keyswitches:Kailh_socket_MX_optionalSW901
1F2Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalLK4
1GKeyswitches:Kailh_socket_MX_optionalSW52
1HKeyswitches:Kailh_socket_MX_optionalSW44
1IKeyswitches:Kailh_socket_MX_optionalSW35
1JKeyswitches:Kailh_socket_MX_optionalSW45
1Jumper_3_OpenConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalLK1
1KKeyswitches:Kailh_socket_MX_optionalSW37
1LKeyswitches:Kailh_socket_MX_optionalSW36
1LEFTKeyswitches:Kailh_socket_MX_optionalSW8
1MKeyswitches:Kailh_socket_MX_optionalSW38
1Membrane 464/6128Connector_PinHeader_2.54mm:PinHeader_2x10_P2.54mm_VerticalJ1
1NKeyswitches:Kailh_socket_MX_optionalSW46
1OKeyswitches:Kailh_socket_MX_optionalSW34
1PKeyswitches:Kailh_socket_MX_optionalSW27
1QKeyswitches:Kailh_socket_MX_optionalSW67
1RKeyswitches:Kailh_socket_MX_optionalSW50
1RIGHTKeyswitches:Kailh_socket_MX_optionalSW1
1SKeyswitches:Kailh_socket_MX_optionalSW60
1SPACEKeyswitches:Kailh_socket_MX_optionalSW47
1Stabiliser 7uCPC_Keyswitch:Stabilizer_MX_7uH18
1TKeyswitches:Kailh_socket_MX_optionalSW51
1TABKeyswitches:Kailh_socket_MX_optionalSW68
1UKeyswitches:Kailh_socket_MX_optionalSW42
1UPKeyswitches:Kailh_socket_MX_optionalSW0
1VKeyswitches:Kailh_socket_MX_optionalSW55

The 173 most common of 181 parts.

More from Bread80/CPC_Keyboards

1
  • 2 layers315.6 × 94 mmKeyboard, the printed circuit board in 3D

    Keyboard

    Bread80/CPC_Keyboards

    Keyboards for Amstrad CPC Computers

    91 parts3CERN-OHL-P-2.0

Similar boards

  • 2 layers321 × 92.3 mmMx40, the printed circuit board in 3D

    Mx40

    zzeneg/stront

    Split keyboards with 38 or 40 keys, LCD display and Cirque trackpad

    181 parts353MIT
  • 2 layers60.3 × 106.5 mmTINRS - Wobbler (pico)sch, the printed circuit board in 3D

    TINRS - Wobbler (pico)sch

    ThisIsNotRocketScience/Eurorack-Modules

    This is not Rocket Science presents: Eurorack modular synthesizer modules!

    181 parts87MIT
  • 2 layers380 × 137.9 mmM0110a qmk, the printed circuit board in 3D

    M0110a qmk

    str-dst/m0110a_usb

    QMK powered drop-in replacement PCB for the Apple M0110a

    181 parts36
  • 2 layers201.9 × 112.4 mmTi92, the printed circuit board in 3D

    Ti92

    zortness/ti92-redux

    Bringing the TI-92's back to life

    181 parts26MIT
  • 2 layers102.8 × 133 mmKSK-1200A, the printed circuit board in 3D

    KSK-1200A

    starlightk7/OpenKSK

    Repository for Reproduction PCBs for Early 1990's Sony KSK Series Laser Boards, found in systems such as the Sega CD Model 1, 2 & Neo Geo CD Frontloader.

    181 parts12CERN-OHL-S-2.0
  • 2 layers93.3 × 82.3 mmGitfup, the printed circuit board in 3D

    Gitfup

    fwachsmuth/Synkino

    Allows sound playback synchronised to a running,jittery Super 8 projector

    181 parts7
  • 2 layers50.8 × 95.2 mmDevel gw1, the printed circuit board in 3D

    Devel gw1

    andrastantos/unic

    181 parts6
  • 2 layers177 × 121.9 mmALUModule, the printed circuit board in 3D

    ALUModule

    crempp/ucpu

    16bit CPU made from TTL Logic Chips

    181 parts4

Questions

How big is the Keyboard PCB?

It measures 391.4 × 136.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Keyboard use?

181 parts. 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 Bread80/CPC_Keyboards repository on GitHub, at the commit this page was made from: the board is Keyswitch_CPC6128_SMT/Keyboard.kicad_pcb and its schematic Keyswitch_CPC464_SMT/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 publishes it under the CERN-OHL-P-2.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).