Calling led_set() in ISR can cause the problem. With converter
especially, led_set() can take long time and USB can be stuck in the end.
USB-USB converter freezes occasionally when computer power up or reboot.
https://geekhack.org/index.php?topic=69169.msg2740179#msg2740179
This is also related to suspend/wakeup issue #386.
according to the code:
static uint8_t matrix[MATRIX_ROWS];
#define ROW(code) (code>>3)
#define COL(code) (code&0x07)
in converter/terminal_usb/matrix.c
ROW is decided by bits 7-4 of scancode
COL is decided by bits 2-0 of scancode
according to the code:
static uint8_t matrix[MATRIX_ROWS];
#define ROW(code) (code>>3)
#define COL(code) (code&0x07)
in converter/ps2_usb/matrix.c
ROW is decided by bits 7~4 of scancode
COL is decided by bits 2~0 of scancode
- Change keyboard_init() timing and matrix_scan() is called in USB
startup wait loop for FC660C
- FC660C startup seems to be faster and it doesn't work without this fix
when plugin the keyboard and converter at same time
console_putc:
Linux: works very well in general
Windows: also works very well and connection seems to be faster than Linux
Mac: to be: confirmed
NOTE: long session of matrix_print still blocks keyboard_task in main loop
and prevents it from sending keyboard report.
XT protocol buffer overflow occurs when slamng on keys
TODO: check when print functions are called in ISR
- This bug occurs when sending LED out report before keyboard becomes ready
- Ckecking with isReady() before using SetReport() solves this
- Slow startup keyboard like TMK trrigers this bug and Linux shows following error just after plugin converter
usb 3-1: device descriptor read/64, error -62