cancel
Showing results for 
Search instead for 
Did you mean: 

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

SP.6
Associate II

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.

2 REPLIES 2
Pavel A.
Evangelist III

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.6
Associate II

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.