core: Fix for disabling NKRO in Boot protocol
This commit is contained in:
parent
e8a4a63ec4
commit
ed9766a7d4
@ -76,7 +76,7 @@ void send_keyboard_report(void) {
|
|||||||
void add_key(uint8_t key)
|
void add_key(uint8_t key)
|
||||||
{
|
{
|
||||||
#ifdef NKRO_ENABLE
|
#ifdef NKRO_ENABLE
|
||||||
if (keyboard_nkro) {
|
if (keyboard_protocol && keyboard_nkro) {
|
||||||
add_key_bit(key);
|
add_key_bit(key);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -87,7 +87,7 @@ void add_key(uint8_t key)
|
|||||||
void del_key(uint8_t key)
|
void del_key(uint8_t key)
|
||||||
{
|
{
|
||||||
#ifdef NKRO_ENABLE
|
#ifdef NKRO_ENABLE
|
||||||
if (keyboard_nkro) {
|
if (keyboard_protocol && keyboard_nkro) {
|
||||||
del_key_bit(key);
|
del_key_bit(key);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -160,7 +160,7 @@ uint8_t has_anymod(void)
|
|||||||
uint8_t get_first_key(void)
|
uint8_t get_first_key(void)
|
||||||
{
|
{
|
||||||
#ifdef NKRO_ENABLE
|
#ifdef NKRO_ENABLE
|
||||||
if (keyboard_nkro) {
|
if (keyboard_protocol && keyboard_nkro) {
|
||||||
uint8_t i = 0;
|
uint8_t i = 0;
|
||||||
for (; i < KEYBOARD_REPORT_BITS && !keyboard_report->nkro.bits[i]; i++)
|
for (; i < KEYBOARD_REPORT_BITS && !keyboard_report->nkro.bits[i]; i++)
|
||||||
;
|
;
|
||||||
|
@ -315,6 +315,7 @@ static bool command_common(uint8_t code)
|
|||||||
print_val_hex8(host_keyboard_leds());
|
print_val_hex8(host_keyboard_leds());
|
||||||
print_val_hex8(keyboard_protocol);
|
print_val_hex8(keyboard_protocol);
|
||||||
print_val_hex8(keyboard_idle);
|
print_val_hex8(keyboard_idle);
|
||||||
|
print_val_hex8(keyboard_nkro);
|
||||||
print_val_hex32(timer_count);
|
print_val_hex32(timer_count);
|
||||||
|
|
||||||
#ifdef PROTOCOL_PJRC
|
#ifdef PROTOCOL_PJRC
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
#include "lufa.h"
|
#include "lufa.h"
|
||||||
|
|
||||||
uint8_t keyboard_idle = 0;
|
uint8_t keyboard_idle = 0;
|
||||||
|
/* 0: Boot Protocol, 1: Report Protocol(default) */
|
||||||
uint8_t keyboard_protocol = 1;
|
uint8_t keyboard_protocol = 1;
|
||||||
static uint8_t keyboard_led_stats = 0;
|
static uint8_t keyboard_led_stats = 0;
|
||||||
|
|
||||||
@ -349,10 +350,7 @@ void EVENT_USB_Device_ControlRequest(void)
|
|||||||
Endpoint_ClearSETUP();
|
Endpoint_ClearSETUP();
|
||||||
Endpoint_ClearStatusStage();
|
Endpoint_ClearStatusStage();
|
||||||
|
|
||||||
keyboard_protocol = ((USB_ControlRequest.wValue & 0xFF) != 0x00);
|
keyboard_protocol = (USB_ControlRequest.wValue & 0xFF);
|
||||||
#ifdef NKRO_ENABLE
|
|
||||||
keyboard_nkro = !!keyboard_protocol;
|
|
||||||
#endif
|
|
||||||
clear_keyboard();
|
clear_keyboard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -399,7 +397,7 @@ static void send_keyboard(report_keyboard_t *report)
|
|||||||
|
|
||||||
/* Select the Keyboard Report Endpoint */
|
/* Select the Keyboard Report Endpoint */
|
||||||
#ifdef NKRO_ENABLE
|
#ifdef NKRO_ENABLE
|
||||||
if (keyboard_nkro) {
|
if (keyboard_protocol && keyboard_nkro) {
|
||||||
/* Report protocol - NKRO */
|
/* Report protocol - NKRO */
|
||||||
Endpoint_SelectEndpoint(NKRO_IN_EPNUM);
|
Endpoint_SelectEndpoint(NKRO_IN_EPNUM);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user