case PC_TERMINAL:
// Set all keys to make/break type
ibmpc_host_send(0xF8);
+ // This should not be harmful
+ led_set(host_keyboard_leds());
break;
default:
break;
void led_set(uint8_t usb_led)
{
+ // Sending before keyboard recognition may be harmful for XT keyboard
if (keyboard_kind == NONE) return;
- //if (keyboard_kind != PC_AT) return;
+ // XT keyobard doesn't support any command and it is harmful perhaps
+ // https://github.com/tmk/tmk_keyboard/issues/635#issuecomment-626993437
+ if (keyboard_kind == PC_XT) return;
+
+ // It should be safe to send the command to keyboards with AT protocol
+ // - IBM Terminal doesn't support the command and response with 0xFE but it is not harmful.
+ // - Some other Terminals like G80-2551 supports the command.
+ // https://geekhack.org/index.php?topic=103648.msg2894921#msg2894921
+
+ // TODO: PC_TERMINAL_IBM_RT support
uint8_t ibmpc_led = 0;
if (usb_led & (1<<USB_LED_SCROLL_LOCK))
ibmpc_led |= (1<<IBMPC_LED_SCROLL_LOCK);