diff --git a/keyboard.cpp b/keyboard.cpp index bfc127c..a1a7295 100644 --- a/keyboard.cpp +++ b/keyboard.cpp @@ -138,13 +138,24 @@ bool KeyboardController::claim(Device_t *dev, int type, const uint8_t *descripto datapipe = new_Pipe(dev, 3, endpoint, 1, 8, interval); datapipe->callback_function = callback; queue_Data_Transfer(datapipe, report, 8, this); - mk_setup(setup, 0x21, 10, 0, 0, 0); // 10=SET_IDLE + + mk_setup(setup, 0x21, 11, 0, 0, 0); // 11=SET_PROTOCOL BOOT queue_Control_Transfer(dev, &setup, NULL, this); return true; } void KeyboardController::control(const Transfer_t *transfer) { + println("control callback (keyboard)"); + print_hexbytes(transfer->buffer, transfer->length); + // To decode hex dump to human readable HID report summary: + // http://eleccelerator.com/usbdescreqparser/ + uint32_t mesg = transfer->setup.word1; + println(" mesg = ", mesg, HEX); + if (mesg == 0x001021 && transfer->length == 0) { // SET_PROTOCOL + mk_setup(setup, 0x21, 10, 0, 0, 0); // 10=SET_IDLE + queue_Control_Transfer(device, &setup, NULL, this); + } } void KeyboardController::callback(const Transfer_t *transfer)