Skip to the content
2 layers99.7 × 74.9 mmC64 Joykey 2040, the printed circuit board in 3D

C64 Joykey 2040

tebl/C64-JoyKEY27

WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

Size
99.7 × 74.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
69
Nets
63
Pads
209
Tracks, vias
600, 43
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
3 Dec 2020
Updated
14 Jan 2025

Overview

C64 Joykey 2040 is an open-source printed circuit board by tebl, from the tebl/C64-JoyKEY repository on GitHub. It is a 2-layer board of 99.7 × 74.9 mm with 69 parts on 63 nets, routed with 600 tracks and 43 vias.

It is built around the RP2040-ZERO. Its parts include 26 diodes, 14 resistors, 13 switches, 3 connectors and 1 IC. It belongs with the retro computing and games and keyboards and input boards and the RP2040 boards of this library.

Main components

1

README

README.md

C64 JoyKEY

The C64 JoyKEY was born out of the desire to build my own joystick, and after having a look at the various options available I chose to build one using Cherry MX keyboard switches. They are around a dollar per piece, so after getting it all to work properly on my beloved Commodore 64 I looked into using it with a whole selection of vintage computer systems as well. There are two main versions of the C64 JoyKEY, the keyboard-variant already described and a board designed for use with Sanwa arcade parts instead.

Last build Last arcade

With options to handle multiple types of systems comes complexity, you'll have to make a few decisions on what you want out of the C64 JoyKEY. Do I only want to use it as a joystick replacement on vintage systems, ideally with 2-3 fire buttons where supported? If so, then you won't need the Arduino Pro Micro.

Want to use it on a modern system as a WASD-style keyboard or a gamepad, then install it - a common use of these types of devices is as a macro-keyboard or a stream-deck. Note that compared to many similar solutions, the microcontroller is not required for use with any of the vintage systems - the adapters actually follow the original circuit descriptions for controllers used with the actual vintage computers. What that means is that there is truly no chance of lag added by the controller. Ever.

The pictures below show the unit when connected to my Commodore 64, including the jumper settings used with it. As I've tried to keep things as close to the standard usually associated with Atari-style joysticks, there are two joystick connectors - this is because a lot of the Commodore 64 games supported using a second joystick for specific game functions.

Commodore 64 C64 Configuration

As with most C64 games port 2 is the one to use, port 1 is just there to connect additional fire buttons. When in doubt, just connect a cable for port 2 and you should have a good time. This was labelled after the way the controller is used on the Commodore 64.

Getting one

I won't be selling these, so if you want one you will probably have to build it yourself (or call your favourite friend, ideally someone with a reasonable quality soldering iron). I've created a separate documents on building a C64 JoyKEY, this is also where you'll find the BOM for this project (a list of needed parts and links to where PCBs can be ordered).

As with all things you're soldering together by yourself, the one who soldered it takes responsibility for it. I'll try answer any opened tickets as far as I am able, but know that this is a hobby-grade project and I might be busy on spending the little energy I have on other things (be patient, check out the schematic while you wait).

Setting it up

The C64 JoyKEY has a handful of jumpers that need to be set correctly in order to: A - function, B - not destroy your precious vintage computer and/or consoles. The necessary details have been put into a separate configuration-document, check it out for some information on the systems I've attempted to use the C64 JoyKEY with.

Parts

69
QtyValueFootprintReferences
151N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD4, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25
9330Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR3, R5, R6, R7, R8, R9, R10, R11, R12
7LEDLED_THT:LED_Rectangular_W3.0mm_H2.0mmD5, D6, D7, D8, D9, D10, D11
4Mountingmounting:M3_pinM1, M2, M3, M4
21n5819Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD3, D26
2270Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2
1100Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR4
1220Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR13
12N3904Package_TO_SOT_THT:TO-92_Inline_WideQ1
1680Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR14
1DOWNButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW2
1ExpansionJST_XH_Right_Angle:JST_XH_B4B-XH-A_1x04_P2.50mm_Right_AngleJ4
1F2_POLConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_HorizontalJP1
1F3_POLConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_HorizontalJP2
1FIRE3_SELConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_HorizontalJP3
1KEY_LEDConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJP7
1LED_PINConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP5
1LEFTButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW3
1LOGOlogo:c64_joykeyG***
1P1_FIRE1Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx31-2LFSSW7
1P1_FIRE2Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx31-2LFSSW10
1P1_FIRE3Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx31-2LFSSW8
1P1_FIRE4Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx31-2LFSSW5
1P1_FIRE5Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx31-2LFSSW12
1P1_FIRE6Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx31-2LFSSW13
1P2_FIRE1Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW6
1P2_FIRE2Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW9
1P2_FIRE3Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW11
1POLLED_THT:LED_D5.0mmD2
1PWRLED_THT:LED_D5.0mmD1
1Port_1C64 IDC:IDC_JoystickJ1
1Port_2C64 IDC:IDC_JoystickJ2
1RIGHTButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW4
1RP2040-Zeropi_pico:RP2040-Zero-THTU1
1UPButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW1
1VCC_ENConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP8

