diff --git a/tmk_core/protocol/arm_atsam/main_arm_atsam.c b/tmk_core/protocol/arm_atsam/main_arm_atsam.c index 8abcfd6090..15592bf908 100644 --- a/tmk_core/protocol/arm_atsam/main_arm_atsam.c +++ b/tmk_core/protocol/arm_atsam/main_arm_atsam.c @@ -88,7 +88,13 @@ void send_nkro(report_nkro_t *report) { __disable_irq(); __DMB(); - memcpy(udi_hid_nkro_report, report, UDI_HID_NKRO_REPORT_SIZE); + /* + Skipping ahead `sizeof(report->report_id)` bytes + since `report_id` is not used by this driver + */ + void *report_no_report_id = (void *)((char *)report + sizeof(report->report_id)); + + memcpy(udi_hid_nkro_report, report_no_report_id, UDI_HID_NKRO_REPORT_SIZE); udi_hid_nkro_b_report_valid = 1; udi_hid_nkro_send_report(); @@ -105,7 +111,17 @@ void send_mouse(report_mouse_t *report) { __disable_irq(); __DMB(); +# ifdef MOUSE_SHARED_EP + /* + Skipping ahead `sizeof(report->report_id)` bytes + since `report_id` is not used by this driver + */ + void *report_no_report_id = (void *)((char *)report + sizeof(report->report_id)); + + memcpy(udi_hid_mou_report, report_no_report_id, UDI_HID_MOU_REPORT_SIZE); +# else memcpy(udi_hid_mou_report, report, UDI_HID_MOU_REPORT_SIZE); +# endif udi_hid_mou_b_report_valid = 1; udi_hid_mou_send_report();