]> git.donarmstrong.com Git - tmk_firmware.git/commitdiff
Add conditional compile for MOUSE_ENABLE and EXTRAKEY_ENABLE.
authortmk <nobody@nowhere>
Thu, 28 Jun 2012 18:33:59 +0000 (03:33 +0900)
committertmk <nobody@nowhere>
Thu, 28 Jun 2012 18:33:59 +0000 (03:33 +0900)
keyboard/macway/Makefile.lufa
protocol/lufa/descriptor.c
protocol/lufa/descriptor.h
protocol/lufa/lufa.c

index a3395a2ab75bc50a9287ba0179ab8d3874120b51..8f50776dfc4e92a17f1ffaa3bba20a2e328e7551 100644 (file)
@@ -100,9 +100,9 @@ F_USB = $(F_CPU)
 #   comment out to disable the options.
 #
 MOUSEKEY_ENABLE = yes  # Mouse keys
-#PS2_MOUSE_ENABLE = yes        # PS/2 mouse(TrackPoint) support
 EXTRAKEY_ENABLE = yes  # Audio control and System control
 #NKRO_ENABLE = yes     # USB Nkey Rollover
+#PS2_MOUSE_ENABLE = yes        # PS/2 mouse(TrackPoint) support
 
 
 # Search Path
index 59adcd184c422f3350d8375e4ed1e6643554357f..d3f740bfe693fd7b248cb19b5c5c4c29624beaef 100644 (file)
@@ -54,8 +54,8 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
         HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
         HID_RI_LOGICAL_MINIMUM(8, 0x00),
         HID_RI_LOGICAL_MAXIMUM(8, 0x01),
-        HID_RI_REPORT_SIZE(8, 0x01),
         HID_RI_REPORT_COUNT(8, 0x08),
+        HID_RI_REPORT_SIZE(8, 0x01),
         HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
         HID_RI_REPORT_COUNT(8, 0x01),
         HID_RI_REPORT_SIZE(8, 0x08),
@@ -69,11 +69,11 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] =
         HID_RI_REPORT_COUNT(8, 0x01),
         HID_RI_REPORT_SIZE(8, 0x03),
         HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
-        HID_RI_LOGICAL_MINIMUM(8, 0x00),
-        HID_RI_LOGICAL_MAXIMUM(8, 0x65),
         HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */
         HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */
-        HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */
+        HID_RI_USAGE_MAXIMUM(8, 0xFF), /* Keyboard Application */
+        HID_RI_LOGICAL_MINIMUM(8, 0x00),
+        HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
         HID_RI_REPORT_COUNT(8, 0x06),
         HID_RI_REPORT_SIZE(8, 0x08),
         HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE),
@@ -133,21 +133,22 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] =
     HID_RI_USAGE_PAGE(16, 0xFF31), /* Vendor Page(PJRC Teensy compatible) */
     HID_RI_USAGE(8, 0x74), /* Vendor Usage(PJRC Teensy compatible) */
     HID_RI_COLLECTION(8, 0x01), /* Application */
-        HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */
+        HID_RI_USAGE(8, 0x75), /* Vendor Usage 0x75 */
         HID_RI_LOGICAL_MINIMUM(8, 0x00),
         HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
-        HID_RI_REPORT_SIZE(8, 0x08),
         HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE),
+        HID_RI_REPORT_SIZE(8, 0x08),
         HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
-        HID_RI_USAGE(8, 0x03), /* Vendor Usage 3 */
+        HID_RI_USAGE(8, 0x76), /* Vendor Usage 0x76 */
         HID_RI_LOGICAL_MINIMUM(8, 0x00),
         HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
-        HID_RI_REPORT_SIZE(8, 0x08),
         HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE),
+        HID_RI_REPORT_SIZE(8, 0x08),
         HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
     HID_RI_END_COLLECTION(0),
 };
 
+#ifdef EXTRAKEY_ENABLE
 const USB_Descriptor_HIDReport_Datatype_t PROGMEM ExtraReport[] =
 {
     HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
@@ -176,6 +177,42 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM ExtraReport[] =
         HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE),
     HID_RI_END_COLLECTION(0),
 };
