Skip to content

Gamepad Creative Cobra 2 USB

Rainer Schütz edited this page May 22, 2016 · 1 revision

Raw Descriptor

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

Decoded

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

SC output

Collections:

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

Elements:

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 ]

Usages:

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
Clone this wiki locally