[Ouya Q&A, Help & Troubleshooting] ja450n:
Here's the HID descriptor of the OUYA controller...

05 01 09 02 a1 01 85 06 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 75 01 95 03 81 02 75 05 95 01 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 09 38 15 81 25 7f 75 08 95 01 81 06 c0 c0 05 01 09 05 a1 01 85 07 a1 00 09 30 09 31 15 00 26 ff ff 35 00 46 ff ff 95 02 75 10 81 02 c0 a1 00 09 33 09 34 15 00 26 ff ff 35 00 46 ff ff 95 02 75 10 81 02 c0 a1 00 09 32 15 00 26 ff ff 35 00 46 ff ff 95 01 75 10 81 02 c0 a1 00 09 35 15 00 26 ff ff 35 00 46 ff ff 95 01 75 10 81 02 c0 05 09 19 01 29 10 95 10 75 01 81 02 06 00 ff a1 02 75 08 95 07 46 ff 00 26 ff 00 09 01 91 02 c0 c0 05 0c 09 01 a1 01 85 03 05 01 09 06 a1 02 05 06 09 20 15 00 26 ff 00 75 08 95 01 81 02 06 bc ff 0a ad bd 75 08 95 06 81 02 c0 c0 05 0c 09 01 a1 01 85 ff 05 06 95 01 75 02 19 24 29 26 81 02 75 06 81 01 c0 00

INPUT(6)[INPUT]
Field(0)
Physical(GenericDesktop.Pointer)
Usage(3)
Button.0001
Button.0002
Button.0003
Logical Minimum(0)
Logical Maximum(1)
Report Size(1)
Report Count(3)
Report Offset(0)
Flags( Variable Absolute )
Field(1)
Physical(GenericDesktop.Pointer)
Usage(2)
GenericDesktop.X
GenericDesktop.Y
Logical Minimum(-127)
Logical Maximum(127)
Report Size(8)
Report Count(2)
Report Offset(8)
Flags( Variable Relative )
Field(2)
Physical(GenericDesktop.Pointer)
Usage(1)
GenericDesktop.Wheel
Logical Minimum(-127)
Logical Maximum(127)
Report Size(8)
Report Count(1)
Report Offset(24)
Flags( Variable Relative )
INPUT(7)[INPUT]
Field(0)
Usage(2)
GenericDesktop.X
GenericDesktop.Y
Logical Minimum(0)
Logical Maximum(65535)
Physical Minimum(0)
Physical Maximum(65535)
Report Size(16)
Report Count(2)
Report Offset(0)
Flags( Variable Absolute )
Field(1)
Usage(2)
GenericDesktop.Rx
GenericDesktop.Ry
Logical Minimum(0)
Logical Maximum(65535)
Physical Minimum(0)
Physical Maximum(65535)
Report Size(16)
Report Count(2)
Report Offset(32)
Flags( Variable Absolute )
Field(2)
Usage(1)
GenericDesktop.Z
Logical Minimum(0)
Logical Maximum(65535)
Physical Minimum(0)
Physical Maximum(65535)
Report Size(16)
Report Count(1)
Report Offset(64)
Flags( Variable Absolute )
Field(3)
Usage(1)
GenericDesktop.Rz
Logical Minimum(0)
Logical Maximum(65535)
Physical Minimum(0)
Physical Maximum(65535)
Report Size(16)
Report Count(1)
Report Offset(80)
Flags( Variable Absolute )
Field(4)
Usage(16)
Button.0001
Button.0002
Button.0003
Button.0004
Button.0005
Button.0006
Button.0007
Button.0008
Button.0009
Button.000a
Button.000b
Button.000c
Button.000d
Button.000e
Button.000f
Button.0010
Logical Minimum(0)
Logical Maximum(65535)
Physical Minimum(0)
Physical Maximum(65535)
Report Size(1)
Report Count(16)
Report Offset(96)
Flags( Variable Absolute )
INPUT(3)[INPUT]
Field(0)
Logical(GenericDesktop.Keyboard)
Usage(1)
0006.0020
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(255)
Report Size(8)
Report Count(1)
Report Offset(0)
Flags( Variable Absolute )
Field(1)
Logical(GenericDesktop.Keyboard)
Usage(6)
ffbc.bdad
ffbc.bdad
ffbc.bdad
ffbc.bdad
ffbc.bdad
ffbc.bdad
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(255)
Report Size(8)
Report Count(6)
Report Offset(8)
Flags( Variable Absolute )
INPUT(255)[INPUT]
Field(0)
Usage(3)
0006.0024
0006.0025
0006.0026
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(255)
Report Size(2)
Report Count(1)
Report Offset(0)
Flags( Variable Absolute )
OUTPUT(7)[OUTPUT]
Field(0)
Usage(7)
ff00.0001
ff00.0001
ff00.0001
ff00.0001
ff00.0001
ff00.0001
ff00.0001
Logical Minimum(0)
Logical Maximum(255)
Physical Minimum(0)
Physical Maximum(255)
Report Size(8)
Report Count(7)
Report Offset(0)
Flags( Variable Absolute )

Button.0001 ---> Key.LeftBtn
Button.0002 ---> Key.RightBtn
Button.0003 ---> Key.MiddleBtn
GenericDesktop.X ---> Relative.X
GenericDesktop.Y ---> Relative.Y
GenericDesktop.Wheel ---> Relative.Wheel
GenericDesktop.X ---> Absolute.X
GenericDesktop.Y ---> Absolute.Y
GenericDesktop.Rx ---> Absolute.Rx
GenericDesktop.Ry ---> Absolute.Ry
GenericDesktop.Z ---> Absolute.Z
GenericDesktop.Rz ---> Absolute.Rz
Button.0001 ---> Key.BtnA
Button.0002 ---> Key.BtnB
Button.0003 ---> Key.BtnC
Button.0004 ---> Key.BtnX
Button.0005 ---> Key.BtnY
Button.0006 ---> Key.BtnZ
Button.0007 ---> Key.BtnTL
Button.0008 ---> Key.BtnTR
Button.0009 ---> Key.BtnTL2
Button.000a ---> Key.BtnTR2
Button.000b ---> Key.BtnSelect
Button.000c ---> Key.BtnStart
Button.000d ---> Key.BtnMode
Button.000e ---> Key.BtnThumbL
Button.000f ---> Key.BtnThumbR
Button.0010 ---> Key.?
0006.0020 ---> Absolute.Misc
ffbc.bdad ---> Sync.Report
ffbc.bdad ---> Sync.Report
ffbc.bdad ---> Sync.Report
ffbc.bdad ---> Sync.Report
ffbc.bdad ---> Sync.Report
ffbc.bdad ---> Sync.Report
0006.0024 ---> Absolute.?
0006.0025 ---> Absolute.?
0006.0026 ---> Absolute.?
ff00.0001 ---> Sync.Report
ff00.0001 ---> Sync.Report
ff00.0001 ---> Sync.Report
ff00.0001 ---> Sync.Report
ff00.0001 ---> Sync.Report
ff00.0001 ---> Sync.Report
ff00.0001 ---> Sync.Report