diff --git a/src/add-ons/kernel/debugger/usb_keyboard/usb_keyboard.cpp b/src/add-ons/kernel/debugger/usb_keyboard/usb_keyboard.cpp index ee91d2981a..94d79add64 100644 --- a/src/add-ons/kernel/debugger/usb_keyboard/usb_keyboard.cpp +++ b/src/add-ons/kernel/debugger/usb_keyboard/usb_keyboard.cpp @@ -206,9 +206,15 @@ debugger_getchar(void) set_debug_variable("_usbTransferLength", (uint64)sUSBTransferLength); status_t status = evaluate_debug_command("usb_process_transfer"); - if (status != B_OK) + if (status == B_DEV_PENDING) return -1; + if (status != B_OK) { + // try clearing a possibly set halt due to toggle mismatches + evaluate_debug_command("usb_clear_stall"); + return -1; + } + bool phantomState = true; for (size_t i = 2; i < sUSBTransferLength; i++) { if (sUSBTransferData[i] != 0x01) {