+#endif
+
+#ifdef NKRO_ENABLE
+const USB_Descriptor_HIDReport_Datatype_t PROGMEM NKROReport[] =
+{
+    HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
+    HID_RI_USAGE(8, 0x06), /* Keyboard */
+    HID_RI_COLLECTION(8, 0x01), /* Application */
+        HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
+        HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */
+        HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */
+        HID_RI_LOGICAL_MINIMUM(8, 0x00),
+        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
+        HID_RI_REPORT_COUNT(8, 0x08),
+        HID_RI_REPORT_SIZE(8, 0x01),
+        HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
+
+        HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */
+        HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */
+        HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */
+        HID_RI_REPORT_COUNT(8, 0x05),
+        HID_RI_REPORT_SIZE(8, 0x01),
+        HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
+        HID_RI_REPORT_COUNT(8, 0x01),
+        HID_RI_REPORT_SIZE(8, 0x03),
+        HID_RI_OUTPUT(8, HID_IOF_CONSTANT),
+
+        HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */
+        HID_RI_USAGE_MINIMUM(8, 0x00), /* Keyboard 0 */
+        HID_RI_USAGE_MAXIMUM(8, NKRO_SIZE*8-1), /* Keyboard Right GUI */
+        HID_RI_LOGICAL_MINIMUM(8, 0x00),
+        HID_RI_LOGICAL_MAXIMUM(8, 0x01),
+        HID_RI_REPORT_COUNT(8, NKRO_SIZE*8),
+        HID_RI_REPORT_SIZE(8, 0x01),
+};
+#endif
 
 /*******************************************************************************
  * Device Descriptors
@@ -265,6 +302,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
     /*
      * Mouse
      */
+#ifdef MOUSE_ENABLE
     .Mouse_Interface =
         {
             .Header                 = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
@@ -301,6 +339,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
             .EndpointSize           = MOUSE_EPSIZE,
             .PollingIntervalMS      = 0x01
         },
+#endif
 
     /*
      * Console
@@ -355,6 +394,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
     /*
      * Extra
      */
+#ifdef EXTRAKEY_ENABLE
     .Extra_Interface =
         {
             .Header                 = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
@@ -391,6 +431,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
             .EndpointSize           = EXTRA_EPSIZE,
             .PollingIntervalMS      = 0x01
         },
+#endif
 };
 
 
@@ -468,18 +509,22 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                 Address = &ConfigurationDescriptor.Keyboard_HID;
                 Size    = sizeof(USB_HID_Descriptor_HID_t);
                 break;
+#ifdef MOUSE_ENABLE
             case MOUSE_INTERFACE:
                 Address = &ConfigurationDescriptor.Mouse_HID;
                 Size    = sizeof(USB_HID_Descriptor_HID_t);
                 break;
+#endif
             case CONSOLE_INTERFACE:
                 Address = &ConfigurationDescriptor.Console_HID;
                 Size    = sizeof(USB_HID_Descriptor_HID_t);
                 break;
+#ifdef EXTRAKEY_ENABLE
             case EXTRA_INTERFACE:
                 Address = &ConfigurationDescriptor.Extra_HID;
                 Size    = sizeof(USB_HID_Descriptor_HID_t);
                 break;
+#endif
             }
             break;
         case HID_DTYPE_Report:
@@ -488,18 +533,22 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                 Address = &KeyboardReport;
                 Size    = sizeof(KeyboardReport);
                 break;
+#ifdef MOUSE_ENABLE
             case MOUSE_INTERFACE:
                 Address = &MouseReport;
                 Size    = sizeof(MouseReport);
                 break;
+#endif
             case CONSOLE_INTERFACE:
                 Address = &ConsoleReport;
                 Size    = sizeof(ConsoleReport);
                 break;
+#ifdef EXTRAKEY_ENABLE
             case EXTRA_INTERFACE:
                 Address = &ExtraReport;
                 Size    = sizeof(ExtraReport);
                 break;
+#endif
             }
             break;
     }
index 6b1b4d48451a34dca0e03787d884f6f9b3c0a6db..19bce999f225964c9142850a17df37b7712c01b6 100644 (file)
@@ -51,9 +51,11 @@ typedef struct
     USB_Descriptor_Endpoint_t             Keyboard_INEndpoint;
 
     // Mouse HID Interface
+#ifdef MOUSE_ENABLE
     USB_Descriptor_Interface_t            Mouse_Interface;
     USB_HID_Descriptor_HID_t              Mouse_HID;
     USB_Descriptor_Endpoint_t             Mouse_INEndpoint;
+#endif
 
     // Console HID Interface
     USB_Descriptor_Interface_t            Console_Interface;
@@ -62,20 +64,35 @@ typedef struct
     USB_Descriptor_Endpoint_t             Console_OUTEndpoint;
 
     // Extra HID Interface
+#ifdef EXTRAKEY_ENABLE
     USB_Descriptor_Interface_t            Extra_Interface;
     USB_HID_Descriptor_HID_t              Extra_HID;
     USB_Descriptor_Endpoint_t             Extra_INEndpoint;
+#endif
 } USB_Descriptor_Configuration_t;
 
 
-/* nubmer of interfaces */
-#define TOTAL_INTERFACES            4
-
 /* index of interface */
 #define KEYBOARD_INTERFACE          0
