[submodule "protocol/usb_hid/USB_Host_Shield_2.0"] | |||||
path = protocol/usb_hid/USB_Host_Shield_2.0 | |||||
url = [email protected]:tmk/USB_Host_Shield_2.0.git | |||||
[submodule "protocol/lufa/LUFA-git"] | [submodule "protocol/lufa/LUFA-git"] | ||||
path = protocol/lufa/LUFA-git | path = protocol/lufa/LUFA-git | ||||
url = https://github.com/abcminiuser/lufa.git | url = https://github.com/abcminiuser/lufa.git | ||||
[submodule "protocol/usb_hid/USB_Host_Shield_2.0"] | |||||
path = protocol/usb_hid/USB_Host_Shield_2.0 | |||||
url = https://github.com/felis/USB_Host_Shield_2.0.git |
# program Leonardo | # program Leonardo | ||||
PROGRAM_CMD = avrdude -p$(MCU) -cavr109 -P$(DEV) -b57600 -Uflash:w:$(TARGET).hex | |||||
PROGRAM_CMD = avrdude -p$(MCU) -cavr109 -b57600 -Uflash:w:$(TARGET).hex -P$(DEV) | |||||
$ cd converter/usb_usb | $ cd converter/usb_usb | ||||
$ make | $ make | ||||
You will get usb_usb.hex if you are lucky. | |||||
Program your Leonardo with avrdude(or easy-going Arduino IDE): | |||||
Program converter. 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 | |||||
or | |||||
$ avrdude -patmega32u4 -cavr109 -b57600 -Uflash:w:usb_usb.hex -PCOM17 | |||||
$ avrdude -patmega32u4 -cavr109 -PCOM17 -b57600 -Uflash:w:usb_usb.hex | |||||
Limitation | Limitation | ||||
---------- | ---------- | ||||
Only supports 'HID Boot protocol'. | Only supports 'HID Boot protocol'. | ||||
Not support keyboard LED yet. | Not support keyboard LED yet. | ||||
Update | |||||
------ | |||||
2014/12/11 Added Hub support(confirmed with HHKB pro2) | |||||
Resource | |||||
-------- | |||||
USB Host Sheild 2.0 | |||||
https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino | |||||
https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-for-arduino-pro-mini | |||||
USB Host Sheild 2.0 source | |||||
https://github.com/felis/USB_Host_Shield_2.0 | |||||
Arduino USB Host Shield(with bootst converter) | |||||
http://arduino.cc/en/Main/ArduinoUSBHostShield | |||||
Arduino source | |||||
https://github.com/arduino/Arduino/hardware/arduino/{cores,variants} | |||||
Initial release of TMK USB-USB converter | |||||
https://geekhack.org/index.php?topic=33057.msg653549#msg653549 | |||||
http://deskthority.net/workshop-f7/is-remapping-a-usb-keyboard-using-teensy-possible-t2841-30.html#p74854 | |||||
Arduino-based hardware keyboard remapper - Colemak forum | |||||
http://forum.colemak.com/viewtopic.php?id=1561 | |||||
Teensy + Host Shield | |||||
http://www.pjrc.com/teensy/td_libs_USBHostShield.html |
#define VENDOR_ID 0xFEED | #define VENDOR_ID 0xFEED | ||||
#define PRODUCT_ID 0xCAFE | |||||
#define PRODUCT_ID 0x005B | |||||
#define DEVICE_VER 0x0814 | #define DEVICE_VER 0x0814 | ||||
#define MANUFACTURER t.m.k. | #define MANUFACTURER t.m.k. | ||||
#define PRODUCT USB to USB keyboard converter | #define PRODUCT USB to USB keyboard converter |
#include "hid.h" | #include "hid.h" | ||||
#include "hidboot.h" | #include "hidboot.h" | ||||
#include "parser.h" | #include "parser.h" | ||||
#include "usbhub.h" | |||||
// LUFA | // LUFA | ||||
#include "lufa.h" | #include "lufa.h" | ||||
#include "timer.h" | #include "timer.h" | ||||
#include "sendchar.h" | |||||
#include "debug.h" | #include "debug.h" | ||||
#include "keyboard.h" | #include "keyboard.h" | ||||
static USB usb_host; | static USB usb_host; | ||||
static HIDBoot<HID_PROTOCOL_KEYBOARD> kbd(&usb_host); | static HIDBoot<HID_PROTOCOL_KEYBOARD> kbd(&usb_host); | ||||
static KBDReportParser kbd_parser; | static KBDReportParser kbd_parser; | ||||
static USBHub hub1(&usb_host); // one hub is enough for HHKB pro2 | |||||
/* may be needed for other device with more hub | |||||
static USBHub hub2(&usb_host); | |||||
static USBHub hub3(&usb_host); | |||||
static USBHub hub4(&usb_host); | |||||
static USBHub hub5(&usb_host); | |||||
static USBHub hub6(&usb_host); | |||||
static USBHub hub7(&usb_host); | |||||
*/ | |||||
static void LUFA_setup(void) | static void LUFA_setup(void) | ||||
{ | { | ||||
// for Console_Task | // for Console_Task | ||||
USB_Device_EnableSOFEvents(); | USB_Device_EnableSOFEvents(); | ||||
print_set_sendchar(sendchar); | |||||
} | } | ||||
static void HID_setup() | static void HID_setup() | ||||
LED_TX_ON; | LED_TX_ON; | ||||
debug_enable = true; | debug_enable = true; | ||||
/* | |||||
debug_matrix = true; | debug_matrix = true; | ||||
debug_keyboard = true; | debug_keyboard = true; | ||||
debug_mouse = true; | debug_mouse = true; | ||||
*/ | |||||
host_set_driver(&lufa_driver); | host_set_driver(&lufa_driver); | ||||
keyboard_init(); | keyboard_init(); |
USB_HOST_SHIELD_SRC = \ | USB_HOST_SHIELD_SRC = \ | ||||
$(USB_HOST_SHIELD_DIR)/Usb.cpp \ | $(USB_HOST_SHIELD_DIR)/Usb.cpp \ | ||||
$(USB_HOST_SHIELD_DIR)/hid.cpp \ | $(USB_HOST_SHIELD_DIR)/hid.cpp \ | ||||
$(USB_HOST_SHIELD_DIR)/usbhub.cpp \ | |||||
$(USB_HOST_SHIELD_DIR)/parsetools.cpp \ | $(USB_HOST_SHIELD_DIR)/parsetools.cpp \ | ||||
$(USB_HOST_SHIELD_DIR)/message.cpp | $(USB_HOST_SHIELD_DIR)/message.cpp | ||||
Subproject commit 8bb790f83af298b5f3e5516259c9d8ec27efe522 | |||||
Subproject commit 2b4a56de3d090686f62d25ea34042759dc4352d6 |