diff --git a/src/ImprovedKeyboard.cpp b/src/ImprovedKeyboard.cpp index 4ddae0c..df912d4 100644 --- a/src/ImprovedKeyboard.cpp +++ b/src/ImprovedKeyboard.cpp @@ -118,8 +118,8 @@ void Keyboard_::send_now(void){ #if defined(HID_KEYBOARD_LEDS_ENABLED) void Keyboard_::setReportData(const void* data, uint8_t len){ // Save led state - if(len == 1) - leds = *(uint8_t*)data; + if(len == 2) + leds = *(uint8_t*)(data+1); } uint8_t Keyboard_::getLeds(void){ diff --git a/src/ImprovedKeyboard.h b/src/ImprovedKeyboard.h index 8b94c34..496b9a6 100644 --- a/src/ImprovedKeyboard.h +++ b/src/ImprovedKeyboard.h @@ -38,7 +38,6 @@ THE SOFTWARE. #include "HID-Project.h" #include "ImprovedKeylayouts.h" -// Low level key report: up to 6 keys and shift, ctrl etc at once typedef union{ // Low level key report: up to 6 keys and shift, ctrl etc at once uint8_t whole8[]; diff --git a/src/NKROKeyboard.cpp b/src/NKROKeyboard.cpp index 0f9ae2c..83a72f7 100644 --- a/src/NKROKeyboard.cpp +++ b/src/NKROKeyboard.cpp @@ -123,8 +123,8 @@ void NKROKeyboard_::send_now(void){ #if defined(HID_KEYBOARD_LEDS_ENABLED) void NKROKeyboard_::setReportData(const void* data, uint8_t len){ // Save led state - if(len == 1) - leds = *(uint8_t*)data; + if(len == 2) + leds = *(uint8_t*)(data+1); } uint8_t NKROKeyboard_::getLeds(void){ diff --git a/src/PluggableHID/HID.cpp b/src/PluggableHID/HID.cpp index d91ca56..6291416 100644 --- a/src/PluggableHID/HID.cpp +++ b/src/PluggableHID/HID.cpp @@ -171,16 +171,10 @@ bool HID_::HID_Setup(USBSetup& setup, u8 i) uint8_t length = setup.wLength; uint8_t data[length]; USB_RecvControl(data, length); - - // Skip report ID data, if any - if(ID){ - current->setReportData(data+1, length-1); - } - // TODO test this case - else{ - current->setReportData(data, length); - } + // Data may contain the report ID again (Keyboard), maybe not (RawHID) + current->setReportData(data, length); + // Dont search any further break; } diff --git a/src/TeensyKeyboard.cpp b/src/TeensyKeyboard.cpp index 5af384e..992df32 100644 --- a/src/TeensyKeyboard.cpp +++ b/src/TeensyKeyboard.cpp @@ -32,8 +32,8 @@ HIDDevice((uint8_t*)teensykeyboard_hid_report_desc, sizeof(teensykeyboard_hid_re #if defined(HID_KEYBOARD_LEDS_ENABLED) void usb_keyboard_class::setReportData(const void* data, uint8_t len){ // Save led state - if(len == 1) - leds = *(uint8_t*)data; + if(len == 2) + leds = *(uint8_t*)(data+1); } uint8_t usb_keyboard_class::getLeds(void){