aboutsummaryrefslogtreecommitdiff
path: root/protocol/lufa/descriptor.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocol/lufa/descriptor.c')
-rw-r--r--protocol/lufa/descriptor.c65
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
151const USB_Descriptor_HIDReport_Datatype_t PROGMEM ExtraReport[] = 152const 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
183const 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 }