Remove force disable of NKRO when Bluetooth enabled (#25201)
This commit is contained in:
		
							parent
							
								
									ac991405d0
								
							
						
					
					
						commit
						ab1332bb6c
					
				| @ -11,6 +11,10 @@ __attribute__((weak)) bool bluetooth_is_connected(void) { | |||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | __attribute__((weak)) bool bluetooth_can_send_nkro(void) { | ||||||
|  |     return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| __attribute__((weak)) uint8_t bluetooth_keyboard_leds(void) { | __attribute__((weak)) uint8_t bluetooth_keyboard_leds(void) { | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  | |||||||
| @ -37,6 +37,11 @@ void bluetooth_task(void); | |||||||
|  */ |  */ | ||||||
| bool bluetooth_is_connected(void); | bool bluetooth_is_connected(void); | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * \brief Detects if `bluetooth_send_nkro` should be used over `bluetooth_send_keyboard`. | ||||||
|  |  */ | ||||||
|  | bool bluetooth_can_send_nkro(void); | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * \brief Get current LED state. |  * \brief Get current LED state. | ||||||
|  */ |  */ | ||||||
|  | |||||||
| @ -21,7 +21,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #include "action_layer.h" | #include "action_layer.h" | ||||||
| #include "timer.h" | #include "timer.h" | ||||||
| #include "keycode_config.h" | #include "keycode_config.h" | ||||||
| #include "usb_device_state.h" |  | ||||||
| #include <string.h> | #include <string.h> | ||||||
| 
 | 
 | ||||||
| extern keymap_config_t keymap_config; | extern keymap_config_t keymap_config; | ||||||
| @ -319,14 +318,12 @@ void send_nkro_report(void) { | |||||||
|  */ |  */ | ||||||
| void send_keyboard_report(void) { | void send_keyboard_report(void) { | ||||||
| #ifdef NKRO_ENABLE | #ifdef NKRO_ENABLE | ||||||
|     if (usb_device_state_get_protocol() == USB_PROTOCOL_REPORT && keymap_config.nkro) { |     if (host_can_send_nkro() && keymap_config.nkro) { | ||||||
|         send_nkro_report(); |         send_nkro_report(); | ||||||
|     } else { |         return; | ||||||
|         send_6kro_report(); |  | ||||||
|     } |     } | ||||||
| #else |  | ||||||
|     send_6kro_report(); |  | ||||||
| #endif | #endif | ||||||
|  |     send_6kro_report(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** \brief Get mods
 | /** \brief Get mods
 | ||||||
|  | |||||||
| @ -46,12 +46,8 @@ else | |||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| ifeq ($(strip $(NKRO_ENABLE)), yes) | ifeq ($(strip $(NKRO_ENABLE)), yes) | ||||||
|     ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) |  | ||||||
|         $(info NKRO is not currently supported with Bluetooth, and has been disabled.) |  | ||||||
|     else |  | ||||||
|     OPT_DEFS += -DNKRO_ENABLE |     OPT_DEFS += -DNKRO_ENABLE | ||||||
|     SHARED_EP_ENABLE = yes |     SHARED_EP_ENABLE = yes | ||||||
|     endif |  | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| ifeq ($(strip $(NO_SUSPEND_POWER_DOWN)), yes) | ifeq ($(strip $(NO_SUSPEND_POWER_DOWN)), yes) | ||||||
|  | |||||||
| @ -21,6 +21,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #include "host.h" | #include "host.h" | ||||||
| #include "util.h" | #include "util.h" | ||||||
| #include "debug.h" | #include "debug.h" | ||||||
|  | #include "usb_device_state.h" | ||||||
| 
 | 
 | ||||||
| #ifdef DIGITIZER_ENABLE | #ifdef DIGITIZER_ENABLE | ||||||
| #    include "digitizer.h" | #    include "digitizer.h" | ||||||
| @ -90,6 +91,23 @@ static host_driver_t *host_get_active_driver(void) { | |||||||
|     return driver; |     return driver; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | bool host_can_send_nkro(void) { | ||||||
|  | #ifdef CONNECTION_ENABLE | ||||||
|  |     switch (connection_get_host()) { | ||||||
|  | #    ifdef BLUETOOTH_ENABLE | ||||||
|  |         case CONNECTION_HOST_BLUETOOTH: | ||||||
|  |             return bluetooth_can_send_nkro(); | ||||||
|  | #    endif | ||||||
|  |         case CONNECTION_HOST_NONE: | ||||||
|  |             return false; | ||||||
|  |         default: | ||||||
|  |             break; | ||||||
|  |     } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |     return usb_device_state_get_protocol() == USB_PROTOCOL_REPORT; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| #ifdef SPLIT_KEYBOARD | #ifdef SPLIT_KEYBOARD | ||||||
| uint8_t split_led_state = 0; | uint8_t split_led_state = 0; | ||||||
| void    set_split_host_keyboard_leds(uint8_t led_state) { | void    set_split_host_keyboard_leds(uint8_t led_state) { | ||||||
|  | |||||||
| @ -32,6 +32,7 @@ void           host_set_driver(host_driver_t *driver); | |||||||
| host_driver_t *host_get_driver(void); | host_driver_t *host_get_driver(void); | ||||||
| 
 | 
 | ||||||
| /* host driver interface */ | /* host driver interface */ | ||||||
|  | bool    host_can_send_nkro(void); | ||||||
| uint8_t host_keyboard_leds(void); | uint8_t host_keyboard_leds(void); | ||||||
| led_t   host_keyboard_led_state(void); | led_t   host_keyboard_led_state(void); | ||||||
| void    host_keyboard_send(report_keyboard_t *report); | void    host_keyboard_send(report_keyboard_t *report); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user