@@ -3,22 +3,22 @@ package descriptor
3
3
import "math"
4
4
5
5
const (
6
- hidUsagePage = 0x05
7
- hidUsage = 0x09
6
+ hidUsagePage = 0x04
7
+ hidUsage = 0x08
8
8
hidLogicalMinimum = 0x14
9
9
hidLogicalMaximum = 0x24
10
10
hidUsageMinimum = 0x18
11
11
hidUsageMaximum = 0x28
12
12
hidPhysicalMinimum = 0x34
13
13
hidPhysicalMaximum = 0x44
14
- hidUnitExponent = 0x55
15
- hidUnit = 0x65
16
- hidCollection = 0xa1
17
- hidInput = 0x81
18
- hidOutput = 0x91
19
- hidReportSize = 0x75
20
- hidReportCount = 0x95
21
- hidReportID = 0x85
14
+ hidUnitExponent = 0x54
15
+ hidUnit = 0x64
16
+ hidCollection = 0xA0
17
+ hidInput = 0x80
18
+ hidOutput = 0x90
19
+ hidReportSize = 0x74
20
+ hidReportCount = 0x94
21
+ hidReportID = 0x84
22
22
)
23
23
24
24
const (
@@ -29,107 +29,107 @@ const (
29
29
)
30
30
31
31
var (
32
- HIDUsagePageGenericDesktop = [] byte { hidUsagePage , 0x01 }
33
- HIDUsagePageSimulationControls = [] byte { hidUsagePage , 0x02 }
34
- HIDUsagePageVRControls = [] byte { hidUsagePage , 0x03 }
35
- HIDUsagePageSportControls = [] byte { hidUsagePage , 0x04 }
36
- HIDUsagePageGameControls = [] byte { hidUsagePage , 0x05 }
37
- HIDUsagePageGenericControls = [] byte { hidUsagePage , 0x06 }
38
- HIDUsagePageKeyboard = [] byte { hidUsagePage , 0x07 }
39
- HIDUsagePageLED = [] byte { hidUsagePage , 0x08 }
40
- HIDUsagePageButton = [] byte { hidUsagePage , 0x09 }
41
- HIDUsagePageOrdinal = [] byte { hidUsagePage , 0x0A }
42
- HIDUsagePageTelephony = [] byte { hidUsagePage , 0x0B }
43
- HIDUsagePageConsumer = [] byte { hidUsagePage , 0x0C }
44
- HIDUsagePageDigitizers = [] byte { hidUsagePage , 0x0D }
45
- HIDUsagePageHaptics = [] byte { hidUsagePage , 0x0E }
46
- HIDUsagePagePhysicalInput = [] byte { hidUsagePage , 0x0F }
47
- HIDUsagePageUnicode = [] byte { hidUsagePage , 0x10 }
48
- HIDUsagePageSoC = [] byte { hidUsagePage , 0x11 }
49
- HIDUsagePageEyeHeadTrackers = [] byte { hidUsagePage , 0x12 }
50
- HIDUsagePageAuxDisplay = [] byte { hidUsagePage , 0x14 }
51
- HIDUsagePageSensors = [] byte { hidUsagePage , 0x20 }
52
- HIDUsagePageMedicalInstrument = [] byte { hidUsagePage , 0x40 }
53
- HIDUsagePageBrailleDisplay = [] byte { hidUsagePage , 0x41 }
54
- HIDUsagePageLighting = [] byte { hidUsagePage , 0x59 }
55
- HIDUsagePageMonitor = [] byte { hidUsagePage , 0x80 }
56
- HIDUsagePageMonitorEnum = [] byte { hidUsagePage , 0x81 }
57
- HIDUsagePageVESA = [] byte { hidUsagePage , 0x82 }
58
- HIDUsagePagePower = [] byte { hidUsagePage , 0x84 }
59
- HIDUsagePageBatterySystem = [] byte { hidUsagePage , 0x85 }
60
- HIDUsagePageBarcodeScanner = [] byte { hidUsagePage , 0x8C }
61
- HIDUsagePageScales = [] byte { hidUsagePage , 0x8D }
62
- HIDUsagePageMagneticStripe = [] byte { hidUsagePage , 0x8E }
63
- HIDUsagePageCameraControl = [] byte { hidUsagePage , 0x90 }
64
- HIDUsagePageArcade = [] byte { hidUsagePage , 0x91 }
65
- HIDUsagePageGaming = [] byte { hidUsagePage , 0x92 }
32
+ HIDUsagePageGenericDesktop = HIDUsagePage ( 0x01 )
33
+ HIDUsagePageSimulationControls = HIDUsagePage ( 0x02 )
34
+ HIDUsagePageVRControls = HIDUsagePage ( 0x03 )
35
+ HIDUsagePageSportControls = HIDUsagePage ( 0x04 )
36
+ HIDUsagePageGameControls = HIDUsagePage ( 0x05 )
37
+ HIDUsagePageGenericControls = HIDUsagePage ( 0x06 )
38
+ HIDUsagePageKeyboard = HIDUsagePage ( 0x07 )
39
+ HIDUsagePageLED = HIDUsagePage ( 0x08 )
40
+ HIDUsagePageButton = HIDUsagePage ( 0x09 )
41
+ HIDUsagePageOrdinal = HIDUsagePage ( 0x0A )
42
+ HIDUsagePageTelephony = HIDUsagePage ( 0x0B )
43
+ HIDUsagePageConsumer = HIDUsagePage ( 0x0C )
44
+ HIDUsagePageDigitizers = HIDUsagePage ( 0x0D )
45
+ HIDUsagePageHaptics = HIDUsagePage ( 0x0E )
46
+ HIDUsagePagePhysicalInput = HIDUsagePage ( 0x0F )
47
+ HIDUsagePageUnicode = HIDUsagePage ( 0x10 )
48
+ HIDUsagePageSoC = HIDUsagePage ( 0x11 )
49
+ HIDUsagePageEyeHeadTrackers = HIDUsagePage ( 0x12 )
50
+ HIDUsagePageAuxDisplay = HIDUsagePage ( 0x14 )
51
+ HIDUsagePageSensors = HIDUsagePage ( 0x20 )
52
+ HIDUsagePageMedicalInstrument = HIDUsagePage ( 0x40 )
53
+ HIDUsagePageBrailleDisplay = HIDUsagePage ( 0x41 )
54
+ HIDUsagePageLighting = HIDUsagePage ( 0x59 )
55
+ HIDUsagePageMonitor = HIDUsagePage ( 0x80 )
56
+ HIDUsagePageMonitorEnum = HIDUsagePage ( 0x81 )
57
+ HIDUsagePageVESA = HIDUsagePage ( 0x82 )
58
+ HIDUsagePagePower = HIDUsagePage ( 0x84 )
59
+ HIDUsagePageBatterySystem = HIDUsagePage ( 0x85 )
60
+ HIDUsagePageBarcodeScanner = HIDUsagePage ( 0x8C )
61
+ HIDUsagePageScales = HIDUsagePage ( 0x8D )
62
+ HIDUsagePageMagneticStripe = HIDUsagePage ( 0x8E )
63
+ HIDUsagePageCameraControl = HIDUsagePage ( 0x90 )
64
+ HIDUsagePageArcade = HIDUsagePage ( 0x91 )
65
+ HIDUsagePageGaming = HIDUsagePage ( 0x92 )
66
66
)
67
67
68
68
var (
69
- HIDUsageDesktopPointer = [] byte { hidUsage , 0x01 }
70
- HIDUsageDesktopMouse = [] byte { hidUsage , 0x02 }
71
- HIDUsageDesktopJoystick = [] byte { hidUsage , 0x04 }
72
- HIDUsageDesktopGamepad = [] byte { hidUsage , 0x05 }
73
- HIDUsageDesktopKeyboard = [] byte { hidUsage , 0x06 }
74
- HIDUsageDesktopKeypad = [] byte { hidUsage , 0x07 }
75
- HIDUsageDesktopMultiaxis = [] byte { hidUsage , 0x08 }
76
- HIDUsageDesktopTablet = [] byte { hidUsage , 0x09 }
77
- HIDUsageDesktopWaterCooling = [] byte { hidUsage , 0x0A }
78
- HIDUsageDesktopChassis = [] byte { hidUsage , 0x0B }
79
- HIDUsageDesktopWireless = [] byte { hidUsage , 0x0C }
80
- HIDUsageDesktopPortable = [] byte { hidUsage , 0x0D }
81
- HIDUsageDesktopSystemMultiaxis = [] byte { hidUsage , 0x0E }
82
- HIDUsageDesktopSpatial = [] byte { hidUsage , 0x0F }
83
- HIDUsageDesktopAssistive = [] byte { hidUsage , 0x10 }
84
- HIDUsageDesktopDock = [] byte { hidUsage , 0x11 }
85
- HIDUsageDesktopDockable = [] byte { hidUsage , 0x12 }
86
- HIDUsageDesktopCallState = [] byte { hidUsage , 0x13 }
87
- HIDUsageDesktopX = [] byte { hidUsage , 0x30 }
88
- HIDUsageDesktopY = [] byte { hidUsage , 0x31 }
89
- HIDUsageDesktopZ = [] byte { hidUsage , 0x32 }
90
- HIDUsageDesktopRx = [] byte { hidUsage , 0x33 }
91
- HIDUsageDesktopRy = [] byte { hidUsage , 0x34 }
92
- HIDUsageDesktopRz = [] byte { hidUsage , 0x35 }
93
- HIDUsageDesktopSlider = [] byte { hidUsage , 0x36 }
94
- HIDUsageDesktopDial = [] byte { hidUsage , 0x37 }
95
- HIDUsageDesktopWheel = [] byte { hidUsage , 0x38 }
96
- HIDUsageDesktopHatSwitch = [] byte { hidUsage , 0x39 }
97
- HIDUsageDesktopCountedBuffer = [] byte { hidUsage , 0x3A }
69
+ HIDUsageDesktopPointer = HIDUsage ( 0x01 )
70
+ HIDUsageDesktopMouse = HIDUsage ( 0x02 )
71
+ HIDUsageDesktopJoystick = HIDUsage ( 0x04 )
72
+ HIDUsageDesktopGamepad = HIDUsage ( 0x05 )
73
+ HIDUsageDesktopKeyboard = HIDUsage ( 0x06 )
74
+ HIDUsageDesktopKeypad = HIDUsage ( 0x07 )
75
+ HIDUsageDesktopMultiaxis = HIDUsage ( 0x08 )
76
+ HIDUsageDesktopTablet = HIDUsage ( 0x09 )
77
+ HIDUsageDesktopWaterCooling = HIDUsage ( 0x0A )
78
+ HIDUsageDesktopChassis = HIDUsage ( 0x0B )
79
+ HIDUsageDesktopWireless = HIDUsage ( 0x0C )
80
+ HIDUsageDesktopPortable = HIDUsage ( 0x0D )
81
+ HIDUsageDesktopSystemMultiaxis = HIDUsage ( 0x0E )
82
+ HIDUsageDesktopSpatial = HIDUsage ( 0x0F )
83
+ HIDUsageDesktopAssistive = HIDUsage ( 0x10 )
84
+ HIDUsageDesktopDock = HIDUsage ( 0x11 )
85
+ HIDUsageDesktopDockable = HIDUsage ( 0x12 )
86
+ HIDUsageDesktopCallState = HIDUsage ( 0x13 )
87
+ HIDUsageDesktopX = HIDUsage ( 0x30 )
88
+ HIDUsageDesktopY = HIDUsage ( 0x31 )
89
+ HIDUsageDesktopZ = HIDUsage ( 0x32 )
90
+ HIDUsageDesktopRx = HIDUsage ( 0x33 )
91
+ HIDUsageDesktopRy = HIDUsage ( 0x34 )
92
+ HIDUsageDesktopRz = HIDUsage ( 0x35 )
93
+ HIDUsageDesktopSlider = HIDUsage ( 0x36 )
94
+ HIDUsageDesktopDial = HIDUsage ( 0x37 )
95
+ HIDUsageDesktopWheel = HIDUsage ( 0x38 )
96
+ HIDUsageDesktopHatSwitch = HIDUsage ( 0x39 )
97
+ HIDUsageDesktopCountedBuffer = HIDUsage ( 0x3A )
98
98
)
99
99
100
100
var (
101
- HIDUsageConsumerControl = [] byte { hidUsage , 0x01 }
102
- HIDUsageConsumerNumericKeypad = [] byte { hidUsage , 0x02 }
103
- HIDUsageConsumerProgrammableButtons = [] byte { hidUsage , 0x03 }
104
- HIDUsageConsumerMicrophone = [] byte { hidUsage , 0x04 }
105
- HIDUsageConsumerHeadphone = [] byte { hidUsage , 0x05 }
106
- HIDUsageConsumerGraphicEqualizer = [] byte { hidUsage , 0x06 }
101
+ HIDUsageConsumerControl = HIDUsage ( 0x01 )
102
+ HIDUsageConsumerNumericKeypad = HIDUsage ( 0x02 )
103
+ HIDUsageConsumerProgrammableButtons = HIDUsage ( 0x03 )
104
+ HIDUsageConsumerMicrophone = HIDUsage ( 0x04 )
105
+ HIDUsageConsumerHeadphone = HIDUsage ( 0x05 )
106
+ HIDUsageConsumerGraphicEqualizer = HIDUsage ( 0x06 )
107
107
)
108
108
109
109
var (
110
- HIDCollectionPhysical = [] byte { hidCollection , 0x00 }
111
- HIDCollectionApplication = [] byte { hidCollection , 0x01 }
112
- HIDCollectionEnd = []byte {0xc0 }
110
+ HIDCollectionPhysical = HIDCollection ( 0x00 )
111
+ HIDCollectionApplication = HIDCollection ( 0x01 )
112
+ HIDCollectionEnd = []byte {0xC0 }
113
113
)
114
114
115
115
var (
116
116
// Input (Data,Ary,Abs), Key arrays (6 bytes)
117
- HIDInputDataAryAbs = [] byte { hidInput , 0x00 }
117
+ HIDInputDataAryAbs = HIDInput ( 0x00 )
118
118
119
119
// Input (Data, Variable, Absolute), Modifier byte
120
- HIDInputDataVarAbs = [] byte { hidInput , 0x02 }
120
+ HIDInputDataVarAbs = HIDInput ( 0x02 )
121
121
122
122
// Input (Const,Var,Abs), Modifier byte
123
- HIDInputConstVarAbs = [] byte { hidInput , 0x03 }
123
+ HIDInputConstVarAbs = HIDInput ( 0x03 )
124
124
125
125
// Input (Data, Variable, Relative), 2 position bytes (X & Y)
126
- HIDInputDataVarRel = [] byte { hidInput , 0x06 }
126
+ HIDInputDataVarRel = HIDInput ( 0x06 )
127
127
128
128
// Output (Data, Variable, Absolute), Modifier byte
129
- HIDOutputDataVarAbs = [] byte { hidOutput , 0x02 }
129
+ HIDOutputDataVarAbs = HIDOutput ( 0x02 )
130
130
131
131
// Output (Const, Variable, Absolute), Modifier byte
132
- HIDOutputConstVarAbs = [] byte { hidOutput , 0x03 }
132
+ HIDOutputConstVarAbs = HIDOutput ( 0x03 )
133
133
)
134
134
135
135
func hidShortItem (tag byte , value uint32 ) []byte {
@@ -155,15 +155,15 @@ func hidShortItemSigned(tag byte, value int32) []byte {
155
155
}
156
156
157
157
func HIDReportSize (size int ) []byte {
158
- return [] byte { hidReportSize , byte (size )}
158
+ return hidShortItem ( hidReportSize , uint32 (size ))
159
159
}
160
160
161
161
func HIDReportCount (count int ) []byte {
162
- return [] byte { hidReportCount , byte (count )}
162
+ return hidShortItem ( hidReportCount , uint32 (count ))
163
163
}
164
164
165
165
func HIDReportID (id int ) []byte {
166
- return [] byte { hidReportID , byte (id )}
166
+ return hidShortItem ( hidReportID , uint32 (id ))
167
167
}
168
168
169
169
func HIDLogicalMinimum (min int ) []byte {
@@ -191,9 +191,30 @@ func HIDPhysicalMaximum(max int) []byte {
191
191
}
192
192
193
193
func HIDUnitExponent (exp int ) []byte {
194
- return []byte {hidUnitExponent , byte (exp )}
194
+ // 4 Bit two's complement
195
+ return hidShortItem (hidUnitExponent , uint32 (exp & 0xF ))
195
196
}
196
197
197
- func HIDUnit (unit int ) []byte {
198
- return []byte {hidUnit , byte (unit )}
198
+ func HIDUnit (unit uint32 ) []byte {
199
+ return hidShortItem (hidUnit , unit )
200
+ }
201
+
202
+ func HIDUsagePage (id uint16 ) []byte {
203
+ return hidShortItem (hidUsagePage , uint32 (id ))
204
+ }
205
+
206
+ func HIDUsage (id uint32 ) []byte {
207
+ return hidShortItem (hidUsage , id )
208
+ }
209
+
210
+ func HIDCollection (id uint32 ) []byte {
211
+ return hidShortItem (hidCollection , id )
212
+ }
213
+
214
+ func HIDInput (flags uint32 ) []byte {
215
+ return hidShortItem (hidInput , flags )
216
+ }
217
+
218
+ func HIDOutput (flags uint32 ) []byte {
219
+ return hidShortItem (hidOutput , flags )
199
220
}
0 commit comments