This is not an keyboard protocol converter in fact, but with this you can change keymap and use functions TMK firmware offers on your USB keyboard. https://github.com/tmk/tmk_keyboard#features
This depneds largely on Circuit@Home USB Host Shield 2.0
and its Arduino library.https://github.com/felis/USB_Host_Shield_2.0Hardware
You need USB host controller chip MAX3421e and AVR chip ATMega32U4.The easiest way is buying my TMK USB to USB converter 1. TMK USB to USB converter
This small board includes all functions of Host Shield and Leonardo. No soldering job is needed.you can buy an assmebled converter here to support my project.https://geekhack.org/index.php?topic=72052.0
PCB design files are available.https://github.com/tmk/USB2USB_Converter2. USB Host Shield 2.0 + Arduino Leonardo
This firmware work with Circuit@Home USB Host Shield + Arduino Leonardo as well, they are not small for keyboard converter but work well.a. USB Host Shield:Get official one to support USB Host Shield project!
From these links you can get genuine shield.https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino-assembled/http://shop.tkjelectronics.dk/product_info.php?products_id=43Clones may have compatiblity issues with the library and TMK. Not recommended.https://github.com/felis/USB_Host_Shield_2.0/issues/76#issuecomment-159269359And you cannot use SparkFun USB Host Shield which is not compatible to Leonardo.b. Arduino Leonardo:http://arduino.cc/en/Main/arduinoBoardLeonardoFirmware
This converter is part of TMK keyboard firmware project.https://github.com/tmk/tmk_keyboard/tree/master/converter/usb_usbBuild
You can compile firmware from source code. See TMK documentation for the detail.
$ git clone git://github.com/tmk/tmk_keyboard.git
$ cd tmk_keyboard
$ git submodule init
$ git submodule update
$ cd converter/usb_usb
No idea? No problem, you can use easy TMK keymap editor instead, see below.ProgramFor TMK converter
To program converter with your firmware install 'dfu-programmer' and run this with 'sudo' if needed.
dfu-programmer atmega32u4 erase --force
dfu-programmer atmega32u4 flash <your_firmware.hex>
dfu-programmer atmega32u4 reset
If you have installed build tools you can just 'make' like this.
You can use Atmel FLIP as well on Windows.
See for the detail.https://github.com/tmk/tmk_keyboard/blob/master/tmk_core/doc/build.md#program-controller
For USB Host Shield 2.0 + Arduino LeonardoTMK Keymap EditorUSB to USB converter supports TMK keymap editor now!
Push reset button on Leonardo before run this command. Serial port name(COM17) depends your system. On Linux I got /dev/ttyACM0.
$ DEV=COM17 make program
$ avrdude -patmega32u4 -cavr109 -b57600 -Uflash:w:usb_usb.hex -PCOM17
You can edit keymapping and get your custom firmware easily with this.
Try it here.http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb
SpaceFn on editor: http://goo.gl/5kvPrl
(Old editor: http://www.tmk-kbd.com/tmk_keyboard/editor/usb_usb/
- Only supports 'HID Boot protocol'(6KRO) mode. It is theoretically possible to support NKRO mode but I won't add it. NKRO keyboard shall work in 6KRO mode. (Confirmed NKRO keyboards: TMK Alps64, Massdrop Infinity, Novatouch)
- Media/System control keys on keyboard are not recognized by the converter. Note that you can still send those keys with TMK firmware.
- 'Fn' key on keyboard is not recognized also. In most case keyboards don't spit out keycode for the key. You cannot remap 'Fn' key itself while 'Fn' combination keys can be remmapable. Note that you can still define 'Fn' key with TMK firmware.
- Firmware size. USB to USB converter uses alot of flash space to support USB. All of TMK features cannot used at same time due to MCU flash size(28KB).
- To work with Sprit's PCB you have to force USB mode(Auto PS/2-USB mode selection doesn't work with the converter)
- No mouse or other pointing devices support. To support all pointing devices is difficult but it is possible to support one specific device if you are willing to write code for that. https://geekhack.org/index.php?topic=69169.msg2193024#msg2193024
- Incompatibility: it doesn't work with Varmilo VA87MR, GON's NerD, Kinesis Advantage2
Force NKRO keyboard in 6KRO mode. I believe most of NKRO keyboards also supports 6KRO. With future update NKRO keyboard will work with the converter in 6KRO mode but currently NKRO keyboard doesn't work. Library itself sends SetProtocol(boot) request so NKRO keyboard should work if it supports boot protocol(6KRO). DONE Standard LED indicators support. Caps Lock, Scroll Lock and Num Lock indicators. DONE
2016/09 New keymap editor(unimap) is available
2016/01 Add Keymap editor
2015/12 Add Firmware size to limitations, and recommendation for genuine host shield
2015/11 Add keymap for JIS and ISO
2015/07 Bug fix for keyboard sending ErrorRollOver report
2015/07 Add Locking key indicator support
2015/06 Updated Limitation and TODO
2015/02 TMK USB to USB converter Rev.A
2014/12 Added Hub support(confirmed with HHKB pro2)