diff options
| -rw-r--r-- | keyboard/macway/Makefile.lufa | 2 | ||||
| -rw-r--r-- | protocol/lufa/descriptor.c | 65 | ||||
| -rw-r--r-- | protocol/lufa/descriptor.h | 29 | ||||
| -rw-r--r-- | protocol/lufa/lufa.c | 32 |
4 files changed, 105 insertions, 23 deletions
diff --git a/keyboard/macway/Makefile.lufa b/keyboard/macway/Makefile.lufa index a3395a2ab..8f50776df 100644 --- a/keyboard/macway/Makefile.lufa +++ b/keyboard/macway/Makefile.lufa | |||
| @@ -100,9 +100,9 @@ F_USB = $(F_CPU) | |||
| 100 | # comment out to disable the options. | 100 | # comment out to disable the options. |
| 101 | # | 101 | # |
| 102 | MOUSEKEY_ENABLE = yes # Mouse keys | 102 | MOUSEKEY_ENABLE = yes # Mouse keys |
| 103 | #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support | ||
| 104 | EXTRAKEY_ENABLE = yes # Audio control and System control | 103 | EXTRAKEY_ENABLE = yes # Audio control and System control |
| 105 | #NKRO_ENABLE = yes # USB Nkey Rollover | 104 | #NKRO_ENABLE = yes # USB Nkey Rollover |
| 105 | #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support | ||
| 106 | 106 | ||
| 107 | 107 | ||
| 108 | # Search Path | 108 | # Search Path |
diff --git a/protocol/lufa/descriptor.c b/protocol/lufa/descriptor.c index 59adcd184..d3f740bfe 100644 --- a/protocol/lufa/descriptor.c +++ b/protocol/lufa/descriptor.c | |||
| @@ -54,8 +54,8 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = | |||
| 54 | HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ | 54 | HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ |
| 55 | HID_RI_LOGICAL_MINIMUM(8, 0x00), | 55 | HID_RI_LOGICAL_MINIMUM(8, 0x00), |
| 56 | HID_RI_LOGICAL_MAXIMUM(8, 0x01), | 56 | HID_RI_LOGICAL_MAXIMUM(8, 0x01), |
| 57 | HID_RI_REPORT_SIZE(8, 0x01), | ||
| 58 | HID_RI_REPORT_COUNT(8, 0x08), | 57 | HID_RI_REPORT_COUNT(8, 0x08), |
| 58 | HID_RI_REPORT_SIZE(8, 0x01), | ||
| 59 | HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), | 59 | HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), |
| 60 | HID_RI_REPORT_COUNT(8, 0x01), | 60 | HID_RI_REPORT_COUNT(8, 0x01), |
| 61 | HID_RI_REPORT_SIZE(8, 0x08), | 61 | HID_RI_REPORT_SIZE(8, 0x08), |
| @@ -69,11 +69,11 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM KeyboardReport[] = | |||
| 69 | HID_RI_REPORT_COUNT(8, 0x01), | 69 | HID_RI_REPORT_COUNT(8, 0x01), |
| 70 | HID_RI_REPORT_SIZE(8, 0x03), | 70 | HID_RI_REPORT_SIZE(8, 0x03), |
| 71 | HID_RI_OUTPUT(8, HID_IOF_CONSTANT), | 71 | HID_RI_OUTPUT(8, HID_IOF_CONSTANT), |
| 72 | HID_RI_LOGICAL_MINIMUM(8, 0x00), | ||
| 73 | HID_RI_LOGICAL_MAXIMUM(8, 0x65), | ||
| 74 | HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ | 72 | HID_RI_USAGE_PAGE(8, 0x07), /* Keyboard */ |
| 75 | HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ | 73 | HID_RI_USAGE_MINIMUM(8, 0x00), /* Reserved (no event indicated) */ |
| 76 | HID_RI_USAGE_MAXIMUM(8, 0x65), /* Keyboard Application */ | 74 | HID_RI_USAGE_MAXIMUM(8, 0xFF), /* Keyboard Application */ |
| 75 | HID_RI_LOGICAL_MINIMUM(8, 0x00), | ||
| 76 | HID_RI_LOGICAL_MAXIMUM(8, 0xFF), | ||
| 77 | HID_RI_REPORT_COUNT(8, 0x06), | 77 | HID_RI_REPORT_COUNT(8, 0x06), |
| 78 | HID_RI_REPORT_SIZE(8, 0x08), | 78 | HID_RI_REPORT_SIZE(8, 0x08), |
| 79 | HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE), | 79 | 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[] = | |||
| 133 | HID_RI_USAGE_PAGE(16, 0xFF31), /* Vendor Page(PJRC Teensy compatible) */ | 133 | HID_RI_USAGE_PAGE(16, 0xFF31), /* Vendor Page(PJRC Teensy compatible) */ |
| 134 | HID_RI_USAGE(8, 0x74), /* Vendor Usage(PJRC Teensy compatible) */ | 134 | HID_RI_USAGE(8, 0x74), /* Vendor Usage(PJRC Teensy compatible) */ |
| 135 | HID_RI_COLLECTION(8, 0x01), /* Application */ | 135 | HID_RI_COLLECTION(8, 0x01), /* Application */ |
| 136 | HID_RI_USAGE(8, 0x02), /* Vendor Usage 2 */ | 136 | HID_RI_USAGE(8, 0x75), /* Vendor Usage 0x75 */ |
| 137 | HID_RI_LOGICAL_MINIMUM(8, 0x00), | 137 | HID_RI_LOGICAL_MINIMUM(8, 0x00), |
| 138 | HID_RI_LOGICAL_MAXIMUM(8, 0xFF), | 138 | HID_RI_LOGICAL_MAXIMUM(8, 0xFF), |
| 139 | HID_RI_REPORT_SIZE(8, 0x08), | ||
| 140 | HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE), | 139 | HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE), |
| 140 | HID_RI_REPORT_SIZE(8, 0x08), | ||
| 141 | HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), | 141 | HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), |
| 142 | HID_RI_USAGE(8, 0x03), /* Vendor Usage 3 */ | 142 | HID_RI_USAGE(8, 0x76), /* Vendor Usage 0x76 */ |
| 143 | HID_RI_LOGICAL_MINIMUM(8, 0x00), | 143 | HID_RI_LOGICAL_MINIMUM(8, 0x00), |
| 144 | HID_RI_LOGICAL_MAXIMUM(8, 0xFF), | 144 | HID_RI_LOGICAL_MAXIMUM(8, 0xFF), |
| 145 | HID_RI_REPORT_SIZE(8, 0x08), | ||
| 146 | HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE), | 145 | HID_RI_REPORT_COUNT(8, CONSOLE_EPSIZE), |
| 146 | HID_RI_REPORT_SIZE(8, 0x08), | ||
| 147 | HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), | 147 | HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), |
| 148 | HID_RI_END_COLLECTION(0), | 148 | HID_RI_END_COLLECTION(0), |
| 149 | }; | 149 | }; |
| 150 | 150 | ||
| 151 | #ifdef EXTRAKEY_ENABLE | ||
| 151 | const USB_Descriptor_HIDReport_Datatype_t PROGMEM ExtraReport[] = | 152 | const USB_Descriptor_HIDReport_Datatype_t PROGMEM ExtraReport[] = |
| 152 | { | 153 | { |
| 153 | HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ | 154 | HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ |
| @@ -176,6 +177,42 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM ExtraReport[] = | |||
| 176 | HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE), | 177 | HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE), |
| 177 | HID_RI_END_COLLECTION(0), | 178 | HID_RI_END_COLLECTION(0), |
| 178 | }; | 179 | }; |
| 180 | #endif | ||
| 181 | |||
| 182 | #ifdef NKRO_ENABLE | ||
| 183 | const USB_Descriptor_HIDReport_Datatype_t PROGMEM NKROReport[] = | ||
| 184 | { | ||
| 185 | HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */ | ||
| 186 | HID_RI_USAGE(8, 0x06), /* Keyboard */ | ||
| 187 | HID_RI_COLLECTION(8, 0x01), /* Application */ | ||
| 188 | HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ | ||
| 189 | HID_RI_USAGE_MINIMUM(8, 0xE0), /* Keyboard Left Control */ | ||
| 190 | HID_RI_USAGE_MAXIMUM(8, 0xE7), /* Keyboard Right GUI */ | ||
| 191 | HID_RI_LOGICAL_MINIMUM(8, 0x00), | ||
| 192 | HID_RI_LOGICAL_MAXIMUM(8, 0x01), | ||
| 193 | HID_RI_REPORT_COUNT(8, 0x08), | ||
| 194 | HID_RI_REPORT_SIZE(8, 0x01), | ||
| 195 | HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), | ||
| 196 | |||
| 197 | HID_RI_USAGE_PAGE(8, 0x08), /* LEDs */ | ||
| 198 | HID_RI_USAGE_MINIMUM(8, 0x01), /* Num Lock */ | ||
| 199 | HID_RI_USAGE_MAXIMUM(8, 0x05), /* Kana */ | ||
| 200 | HID_RI_REPORT_COUNT(8, 0x05), | ||
| 201 | HID_RI_REPORT_SIZE(8, 0x01), | ||
| 202 | HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), | ||
| 203 | HID_RI_REPORT_COUNT(8, 0x01), | ||
| 204 | HID_RI_REPORT_SIZE(8, 0x03), | ||
| 205 | HID_RI_OUTPUT(8, HID_IOF_CONSTANT), | ||
| 206 | |||
| 207 | HID_RI_USAGE_PAGE(8, 0x07), /* Key Codes */ | ||
| 208 | HID_RI_USAGE_MINIMUM(8, 0x00), /* Keyboard 0 */ | ||
| 209 | HID_RI_USAGE_MAXIMUM(8, NKRO_SIZE*8-1), /* Keyboard Right GUI */ | ||
| 210 | HID_RI_LOGICAL_MINIMUM(8, 0x00), | ||
| 211 | HID_RI_LOGICAL_MAXIMUM(8, 0x01), | ||
| 212 | HID_RI_REPORT_COUNT(8, NKRO_SIZE*8), | ||
| 213 | HID_RI_REPORT_SIZE(8, 0x01), | ||
| 214 | }; | ||
| 215 | #endif | ||
| 179 | 216 | ||
| 180 | /******************************************************************************* | 217 | /******************************************************************************* |
| 181 | * Device Descriptors | 218 | * Device Descriptors |
| @@ -265,6 +302,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = | |||
| 265 | /* | 302 | /* |
| 266 | * Mouse | 303 | * Mouse |
| 267 | */ | 304 | */ |
| 305 | #ifdef MOUSE_ENABLE | ||
| 268 | .Mouse_Interface = | 306 | .Mouse_Interface = |
| 269 | { | 307 | { |
| 270 | .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, | 308 | .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, |
| @@ -301,6 +339,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = | |||
| 301 | .EndpointSize = MOUSE_EPSIZE, | 339 | .EndpointSize = MOUSE_EPSIZE, |
| 302 | .PollingIntervalMS = 0x01 | 340 | .PollingIntervalMS = 0x01 |
| 303 | }, | 341 | }, |
| 342 | #endif | ||
| 304 | 343 | ||
| 305 | /* | 344 | /* |
| 306 | * Console | 345 | * Console |
| @@ -355,6 +394,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = | |||
| 355 | /* | 394 | /* |
| 356 | * Extra | 395 | * Extra |
| 357 | */ | 396 | */ |
| 397 | #ifdef EXTRAKEY_ENABLE | ||
| 358 | .Extra_Interface = | 398 | .Extra_Interface = |
| 359 | { | 399 | { |
| 360 | .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, | 400 | .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, |
| @@ -391,6 +431,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = | |||
| 391 | .EndpointSize = EXTRA_EPSIZE, | 431 | .EndpointSize = EXTRA_EPSIZE, |
| 392 | .PollingIntervalMS = 0x01 | 432 | .PollingIntervalMS = 0x01 |
| 393 | }, | 433 | }, |
| 434 | #endif | ||
| 394 | }; | 435 | }; |
| 395 | 436 | ||
| 396 | 437 | ||
| @@ -468,18 +509,22 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | |||
| 468 | Address = &ConfigurationDescriptor.Keyboard_HID; | 509 | Address = &ConfigurationDescriptor.Keyboard_HID; |
| 469 | Size = sizeof(USB_HID_Descriptor_HID_t); | 510 | Size = sizeof(USB_HID_Descriptor_HID_t); |
| 470 | break; | 511 | break; |
| 512 | #ifdef MOUSE_ENABLE | ||
| 471 | case MOUSE_INTERFACE: | 513 | case MOUSE_INTERFACE: |
| 472 | Address = &ConfigurationDescriptor.Mouse_HID; | 514 | Address = &ConfigurationDescriptor.Mouse_HID; |
| 473 | Size = sizeof(USB_HID_Descriptor_HID_t); | 515 | Size = sizeof(USB_HID_Descriptor_HID_t); |
| 474 | break; | 516 | break; |
| 517 | #endif | ||
| 475 | case CONSOLE_INTERFACE: | 518 | case CONSOLE_INTERFACE: |
| 476 | Address = &ConfigurationDescriptor.Console_HID; | 519 | Address = &ConfigurationDescriptor.Console_HID; |
| 477 | Size = sizeof(USB_HID_Descriptor_HID_t); | 520 | Size = sizeof(USB_HID_Descriptor_HID_t); |
| 478 | break; | 521 | break; |
| 522 | #ifdef EXTRAKEY_ENABLE | ||
| 479 | case EXTRA_INTERFACE: | 523 | case EXTRA_INTERFACE: |
| 480 | Address = &ConfigurationDescriptor.Extra_HID; | 524 | Address = &ConfigurationDescriptor.Extra_HID; |
| 481 | Size = sizeof(USB_HID_Descriptor_HID_t); | 525 | Size = sizeof(USB_HID_Descriptor_HID_t); |
| 482 | break; | 526 | break; |
| 527 | #endif | ||
| 483 | } | 528 | } |
| 484 | break; | 529 | break; |
| 485 | case HID_DTYPE_Report: | 530 | case HID_DTYPE_Report: |
| @@ -488,18 +533,22 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, | |||
| 488 | Address = &KeyboardReport; | 533 | Address = &KeyboardReport; |
| 489 | Size = sizeof(KeyboardReport); | 534 | Size = sizeof(KeyboardReport); |
| 490 | break; | 535 | break; |
| 536 | #ifdef MOUSE_ENABLE | ||
| 491 | case MOUSE_INTERFACE: | 537 | case MOUSE_INTERFACE: |
| 492 | Address = &MouseReport; | 538 | Address = &MouseReport; |
| 493 | Size = sizeof(MouseReport); | 539 | Size = sizeof(MouseReport); |
| 494 | break; | 540 | break; |
| 541 | #endif | ||
| 495 | case CONSOLE_INTERFACE: | 542 | case CONSOLE_INTERFACE: |
| 496 | Address = &ConsoleReport; | 543 | Address = &ConsoleReport; |
| 497 | Size = sizeof(ConsoleReport); | 544 | Size = sizeof(ConsoleReport); |
| 498 | break; | 545 | break; |
| 546 | #ifdef EXTRAKEY_ENABLE | ||
| 499 | case EXTRA_INTERFACE: | 547 | case EXTRA_INTERFACE: |
| 500 | Address = &ExtraReport; | 548 | Address = &ExtraReport; |
| 501 | Size = sizeof(ExtraReport); | 549 | Size = sizeof(ExtraReport); |
| 502 | break; | 550 | break; |
| 551 | #endif | ||
| 503 | } | 552 | } |
| 504 | break; | 553 | break; |
| 505 | } | 554 | } |
diff --git a/protocol/lufa/descriptor.h b/protocol/lufa/descriptor.h index 6b1b4d484..19bce999f 100644 --- a/protocol/lufa/descriptor.h +++ b/protocol/lufa/descriptor.h | |||
| @@ -51,9 +51,11 @@ typedef struct | |||
| 51 | USB_Descriptor_Endpoint_t Keyboard_INEndpoint; | 51 | USB_Descriptor_Endpoint_t Keyboard_INEndpoint; |
| 52 | 52 | ||
| 53 | // Mouse HID Interface | 53 | // Mouse HID Interface |
| 54 | #ifdef MOUSE_ENABLE | ||
| 54 | USB_Descriptor_Interface_t Mouse_Interface; | 55 | USB_Descriptor_Interface_t Mouse_Interface; |
| 55 | USB_HID_Descriptor_HID_t Mouse_HID; | 56 | USB_HID_Descriptor_HID_t Mouse_HID; |
| 56 | USB_Descriptor_Endpoint_t Mouse_INEndpoint; | 57 | USB_Descriptor_Endpoint_t Mouse_INEndpoint; |
| 58 | #endif | ||
| 57 | 59 | ||
| 58 | // Console HID Interface | 60 | // Console HID Interface |
| 59 | USB_Descriptor_Interface_t Console_Interface; | 61 | USB_Descriptor_Interface_t Console_Interface; |
| @@ -62,20 +64,35 @@ typedef struct | |||
| 62 | USB_Descriptor_Endpoint_t Console_OUTEndpoint; | 64 | USB_Descriptor_Endpoint_t Console_OUTEndpoint; |
| 63 | 65 | ||
| 64 | // Extra HID Interface | 66 | // Extra HID Interface |
| 67 | #ifdef EXTRAKEY_ENABLE | ||
| 65 | USB_Descriptor_Interface_t Extra_Interface; | 68 | USB_Descriptor_Interface_t Extra_Interface; |
| 66 | USB_HID_Descriptor_HID_t Extra_HID; | 69 | USB_HID_Descriptor_HID_t Extra_HID; |
| 67 | USB_Descriptor_Endpoint_t Extra_INEndpoint; | 70 | USB_Descriptor_Endpoint_t Extra_INEndpoint; |
| 71 | #endif | ||
| 68 | } USB_Descriptor_Configuration_t; | 72 | } USB_Descriptor_Configuration_t; |
| 69 | 73 | ||
| 70 | 74 | ||
| 71 | /* nubmer of interfaces */ | ||
| 72 | #define TOTAL_INTERFACES 4 | ||
| 73 | |||
| 74 | /* index of interface */ | 75 | /* index of interface */ |
| 75 | #define KEYBOARD_INTERFACE 0 | 76 | #define KEYBOARD_INTERFACE 0 |
| 76 | #define MOUSE_INTERFACE 1 | 77 | |
| 77 | #define CONSOLE_INTERFACE 2 | 78 | #ifdef MOUSE_ENABLE |
| 78 | #define EXTRA_INTERFACE 3 | 79 | # define MOUSE_INTERFACE (KEYBOARD_INTERFACE + 1) |
| 80 | #else | ||
| 81 | # define MOUSE_INTERFACE KEYBOARD_INTERFACE | ||
| 82 | #endif | ||
| 83 | |||
| 84 | #ifdef EXTRAKEY_ENABLE | ||
| 85 | # define EXTRA_INTERFACE (MOUSE_INTERFACE + 1) | ||
| 86 | #else | ||
| 87 | # define EXTRA_INTERFACE MOUSE_INTERFACE | ||
| 88 | #endif | ||
| 89 | |||
| 90 | #define CONSOLE_INTERFACE (EXTRA_INTERFACE + 1) | ||
| 91 | |||
| 92 | |||
| 93 | /* nubmer of interfaces */ | ||
| 94 | #define TOTAL_INTERFACES (CONSOLE_INTERFACE + 1) | ||
| 95 | |||
| 79 | 96 | ||
| 80 | // Endopoint number and size | 97 | // Endopoint number and size |
| 81 | #define KEYBOARD_IN_EPNUM 1 | 98 | #define KEYBOARD_IN_EPNUM 1 |
diff --git a/protocol/lufa/lufa.c b/protocol/lufa/lufa.c index 09da96b2e..f485e24bf 100644 --- a/protocol/lufa/lufa.c +++ b/protocol/lufa/lufa.c | |||
| @@ -50,7 +50,9 @@ static uint8_t keyboard_led_stats = 0; | |||
| 50 | 50 | ||
| 51 | // TODO: impl Control Request GET_REPORT | 51 | // TODO: impl Control Request GET_REPORT |
| 52 | static report_keyboard_t keyboard_report_sent; | 52 | static report_keyboard_t keyboard_report_sent; |
| 53 | #ifdef MOUSE_ENABLE | ||
| 53 | static report_mouse_t mouse_report_sent; | 54 | static report_mouse_t mouse_report_sent; |
| 55 | #endif | ||
| 54 | 56 | ||
| 55 | /* Host driver */ | 57 | /* Host driver */ |
| 56 | static uint8_t keyboard_leds(void); | 58 | static uint8_t keyboard_leds(void); |
| @@ -171,19 +173,23 @@ void EVENT_USB_Device_ConfigurationChanged(void) | |||
| 171 | ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, | 173 | ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, |
| 172 | KEYBOARD_EPSIZE, ENDPOINT_BANK_SINGLE); | 174 | KEYBOARD_EPSIZE, ENDPOINT_BANK_SINGLE); |
| 173 | 175 | ||
| 176 | #ifdef MOUSE_ENABLE | ||
| 174 | /* Setup Mouse HID Report Endpoint */ | 177 | /* Setup Mouse HID Report Endpoint */ |
| 175 | ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, | 178 | ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, |
| 176 | MOUSE_EPSIZE, ENDPOINT_BANK_SINGLE); | 179 | MOUSE_EPSIZE, ENDPOINT_BANK_SINGLE); |
| 180 | #endif | ||
| 181 | |||
| 182 | #ifdef EXTRAKEY_ENABLE | ||
| 183 | /* Setup Extra HID Report Endpoint */ | ||
| 184 | ConfigSuccess &= Endpoint_ConfigureEndpoint(EXTRA_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, | ||
| 185 | EXTRA_EPSIZE, ENDPOINT_BANK_SINGLE); | ||
| 186 | #endif | ||
| 177 | 187 | ||
| 178 | /* Setup Console HID Report Endpoints */ | 188 | /* Setup Console HID Report Endpoints */ |
| 179 | ConfigSuccess &= Endpoint_ConfigureEndpoint(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, | 189 | ConfigSuccess &= Endpoint_ConfigureEndpoint(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, |
| 180 | CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE); | 190 | CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE); |
| 181 | ConfigSuccess &= Endpoint_ConfigureEndpoint(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, | 191 | ConfigSuccess &= Endpoint_ConfigureEndpoint(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, |
| 182 | CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE); | 192 | CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE); |
| 183 | |||
| 184 | /* Setup Extra HID Report Endpoint */ | ||
| 185 | ConfigSuccess &= Endpoint_ConfigureEndpoint(EXTRA_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, | ||
| 186 | EXTRA_EPSIZE, ENDPOINT_BANK_SINGLE); | ||
| 187 | } | 193 | } |
| 188 | 194 | ||
| 189 | /* | 195 | /* |
| @@ -222,15 +228,19 @@ void EVENT_USB_Device_ControlRequest(void) | |||
| 222 | ReportData = (uint8_t*)&keyboard_report_sent; | 228 | ReportData = (uint8_t*)&keyboard_report_sent; |
| 223 | ReportSize = sizeof(keyboard_report_sent); | 229 | ReportSize = sizeof(keyboard_report_sent); |
| 224 | break; | 230 | break; |
| 231 | #ifdef MOUSE_ENABLE | ||
| 225 | case MOUSE_INTERFACE: | 232 | case MOUSE_INTERFACE: |
| 226 | // TODO: test/check | 233 | // TODO: test/check |
| 227 | ReportData = (uint8_t*)&mouse_report_sent; | 234 | ReportData = (uint8_t*)&mouse_report_sent; |
| 228 | ReportSize = sizeof(mouse_report_sent); | 235 | ReportSize = sizeof(mouse_report_sent); |
| 229 | break; | 236 | break; |
| 230 | case CONSOLE_INTERFACE: | 237 | #endif |
| 231 | break; | 238 | #ifdef EXTRAKEY_ENABLE |
| 232 | case EXTRA_INTERFACE: | 239 | case EXTRA_INTERFACE: |
| 233 | break; | 240 | break; |
| 241 | #endif | ||
| 242 | case CONSOLE_INTERFACE: | ||
| 243 | break; | ||
| 234 | } | 244 | } |
| 235 | 245 | ||
| 236 | /* Write the report data to the control endpoint */ | 246 | /* Write the report data to the control endpoint */ |
| @@ -258,12 +268,16 @@ void EVENT_USB_Device_ControlRequest(void) | |||
| 258 | /* Read in the LED report from the host */ | 268 | /* Read in the LED report from the host */ |
| 259 | keyboard_led_stats = Endpoint_Read_8(); | 269 | keyboard_led_stats = Endpoint_Read_8(); |
| 260 | break; | 270 | break; |
| 271 | #ifdef MOUSE_ENABLE | ||
| 261 | case MOUSE_INTERFACE: | 272 | case MOUSE_INTERFACE: |
| 262 | break; | 273 | break; |
| 263 | case CONSOLE_INTERFACE: | 274 | #endif |
| 264 | break; | 275 | #ifdef EXTRAKEY_ENABLE |
| 265 | case EXTRA_INTERFACE: | 276 | case EXTRA_INTERFACE: |
| 266 | break; | 277 | break; |
| 278 | #endif | ||
| 279 | case CONSOLE_INTERFACE: | ||
| 280 | break; | ||
| 267 | } | 281 | } |
| 268 | 282 | ||
| 269 | Endpoint_ClearOUT(); | 283 | Endpoint_ClearOUT(); |
| @@ -302,6 +316,7 @@ static void send_keyboard(report_keyboard_t *report) | |||
| 302 | 316 | ||
| 303 | static void send_mouse(report_mouse_t *report) | 317 | static void send_mouse(report_mouse_t *report) |
| 304 | { | 318 | { |
| 319 | #ifdef MOUSE_ENABLE | ||
| 305 | /* Select the Mouse Report Endpoint */ | 320 | /* Select the Mouse Report Endpoint */ |
| 306 | Endpoint_SelectEndpoint(MOUSE_IN_EPNUM); | 321 | Endpoint_SelectEndpoint(MOUSE_IN_EPNUM); |
| 307 | 322 | ||
| @@ -315,6 +330,7 @@ static void send_mouse(report_mouse_t *report) | |||
| 315 | Endpoint_ClearIN(); | 330 | Endpoint_ClearIN(); |
| 316 | } | 331 | } |
| 317 | mouse_report_sent = *report; | 332 | mouse_report_sent = *report; |
| 333 | #endif | ||
| 318 | } | 334 | } |
| 319 | 335 | ||
| 320 | typedef struct { | 336 | typedef struct { |
