Skip to main content
Visitor II
March 4, 2021
Question

Can I modify the standard HID library to add more buttons in a mouse?

  • March 4, 2021
  • 2 replies
  • 877 views

Hello,

I'm trying to add 5 more buttons in a mouse, to do this, with the Device configuration tool I have enabled the usb as HID (no Custom HID).

To add the buttons i changed the HID_MOUSE_ReportDesc:

0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
		0x09, 0x02, // Usage (Mouse)
		0xA1, 0x01, // Collection (Application)
		0x09, 0x01, // Usage (Pointer)
		0xA1, 0x00, // Collection (Physical)
		0x05, 0x09, // Usage Page (Button)
		0x19, 0x01, // Usage Minimum (0x01)
		0x29, 0x08, // Usage Maximum (0x03)
		0x15, 0x00, // Logical Minimum (0)
		0x25, 0x01, // Logical Maximum (1)
		0x95, 0x08, // Report Count (3)
		0x75, 0x01, // Report Size (1)
		0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
//		0x95, 0x01, // Report Count (1)
//		0x75, 0x05, // Report Size (5)
//		0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
		0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
		0x09, 0x30, // Usage (X)
		0x09, 0x31, // Usage (Y)
		0x09, 0x38, // Usage (Wheel)
		0x15, 0x81, // Logical Minimum (-127)
		0x25, 0x7F, // Logical Maximum (127)
		0x75, 0x08, // Report Size (8)
		0x95, 0x03, // Report Count (3)
		0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
		0xC0, // End Collection
		0x09, 0x3C, // Usage (Motion Wakeup)
		0x05, 0xFF, // Usage Page (Reserved 0xFF)
		0x09, 0x01, // Usage (0x01)
		0x15, 0x00, // Logical Minimum (0)
		0x25, 0x01, // Logical Maximum (1)
		0x75, 0x01, // Report Size (1)
		0x95, 0x02, // Report Count (2)
		0xB1, 0x22, // Feature (Data,Var,Abs,No Wrap,Linear,No Preferred State,No Null Position,Non-volatile)
		0x75, 0x06, // Report Size (6)
		0x95, 0x01, // Report Count (1)
		0xB1, 0x01, // Feature (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
		0xC0, // End Collection

This doesn't work, and I don't understand why, Can use the 5 empty bytes as a button?

If I add these 5 buttons, windows drivers will recognize this buttons?

If I wanted to add more than 5 buttons, how how should i proceed? It wold be necessary to develop a driver for windows?

Thanks in advance.

    This topic has been closed for replies.

    2 replies

    Super User
    March 4, 2021

    Even if you add extra buttons, the standard Windows mouse driver does not know what to do with them.

    Microsoft and other manufacturers have custom drivers for their custom mice.

    So, regarding Windows, you can either ask on the Microsoft's forum

    or Deskthorithy.

    A "fail-safe" option is to make your custom buttons a separate HID collection that can be accessed by a custom application.

    -- pa

    SP.6Author
    Visitor II
    March 5, 2021

    Hello

    Thanks for the answer, this means, that if i change the hid report, this didn't work if i don't have a custom driver?

    A solution will be add this extra buttons as a keyboard instead of mouse buttons?

    Thanks.