ADB to USB adapter using Arduino Keyboard function

allow6-4-upArduino projects   allow6-4-downDescription
ADB to USB adpter

ADB to USB adapter connected between Macbook Air and m0116 keyboard

March 25th, 2013


Recently I found the page Hack! USB NeXT Keyboard with an Arduino Micro @arduino #arduino #NeXT. I have three old apple ADB keyboards. I’ve  stopped to use them long time ago. But I couldn’t discard them because I like key touch and clicking sound of mechanical switches of them. A few years ago I heard about the iMate, but at that time iMate was not found in the market. I wanted to get the adapter for my ADB keyboards again.

After I saw the topic about USB NeXT Keyboard, I searched the web and found the similar project for ADB keyboard using teensy. The topic was ADB to USB keyboard converter for Teensy. This topic was written more than 2 years ago, and many people seem to build their adapter by following this topic.

So it might not be necessary to build the similar adapter for myself. But I thought this was a very good practice to learn about the Atmel micro controller and programming on it, then I started this project, my version of ADB to USB adapter 🙂


  • Building the program using Arduino IDE.
  • Using assembler in the time critical part.


  • Implementing type ahead buffer.
  • Adding function keys to the keyboard without function keys.
  • Easy to change key mapping.


  • The ADB protocol used in this project is not fully implemented. For example, Only one device is supported, SRQ is not supported.
  • I have only checked using Apple IIgs keyboard and m0116 keyboard.
  • To add the function key feature, the caps lock key is used as a function key modifier. So caps lock key is not available for caps lock. To use the caps lock key as a function key modifier, it’s better to remove a lock pin in the key switch of the caps lock key. (see the link below)
    Normal caps lock function will be supported in the future version up.
  • Need to compile without the optimization. So must use the Arduino IDE newer than version 1.5.
  • Not work in BIOS menu, GRUB menu and rEFIt menu. It may be a limitation of  Arduino core library.


allow6-4-upArduino projects   allow6-4-downDescription