~ruther/qmk_firmware

e8e8f93bcf0cdc8d72d35662db5a1da4716762b8 — tmk 11 years ago 63b3e2c
Fix ADB missing keystrokes problem Thanks, blargg! #14

- Add delay between scans to prevent overlaod of ADB keyboard controllers
- <http://geekhack.org/index.php?topic=14290.msg1068919#msg1068919>
2 files changed, 7 insertions(+), 0 deletions(-)

M converter/adb_usb/matrix.c
M protocol/adb.c
M converter/adb_usb/matrix.c => converter/adb_usb/matrix.c +1 -0
@@ 85,6 85,7 @@ uint8_t matrix_scan(void)
    uint8_t key0, key1;

    is_modified = false;
    _delay_ms(16);  // delay for preventing overload of poor ADB keyboard controller
    codes = adb_host_kbd_recv();
    key0 = codes>>8;
    key1 = codes&0xFF;

M protocol/adb.c => protocol/adb.c +6 -0
@@ 83,6 83,12 @@ bool adb_host_psw(void)
}
#endif

/*
 * Don't call this in a row without the delay, otherwise it makes some of poor controllers
 * overloaded and misses strokes. Recommended delay is 16ms.
 *
 * Thanks a lot, blargg! <http://geekhack.org/index.php?topic=14290.msg1068919#msg1068919>
 */
uint16_t adb_host_kbd_recv(void)
{
    uint16_t data = 0;