@@ -3,12 +3,12 @@ package descriptor
3
3
const (
4
4
hidUsagePage = 0x05
5
5
hidUsage = 0x09
6
- hidLogicalMinimum = 0x15
7
- hidLogicalMaximum = 0x25
8
- hidUsageMinimum = 0x19
9
- hidUsageMaximum = 0x29
10
- hidPhysicalMinimum = 0x35
11
- hidPhysicalMaximum = 0x46
6
+ hidLogicalMinimum = 0x14
7
+ hidLogicalMaximum = 0x24
8
+ hidUsageMinimum = 0x18
9
+ hidUsageMaximum = 0x28
10
+ hidPhysicalMinimum = 0x34
11
+ hidPhysicalMaximum = 0x44
12
12
hidUnitExponent = 0x55
13
13
hidUnit = 0x65
14
14
hidCollection = 0xa1
@@ -18,6 +18,13 @@ const (
18
18
hidReportID = 0x85
19
19
)
20
20
21
+ const (
22
+ hidSizeValue0 = 0x00
23
+ hidSizeValue1 = 0x01
24
+ hidSizeValue2 = 0x02
25
+ hidSizeValue4 = 0x03
26
+ )
27
+
21
28
var (
22
29
HIDUsagePageGenericDesktop = []byte {hidUsagePage , 0x01 }
23
30
HIDUsagePageSimulationControls = []byte {hidUsagePage , 0x02 }
@@ -129,51 +136,69 @@ func HIDReportID(id int) []byte {
129
136
}
130
137
131
138
func HIDLogicalMinimum (min int ) []byte {
132
- if min > 255 {
133
- return []byte {hidLogicalMinimum + 1 , uint8 (min ), uint8 (min >> 8 )}
139
+ switch {
140
+ case min < - 32767 || 65535 < min :
141
+ return []byte {hidLogicalMinimum + hidSizeValue4 , uint8 (min ), uint8 (min >> 8 ), uint8 (min >> 16 ), uint8 (min >> 24 )}
142
+ case min < - 127 || 255 < min :
143
+ return []byte {hidLogicalMinimum + hidSizeValue2 , uint8 (min ), uint8 (min >> 8 )}
144
+ default :
145
+ return []byte {hidLogicalMinimum + hidSizeValue1 , byte (min )}
134
146
}
135
-
136
- return []byte {hidLogicalMinimum , byte (min )}
137
147
}
138
148
139
149
func HIDLogicalMaximum (max int ) []byte {
140
- if max > 255 {
141
- return []byte {hidLogicalMaximum + 1 , uint8 (max ), uint8 (max >> 8 )}
150
+ switch {
151
+ case max < - 32767 || 65535 < max :
152
+ return []byte {hidLogicalMaximum + hidSizeValue4 , uint8 (max ), uint8 (max >> 8 ), uint8 (max >> 16 ), uint8 (max >> 24 )}
153
+ case max < - 127 || 255 < max :
154
+ return []byte {hidLogicalMaximum + hidSizeValue2 , uint8 (max ), uint8 (max >> 8 )}
155
+ default :
156
+ return []byte {hidLogicalMaximum + hidSizeValue1 , byte (max )}
142
157
}
143
-
144
- return []byte {hidLogicalMaximum , byte (max )}
145
158
}
146
159
147
160
func HIDUsageMinimum (min int ) []byte {
148
- if min > 255 {
149
- return []byte {hidUsageMinimum + 1 , uint8 (min ), uint8 (min >> 8 )}
161
+ switch {
162
+ case min < - 32767 || 65535 < min :
163
+ return []byte {hidUsageMinimum + hidSizeValue4 , uint8 (min ), uint8 (min >> 8 ), uint8 (min >> 16 ), uint8 (min >> 24 )}
164
+ case min < - 127 || 255 < min :
165
+ return []byte {hidUsageMinimum + hidSizeValue2 , uint8 (min ), uint8 (min >> 8 )}
166
+ default :
167
+ return []byte {hidUsageMinimum + hidSizeValue1 , byte (min )}
150
168
}
151
-
152
- return []byte {hidUsageMinimum , byte (min )}
153
169
}
154
170
155
171
func HIDUsageMaximum (max int ) []byte {
156
- if max > 255 {
157
- return []byte {hidUsageMaximum + 1 , uint8 (max ), uint8 (max >> 8 )}
172
+ switch {
173
+ case max < - 32767 || 65535 < max :
174
+ return []byte {hidUsageMaximum + hidSizeValue4 , uint8 (max ), uint8 (max >> 8 ), uint8 (max >> 16 ), uint8 (max >> 24 )}
175
+ case max < - 127 || 255 < max :
176
+ return []byte {hidUsageMaximum + hidSizeValue2 , uint8 (max ), uint8 (max >> 8 )}
177
+ default :
178
+ return []byte {hidUsageMaximum + hidSizeValue1 , byte (max )}
158
179
}
159
-
160
- return []byte {hidUsageMaximum , byte (max )}
161
180
}
162
181
163
182
func HIDPhysicalMinimum (min int ) []byte {
164
- if min > 255 {
165
- return []byte {hidPhysicalMinimum + 1 , uint8 (min ), uint8 (min >> 8 )}
183
+ switch {
184
+ case min < - 32767 || 65535 < min :
185
+ return []byte {hidPhysicalMinimum + hidSizeValue4 , uint8 (min ), uint8 (min >> 8 ), uint8 (min >> 16 ), uint8 (min >> 24 )}
186
+ case min < - 127 || 255 < min :
187
+ return []byte {hidPhysicalMinimum + hidSizeValue2 , uint8 (min ), uint8 (min >> 8 )}
188
+ default :
189
+ return []byte {hidPhysicalMinimum + hidSizeValue1 , byte (min )}
166
190
}
167
-
168
- return []byte {hidPhysicalMinimum , byte (min )}
169
191
}
170
192
171
193
func HIDPhysicalMaximum (max int ) []byte {
172
- if max > 255 {
173
- return []byte {hidPhysicalMaximum + 1 , uint8 (max ), uint8 (max >> 8 )}
194
+ switch {
195
+ case max < - 32767 || 65535 < max :
196
+ return []byte {hidPhysicalMaximum + hidSizeValue4 , uint8 (max ), uint8 (max >> 8 ), uint8 (max >> 16 ), uint8 (max >> 24 )}
197
+ case max < - 127 || 255 < max :
198
+ return []byte {hidPhysicalMaximum + hidSizeValue2 , uint8 (max ), uint8 (max >> 8 )}
199
+ default :
200
+ return []byte {hidPhysicalMaximum + hidSizeValue1 , byte (max )}
174
201
}
175
-
176
- return []byte {hidPhysicalMaximum , byte (max )}
177
202
}
178
203
179
204
func HIDUnitExponent (exp int ) []byte {
0 commit comments