forked from sensestage/hidapi
-
Notifications
You must be signed in to change notification settings - Fork 15
Gamepad Creative Cobra 2 USB
Rainer Schütz edited this page May 22, 2016
·
1 revision
006:006:000:DESCRIPTOR 1463693682.284590
05 01 09 05 A1 01 09 30 09 31 15 00 26 FF 00 75
08 95 02 81 02 05 09 19 01 29 0C 15 00 25 01 75
01 95 0C 81 02 75 01 95 04 81 01 05 01 09 36 15
00 25 1F 75 08 95 01 81 02 C0
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x05, // Usage (Game Pad)
0xA1, 0x01, // Collection (Application)
0x09, 0x30, // Usage (X)
0x09, 0x31, // Usage (Y)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x75, 0x08, // Report Size (8)
0x95, 0x02, // Report Count (2)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x09, // Usage Page (Button)
0x19, 0x01, // Usage Minimum (0x01)
0x29, 0x0C, // Usage Maximum (0x0C)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x01, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x0C, // Report Count (12)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x01, // Report Size (1)
0x95, 0x04, // Report Count (4)
0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01, // Usage Page (Generic Desktop Ctrls)
0x09, 0x36, // Usage (Slider)
0x15, 0x00, // Logical Minimum (0)
0x25, 0x1F, // Logical Maximum (31)
0x75, 0x08, // Report Size (8)
0x95, 0x01, // Report Count (1)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0, // End Collection
HID Collection: 0, type: 1, usage page: 1, usage index: 5
Description: GenericDesktop, undefined
Parent collection: -1, number of collections contained: 0, first collection: -1
number of elements contained: 15, first element 0
HID Element: 0, type: 1, 2, usage page: 9, usage index: 1
Description: Button, b1, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 1, type: 1, 2, usage page: 9, usage index: 2
Description: Button, b2, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 2, type: 1, 2, usage page: 9, usage index: 3
Description: Button, b3, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 3, type: 1, 2, usage page: 9, usage index: 4
Description: Button, b4, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 4, type: 1, 2, usage page: 9, usage index: 5
Description: Button, b5, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 5, type: 1, 2, usage page: 9, usage index: 6
Description: Button, b6, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 6, type: 1, 2, usage page: 9, usage index: 7
Description: Button, b7, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 7, type: 1, 2, usage page: 9, usage index: 8
Description: Button, b8, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 8, type: 1, 2, usage page: 9, usage index: 9
Description: Button, b9, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 9, type: 1, 2, usage page: 9, usage index: 10
Description: Button, b10, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 10, type: 1, 2, usage page: 9, usage index: 11
Description: Button, b11, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 11, type: 1, 2, usage page: 9, usage index: 12
Description: Button, b12, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
HID Element: 12, type: 1, 2, usage page: 1, usage index: 48
Description: GenericDesktop, undefined, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage: b1
HID Element: 0, type: 1, 2, usage page: 9, usage index: 1
Description: Button, b1, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b10
HID Element: 9, type: 1, 2, usage page: 9, usage index: 10
Description: Button, b10, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b11
HID Element: 10, type: 1, 2, usage page: 9, usage index: 11
Description: Button, b11, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b12
HID Element: 11, type: 1, 2, usage page: 9, usage index: 12
Description: Button, b12, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b2
HID Element: 1, type: 1, 2, usage page: 9, usage index: 2
Description: Button, b2, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b3
HID Element: 2, type: 1, 2, usage page: 9, usage index: 3
Description: Button, b3, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b4
HID Element: 3, type: 1, 2, usage page: 9, usage index: 4
Description: Button, b4, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b5
HID Element: 4, type: 1, 2, usage page: 9, usage index: 5
Description: Button, b5, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b6
HID Element: 5, type: 1, 2, usage page: 9, usage index: 6
Description: Button, b6, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b7
HID Element: 6, type: 1, 2, usage page: 9, usage index: 7
Description: Button, b7, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b8
HID Element: 7, type: 1, 2, usage page: 9, usage index: 8
Description: Button, b8, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: b9
HID Element: 8, type: 1, 2, usage page: 9, usage index: 9
Description: Button, b9, input,
[ Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField ]
Usage range: [ 0, 0 ]
Logical range: [ 0, 1 ]
Physical range: [ 0, 1 ], Unit: 0, Exponent: 0
Report ID: 0, size 1, index 1
Usage: undefined
Sketch on the way to a data mask (done on a Mac with SC 3.8dev Mai 2016):
HID.findAvailable
HID.open(1054, 4099)
HID: path was not set specified yet, chosen the one with path: USB_041e_1003_14200000
open device 0x7fac62560a80
start polling thread for 1649805952
HID: Opened device: a HIDInfo(, , IDs:1054, 4099, USB_041e_1003_14200000, , 272, -1)
-> a HID
HIDFunc.usage( { |...args| args.postln; }, nil)
-> HIDFunc.usage(nil, nil, nil, nil)
Cursor-cross/circle (left side):
left
press
[ 0, 0, 48, 1, 12, a HIDElement(12: type: 2, usage: 1, 48), 0, a HID, anyUsage ]
release
[ 0.50196081399918, 128, 48, 1, 12, a HIDElement(12: type: 2, usage: 1, 48), 0, a HID, anyUsage ]
top
press
[ 0, 0, 49, 1, 13, a HIDElement(13: type: 2, usage: 1, 49), 0, a HID, anyUsage ]
release
[ 0.50196081399918, 128, 49, 1, 13, a HIDElement(13: type: 2, usage: 1, 49), 0, a HID, anyUsage ]
right
press
[ 1, 255, 48, 1, 12, a HIDElement(12: type: 2, usage: 1, 48), 0, a HID, anyUsage ]
release
[ 0.50196081399918, 128, 48, 1, 12, a HIDElement(12: type: 2, usage: 1, 48), 0, a HID, anyUsage ]
bottom
press
[ 1, 255, 49, 1, 13, a HIDElement(13: type: 2, usage: 1, 49), 0, a HID, anyUsage ]
release
[ 0.50196081399918, 128, 49, 1, 13, a HIDElement(13: type: 2, usage: 1, 49), 0, a HID, anyUsage ]
Button SELECT
press
[ 1, 1, 10, 9, 9, a HIDElement(9: type: 2, usage: 9, 10), 0, a HID, anyUsage ]
release
[ 0, 0, 10, 9, 9, a HIDElement(9: type: 2, usage: 9, 10), 0, a HID, anyUsage ]
Button START
press
[ 1, 1, 9, 9, 8, a HIDElement(8: type: 2, usage: 9, 9), 0, a HID, anyUsage ]
release
[ 0, 0, 9, 9, 8, a HIDElement(8: type: 2, usage: 9, 9), 0, a HID, anyUsage ]
Buttons x y z
x press
[ 1, 1, 4, 9, 3, a HIDElement(3: type: 2, usage: 9, 4), 0, a HID, anyUsage ]
x release
[ 0, 0, 4, 9, 3, a HIDElement(3: type: 2, usage: 9, 4), 0, a HID, anyUsage ]
y press
[ 1, 1, 5, 9, 4, a HIDElement(4: type: 2, usage: 9, 5), 0, a HID, anyUsage ]
y release
[ 0, 0, 5, 9, 4, a HIDElement(4: type: 2, usage: 9, 5), 0, a HID, anyUsage ]
z press
[ 1, 1, 6, 9, 5, a HIDElement(5: type: 2, usage: 9, 6), 0, a HID, anyUsage ]
z release
[ 0, 0, 6, 9, 5, a HIDElement(5: type: 2, usage: 9, 6), 0, a HID, anyUsage ]
Buttons ABC
A press
[ 1, 1, 1, 9, 0, a HIDElement(0: type: 2, usage: 9, 1), 0, a HID, anyUsage ]
A release
[ 0, 0, 1, 9, 0, a HIDElement(0: type: 2, usage: 9, 1), 0, a HID, anyUsage ]
B press
[ 1, 1, 2, 9, 1, a HIDElement(1: type: 2, usage: 9, 2), 0, a HID, anyUsage ]
B release
[ 0, 0, 2, 9, 1, a HIDElement(1: type: 2, usage: 9, 2), 0, a HID, anyUsage ]
C press
[ 1, 1, 3, 9, 2, a HIDElement(2: type: 2, usage: 9, 3), 0, a HID, anyUsage ]
C release
[ 0, 0, 3, 9, 2, a HIDElement(2: type: 2, usage: 9, 3), 0, a HID, anyUsage ]
Wheel slider:
up
[ 0.3548386991024, 11, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.32258063554764, 10, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.29032257199287, 9, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.25806450843811, 8, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.22580644488335, 7, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.19354838132858, 6, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.16129031777382, 5, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.12903225421906, 4, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.096774190664291, 3, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.064516127109528, 2, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
down
[ 0.096774190664291, 3, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.12903225421906, 4, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.16129031777382, 5, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.19354838132858, 6, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.22580644488335, 7, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.25806450843811, 8, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.29032257199287, 9, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
[ 0.32258063554764, 10, 54, 1, 14, a HIDElement(14: type: 2, usage: 1, 54), 0, a HID, anyUsage ]
Buttons front
top left
[ 1, 1, 7, 9, 6, a HIDElement(6: type: 2, usage: 9, 7), 0, a HID, anyUsage ]
[ 0, 0, 7, 9, 6, a HIDElement(6: type: 2, usage: 9, 7), 0, a HID, anyUsage ]
top right
[ 1, 1, 8, 9, 7, a HIDElement(7: type: 2, usage: 9, 8), 0, a HID, anyUsage ]
[ 0, 0, 8, 9, 7, a HIDElement(7: type: 2, usage: 9, 8), 0, a HID, anyUsage ]
bottom left
[ 1, 1, 11, 9, 10, a HIDElement(10: type: 2, usage: 9, 11), 0, a HID, anyUsage ]
[ 0, 0, 11, 9, 10, a HIDElement(10: type: 2, usage: 9, 11), 0, a HID, anyUsage ]
bottom right
[ 1, 1, 12, 9, 11, a HIDElement(11: type: 2, usage: 9, 12), 0, a HID, anyUsage ]
[ 0, 0, 12, 9, 11, a HIDElement(11: type: 2, usage: 9, 12), 0, a HID, anyUsage ]
As far as I can see
- No repetitive buttons
- No pressure sensitivity