The Thinkpad USB Keyboard Adapter

Quite some time ago I posted a short news bulletin on my old blog about a project to create a Thinkpad keyboard USB adapter. I never got around to make a real post about it, but the bulletin got noticed enough around the interwebs that an article was written and people have been asking me about it many times during the years.

Better late than never, I finally decided to dive into the archives and release what I could find about the project. Beware that everything is about 10 years old and not in the most polished state, so don't expect too much. The software will probably not compile easily, but I guess the main.hex could be used in the exact same hardware without problems.

Other useful artifacts from the project might be the keyboard matrix decoding I did and the exact part number of the keyboard connector that I went through a lot of effort to find.

I made a wooden support for the thing back then and used it as my main keyboard for some time. With good results.


  • Supports the keyboard from an IBM Thinkpad 600, 600E, 600X and perhaps other models if they use the same keyboard part. Beware that this is an ancient line of Thinkpads from the last century with uncompromised legendary Thinkpad keyboards. And the keyboard is still possible to get - I did an Ebay search as of writing this and found a couple of them for reasonable prices. They could also be salvaged from used Thinkpads.
  • The adapter presents itself as a standard USB HID keyboard device.
  • The trackpoint is not supported. The mouse buttons are assigned to keys however.
  • An Atmel AtMega32 MCU is used in the adapter and runs the Objective Development USB driver. The code is basically a modified version of Spaceman Spiff's C64 USB keyboard.


... or it didn't happen!

The Thinkpad 600 USB Keyboard adapter

The Thinkpad 600 USB Keyboard adapter

The Thinkpad 600 USB Keyboard adapter

The Thinkpad 600 USB Keyboard adapter

Side view of the Thinkpad 600X USB Keyboard adapter

The hardware

The keyboard part features the following connector:

Close up of keyboard connector on Thinkpad 600X keyboard

The matching receptacle is a "TE CONNECTIVITY / AMP - 5177983-1 - SOCKET, VERTICAL, 0.8MM, 5MM, 40WAY" still available in the Farnell / element14 catalogue with product number: 1098345

Close up of an assembled unit:

USB thinkpad keyboard adapter PCB front

Notice the goof...

USB thinkpad keyboard adapter PCB back


USB thinkpad keyboard adapter schematic

Here are the layout files I managed to find. It's a CadSoft Eagle project:

The project needs to be opened in an older version of Eagle to work at all. The Eagle "Light" version 6 (from Ubuntu and related package repositories) could open it. The newest Eagle from Autodesk could not.

The schematic looks okay, but the routing is only half way done. The save file of the final routing is lost.

The software

The software is a modified version of Spaceman Spiff's C64 USB keyboard and was compiled with WinAVR. Download it here:

The zip includes a Mercurial repository I just made with a commit of the original C64Key code and then my version adapted for the Thinkpad keyboard and changing the MCU from an AtMega8 to AtMega32 and more.

These are the notes I wrote when decoding the keyboard matrix:

Good luck to all the Thinkpad Keyboard modders out there!


Comments powered by Talkyard