X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=keyboard%2Fhhkb%2Frn42%2Frn42_task.c;h=501fce46de4c1f57178e9da24d8695cdd8a64fed;hb=ec49ce3be673d8e0e9fb32a7ae19d1c29f506621;hp=cef6a547c9014afac622bf0d81199e87b22fed84;hpb=2e464737aa9f83fb08dbd7a252b75d028475aa04;p=max%2Ftmk_keyboard.git diff --git a/keyboard/hhkb/rn42/rn42_task.c b/keyboard/hhkb/rn42/rn42_task.c index cef6a547..501fce46 100644 --- a/keyboard/hhkb/rn42/rn42_task.c +++ b/keyboard/hhkb/rn42/rn42_task.c @@ -33,6 +33,9 @@ static void status_led(bool on) void rn42_task_init(void) { battery_init(); +#ifdef NKRO_ENABLE + rn42_nkro_last = keyboard_nkro; +#endif } void rn42_task(void) @@ -69,14 +72,25 @@ void rn42_task(void) } } - /* Bluetooth mode when ready */ - if (!config_mode && !force_usb) { - if (!rn42_rts() && host_get_driver() != &rn42_driver) { - clear_keyboard(); - host_set_driver(&rn42_driver); - } else if (rn42_rts() && host_get_driver() != &lufa_driver) { - clear_keyboard(); - host_set_driver(&lufa_driver); + /* Switch between USB and Bluetooth */ + if (!config_mode) { // not switch while config mode + if (!force_usb && !rn42_rts()) { + if (host_get_driver() != &rn42_driver) { + clear_keyboard(); +#ifdef NKRO_ENABLE + rn42_nkro_last = keyboard_nkro; + 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 { print("USB mode\n"); force_usb = true; - clear_keyboard(); - host_set_driver(&lufa_driver); } return true; case KC_DELETE: @@ -360,6 +372,14 @@ bool command_extra(uint8_t code) case KC_SCROLLLOCK: init_rn42(); return true; +#ifdef NKRO_ENABLE + case KC_N: + if (host_get_driver() != &lufa_driver) { + // ignored unless USB mode + return true; + } + return false; +#endif default: if (config_mode) return true;