![]() |
arduino IDEArduino
|
C128 USB Keyboard adapter
This project is designed to allow a modern USB keyboard to be used with a Commodore 128D/DCR in place of the original Commodore keyboard.
This project requires SEEED XIAO SAMD21, which has USB-C socket. USB-C keyboards are rare yet.
I use OTG USB-A (female) to USB-C (male) adapter to connect standard PC keyboard.
KiCad project and firmware are available on GitHub: https://github.com/ytmytm/C128-keyboard
Features
- can be used with any USB keyboard, including wireless ones
- all C128 keys are mapped, including 40/80, CAPS, second set of cursors
- four keyboard maps switchable on the fly
- NUMLOCK and SHIFT+NUMLOCK enable joystick mode on keypad, known from VICE (may not work with some games)
- for unmodified C128DCR external power can be provided separately
- OLED display support
- adapter can be plugged directly into keyboard port or mounted internally
Parts
- SEEED XIAO SAMD21 (important: SAMD21, not RP2040)
- U1: MT8816 or MT8812
- U2: 74HCT595
- R1, R2, R3: 10K resistors
- Q1, Q2, Q3: 2N3904 transistors (or any other NPN, like S9013)
- C1, C2: 100n capacitors
- DB25 male socket for PCB (option 1)
- socket for 26-pin flat ribbon cable / 2x13 pin headers (option 2)
- pin headers and sockets
- 128x32 SSD1306 I2C OLED display (optional)
Power (C128DCR only)
C128D has +5V power exposed on pin 4 of the keyboard port. C128DCR doesn't have this feature. It's quite easy to make an internal modification in C128DCR and add that missing connection.
Here is one wire added to the bottom part of the C128DCR mainboard that connects +5V from joystick port to pin 4 of the keyboard port.
If you are unwilling to open your C128DCR, you can provide external power from nearby tape or joystick port instead. In this case keep the jumper JP1 open and provide +5V to the Ext. power connector. Mind the polarity.
Options:
- JP1 open: power through Ext. power for unmodified C128DCR
- JP1 closed: don't connect anything to Ext. power; for C128D or modified C128DCR
C128 USB Keyboard adapter
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.

Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW
ESP32-S3 4.3inch Capacitive Touch Display Development Board, 800×480, 5-point Touch, 32-bit LX7 Dual-core Processor
BUY NOW
Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW- Comments(4)
- Likes(10)
-
Mark Laffan Apr 14,2025
-
Engineer Oct 20,2024
-
Francisco Meza Aug 25,2024
-
Bjorn Tillaert Jul 13,2024
-
Lars Moeller May 02,2024
-
Holger OnkelHolgi Apr 16,2024
-
Engineer Mar 10,2024
-
Mr Eddie Bannister Jan 08,2024
-
(DIY) C64iSTANBUL Jan 07,2024
-
dakamp Jan 05,2024
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Maciej Witkowiak
-
C128 USB Keyboard adapter This project is designed to allow a modern USB keyboard to be used with a Commodore 128D/DCR in plac...
-
tcbm2sd - 1551 disk drive simulator TCBM2SDCBM 1551 paddle replacement and/or mass storage using an SD card interfacing with the Commodo...
-
1541 RAMBOard][ / DolphinDOS2 This is a recreation of CLD RAMBoard aimed at 1541-II drive with important change: 24K(32K) ROM supp...
-
MagicDesk-like External ROM cartridge for C128 MagicDesk-like External ROM cartridge for C128PROJECT PAGEKiCad project files and schematic: https:/...
-
-
Commodore 64 1541-II 1581 Floppy Disk Drive C64 Power Supply Unit USB-C 5V 12V DIN connector 5.25
198 1 3 -
Easy to print simple stacking organizer with drawers
93 0 0 -
-
-
-
-
-
-
Modifying a Hotplate to a Reflow Solder Station
1170 1 6 -
MPL3115A2 Barometric Pressure, Altitude, and Temperature Sensor
656 0 1 -
The original project from https://github.com/Hartland/C64-Keyboard does that, but it was designed on a universal PCB. I might try to do that. It's simpler than this one - no need for transistors, shift register and MT8816 can be replaced by smaller MT8808.
Excellent! I have a few C64/Vic 20 and a C128 that would greatly benefit from this project.
You might be interested in this: https://github.com/ytmytm/c16-keyboard - I needed it for a C16 but kept the C64 keyboard option too