hhkb: Fix for USB NKRO for RN42
This commit is contained in:
parent
3526fcaf15
commit
f2761c9565
6 changed files with 2941 additions and 2861 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
TARGET ?= hhkb_rn42
|
TARGET ?= hhkb_rn42
|
||||||
CONFIG_H ?= config_rn42.h
|
CONFIG_H ?= config_rn42.h
|
||||||
RN42_ENABLE ?= yes
|
RN42_ENABLE ?= yes
|
||||||
NKRO_ENABLE ?= no
|
NKRO_ENABLE ?= yes
|
||||||
include Makefile
|
include Makefile
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -72,12 +72,6 @@ int main(void)
|
||||||
/* init modules */
|
/* init modules */
|
||||||
keyboard_init();
|
keyboard_init();
|
||||||
|
|
||||||
if (!rn42_rts()) {
|
|
||||||
host_set_driver(&rn42_driver);
|
|
||||||
} else {
|
|
||||||
host_set_driver(&lufa_driver);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef SLEEP_LED_ENABLE
|
#ifdef SLEEP_LED_ENABLE
|
||||||
sleep_led_init();
|
sleep_led_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,9 @@ static void status_led(bool on)
|
||||||
void rn42_task_init(void)
|
void rn42_task_init(void)
|
||||||
{
|
{
|
||||||
battery_init();
|
battery_init();
|
||||||
|
#ifdef NKRO_ENABLE
|
||||||
|
rn42_nkro_last = keyboard_nkro;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void rn42_task(void)
|
void rn42_task(void)
|
||||||
|
|
@ -69,14 +72,25 @@ void rn42_task(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Bluetooth mode when ready */
|
/* Switch between USB and Bluetooth */
|
||||||
if (!config_mode && !force_usb) {
|
if (!config_mode) { // not switch while config mode
|
||||||
if (!rn42_rts() && host_get_driver() != &rn42_driver) {
|
if (!force_usb && !rn42_rts()) {
|
||||||
clear_keyboard();
|
if (host_get_driver() != &rn42_driver) {
|
||||||
host_set_driver(&rn42_driver);
|
clear_keyboard();
|
||||||
} else if (rn42_rts() && host_get_driver() != &lufa_driver) {
|
#ifdef NKRO_ENABLE
|
||||||
clear_keyboard();
|
rn42_nkro_last = keyboard_nkro;
|
||||||
host_set_driver(&lufa_driver);
|
keyboard_nkro = false;
|
||||||
|
#endif
|
||||||
|
host_set_driver(&rn42_driver);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (host_get_driver() != &lufa_driver) {
|
||||||
|
clear_keyboard();
|
||||||
|
#ifdef NKRO_ENABLE
|
||||||
|
keyboard_nkro = rn42_nkro_last;
|
||||||
|
#endif
|
||||||
|
host_set_driver(&lufa_driver);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -339,8 +353,6 @@ bool command_extra(uint8_t code)
|
||||||
} else {
|
} else {
|
||||||
print("USB mode\n");
|
print("USB mode\n");
|
||||||
force_usb = true;
|
force_usb = true;
|
||||||
clear_keyboard();
|
|
||||||
host_set_driver(&lufa_driver);
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case KC_DELETE:
|
case KC_DELETE:
|
||||||
|
|
@ -360,6 +372,14 @@ bool command_extra(uint8_t code)
|
||||||
case KC_SCROLLLOCK:
|
case KC_SCROLLLOCK:
|
||||||
init_rn42();
|
init_rn42();
|
||||||
return true;
|
return true;
|
||||||
|
#ifdef NKRO_ENABLE
|
||||||
|
case KC_N:
|
||||||
|
if (host_get_driver() != &lufa_driver) {
|
||||||
|
// ignored unless USB mode
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
if (config_mode)
|
if (config_mode)
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,10 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "rn42.h"
|
#include "rn42.h"
|
||||||
|
|
||||||
|
#ifdef NKRO_ENABLE
|
||||||
|
bool rn42_nkro_last;
|
||||||
|
#endif
|
||||||
|
|
||||||
void rn42_task_init(void);
|
void rn42_task_init(void);
|
||||||
void rn42_task(void);
|
void rn42_task(void);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue