- USBKeys_LEDs = buf[0];
- endpoint0_transmit( NULL, 0 );
- }
- // NKRO Keyboard Interface
- if ( setup.word1 == 0x02000921 && setup.word2 == ( (1<<16) | NKRO_KEYBOARD_INTERFACE ) )
- {
- USBKeys_LEDs = buf[0];
- endpoint0_transmit( NULL, 0 );
+ // Interface
+ switch ( setup.wIndex & 0xFF )
+ {
+ // Keyboard Interface
+ case KEYBOARD_INTERFACE:
+ USBKeys_LEDs = buf[0];
+ endpoint0_transmit( NULL, 0 );
+ break;
+ // NKRO Keyboard Interface
+ case NKRO_KEYBOARD_INTERFACE:
+ // Only use 2nd byte, first byte is the report id
+ USBKeys_LEDs = buf[1];
+ endpoint0_transmit( NULL, 0 );
+ break;
+ default:
+ warn_msg("Unknown interface - ");
+ printHex( setup.wIndex );
+ print( NL );
+ break;
+ }
+
+ #ifdef UART_DEBUG
+ for ( size_t len = 0; len < setup.wLength; len++ )
+ {
+ printHex( buf[ len ] );
+ print(" ");
+ }
+ print( NL );
+ #endif