diff options
author | fauxpark <fauxpark@gmail.com> | 2019-01-12 12:22:06 +1100 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2019-01-11 17:22:05 -0800 |
commit | 2c4109394fa9ee71b10b8b2d3d1473a409d7003e (patch) | |
tree | 4f6ea100fa29543981051035e30147cd6d72dbd1 /tmk_core/protocol | |
parent | d9c5e5870efe730af52688b9a268927872f93eb7 (diff) |
Fix Caps Lock LEDs once and for all (#4824)
* Check the size of the SET_REPORT packet
If we have two bytes, that probably means the first is a report ID. The 6KRO interface may or may not have one, but the NKRO interface always does, so we need to check this regardless of whether KEYBOARD_SHARED_EP is defined.
* Fix indentation
Diffstat (limited to 'tmk_core/protocol')
-rw-r--r-- | tmk_core/protocol/lufa/lufa.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 27cf51b161..cdabaf16e6 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -517,17 +517,20 @@ void EVENT_USB_Device_ControlRequest(void) if (USB_DeviceState == DEVICE_STATE_Unattached) return; } -#ifdef KEYBOARD_SHARED_EP - uint8_t report_id = REPORT_ID_KEYBOARD; - if (keyboard_protocol) { - report_id = Endpoint_Read_8(); - } - if (report_id == REPORT_ID_KEYBOARD || report_id == REPORT_ID_NKRO) { + + if (Endpoint_BytesInEndpoint() == 2) { + uint8_t report_id = REPORT_ID_KEYBOARD; + + if (keyboard_protocol) { + report_id = Endpoint_Read_8(); + } + + if (report_id == REPORT_ID_KEYBOARD || report_id == REPORT_ID_NKRO) { keyboard_led_stats = Endpoint_Read_8(); + } + } else { + keyboard_led_stats = Endpoint_Read_8(); } -#else - keyboard_led_stats = Endpoint_Read_8(); -#endif Endpoint_ClearOUT(); Endpoint_ClearStatusStage(); |