More from tebl/C64-JoyKEY

12
  • 2 layers99.7 × 74.9 mmC64 Joykey, the printed circuit board in 3D

    C64 Joykey

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    62 parts27
  • 2 layers99.7 × 55.2 mmC64 Arcade, the printed circuit board in 3D

    C64 Arcade

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    49 parts27
  • 2 layers58.4 × 38.1 mmAmiga CD32, the printed circuit board in 3D

    Amiga CD32

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    30 parts27
  • 2 layers81.9 × 52.7 mmArcade 2040, the printed circuit board in 3D

    Arcade 2040

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    29 parts27
  • 2 layers58.4 × 38.1 mmNEC PC Engine, the printed circuit board in 3D

    NEC PC Engine

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    26 parts27
  • 2 layers58.4 × 43.8 mmGameport, the printed circuit board in 3D

    Gameport

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    24 parts27
  • 2 layers70.7 × 46.7 mmAdapter 9 from 2040, the printed circuit board in 3D

    Adapter 9 from 2040

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    21 parts27
  • 2 layers58.4 × 38.1 mmSega Mega Drive, the printed circuit board in 3D

    Sega Mega Drive

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    21 parts27
  • 2 layers58.4 × 38.1 mmNES, the printed circuit board in 3D

    NES

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    20 parts27
  • 2 layers29.2 × 31.8 mmAtari 7800, the printed circuit board in 3D

    Atari 7800

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    10 parts27
  • 2 layers10.4 × 55.2 mmC64 SkeletonKey, the printed circuit board in 3D

    C64 SkeletonKey

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    5 parts27
  • 2 layers29.2 × 18.4 mmSega Master System, the printed circuit board in 3D

    Sega Master System

    tebl/C64-JoyKEY

    WASD-style joystick for vintage computers. With an added Arduino Pro Micro you can use it as a USB-keyboard, so if you wanted a DIY streamdeck or Macro-keyboard - then the C64 JoyKEY can do that as well.

    4 parts27

Similar boards

  • 2 layers132.3 × 94.9 mmCheapino, the printed circuit board in 3D

    Cheapino

    tompi/cheapino

    An affordable split 36 keys keyboard

    59 parts1.2kCC-BY-4.0
  • 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 layers255.9 × 99.3 mmZerosprey42, the printed circuit board in 3D

    Zerosprey42

    beekeeb/zerosprey42

    Zerosprey42 Keyboard is a wired, beginner friendly, choc hotswap, MonoBlockSplit (Unibody), column-staggered, DIY mechanical keyboard.

    96 parts140
  • 2 layers146.3 × 69.5 mmStress, the printed circuit board in 3D

    Stress

    GroooveBob/Stress

    Pocket Arcade Fight Pad

    22 parts102MIT
  • 2 layers54 × 64 mmDonConIOmini, the printed circuit board in 3D

    DonConIOmini

    ravinrabbid/DonCon2040

    RP2040 based firmware and hardware for DIY Taiko no Tatsujin Drum Controllers

    96 parts66MIT
  • 2 layers52 × 50 mmRP2040-TestPatternGenerator VGA, the printed circuit board in 3D

    RP2040-TestPatternGenerator VGA

    nmur/RP2040-TestPatternGenerator

    A simple test pattern generator running on the RP2040 microcontroller

    12 parts64GPL-3.0
  • 2 layers120 × 40 mmBuinchiez40, the printed circuit board in 3D

    Buinchiez40

    ChrisChrisLoLo/bunchiez40

    A pocket keyboard that makes use of mouse switches to achieve a miniscule size

    90 parts56GPL-3.0
  • 2 layers305.2 × 76.2 mmSoroka, the printed circuit board in 3D

    Soroka

    kapee1/soroka

    40% DIY-keyboard with base kit support

    126 parts47Unlicense

Questions

How big is the C64 Joykey 2040 PCB?

It measures 99.7 × 74.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the C64 Joykey 2040 use?

69 parts, built around the RP2040-ZERO. 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 C64 Joykey 2040 KiCad files?

From the tebl/C64-JoyKEY repository on GitHub, at the commit this page was made from: the board is C64 Joykey 2040/C64 Joykey 2040.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the C64 Joykey 2040 design in my own project?

Its repository states no licence, so its author keeps all rights: ask tebl before reusing the design.