diff options
Diffstat (limited to 'protocol/lufa/descriptor.c')
| -rw-r--r-- | protocol/lufa/descriptor.c | 65 |
1 files changed, 57 insertions, 8 deletions
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 | } |
