Joystick device driver: Cannot configure more than 1 POV Hat control

According to DirectInput docs ( ), a joystick might contain up to four POV Hat controls.

I’ve been experimenting with my HID Report Descriptor and failed to define more that one such control.

Here is a snippet that successfully defines one POV Hat control:


0x05, 0x01, // USAGE_PAGE (Generic Desktop)

0x15, 0x00, // LOGICAL_MINIMUM (0)

0x09, 0x04, // USAGE (Joystick)

0xa1, 0x01, // COLLECTION (Application)

0x05, 0x01, // USAGE_PAGE (Generic Desktop)

0x09, 0x01, // USAGE (Pointer)

0xa1, 0x00, // COLLECTION (Physical)

0x09, 0x39, // USAGE (Hat switch)

0x15, 0x00, // LOGICAL_MINIMUM (0)

0x25, 0x03, // LOGICAL_MAXIMUM (3)

0x75, 0x04, // REPORT_SIZE (4)

0x95, 0x01, // REPORT_COUNT (1)

0x65, 0x14, // UNIT (Eng Rot:Angular Pos)

0x81, 0x42, // INPUT (Data,Var,Abs,Null)

0x95, 0x03, // REPORT_COUNT (3)

0x81, 0x41, // INPUT (Cnst,Ary,Abs,Null)




Changing REPORT_COUNT (1) to REPORT_COUNT (2) and REPORT_COUNT (3) to REPORT_COUNT (2) does not add a new POV Control.
Any idea?

And also
According to the DirectInput, structure DIJOYSTATE2 ( may hold up to 32 axis data from the joystick. This include 6 acceleration related axes (Ax … ARz) , Velocity axes (Vx … VRz).

I see no corresponding USAGE entry for them in the HID Usage Table. Any idea?