|
|
@ -211,22 +211,22 @@ uchar usbFunctionWrite(uchar *data, uchar len) { |
|
|
|
*------------------------------------------------------------------*/ |
|
|
|
|
|
|
|
const PROGMEM uchar keyboard_hid_report[] = { |
|
|
|
0x05, 0x01, // Usage Page (Generic Desktop) |
|
|
|
0x09, 0x06, // Usage (Keyboard) |
|
|
|
0xA1, 0x01, // Collection (Application) |
|
|
|
0x05, 0x01, // Usage Page (Generic Desktop) |
|
|
|
0x09, 0x06, // Usage (Keyboard) |
|
|
|
0xA1, 0x01, // Collection (Application) |
|
|
|
// Modifiers (8 bits) |
|
|
|
0x05, 0x07, // Usage Page (Keyboard/Keypad) |
|
|
|
0x19, 0xE0, // Usage Minimum (Keyboard Left Control) |
|
|
|
0x29, 0xE7, // Usage Maximum (Keyboard Right GUI) |
|
|
|
0x15, 0x00, // Logical Minimum (0) |
|
|
|
0x25, 0x01, // Logical Maximum (1) |
|
|
|
0x95, 0x08, // Report Count (8) |
|
|
|
0x75, 0x01, // Report Size (1) |
|
|
|
0x81, 0x02, // Input (Data, Variable, Absolute) |
|
|
|
0x05, 0x07, // Usage Page (Keyboard/Keypad) |
|
|
|
0x19, 0xE0, // Usage Minimum (Keyboard Left Control) |
|
|
|
0x29, 0xE7, // Usage Maximum (Keyboard Right GUI) |
|
|
|
0x15, 0x00, // Logical Minimum (0) |
|
|
|
0x25, 0x01, // Logical Maximum (1) |
|
|
|
0x95, 0x08, // Report Count (8) |
|
|
|
0x75, 0x01, // Report Size (1) |
|
|
|
0x81, 0x02, // Input (Data, Variable, Absolute) |
|
|
|
// Reserved (1 byte) |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x08, // Report Size (8) |
|
|
|
0x81, 0x03, // Input (Constant) |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x08, // Report Size (8) |
|
|
|
0x81, 0x03, // Input (Constant) |
|
|
|
// Keycodes (6 bytes) |
|
|
|
0x05, 0x07, // Usage Page (Keyboard/Keypad) |
|
|
|
0x19, 0x00, // Usage Minimum (0) |
|
|
@ -238,17 +238,17 @@ const PROGMEM uchar keyboard_hid_report[] = { |
|
|
|
0x81, 0x00, // Input (Data, Array, Absolute) |
|
|
|
|
|
|
|
// Status LEDs (5 bits) |
|
|
|
0x05, 0x08, // Usage Page (LED) |
|
|
|
0x19, 0x01, // Usage Minimum (Num Lock) |
|
|
|
0x29, 0x05, // Usage Maximum (Kana) |
|
|
|
0x95, 0x05, // Report Count (5) |
|
|
|
0x75, 0x01, // Report Size (1) |
|
|
|
0x91, 0x02, // Output (Data, Variable, Absolute) |
|
|
|
0x05, 0x08, // Usage Page (LED) |
|
|
|
0x19, 0x01, // Usage Minimum (Num Lock) |
|
|
|
0x29, 0x05, // Usage Maximum (Kana) |
|
|
|
0x95, 0x05, // Report Count (5) |
|
|
|
0x75, 0x01, // Report Size (1) |
|
|
|
0x91, 0x02, // Output (Data, Variable, Absolute) |
|
|
|
// LED padding (3 bits) |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x03, // Report Size (3) |
|
|
|
0x91, 0x03, // Output (Constant) |
|
|
|
0xC0 // End Collection |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x03, // Report Size (3) |
|
|
|
0x91, 0x03, // Output (Constant) |
|
|
|
0xC0 // End Collection |
|
|
|
}; |
|
|
|
|
|
|
|
const PROGMEM uchar mouse_hid_report[] = { |
|
|
@ -260,46 +260,46 @@ const PROGMEM uchar mouse_hid_report[] = { |
|
|
|
0x09, 0x01, // Usage (Pointer) |
|
|
|
0xA1, 0x00, // Collection (Physical) |
|
|
|
// Buttons (5 bits) |
|
|
|
0x05, 0x09, // Usage Page (Button) |
|
|
|
0x19, 0x01, // Usage Minimum (Button 1) |
|
|
|
0x29, 0x05, // Usage Maximum (Button 5) |
|
|
|
0x15, 0x00, // Logical Minimum (0) |
|
|
|
0x25, 0x01, // Logical Maximum (1) |
|
|
|
0x95, 0x05, // Report Count (5) |
|
|
|
0x75, 0x01, // Report Size (1) |
|
|
|
0x81, 0x02, // Input (Data, Variable, Absolute) |
|
|
|
0x05, 0x09, // Usage Page (Button) |
|
|
|
0x19, 0x01, // Usage Minimum (Button 1) |
|
|
|
0x29, 0x05, // Usage Maximum (Button 5) |
|
|
|
0x15, 0x00, // Logical Minimum (0) |
|
|
|
0x25, 0x01, // Logical Maximum (1) |
|
|
|
0x95, 0x05, // Report Count (5) |
|
|
|
0x75, 0x01, // Report Size (1) |
|
|
|
0x81, 0x02, // Input (Data, Variable, Absolute) |
|
|
|
// Button padding (3 bits) |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x03, // Report Size (3) |
|
|
|
0x81, 0x03, // Input (Constant) |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x03, // Report Size (3) |
|
|
|
0x81, 0x03, // Input (Constant) |
|
|
|
|
|
|
|
// X/Y position (2 bytes) |
|
|
|
0x05, 0x01, // Usage Page (Generic Desktop) |
|
|
|
0x09, 0x30, // Usage (X) |
|
|
|
0x09, 0x31, // Usage (Y) |
|
|
|
0x15, 0x81, // Logical Minimum (-127) |
|
|
|
0x25, 0x7F, // Logical Maximum (127) |
|
|
|
0x95, 0x02, // Report Count (2) |
|
|
|
0x75, 0x08, // Report Size (8) |
|
|
|
0x81, 0x06, // Input (Data, Variable, Relative) |
|
|
|
0x05, 0x01, // Usage Page (Generic Desktop) |
|
|
|
0x09, 0x30, // Usage (X) |
|
|
|
0x09, 0x31, // Usage (Y) |
|
|
|
0x15, 0x81, // Logical Minimum (-127) |
|
|
|
0x25, 0x7F, // Logical Maximum (127) |
|
|
|
0x95, 0x02, // Report Count (2) |
|
|
|
0x75, 0x08, // Report Size (8) |
|
|
|
0x81, 0x06, // Input (Data, Variable, Relative) |
|
|
|
|
|
|
|
// Vertical wheel (1 byte) |
|
|
|
0x09, 0x38, // Usage (Wheel) |
|
|
|
0x15, 0x81, // Logical Minimum (-127) |
|
|
|
0x25, 0x7F, // Logical Maximum (127) |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x08, // Report Size (8) |
|
|
|
0x81, 0x06, // Input (Data, Variable, Relative) |
|
|
|
0x09, 0x38, // Usage (Wheel) |
|
|
|
0x15, 0x81, // Logical Minimum (-127) |
|
|
|
0x25, 0x7F, // Logical Maximum (127) |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x08, // Report Size (8) |
|
|
|
0x81, 0x06, // Input (Data, Variable, Relative) |
|
|
|
// Horizontal wheel (1 byte) |
|
|
|
0x05, 0x0C, // Usage Page (Consumer) |
|
|
|
0x0A, 0x38, 0x02, // Usage (AC Pan) |
|
|
|
0x15, 0x81, // Logical Minimum (-127) |
|
|
|
0x25, 0x7F, // Logical Maximum (127) |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x08, // Report Size (8) |
|
|
|
0x81, 0x06, // Input (Data, Variable, Relative) |
|
|
|
0xC0, // End Collection |
|
|
|
0xC0, // End Collection |
|
|
|
0x05, 0x0C, // Usage Page (Consumer) |
|
|
|
0x0A, 0x38, 0x02, // Usage (AC Pan) |
|
|
|
0x15, 0x81, // Logical Minimum (-127) |
|
|
|
0x25, 0x7F, // Logical Maximum (127) |
|
|
|
0x95, 0x01, // Report Count (1) |
|
|
|
0x75, 0x08, // Report Size (8) |
|
|
|
0x81, 0x06, // Input (Data, Variable, Relative) |
|
|
|
0xC0, // End Collection |
|
|
|
0xC0, // End Collection |
|
|
|
|
|
|
|
#ifdef EXTRAKEY_ENABLE |
|
|
|
// Extrakeys report descriptor |
|
|
|