From: tmk Date: Thu, 19 May 2016 18:30:46 +0000 (+0900) Subject: adb_usb: reinitialize for plug-in after startup X-Git-Url: https://git.friedersdorff.com/?a=commitdiff_plain;h=4fc0efd3ab8f1720eb799e29ef436a3788aa1890;p=max%2Ftmk_keyboard.git adb_usb: reinitialize for plug-in after startup --- diff --git a/converter/adb_usb/README.md b/converter/adb_usb/README.md index aa06c8db..034540c9 100644 --- a/converter/adb_usb/README.md +++ b/converter/adb_usb/README.md @@ -1,10 +1,11 @@ ADB to USB keyboard converter ============================= -This firmware converts ADB keyboard protocol to USB. -You can use TMK Converter, PJRC Teensy2.0 and other USB AVR MCU(ATMega32U4, AT90USB64/128 or etc) for this. But binary size is probably more than 10KB and it won't fit into 8K flash. +This firmware converts Apple ADB keyboard protocol to USB. You can use TMK Converter, PJRC Teensy2.0 and other USB AVR MCU(ATMega32U4, AT90USB64/128 or etc) for this. But binary size is probably more than 10KB and it won't fit into 8K flash. Discuss: http://geekhack.org/showwiki.php?title=Island:14290 +TMK Converter: https://geekhack.org/index.php?topic=72052.0 + README FIRST @@ -57,29 +58,25 @@ Build firmware and Program microcontroller ------------------------------------------ See [doc/build.md](../../tmk_core/doc/build.md). -To build firmware: +To build firmware and program TMK Converter run these commands: $ make -f Makefile clean - $ make -f Makefile - -You can select keymap(ansi is default) like this: - - $ make -f Makefile KEYMAP=[ansi|iso|hasu] + $ make -f Makefile [KEYMAP=(plain|ansi|iso|hasu)] + $ make -f Makefile [KEYMAP=(plain|ansi|iso|hasu)] dfu -To program TMK Converter: +You can select keymap with optional `KEYMAP=` (plain is default). Push button on the converter before running `dfu` target. - $ make -f Makefile dfu +Use **Makefile.rev1** for old TMK Converter rev.1 and **Makefile.teensy** for Teensy2.0 instead of **Makefile**. For TMK Converter rev.2 just use **Makefile**. -To program Teensy2.0: +To program Teensy you can use `teensy` target: - $ make -f Makefile.teensy teensy + $ make -f Makefile.teensy [KEYMAP=(plain|ansi|iso|hasu)] teensy -Use **Makefile.rev1** for TMK Converter rev.1 and **Makefile.teensy** for Teensy2.0 instead of **Makefile**. For TMK Converter rev.2 just use **Makefile**. Keymap ------ -You can change a keymap by editing code of keymap_[ansi|iso|hasu|yours].c. +You can change a keymap by editing code of keymap_[plain|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](../../tmk_core/doc/keymap.md) for more detail. @@ -112,8 +109,7 @@ 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. +If keyboard has ISO layout you may have swapped keys problem, see this for the detail. https://github.com/tmk/tmk_keyboard/issues/35 diff --git a/converter/adb_usb/matrix.c b/converter/adb_usb/matrix.c index 6857e692..abcc0cc9 100644 --- a/converter/adb_usb/matrix.c +++ b/converter/adb_usb/matrix.c @@ -209,6 +209,8 @@ uint8_t matrix_scan(void) register_key(0xFF); } else if (key0 == 0xFF) { // error xprintf("adb_host_kbd_recv: ERROR(%d)\n", codes); + // something wrong or plug-in + matrix_init(); return key1; } else { /* Swap codes for ISO keyboard