#include <stdint.h>
+#include <avr/interrupt.h>
#include "usb_keycodes.h"
#include "usb_keyboard.h"
#include "usb_mouse.h"
#include "debug.h"
#include "host.h"
+#include "util.h"
#ifdef USB_NKRO_ENABLE
void host_swap_keyboard_report(void)
{
+ uint8_t sreg = SREG;
+ cli();
report_keyboard_t *tmp = keyboard_report_prev;
keyboard_report_prev = keyboard_report;
keyboard_report = tmp;
+ SREG = sreg;
}
void host_clear_keyboard_report(void)
return cnt;
}
-uint8_t *host_get_keys(void)
+uint8_t host_get_first_key(void)
{
- return keyboard_report->keys;
-}
-
-uint8_t host_get_mods(void)
-{
- return keyboard_report->mods;
+#ifdef USB_NKRO_ENABLE
+ if (keyboard_nkro) {
+ uint8_t i = 0;
+ for (; i < REPORT_KEYS && !keyboard_report->keys[i]; i++)
+ ;
+ return i<<3 | biton(keyboard_report->keys[i]);
+ }
+#endif
+ return keyboard_report->keys[0];
}