You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							104 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
	
	
							104 lines
						
					
					
						
							3.1 KiB
						
					
					
				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
 |