summaryrefslogtreecommitdiff
path: root/converter/adb_usb/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'converter/adb_usb/README.md')
-rw-r--r--converter/adb_usb/README.md103
1 files changed, 103 insertions, 0 deletions
diff --git a/converter/adb_usb/README.md b/converter/adb_usb/README.md
new file mode 100644
index 0000000000..46082ff67f
--- /dev/null
+++ b/converter/adb_usb/README.md
@@ -0,0 +1,103 @@
+ADB to USB keyboard converter
+=============================
+This firmware converts ADB keyboard protocol to USB.
+You can use PJRC Teensy for this converter, though, other USB AVR(ATMega32U4, AT90USB64/128 or etc) should work.
+But binary size is about 10KB or more it doesn't fit into 8K flash like ATMega8U2.
+
+Discuss: http://geekhack.org/showwiki.php?title=Island:14290
+
+
+
+README FIRST
+------------
+https://github.com/tmk/tmk_keyboard
+https://github.com/tmk/tmk_keyboard/tree/master/converter/adb_usb
+
+Also check these when you are in trouble.
+
+https://github.com/tmk/tmk_keyboard/wiki
+https://github.com/tmk/tmk_keyboard/labels/NOTE
+
+
+Wiring
+------
+Connect ADB pins to controller just by 3 lines(Vcc, GND, Data). By default Data line uses port PD0.
+
+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. The external pull-up resistor(1K-10K Ohm) on Data is strongly recommended.(It is almost must!)
+https://github.com/tmk/tmk_keyboard/wiki/FAQ#pull-up-resistor
+
+Pull-up resister:
+
+ Keyboard Conveter
+ ,------.
+ 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
+
+
+Build
+-----
+See doc/build.md. In short,
+
+ $ make clean
+ $ make
+
+You can select keymap(ansi is default) like this:
+
+ $ make KEYMAP=[ansi|iso|hasu]
+
+
+Keymap
+------
+You can change a keymap by editing code of keymap_[ansi|iso|hasu|yours].c.
+How to define the keymap is probably obvious. You can find key symbols in common/keycode.h. And see doc/keymap.md for more detail.
+
+
+Magic command
+-------------
+To get help press `h` holding Magic key. Magic key is `Power key`.
+
+
+Locking CapsLock
+----------------
+Many of old ADB keyboards have mechanical push-lock switch for Capslock key and this converter supports the locking Capslock key by default. See README in top directory for more detail about this feature.
+https://github.com/tmk/tmk_keyboard/blob/master/README.md#mechanical-locking-support
+
+Also you may want to remove locking pin from the push-lock switch to use capslock as a normal momentary switch.
+
+
+Notes
+-----
+Not-extended ADB keyboards have no discrimination between right modifier and left one,
+you will always see left control even if you press right control key.
+Apple Extended Keyboard and Apple Extended Keyboard II can discriminate both side
+modifiers except for GUI key(Windows/Command).
+
+And most ADB keyboard has no diodes in its matrix so they are not NKRO,
+though ADB protocol itself supports it. See protocol/adb.c for more info.
+
+If keyboard has ISO layout you need to use ISO keymap with `make KEYMAP=iso`. With ANSI
+keymap you will suffer from swapped keys problem.
+
+https://github.com/tmk/tmk_keyboard/issues/35
+
+EOF