+#include <stdint.h>
+#include <avr/interrupt.h>
#include "usbdrv.h"
#include "usbconfig.h"
#include "print.h"
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];
}
*/
PROGMEM uchar mouse_hid_report[] = {
/* from HID 1.11 spec example */
- 0x05, 0x01, // Usage Page (Generic Desktop),
- 0x09, 0x02, // Usage (Mouse),
- 0xA1, 0x01, // Collection (Application),
- 0x09, 0x01, // Usage (Pointer),
- 0xA1, 0x00, // Collection (Physical),
- 0x05, 0x09, // Usage Page (Buttons),
- 0x19, 0x01, // Usage Minimum (01),
- 0x29, 0x03, // Usage Maximun (03),
- 0x15, 0x00, // Logical Minimum (0),
- 0x25, 0x01, // Logical Maximum (1),
- 0x95, 0x03, // Report Count (3),
- 0x75, 0x01, // Report Size (1),
- 0x81, 0x02, // Input (Data, Variable, Absolute), ;3 button bits
- 0x95, 0x01, // Report Count (1),
- 0x75, 0x05, // Report Size (5),
- 0x81, 0x01, // Input (Constant), ;5 bit padding
- 0x05, 0x01, // Usage Page (Generic Desktop),
- 0x09, 0x30, // Usage (X),
- 0x09, 0x31, // Usage (Y),
- 0x15, 0x81, // Logical Minimum (-127),
- 0x25, 0x7F, // Logical Maximum (127),
- 0x75, 0x08, // Report Size (8),
- 0x95, 0x02, // Report Count (2),
- 0x81, 0x06, // Input (Data, Variable, Relative), ;2 position bytes (X & Y)
- 0xC0, // End Collection,
- 0xC0, // End Collection
-/*
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
0xc0, // END_COLLECTION
0xc0, // END_COLLECTION
0xc0 // END_COLLECTION
-*/
};