]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - vusb/host.c
fix for ps2_usb Makefile and circuit
[max/tmk_keyboard.git] / vusb / host.c
index a32a1b17eb86ed2f2ae04a44612d84d60ef709de..901537bcb89bd3c94d5f88b6e24c667723c4884c 100644 (file)
@@ -1,3 +1,5 @@
+#include <stdint.h>
+#include <avr/interrupt.h>
 #include "usbdrv.h"
 #include "usbconfig.h"
 #include "print.h"
@@ -63,9 +65,12 @@ void host_add_code(uint8_t code)
 
 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)
@@ -86,14 +91,17 @@ uint8_t host_has_anykey(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];
 }
 
 
@@ -258,33 +266,6 @@ PROGMEM uchar keyboard_hid_report[] = {
  */
 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)
@@ -355,7 +336,6 @@ PROGMEM uchar mouse_hid_report[] = {
     0xc0,              //     END_COLLECTION
     0xc0,              //   END_COLLECTION
     0xc0               // END_COLLECTION
-*/
 };