2011-01-12 22:26:33 +06:00
ADB to USB keyboard converter
=============================
This firmware converts ADB keyboard protocol to USB.
2012-09-20 10:02:42 +06:00
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
2011-01-12 22:26:33 +06:00
2011-01-13 19:46:57 +06:00
2015-05-13 14:19:25 +06:00
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
2014-05-20 23:43:19 +06:00
Wiring
------
2015-05-13 14:19:25 +06:00
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
2012-09-20 10:02:42 +06:00
2014-05-20 23:43:19 +06:00
Build
-----
2015-05-13 14:19:25 +06:00
See doc/build.md. In short,
2014-05-20 23:43:19 +06:00
$ make clean
$ make
2015-05-13 14:19:25 +06:00
You can select keymap(ansi is default) like this:
2014-05-20 23:43:19 +06:00
2015-05-13 14:19:25 +06:00
$ make KEYMAP=[ansi|iso|hasu]
2011-01-12 22:26:33 +06:00
2011-01-13 14:56:13 +06:00
Keymap
------
2015-05-13 14:19:25 +06:00
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.
2011-01-13 14:56:13 +06:00
2012-09-20 10:02:42 +06:00
Magic command
-------------
To get help press `h` holding Magic key. Magic key is `Power key` .
2015-05-13 14:19:25 +06:00
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.
2011-09-17 19:39:50 +06:00
Notes
-----
2014-05-20 23:43:19 +06:00
Not-extended ADB keyboards have no discrimination between right modifier and left one,
2011-09-17 19:39:50 +06:00
you will always see left control even if you press right control key.
2014-05-20 23:43:19 +06:00
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.
2015-01-19 07:35:06 +06:00
If keyboard has ISO layout you need to use ISO keymap with `make KEYMAP=iso` . With ANSI
2014-05-20 23:43:19 +06:00
keymap you will suffer from swapped keys problem.
https://github.com/tmk/tmk_keyboard/issues/35
2011-09-17 19:39:50 +06:00
2011-01-12 22:26:33 +06:00
EOF