Joel Challis 5bdeb7dad1 Migrate remaining `DEFAULT_FOLDER` to keyboard aliases (#25291) 1 year ago
..
keymaps d235352504 Remove obvious user keymaps, `keyboards/{b,c}*` edition. (#22693) 2 years ago
rev1 831deac212 Migrate build target markers to keyboard.json (#23293) 2 years ago
rev2 831deac212 Migrate build target markers to keyboard.json (#23293) 2 years ago
adb.c cf935d97ae Fix functions with empty params (#19647) 3 years ago
adb.h e0d688d4c8 Move converter specific tmk_core protocols (#14743) 4 years ago
config.h b7b4ffc449 Migrate `LOCKING_*_ENABLE` to Data-Driven: A-C, Part 3 (#23747) 2 years ago
info.json 960c4969a5 Remove empty `url` fields (#25181) 1 year ago
led.c e9c9c3a4fa [Keyboard] ADB converter lock LED fix (#5035) 7 years ago
matrix.c 11d49d00e7 Remove matrix_init_quantum/matrix_scan_quantum (#19806) 3 years ago
readme.md b297a347bb ADB to USB converter: split into rev1 and rev2 (#18052) 4 years ago
rules.mk 5bdeb7dad1 Migrate remaining `DEFAULT_FOLDER` to keyboard aliases (#25291) 1 year ago

readme.md

ADB-to-USB Keyboard Converter

This firmware converts Apple Desktop Bus (ADB) keyboard protocol to USB so that you can use an ADB keyboard on a modern computer. It works on the PJRC Teensy 2.0 and other USB AVR MCUs (ATMega32U4, AT90USB64/128, etc) and needs at least 10KB of flash memory.

This is a port of the TMK ADB-to-USB converter to QMK. For information on QMK, please consult the following: https://github.com/qmk/qmk_firmware
https://docs.qmk.fm

Wiring

Connect the VCC, GND, and DATA lines of the ADB keyboard to the controller (Teensy 2.0 or similar). By default the DATA line uses port PD0. The Power SW line is unused by the converter.

ADB female socket from the front:

  ,--_--.
 / o4 3o \      1: DATA
| o2   1o |     2: Power SW
 -  ===  -      3: VCC
  `-___-'       4: GND

This converter uses AVR's internal pull-up, but it seems to be too weak, in particular when you want to use a long or coiled cable. Using an external pull-up resistor (1K-10K Ohm) between the DATA and VCC lines is strongly recommended.

Pull-up resistor:

Keyboard       Converter
               ,------.
5V------+------|VCC   |
        |      |      |
       [R]     |      |
        |      |      |
Signal--+------|PD0   |
               |      |
GND------------|GND   |
               `------'
R: 1K Ohm resistor

Define following macros for ADB connection in config.h if you use other than port PD0.

ADB_PORT, ADB_PIN, ADB_DDR, ADB_DATA_BIT

Building the Firmware

See the build environment setup and the make instructions for more information. Brand new to QMK? Start with our Complete Newbs Guide.

Keymap

To build the default keymap run this command:

$ make converter/adb_usb/rev1:default # Pro Micro-based
$ make converter/adb_usb/rev2:default # Hasu 32U2 PCB

Locking Caps Lock

Many old ADB keyboards use a locking switch for the caps lock key. This converter supports the locking caps lock key by default.

Notes

Non-extended ADB keyboards make no distinction between the left and right modifiers, i.e. the keycode for the left modifier will be sent even if the right modifier

The Apple Extended Keyboard and Apple Extended Keyboard II can differentiate between the left and right modifiers except for the GUI key (Windows/Command).

Most ADB keyboards have no diodes in its matrix so they are not NKRO, though the ADB protocol itself supports it. See protocol/adb.c for more info.

QMK Port Changelog

  • 2018/09/16 - Initial release.
  • 2018/12/23 - Fixed lock LED support.