]> git.friedersdorff.com Git - max/tmk_keyboard.git/commitdiff
adb_usb: Fix start up delay for AEK/AEKII
authortmk <hasu@tmk-kbd.com>
Wed, 12 Feb 2020 23:42:37 +0000 (08:42 +0900)
committertmk <hasu@tmk-kbd.com>
Wed, 12 Feb 2020 23:49:09 +0000 (08:49 +0900)
Without proper delay keyboard the converter starts talking too early
before keyboard wakes up. ISO recognition and enabling Extention protocol
would be failed in the result.
https://github.com/tmk/tmk_keyboard/issues/640#issuecomment-585411393
200ms is enough for AEKs but 1000ms is used here for safety.

converter/adb_usb/matrix.c

index e8ed2da6292d9358fb0c27ae5fba6f0c8e6d90e9..f4bf50c1f5af375f2da651f0af85e127e821616f 100644 (file)
@@ -72,8 +72,13 @@ void matrix_init(void)
 
     adb_host_init();
 
-    // wait for line and device to be stable
-    wait_ms(100);
+    // AEK/AEKII(ANSI/ISO) startup is slower. Without proper delay
+    // it would fail to recognize layout and enable Extended protocol.
+    // 200ms seems to be enough for AEKs. 1000ms is used for safety.
+    // Tested with devices:
+    // M0115J(AEK), M3501(AEKII), M0116(Standard), M1242(Adjustable),
+    // G5431(Mouse), 64210(Kensington Trubo Mouse 5)
+    wait_ms(1000);
 
     device_scan();
 
@@ -94,7 +99,7 @@ void matrix_init(void)
         is_iso_layout = false;
         break;
     }
-    xprintf("hadler: %02X, ISO: %s\n", handler_id, (is_iso_layout ? "yes" : "no"));
+    xprintf("handler: %02X, ISO: %s\n", handler_id, (is_iso_layout ? "yes" : "no"));
 
     // Adjustable keyboard media keys: address=0x07 and handlerID=0x02
     has_media_keys = (0x02 == (adb_host_talk(ADB_ADDR_APPLIANCE, ADB_REG_3) & 0xff));
@@ -113,6 +118,8 @@ void matrix_init(void)
 
     led_set(host_keyboard_leds());
 
+    device_scan();
+
     // LED off
     DDRD |= (1<<6); PORTD &= ~(1<<6);
     return;