Archived
1
0

Prep for mouse support

This commit is contained in:
Jacob Alexander 2015-09-20 18:47:10 -07:00
parent df7d0be00d
commit 3f83274f86
3 changed files with 83 additions and 34 deletions

View File

@ -267,7 +267,7 @@ static uint8_t nkro_keyboard_report_desc[] = {
// System Control and Consumer Control // System Control and Consumer Control
static uint8_t sys_ctrl_report_desc[] = { static uint8_t sys_ctrl_report_desc[] = {
// System Control Collection // System Control Collection (8 bits)
// //
// NOTES: // NOTES:
// Not bothering with NKRO for this table. If there's need, I can implement it. -HaaTa // Not bothering with NKRO for this table. If there's need, I can implement it. -HaaTa
@ -285,7 +285,7 @@ static uint8_t sys_ctrl_report_desc[] = {
0x81, 0x00, // Input (Data, Array), 0x81, 0x00, // Input (Data, Array),
0xc0, // End Collection - System Control 0xc0, // End Collection - System Control
// Consumer Control Collection - Media Keys // Consumer Control Collection - Media Keys (16 bits)
// //
// NOTES: // NOTES:
// Not bothering with NKRO for this table. If there's a need, I can implement it. -HaaTa // Not bothering with NKRO for this table. If there's a need, I can implement it. -HaaTa
@ -307,35 +307,84 @@ static uint8_t sys_ctrl_report_desc[] = {
// Mouse Protocol 1, HID 1.11 spec, Appendix B, page 59-60, with wheel extension // Mouse Protocol 1, HID 1.11 spec, Appendix B, page 59-60, with wheel extension
static uint8_t mouse_report_desc[] = { static uint8_t mouse_report_desc[] = {
0x05, 0x01, // Usage Page (Generic Desktop) 0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x02, // Usage (Mouse) 0x09, 0x02, // Usage (Mouse)
0xA1, 0x01, // Collection (Application) 0xa1, 0x01, // Collection (Application)
0x05, 0x09, // Usage Page (Button) 0x09, 0x02, // Usage (Mouse)
0x19, 0x01, // Usage Minimum (Button #1) 0xa1, 0x02, // Collection (Logical)
0x29, 0x03, // Usage Maximum (Button #3) 0x09, 0x01, // Usage (Pointer)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1) // Buttons (5 bits)
0x95, 0x03, // Report Count (3) 0xa1, 0x00, // Collection (Physical) - Buttons
0x75, 0x01, // Report Size (1) 0x05, 0x09, // Usage Page (Button)
0x81, 0x02, // Input (Data, Variable, Absolute) 0x19, 0x01, // Usage Minimum (Button 1)
0x95, 0x01, // Report Count (1) 0x29, 0x05, // Usage Maximum (Button 5)
0x75, 0x05, // Report Size (5) 0x15, 0x00, // Logical Minimum (0)
0x81, 0x03, // Input (Constant) 0x25, 0x01, // Logical Maximum (1)
0x05, 0x01, // Usage Page (Generic Desktop) 0x75, 0x01, // Report Size (1)
0x09, 0x30, // Usage (X) 0x95, 0x05, // Report Count (5)
0x09, 0x31, // Usage (Y) 0x81, 0x02, // Input (Data,Var,Abs)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x7F, // Logical Maximum (32767) // Padding (3 bits)
0x75, 0x10, // Report Size (16), 0x75, 0x03, // Report Size (3)
0x95, 0x02, // Report Count (2), 0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data, Variable, Absolute) 0x81, 0x03, // Input (Cnst,Var,Abs)
0x09, 0x38, // Usage (Wheel)
0x15, 0x81, // Logical Minimum (-127) // Pointer (16 bits)
0x25, 0x7F, // Logical Maximum (127) 0x05, 0x01, // Usage PAGE (Generic Desktop)
0x75, 0x08, // Report Size (8), 0x09, 0x30, // Usage (X)
0x95, 0x01, // Report Count (1), 0x09, 0x31, // Usage (Y)
0x81, 0x06, // Input (Data, Variable, Relative) 0x15, 0x81, // Logical Minimum (-127)
0xC0 // End Collection 0x25, 0x7f, // Logical Maximum (127)
0x75, 0x08, // Report Size (8)
0x95, 0x02, // Report Count (2)
0x81, 0x06, // Input (Data,Var,Rel)
// Vertical Wheel
// - Multiplier (2 bits)
0xa1, 0x02, // Collection (Logical)
0x09, 0x48, // Usage (Resolution Multiplier)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x35, 0x01, // Physical Minimum (1)
0x45, 0x04, // Physical Maximum (4)
0x75, 0x02, // Report Size (2)
0x95, 0x01, // Report Count (1)
0xa4, // Push
0xb1, 0x02, // Feature (Data,Var,Abs)
// - Device (8 bits)
0x09, 0x38, // Usage (Wheel)
0x15, 0x81, // Logical Minimum (-127)
0x25, 0x7f, // Logical Maximum (127)
0x35, 0x00, // Physical Minimum (0) - reset physical
0x45, 0x00, // Physical Maximum (0)
0x75, 0x08, // Report Size (8)
0x81, 0x06, // Input (Data,Var,Rel)
0xc0, // End Collection - Vertical Wheel
// Horizontal Wheel
// - Multiplier (2 bits)
0xa1, 0x02, // Collection (Logical)
0x09, 0x48, // Usage (Resolution Multiplier)
0xb4, // Pop
0xb1, 0x02, // Feature (Data,Var,Abs)
// - Padding (4 bits)
0x35, 0x00, // Physical Minimum (0) - reset physical
0x45, 0x00, // Physical Maximum (0)
0x75, 0x04, // Report Size (4)
0xb1, 0x03, // Feature (Cnst,Var,Abs)
// - Device (8 bits)
0x05, 0x0c, // Usage Page (Consumer Devices)
0x0a, 0x38, 0x02, // Usage (AC Pan)
0x15, 0x81, // Logical Minimum (-127)
0x25, 0x7f, // Logical Maximum (127)
0x75, 0x08, // Report Size (8)
0x81, 0x06, // Input (Data,Var,Rel)
0xc0, // End Collection - Horizontal Wheel
0xc0, // End Collection - Buttons
0xc0, // End Collection - Mouse Logical
0xc0 // End Collection - Mouse Application
}; };
// Joystick Protocol, HID 1.11 spec, Apendix D, page 64-65 // Joystick Protocol, HID 1.11 spec, Apendix D, page 64-65

View File

@ -85,7 +85,7 @@
#define MOUSE_INTERFACE 4 // Mouse #define MOUSE_INTERFACE 4 // Mouse
#define MOUSE_ENDPOINT 6 #define MOUSE_ENDPOINT 6
#define MOUSE_SIZE 8 #define MOUSE_SIZE 8
#define MOUSE_INTERVAL 2 #define MOUSE_INTERVAL 1
#define MOUSE_NAME L"Mouse" #define MOUSE_NAME L"Mouse"
#define JOYSTICK_INTERFACE 5 // Joystick #define JOYSTICK_INTERFACE 5 // Joystick

View File

@ -1031,8 +1031,8 @@ restart:
break; break;
default: default:
tx_state[ endpoint ] = ((uint32_t)b & 8) tx_state[ endpoint ] = ((uint32_t)b & 8)
? TX_STATE_ODD_FREE ? TX_STATE_ODD_FREE
: TX_STATE_EVEN_FREE; : TX_STATE_EVEN_FREE;
break; break;
} }
} }