PS/2 keyboard to keyboard matrix

Many vintage computers use a keyboard matrix for input. This solution replaces a missing keyboard with a cheap PS/2 keyboard.

Public Chat
Similar projects worth following
Keyboard matrices as often used in vintage computers can be hard to replace. This solution isn't cosmetically correct, but allows a cheap PS/2 keyboard to be used if the original is missing or damaged. The matrix-array chip used in this project allows for a 16x8 matrix, large enough for most situations.
It is based on an Arduino Nano and a MT8816 Analog Switch Array. The final PCB works, the Arduino sketch is functionally complete. Code can use some cleanup, and some keys have to be added (and tested).

More info at github:

The use case:

A new github repo was added for the TRS-80 model 3, 4, and 4p: No board is planned, as I don't have a model 3 or 4, so I don't know how the connector looks physically. A modified board did work on the model 4p, This gives the confidence it will also work on the 3 and 4.


Schema of the final 1.2 version

Adobe Portable Document Format - 65.33 kB - 12/04/2022 at 10:18


Zip Archive - 36.35 kB - 11/29/2022 at 17:01



Board for version 1.1

Adobe Portable Document Format - 79.00 kB - 11/29/2022 at 17:01


Zip Archive - 113.22 kB - 11/29/2022 at 17:00



Schematic for version 1.1. Works as expected, but look at the patches.

Adobe Portable Document Format - 65.71 kB - 11/12/2022 at 16:58


  • Simple test for correct operation

    fjkraan11/29/2022 at 17:55 0 comments

    The board and firmware can be tested from the Arduino IDE, right after programming, requiring only a multi-meter:

    • Open the Serial Monitor and set the Baud rate to 115200. The prompt "PS2Keyboard to Aster CT-80 matrix V0.6" should appear.

    • Type ? <Enter>. The help text should appear.

    • Find pin 1 and 2 from the flat-cable header. These are at the top of the header, next to the text "J3".

    • Measure the resistance between the pins with an multi-meter. This should be very high, out of reach of most devices.

    • Type C00 <Enter> (One letter, two numbers)

    • Measure the resistance between the pins. This should in the range of 100 ohm.

    • Type O00 <Enter> (One letter, two numbers)

    • Measure the resistance between the pins. This should be very high, out of reach of most devices.

    The first number is the column, the second the row. The former ranges from 0 to 7, the latter from 0 to F (entry in hex), but only the first eight are wired to the header.

View project log

  • 1
    Remarks on version 1.1 of the board

    Boards usually come with their design faults, but for this version it is acceptable:

    • Diode D1, (below the Arduino) should be replaced by a shorting wire.

    • The resistor array uses only eight of the nine resistors, but unfortunately has to be a ten pin array. A 9 pin array can be used but must be mounted on pins 2 to 10, and a short has to be made between pin 1 and 2.

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates