ok, i have rdesc: 05 01 09 04 a1 01 09 01 a1 00 09 30 09 31 15 00 26 ff 07 75 0b 95 02 81 02 09 35 15 00 26 ff 03 75 0a 95 01 81 02 09 32 09 33 09 34 09 36 15 00 26 ff 00 75 08 95 04 81 02 05 09 19 01 29 22 15 00 25 01 95 22 75 01 81 02 75 02 95 01 81 01 05 01 09 39 15 01 25 08 35 00 46 3b 01 66 14 00 75 04 95 01 81 42 05 05 09 24 09 26 15 00 25 0f 75 04 95 02 81 02 c0 c0 INPUT[INPUT] Field(0) Physical(GenericDesktop.Pointer) Usage(2) GenericDesktop.X GenericDesktop.Y Logical Minimum(0) Logical Maximum(2047) Report Size(11) Report Count(2) Report Offset(0) Flags( Variable Absolute ) Field(1) Physical(GenericDesktop.Pointer) Usage(1) GenericDesktop.Rz Logical Minimum(0) Logical Maximum(1023) Report Size(10) Report Count(1) Report Offset(22) Flags( Variable Absolute ) Field(2) Physical(GenericDesktop.Pointer) Usage(4) GenericDesktop.Z GenericDesktop.Rx GenericDesktop.Ry GenericDesktop.Slider Logical Minimum(0) Logical Maximum(255) Report Size(8) Report Count(4) Report Offset(32) Flags( Variable Absolute ) Field(3) Physical(GenericDesktop.Pointer) Usage(34) 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 Button.0011 Button.0012 Button.0013 Button.0014 Button.0015 Button.0016 Button.0017 Button.0018 Button.0019 Button.001a Button.001b Button.001c Button.001d Button.001e Button.001f Button.0020 Button.0021 Button.0022 Logical Minimum(0) Logical Maximum(1) Report Size(1) Report Count(34) Report Offset(64) Flags( Variable Absolute ) Field(4) Physical(GenericDesktop.Pointer) Usage(1) GenericDesktop.HatSwitch Logical Minimum(1) Logical Maximum(8) Physical Minimum(0) Physical Maximum(315) Unit(English Rotation : Degrees) Report Size(4) Report Count(1) Report Offset(100) Flags( Variable Absolute NullState ) Field(5) Physical(GenericDesktop.Pointer) Usage(2) 0005.0024 0005.0026 Logical Minimum(0) Logical Maximum(15) Physical Minimum(0) Physical Maximum(315) Unit(English Rotation : Degrees) Report Size(4) Report Count(2) Report Offset(104) Flags( Variable Absolute ) GenericDesktop.X ---> Absolute.X GenericDesktop.Y ---> Absolute.Y GenericDesktop.Rz ---> Absolute.Rz GenericDesktop.Z ---> Absolute.Z GenericDesktop.Rx ---> Absolute.Rx GenericDesktop.Ry ---> Absolute.Ry GenericDesktop.Slider ---> Absolute.Throttle Button.0001 ---> Key.Trigger Button.0002 ---> Key.ThumbBtn Button.0003 ---> Key.ThumbBtn2 Button.0004 ---> Key.TopBtn Button.0005 ---> Key.TopBtn2 Button.0006 ---> Key.PinkieBtn Button.0007 ---> Key.BaseBtn Button.0008 ---> Key.BaseBtn2 Button.0009 ---> Key.BaseBtn3 Button.000a ---> Key.BaseBtn4 Button.000b ---> Key.BaseBtn5 Button.000c ---> Key.BaseBtn6 Button.000d ---> Key.? Button.000e ---> Key.? Button.000f ---> Key.? Button.0010 ---> Key.BtnDead Button.0011 ---> Key.BtnA Button.0012 ---> Key.BtnB Button.0013 ---> Key.BtnC Button.0014 ---> Key.BtnX Button.0015 ---> Key.BtnY Button.0016 ---> Key.BtnZ Button.0017 ---> Key.BtnTL Button.0018 ---> Key.BtnTR Button.0019 ---> Key.BtnTL2 Button.001a ---> Key.BtnTR2 Button.001b ---> Key.BtnSelect Button.001c ---> Key.BtnStart Button.001d ---> Key.BtnMode Button.001e ---> Key.BtnThumbL Button.001f ---> Key.BtnThumbR Button.0020 ---> Key.? Button.0021 ---> Key.ToolPen Button.0022 ---> Key.ToolRubber GenericDesktop.HatSwitch ---> Absolute.Hat0X 0005.0024 ---> Absolute.Misc 0005.0026 ---> Absolute.?