]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Prep for mouse support
authorJacob Alexander <haata@kiibohd.com>
Mon, 21 Sep 2015 01:47:10 +0000 (18:47 -0700)
committerJacob Alexander <haata@kiibohd.com>
Mon, 21 Sep 2015 01:47:10 +0000 (18:47 -0700)
Output/pjrcUSB/arm/usb_desc.c
Output/pjrcUSB/arm/usb_desc.h
Output/pjrcUSB/arm/usb_dev.c

index 9616d459f295a4724ef1777234ca96b854896b81..7a8e49715e8f6e30ca5a264b872d84e5ce34a3b7 100644 (file)
@@ -267,7 +267,7 @@ static uint8_t nkro_keyboard_report_desc[] = {
 
 // System Control and Consumer Control
 static uint8_t sys_ctrl_report_desc[] = {
-       // System Control Collection
+       // System Control Collection (8 bits)
        //
        // NOTES:
        // 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),
        0xc0,                // End Collection - System Control
 
-       // Consumer Control Collection - Media Keys
+       // Consumer Control Collection - Media Keys (16 bits)
        //
        // NOTES:
        // 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
 static uint8_t mouse_report_desc[] = {
-       0x05, 0x01,                     // Usage Page (Generic Desktop)
-       0x09, 0x02,                     // Usage (Mouse)
-       0xA1, 0x01,                     // Collection (Application)
-       0x05, 0x09,                     //   Usage Page (Button)
-       0x19, 0x01,                     //   Usage Minimum (Button #1)
-       0x29, 0x03,                     //   Usage Maximum (Button #3)
-       0x15, 0x00,                     //   Logical Minimum (0)
-       0x25, 0x01,                     //   Logical Maximum (1)
-       0x95, 0x03,                     //   Report Count (3)
-       0x75, 0x01,                     //   Report Size (1)
-       0x81, 0x02,                     //   Input (Data, Variable, Absolute)
-       0x95, 0x01,                     //   Report Count (1)
-       0x75, 0x05,                     //   Report Size (5)
-       0x81, 0x03,                     //   Input (Constant)
-       0x05, 0x01,                     //   Usage Page (Generic Desktop)
-       0x09, 0x30,                     //   Usage (X)
-       0x09, 0x31,                     //   Usage (Y)
-       0x15, 0x00,                     //   Logical Minimum (0)
-       0x26, 0xFF, 0x7F,               //   Logical Maximum (32767)
-       0x75, 0x10,                     //   Report Size (16),
-       0x95, 0x02,                     //   Report Count (2),
-       0x81, 0x02,                     //   Input (Data, Variable, Absolute)
-       0x09, 0x38,                     //   Usage (Wheel)
-       0x15, 0x81,                     //   Logical Minimum (-127)
-       0x25, 0x7F,                     //   Logical Maximum (127)
-       0x75, 0x08,                     //   Report Size (8),
-       0x95, 0x01,                     //   Report Count (1),
-       0x81, 0x06,                     //   Input (Data, Variable, Relative)
-       0xC0                            // End Collection
+       0x05, 0x01,        // Usage Page (Generic Desktop)
+       0x09, 0x02,        // Usage (Mouse)
+       0xa1, 0x01,        // Collection (Application)
+       0x09, 0x02,        //   Usage (Mouse)
+       0xa1, 0x02,        //   Collection (Logical)
+       0x09, 0x01,        //     Usage (Pointer)
+
+       // Buttons (5 bits)
+       0xa1, 0x00,        //     Collection (Physical) - Buttons
+       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)
+       0x75, 0x01,        //       Report Size (1)
+       0x95, 0x05,        //       Report Count (5)
+       0x81, 0x02,        //       Input (Data,Var,Abs)
+
+       // Padding (3 bits)
+       0x75, 0x03,        //       Report Size (3)
+       0x95, 0x01,        //       Report Count (1)
+       0x81, 0x03,        //       Input (Cnst,Var,Abs)
+
+       // Pointer (16 bits)
+       0x05, 0x01,        //       Usage PAGE (Generic Desktop)
+       0x09, 0x30,        //       Usage (X)
+       0x09, 0x31,        //       Usage (Y)
+       0x15, 0x81,        //       Logical Minimum (-127)
+       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
index 16d37daea1a25b6acbf9dd28d04b3d405cf34c9b..33c65898992992fef4b742f9a4765cd77b440774 100644 (file)
@@ -85,7 +85,7 @@
 #define MOUSE_INTERFACE         4 // Mouse
 #define MOUSE_ENDPOINT          6
 #define MOUSE_SIZE              8
-#define MOUSE_INTERVAL          2
+#define MOUSE_INTERVAL          1
 #define MOUSE_NAME              L"Mouse"
 
 #define JOYSTICK_INTERFACE      5 // Joystick
index 37541e488f6856c2a82c17bde0e41fac10024bde..1cc4f139a4954b3248d9d13e3b1fcbd168691c21 100644 (file)
@@ -1031,8 +1031,8 @@ restart:
                                                break;
                                        default:
                                                tx_state[ endpoint ] = ((uint32_t)b & 8)
-                                                 ? TX_STATE_ODD_FREE
-                                                 : TX_STATE_EVEN_FREE;
+                                                       ? TX_STATE_ODD_FREE
+                                                       : TX_STATE_EVEN_FREE;
                                                break;
                                        }
                                }