-#define MOUSE_INTERFACE             1
-#define CONSOLE_INTERFACE           2
-#define EXTRA_INTERFACE             3
+
+#ifdef MOUSE_ENABLE
+#   define MOUSE_INTERFACE          (KEYBOARD_INTERFACE + 1)
+#else
+#   define MOUSE_INTERFACE          KEYBOARD_INTERFACE
+#endif 
+
+#ifdef EXTRAKEY_ENABLE
+#   define EXTRA_INTERFACE          (MOUSE_INTERFACE + 1)
+#else
+#   define EXTRA_INTERFACE          MOUSE_INTERFACE
+#endif 
+
+#define CONSOLE_INTERFACE           (EXTRA_INTERFACE + 1)
+
+
+/* nubmer of interfaces */
+#define TOTAL_INTERFACES            (CONSOLE_INTERFACE + 1)
+
 
 // Endopoint number and size
 #define KEYBOARD_IN_EPNUM           1
index 09da96b2e572860d640e08a378c92d9a8fee1b26..f485e24bf0228586b4dd82d0d18f0520ac042168 100644 (file)
@@ -50,7 +50,9 @@ static uint8_t keyboard_led_stats = 0;
 
 // TODO: impl Control Request GET_REPORT
 static report_keyboard_t keyboard_report_sent;
+#ifdef MOUSE_ENABLE
 static report_mouse_t mouse_report_sent;
+#endif
 
 /* Host driver */
 static uint8_t keyboard_leds(void);
@@ -171,19 +173,23 @@ void EVENT_USB_Device_ConfigurationChanged(void)
     ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
                                                 KEYBOARD_EPSIZE, ENDPOINT_BANK_SINGLE);
 
+#ifdef MOUSE_ENABLE
     /* Setup Mouse HID Report Endpoint */
     ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
                                                 MOUSE_EPSIZE, ENDPOINT_BANK_SINGLE);
+#endif
+
+#ifdef EXTRAKEY_ENABLE
+    /* Setup Extra HID Report Endpoint */
+    ConfigSuccess &= Endpoint_ConfigureEndpoint(EXTRA_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                EXTRA_EPSIZE, ENDPOINT_BANK_SINGLE);
+#endif
 
     /* Setup Console HID Report Endpoints */
     ConfigSuccess &= Endpoint_ConfigureEndpoint(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
                                                 CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE);
     ConfigSuccess &= Endpoint_ConfigureEndpoint(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
                                                 CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE);
-
-    /* Setup Extra HID Report Endpoint */
-    ConfigSuccess &= Endpoint_ConfigureEndpoint(EXTRA_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
-                                                EXTRA_EPSIZE, ENDPOINT_BANK_SINGLE);
 }
 
 /*
@@ -222,15 +228,19 @@ void EVENT_USB_Device_ControlRequest(void)
                     ReportData = (uint8_t*)&keyboard_report_sent;
                     ReportSize = sizeof(keyboard_report_sent);
                     break;
+#ifdef MOUSE_ENABLE
                 case MOUSE_INTERFACE:
                     // TODO: test/check
                     ReportData = (uint8_t*)&mouse_report_sent;
                     ReportSize = sizeof(mouse_report_sent);
                     break;
-                case CONSOLE_INTERFACE:
-                    break;
+#endif
+#ifdef EXTRAKEY_ENABLE
                 case EXTRA_INTERFACE:
                     break;
+#endif
+                case CONSOLE_INTERFACE:
+                    break;
                 }
 
                 /* Write the report data to the control endpoint */
@@ -258,12 +268,16 @@ void EVENT_USB_Device_ControlRequest(void)
                     /* Read in the LED report from the host */
                     keyboard_led_stats = Endpoint_Read_8();
                     break;
+#ifdef MOUSE_ENABLE
                 case MOUSE_INTERFACE:
                     break;
-                case CONSOLE_INTERFACE:
-                    break;
+#endif
+#ifdef EXTRAKEY_ENABLE
                 case EXTRA_INTERFACE:
                     break;
+#endif
+                case CONSOLE_INTERFACE:
+                    break;
                 }
 
                 Endpoint_ClearOUT();
@@ -302,6 +316,7 @@ static void send_keyboard(report_keyboard_t *report)
 
 static void send_mouse(report_mouse_t *report)
 {
+#ifdef MOUSE_ENABLE
     /* Select the Mouse Report Endpoint */
     Endpoint_SelectEndpoint(MOUSE_IN_EPNUM);
 
@@ -315,6 +330,7 @@ static void send_mouse(report_mouse_t *report)
         Endpoint_ClearIN();
     }
     mouse_report_sent = *report;
+#endif
 }
 
 typedef struct {