1 ! Copyright (C) 2010 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.libraries alien.syntax
4 classes.struct kernel math windows.types windows.ole32 ;
7 << "hid" "hid.dll" stdcall add-library >>
10 TYPEDEF: LONG NTSTATUS
12 TYPEDEF: USAGE* PUSAGE
14 CONSTANT: HID_USAGE_PAGE_UNDEFINED HEX: 00
15 CONSTANT: HID_USAGE_PAGE_GENERIC HEX: 01
16 CONSTANT: HID_USAGE_PAGE_SIMULATION HEX: 02
17 CONSTANT: HID_USAGE_PAGE_VR HEX: 03
18 CONSTANT: HID_USAGE_PAGE_SPORT HEX: 04
19 CONSTANT: HID_USAGE_PAGE_GAME HEX: 05
20 CONSTANT: HID_USAGE_PAGE_KEYBOARD HEX: 07
21 CONSTANT: HID_USAGE_PAGE_LED HEX: 08
22 CONSTANT: HID_USAGE_PAGE_BUTTON HEX: 09
23 CONSTANT: HID_USAGE_PAGE_ORDINAL HEX: 0A
24 CONSTANT: HID_USAGE_PAGE_TELEPHONY HEX: 0B
25 CONSTANT: HID_USAGE_PAGE_CONSUMER HEX: 0C
26 CONSTANT: HID_USAGE_PAGE_DIGITIZER HEX: 0D
27 CONSTANT: HID_USAGE_PAGE_UNICODE HEX: 10
28 CONSTANT: HID_USAGE_PAGE_ALPHANUMERIC HEX: 14
30 CONSTANT: HID_USAGE_PAGE_MICROSOFT_BLUETOOTH_HANDSFREE HEX: FFF3
32 CONSTANT: HID_USAGE_GENERIC_POINTER HEX: 01
33 CONSTANT: HID_USAGE_GENERIC_MOUSE HEX: 02
34 CONSTANT: HID_USAGE_GENERIC_JOYSTICK HEX: 04
35 CONSTANT: HID_USAGE_GENERIC_GAMEPAD HEX: 05
36 CONSTANT: HID_USAGE_GENERIC_KEYBOARD HEX: 06
37 CONSTANT: HID_USAGE_GENERIC_KEYPAD HEX: 07
38 CONSTANT: HID_USAGE_GENERIC_SYSTEM_CTL HEX: 80
40 CONSTANT: HID_USAGE_GENERIC_X HEX: 30
41 CONSTANT: HID_USAGE_GENERIC_Y HEX: 31
42 CONSTANT: HID_USAGE_GENERIC_Z HEX: 32
43 CONSTANT: HID_USAGE_GENERIC_RX HEX: 33
44 CONSTANT: HID_USAGE_GENERIC_RY HEX: 34
45 CONSTANT: HID_USAGE_GENERIC_RZ HEX: 35
46 CONSTANT: HID_USAGE_GENERIC_SLIDER HEX: 36
47 CONSTANT: HID_USAGE_GENERIC_DIAL HEX: 37
48 CONSTANT: HID_USAGE_GENERIC_WHEEL HEX: 38
49 CONSTANT: HID_USAGE_GENERIC_HATSWITCH HEX: 39
50 CONSTANT: HID_USAGE_GENERIC_COUNTED_BUFFER HEX: 3A
51 CONSTANT: HID_USAGE_GENERIC_BYTE_COUNT HEX: 3B
52 CONSTANT: HID_USAGE_GENERIC_MOTION_WAKEUP HEX: 3C
53 CONSTANT: HID_USAGE_GENERIC_VX HEX: 40
54 CONSTANT: HID_USAGE_GENERIC_VY HEX: 41
55 CONSTANT: HID_USAGE_GENERIC_VZ HEX: 42
56 CONSTANT: HID_USAGE_GENERIC_VBRX HEX: 43
57 CONSTANT: HID_USAGE_GENERIC_VBRY HEX: 44
58 CONSTANT: HID_USAGE_GENERIC_VBRZ HEX: 45
59 CONSTANT: HID_USAGE_GENERIC_VNO HEX: 46
60 CONSTANT: HID_USAGE_GENERIC_SYSCTL_POWER HEX: 81
61 CONSTANT: HID_USAGE_GENERIC_SYSCTL_SLEEP HEX: 82
62 CONSTANT: HID_USAGE_GENERIC_SYSCTL_WAKE HEX: 83
63 CONSTANT: HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU HEX: 84
64 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MAIN_MENU HEX: 85
65 CONSTANT: HID_USAGE_GENERIC_SYSCTL_APP_MENU HEX: 86
66 CONSTANT: HID_USAGE_GENERIC_SYSCTL_HELP_MENU HEX: 87
67 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_EXIT HEX: 88
68 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_SELECT HEX: 89
69 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT HEX: 8A
70 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_LEFT HEX: 8B
71 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_UP HEX: 8C
72 CONSTANT: HID_USAGE_GENERIC_SYSCTL_MENU_DOWN HEX: 8D
74 CONSTANT: HID_USAGE_SIMULATION_RUDDER HEX: BA
75 CONSTANT: HID_USAGE_SIMULATION_THROTTLE HEX: BB
77 CONSTANT: HID_USAGE_KEYBOARD_NOEVENT HEX: 00
78 CONSTANT: HID_USAGE_KEYBOARD_ROLLOVER HEX: 01
79 CONSTANT: HID_USAGE_KEYBOARD_POSTFAIL HEX: 02
80 CONSTANT: HID_USAGE_KEYBOARD_UNDEFINED HEX: 03
82 CONSTANT: HID_USAGE_KEYBOARD_aA HEX: 04
83 CONSTANT: HID_USAGE_KEYBOARD_zZ HEX: 1D
84 CONSTANT: HID_USAGE_KEYBOARD_ONE HEX: 1E
85 CONSTANT: HID_USAGE_KEYBOARD_ZERO HEX: 27
86 CONSTANT: HID_USAGE_KEYBOARD_LCTRL HEX: E0
87 CONSTANT: HID_USAGE_KEYBOARD_LSHFT HEX: E1
88 CONSTANT: HID_USAGE_KEYBOARD_LALT HEX: E2
89 CONSTANT: HID_USAGE_KEYBOARD_LGUI HEX: E3
90 CONSTANT: HID_USAGE_KEYBOARD_RCTRL HEX: E4
91 CONSTANT: HID_USAGE_KEYBOARD_RSHFT HEX: E5
92 CONSTANT: HID_USAGE_KEYBOARD_RALT HEX: E6
93 CONSTANT: HID_USAGE_KEYBOARD_RGUI HEX: E7
94 CONSTANT: HID_USAGE_KEYBOARD_SCROLL_LOCK HEX: 47
95 CONSTANT: HID_USAGE_KEYBOARD_NUM_LOCK HEX: 53
96 CONSTANT: HID_USAGE_KEYBOARD_CAPS_LOCK HEX: 39
97 CONSTANT: HID_USAGE_KEYBOARD_F1 HEX: 3A
98 CONSTANT: HID_USAGE_KEYBOARD_F12 HEX: 45
99 CONSTANT: HID_USAGE_KEYBOARD_RETURN HEX: 28
100 CONSTANT: HID_USAGE_KEYBOARD_ESCAPE HEX: 29
101 CONSTANT: HID_USAGE_KEYBOARD_DELETE HEX: 2A
102 CONSTANT: HID_USAGE_KEYBOARD_PRINT_SCREEN HEX: 46
104 CONSTANT: HID_USAGE_LED_NUM_LOCK HEX: 01
105 CONSTANT: HID_USAGE_LED_CAPS_LOCK HEX: 02
106 CONSTANT: HID_USAGE_LED_SCROLL_LOCK HEX: 03
107 CONSTANT: HID_USAGE_LED_COMPOSE HEX: 04
108 CONSTANT: HID_USAGE_LED_KANA HEX: 05
109 CONSTANT: HID_USAGE_LED_POWER HEX: 06
110 CONSTANT: HID_USAGE_LED_SHIFT HEX: 07
111 CONSTANT: HID_USAGE_LED_DO_NOT_DISTURB HEX: 08
112 CONSTANT: HID_USAGE_LED_MUTE HEX: 09
113 CONSTANT: HID_USAGE_LED_TONE_ENABLE HEX: 0A
114 CONSTANT: HID_USAGE_LED_HIGH_CUT_FILTER HEX: 0B
115 CONSTANT: HID_USAGE_LED_LOW_CUT_FILTER HEX: 0C
116 CONSTANT: HID_USAGE_LED_EQUALIZER_ENABLE HEX: 0D
117 CONSTANT: HID_USAGE_LED_SOUND_FIELD_ON HEX: 0E
118 CONSTANT: HID_USAGE_LED_SURROUND_FIELD_ON HEX: 0F
119 CONSTANT: HID_USAGE_LED_REPEAT HEX: 10
120 CONSTANT: HID_USAGE_LED_STEREO HEX: 11
121 CONSTANT: HID_USAGE_LED_SAMPLING_RATE_DETECT HEX: 12
122 CONSTANT: HID_USAGE_LED_SPINNING HEX: 13
123 CONSTANT: HID_USAGE_LED_CAV HEX: 14
124 CONSTANT: HID_USAGE_LED_CLV HEX: 15
125 CONSTANT: HID_USAGE_LED_RECORDING_FORMAT_DET HEX: 16
126 CONSTANT: HID_USAGE_LED_OFF_HOOK HEX: 17
127 CONSTANT: HID_USAGE_LED_RING HEX: 18
128 CONSTANT: HID_USAGE_LED_MESSAGE_WAITING HEX: 19
129 CONSTANT: HID_USAGE_LED_DATA_MODE HEX: 1A
130 CONSTANT: HID_USAGE_LED_BATTERY_OPERATION HEX: 1B
131 CONSTANT: HID_USAGE_LED_BATTERY_OK HEX: 1C
132 CONSTANT: HID_USAGE_LED_BATTERY_LOW HEX: 1D
133 CONSTANT: HID_USAGE_LED_SPEAKER HEX: 1E
134 CONSTANT: HID_USAGE_LED_HEAD_SET HEX: 1F
135 CONSTANT: HID_USAGE_LED_HOLD HEX: 20
136 CONSTANT: HID_USAGE_LED_MICROPHONE HEX: 21
137 CONSTANT: HID_USAGE_LED_COVERAGE HEX: 22
138 CONSTANT: HID_USAGE_LED_NIGHT_MODE HEX: 23
139 CONSTANT: HID_USAGE_LED_SEND_CALLS HEX: 24
140 CONSTANT: HID_USAGE_LED_CALL_PICKUP HEX: 25
141 CONSTANT: HID_USAGE_LED_CONFERENCE HEX: 26
142 CONSTANT: HID_USAGE_LED_STAND_BY HEX: 27
143 CONSTANT: HID_USAGE_LED_CAMERA_ON HEX: 28
144 CONSTANT: HID_USAGE_LED_CAMERA_OFF HEX: 29
145 CONSTANT: HID_USAGE_LED_ON_LINE HEX: 2A
146 CONSTANT: HID_USAGE_LED_OFF_LINE HEX: 2B
147 CONSTANT: HID_USAGE_LED_BUSY HEX: 2C
148 CONSTANT: HID_USAGE_LED_READY HEX: 2D
149 CONSTANT: HID_USAGE_LED_PAPER_OUT HEX: 2E
150 CONSTANT: HID_USAGE_LED_PAPER_JAM HEX: 2F
151 CONSTANT: HID_USAGE_LED_REMOTE HEX: 30
152 CONSTANT: HID_USAGE_LED_FORWARD HEX: 31
153 CONSTANT: HID_USAGE_LED_REVERSE HEX: 32
154 CONSTANT: HID_USAGE_LED_STOP HEX: 33
155 CONSTANT: HID_USAGE_LED_REWIND HEX: 34
156 CONSTANT: HID_USAGE_LED_FAST_FORWARD HEX: 35
157 CONSTANT: HID_USAGE_LED_PLAY HEX: 36
158 CONSTANT: HID_USAGE_LED_PAUSE HEX: 37
159 CONSTANT: HID_USAGE_LED_RECORD HEX: 38
160 CONSTANT: HID_USAGE_LED_ERROR HEX: 39
161 CONSTANT: HID_USAGE_LED_SELECTED_INDICATOR HEX: 3A
162 CONSTANT: HID_USAGE_LED_IN_USE_INDICATOR HEX: 3B
163 CONSTANT: HID_USAGE_LED_MULTI_MODE_INDICATOR HEX: 3C
164 CONSTANT: HID_USAGE_LED_INDICATOR_ON HEX: 3D
165 CONSTANT: HID_USAGE_LED_INDICATOR_FLASH HEX: 3E
166 CONSTANT: HID_USAGE_LED_INDICATOR_SLOW_BLINK HEX: 3F
167 CONSTANT: HID_USAGE_LED_INDICATOR_FAST_BLINK HEX: 40
168 CONSTANT: HID_USAGE_LED_INDICATOR_OFF HEX: 41
169 CONSTANT: HID_USAGE_LED_FLASH_ON_TIME HEX: 42
170 CONSTANT: HID_USAGE_LED_SLOW_BLINK_ON_TIME HEX: 43
171 CONSTANT: HID_USAGE_LED_SLOW_BLINK_OFF_TIME HEX: 44
172 CONSTANT: HID_USAGE_LED_FAST_BLINK_ON_TIME HEX: 45
173 CONSTANT: HID_USAGE_LED_FAST_BLINK_OFF_TIME HEX: 46
174 CONSTANT: HID_USAGE_LED_INDICATOR_COLOR HEX: 47
175 CONSTANT: HID_USAGE_LED_RED HEX: 48
176 CONSTANT: HID_USAGE_LED_GREEN HEX: 49
177 CONSTANT: HID_USAGE_LED_AMBER HEX: 4A
178 CONSTANT: HID_USAGE_LED_GENERIC_INDICATOR HEX: 4B
180 CONSTANT: HID_USAGE_TELEPHONY_PHONE HEX: 01
181 CONSTANT: HID_USAGE_TELEPHONY_ANSWERING_MACHINE HEX: 02
182 CONSTANT: HID_USAGE_TELEPHONY_MESSAGE_CONTROLS HEX: 03
183 CONSTANT: HID_USAGE_TELEPHONY_HANDSET HEX: 04
184 CONSTANT: HID_USAGE_TELEPHONY_HEADSET HEX: 05
185 CONSTANT: HID_USAGE_TELEPHONY_KEYPAD HEX: 06
186 CONSTANT: HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON HEX: 07
187 CONSTANT: HID_USAGE_TELEPHONY_REDIAL HEX: 24
188 CONSTANT: HID_USAGE_TELEPHONY_TRANSFER HEX: 25
189 CONSTANT: HID_USAGE_TELEPHONY_DROP HEX: 26
190 CONSTANT: HID_USAGE_TELEPHONY_LINE HEX: 2A
191 CONSTANT: HID_USAGE_TELEPHONY_RING_ENABLE HEX: 2D
192 CONSTANT: HID_USAGE_TELEPHONY_SEND HEX: 31
193 CONSTANT: HID_USAGE_TELEPHONY_KEYPAD_0 HEX: B0
194 CONSTANT: HID_USAGE_TELEPHONY_KEYPAD_D HEX: BF
195 CONSTANT: HID_USAGE_TELEPHONY_HOST_AVAILABLE HEX: F1
197 CONSTANT: HID_USAGE_MS_BTH_HF_DIALNUMBER HEX: 21
198 CONSTANT: HID_USAGE_MS_BTH_HF_DIALMEMORY HEX: 22
200 CONSTANT: HID_USAGE_CONSUMERCTRL HEX: 01
201 CONSTANT: HID_USAGE_DIGITIZER_PEN HEX: 02
202 CONSTANT: HID_USAGE_DIGITIZER_IN_RANGE HEX: 32
203 CONSTANT: HID_USAGE_DIGITIZER_TIP_SWITCH HEX: 42
204 CONSTANT: HID_USAGE_DIGITIZER_BARREL_SWITCH HEX: 44
206 CONSTANT: HIDP_LINK_COLLECTION_ROOT -1
207 CONSTANT: HIDP_LINK_COLLECTION_UNSPECIFIED 0
209 ENUM: HIDP_REPORT_TYPE
214 STRUCT: USAGE_AND_PAGE
216 { UsagePage USAGE } ;
217 TYPEDEF: USAGE_AND_PAGE* PUSAGE_AND_PAGE
219 : HidP_IsSameUsageAndPage ( u1 u2 -- ? ) = ; inline
221 STRUCT: HIDP_BUTTONS_CAPS_range
226 { DesignatorMin USHORT }
227 { DesignatorMax USHORT }
228 { DataIndexMin USHORT }
229 { DataIndexMax USHORT } ;
231 STRUCT: HIDP_BUTTONS_CAPS_not_range
234 { StringIndex USHORT }
236 { DesignatorIndex USHORT }
239 { Reserved4 USHORT } ;
241 UNION-STRUCT: HIDP_BUTTONS_CAPS_union
242 { Range HIDP_BUTTONS_CAPS_range }
243 { NotRange HIDP_BUTTONS_CAPS_not_range } ;
245 STRUCT: HIDP_BUTTON_CAPS
250 { LinkCollection USHORT }
252 { LinkUsagePage USAGE }
254 { IsStringRange BOOLEAN }
255 { IsDesignatorRange BOOLEAN }
256 { IsAbsolute BOOLEAN }
257 { Reserved ULONG[10] }
258 { Union HIDP_BUTTONS_CAPS_union } ;
259 TYPEDEF: HIDP_BUTTON_CAPS* PHIDP_BUTTON_CAPS
261 STRUCT: HIDP_VALUE_CAPS_range
266 { DesignatorMin USHORT }
267 { DesignatorMax USHORT }
268 { DataIndexMin USHORT }
269 { DataIndexMax USHORT } ;
271 STRUCT: HIDP_VALUE_CAPS_not_range
274 { StringIndex USHORT }
276 { DesignatorIndex USHORT }
279 { Reserved4 USHORT } ;
281 UNION-STRUCT: HIDP_VALUE_CAPS_union
282 { Range HIDP_VALUE_CAPS_range }
283 { NotRange HIDP_VALUE_CAPS_not_range } ;
285 STRUCT: HIDP_VALUE_CAPS
290 { LinkCollection USHORT }
292 { LinkUsagePage USAGE }
294 { IsStringRange BOOLEAN }
295 { IsDesignatorRange BOOLEAN }
296 { IsAbsolute BOOLEAN }
300 { ReportCount USHORT }
301 { Reserved2 USHORT[5] }
308 { Union HIDP_VALUE_CAPS_union } ;
309 TYPEDEF: HIDP_VALUE_CAPS* PHIDP_VALUE_CAPS
311 STRUCT: HIDP_LINK_COLLECTION_NODE
313 { LinkUsagePage USAGE }
315 { NumberOfChildren USHORT }
316 { NextSibling USHORT }
317 { FirstChild USHORT }
318 { CollectionTypeIsAliasBitfield ULONG }
319 { UserContext PVOID } ;
320 TYPEDEF: HIDP_LINK_COLLECTION_NODE* PHIDP_LINK_COLLECTION_NODE
322 TYPEDEF: PUCHAR PHIDP_REPORT_DESCRIPTOR
323 C-TYPE: HIDP_PREPARSED_DATA
324 TYPEDEF: HIDP_PREPARSED_DATA* PHIDP_PREPARSED_DATA
329 { InputReportByteLength USHORT }
330 { OutputReportByteLength USHORT }
331 { FeatureReportByteLength USHORT }
332 { Reserved USHORT[17] }
333 { NumberLinkCollectionNodes USHORT }
334 { NumberInputButtonCaps USHORT }
335 { NumberInputValueCaps USHORT }
336 { NumberInputDataIndices USHORT }
337 { NumberOutputButtonCaps USHORT }
338 { NumberOutputValueCaps USHORT }
339 { NumberOutputDataIndices USHORT }
340 { NumberFeatureButtonCaps USHORT }
341 { NumberFeatureValueCaps USHORT }
342 { NumberFeatureDataIndices USHORT } ;
343 TYPEDEF: HIDP_CAPS* PHIDP_CAPS
349 TYPEDEF: HIDP_DATA* PHIDP_DATA
351 STRUCT: HIDP_UNKNOWN_TOKEN
353 { Reserved UCHAR[3] }
355 TYPEDEF: HIDP_UNKNOWN_TOKEN* PHIDP_UNKNOWN_TOKEN
357 STRUCT: HIDP_EXTENDED_ATTRIBUTES
358 { NumGlobalUnknowns UCHAR }
359 { Reserved UCHAR[3] }
360 { GlobalUnknowns PHIDP_UNKNOWN_TOKEN }
362 TYPEDEF: HIDP_EXTENDED_ATTRIBUTES* PHIDP_EXTENDED_ATTRIBUTES
366 PHIDP_PREPARSED_DATA PreparsedData,
367 PHIDP_CAPS Capabilities
371 HidP_GetLinkCollectionNodes (
372 PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
373 PULONG LinkCollectionNodesLength,
374 PHIDP_PREPARSED_DATA PreparsedData
378 HidP_GetSpecificButtonCaps (
379 HIDP_REPORT_TYPE ReportType,
381 USHORT LinkCollection,
383 PHIDP_BUTTON_CAPS ButtonCaps,
384 PUSHORT ButtonCapsLength,
385 PHIDP_PREPARSED_DATA PreparsedData
390 HIDP_REPORT_TYPE ReportType,
391 PHIDP_BUTTON_CAPS ButtonCaps,
392 PUSHORT ButtonCapsLength,
393 PHIDP_PREPARSED_DATA PreparsedData
397 HidP_GetSpecificValueCaps (
398 HIDP_REPORT_TYPE ReportType,
400 USHORT LinkCollection,
402 PHIDP_VALUE_CAPS ValueCaps,
403 PUSHORT ValueCapsLength,
404 PHIDP_PREPARSED_DATA PreparsedData
409 HIDP_REPORT_TYPE ReportType,
410 PHIDP_VALUE_CAPS ValueCaps,
411 PUSHORT ValueCapsLength,
412 PHIDP_PREPARSED_DATA PreparsedData
416 HidP_GetExtendedAttributes (
417 HIDP_REPORT_TYPE ReportType,
419 PHIDP_PREPARSED_DATA PreparsedData,
420 PHIDP_EXTENDED_ATTRIBUTES Attributes,
421 PULONG LengthAttributes
425 HidP_InitializeReportForID (
426 HIDP_REPORT_TYPE ReportType,
428 PHIDP_PREPARSED_DATA PreparsedData,
435 HIDP_REPORT_TYPE ReportType,
438 PHIDP_PREPARSED_DATA PreparsedData,
445 HIDP_REPORT_TYPE ReportType,
448 PHIDP_PREPARSED_DATA PreparsedData,
454 HidP_MaxDataListLength (
455 HIDP_REPORT_TYPE ReportType,
456 PHIDP_PREPARSED_DATA PreparsedData
461 HIDP_REPORT_TYPE ReportType,
463 USHORT LinkCollection,
466 PHIDP_PREPARSED_DATA PreparsedData,
470 ALIAS: HidP_SetButtons HidP_SetUsages
474 HIDP_REPORT_TYPE ReportType,
476 USHORT LinkCollection,
479 PHIDP_PREPARSED_DATA PreparsedData,
483 ALIAS: HidP_UnsetButtons HidP_UnsetUsages
487 HIDP_REPORT_TYPE ReportType,
489 USHORT LinkCollection,
492 PHIDP_PREPARSED_DATA PreparsedData,
496 ALIAS: HidP_GetButtons HidP_GetUsages
500 HIDP_REPORT_TYPE ReportType,
501 USHORT LinkCollection,
502 PUSAGE_AND_PAGE ButtonList,
504 PHIDP_PREPARSED_DATA PreparsedData,
508 ALIAS: HidP_GetButtonsEx HidP_GetUsagesEx
511 HidP_MaxUsageListLength (
512 HIDP_REPORT_TYPE ReportType,
514 PHIDP_PREPARSED_DATA PreparsedData
519 HIDP_REPORT_TYPE ReportType,
521 USHORT LinkCollection,
524 PHIDP_PREPARSED_DATA PreparsedData,
530 HidP_SetScaledUsageValue (
531 HIDP_REPORT_TYPE ReportType,
533 USHORT LinkCollection,
536 PHIDP_PREPARSED_DATA PreparsedData,
542 HidP_SetUsageValueArray (
543 HIDP_REPORT_TYPE ReportType,
545 USHORT LinkCollection,
548 USHORT UsageValueByteLength,
549 PHIDP_PREPARSED_DATA PreparsedData,
557 HIDP_REPORT_TYPE ReportType,
559 USHORT LinkCollection,
562 PHIDP_PREPARSED_DATA PreparsedData,
568 HidP_GetScaledUsageValue (
569 HIDP_REPORT_TYPE ReportType,
571 USHORT LinkCollection,
574 PHIDP_PREPARSED_DATA PreparsedData,
580 HidP_GetUsageValueArray (
581 HIDP_REPORT_TYPE ReportType,
583 USHORT LinkCollection,
586 USHORT UsageValueByteLength,
587 PHIDP_PREPARSED_DATA PreparsedData,
593 HidP_UsageListDifference (
594 PUSAGE PreviousUsageList,
595 PUSAGE CurrentUsageList,
596 PUSAGE BreakUsageList,
597 PUSAGE MakeUsageList,
598 ULONG UsageListLength
602 HidP_UsageAndPageListDifference (
603 PUSAGE_AND_PAGE PreviousUsageList,
604 PUSAGE_AND_PAGE CurrentUsageList,
605 PUSAGE_AND_PAGE BreakUsageList,
606 PUSAGE_AND_PAGE MakeUsageList,
607 ULONG UsageListLength
610 ENUM: HIDP_KEYBOARD_DIRECTION
614 STRUCT: HIDP_KEYBOARD_MODIFIER_STATE
616 TYPEDEF: HIDP_KEYBOARD_MODIFIER_STATE* PHIDP_KEYBOARD_MODIFIER_STATE
618 CALLBACK: BOOLEAN PHIDP_INSERT_SCANCODES (
624 HidP_TranslateUsageAndPagesToI8042ScanCodes (
625 PUSAGE_AND_PAGE ChangedUsageList,
626 ULONG UsageListLength,
627 HIDP_KEYBOARD_DIRECTION KeyAction,
628 PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
629 PHIDP_INSERT_SCANCODES InsertCodesProcedure,
630 PVOID InsertCodesContext
635 HidP_TranslateUsagesToI8042ScanCodes (
636 PUSAGE ChangedUsageList,
637 ULONG UsageListLength,
638 HIDP_KEYBOARD_DIRECTION KeyAction,
639 PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
640 PHIDP_INSERT_SCANCODES InsertCodesProcedure,
641 PVOID InsertCodesContext
644 CONSTANT: FACILITY_HID_ERROR_CODE HEX: 11
645 : HIDP_ERROR_CODES ( SEV CODE -- HRESULT )
646 [ 28 shift ] dip bitor FACILITY_HID_ERROR_CODE 16 shift bitor ; inline
647 : HIDP_STATUS_SUCCESS ( -- HRESULT ) HEX: 0 HEX: 0 HIDP_ERROR_CODES ; inline
648 : HIDP_STATUS_NULL ( -- HRESULT ) HEX: 8 HEX: 1 HIDP_ERROR_CODES ; inline
649 : HIDP_STATUS_INVALID_PREPARSED_DATA ( -- HRESULT ) HEX: C HEX: 1 HIDP_ERROR_CODES ; inline
650 : HIDP_STATUS_INVALID_REPORT_TYPE ( -- HRESULT ) HEX: C HEX: 2 HIDP_ERROR_CODES ; inline
651 : HIDP_STATUS_INVALID_REPORT_LENGTH ( -- HRESULT ) HEX: C HEX: 3 HIDP_ERROR_CODES ; inline
652 : HIDP_STATUS_USAGE_NOT_FOUND ( -- HRESULT ) HEX: C HEX: 4 HIDP_ERROR_CODES ; inline
653 : HIDP_STATUS_VALUE_OUT_OF_RANGE ( -- HRESULT ) HEX: C HEX: 5 HIDP_ERROR_CODES ; inline
654 : HIDP_STATUS_BAD_LOG_PHY_VALUES ( -- HRESULT ) HEX: C HEX: 6 HIDP_ERROR_CODES ; inline
655 : HIDP_STATUS_BUFFER_TOO_SMALL ( -- HRESULT ) HEX: C HEX: 7 HIDP_ERROR_CODES ; inline
656 : HIDP_STATUS_INTERNAL_ERROR ( -- HRESULT ) HEX: C HEX: 8 HIDP_ERROR_CODES ; inline
657 : HIDP_STATUS_I8042_TRANS_UNKNOWN ( -- HRESULT ) HEX: C HEX: 9 HIDP_ERROR_CODES ; inline
658 : HIDP_STATUS_INCOMPATIBLE_REPORT_ID ( -- HRESULT ) HEX: C HEX: A HIDP_ERROR_CODES ; inline
659 : HIDP_STATUS_NOT_VALUE_ARRAY ( -- HRESULT ) HEX: C HEX: B HIDP_ERROR_CODES ; inline
660 : HIDP_STATUS_IS_VALUE_ARRAY ( -- HRESULT ) HEX: C HEX: C HIDP_ERROR_CODES ; inline
661 : HIDP_STATUS_DATA_INDEX_NOT_FOUND ( -- HRESULT ) HEX: C HEX: D HIDP_ERROR_CODES ; inline
662 : HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE ( -- HRESULT ) HEX: C HEX: E HIDP_ERROR_CODES ; inline
663 : HIDP_STATUS_BUTTON_NOT_PRESSED ( -- HRESULT ) HEX: C HEX: F HIDP_ERROR_CODES ; inline
664 : HIDP_STATUS_REPORT_DOES_NOT_EXIST ( -- HRESULT ) HEX: C HEX: 10 HIDP_ERROR_CODES ; inline
665 : HIDP_STATUS_NOT_IMPLEMENTED ( -- HRESULT ) HEX: C HEX: 20 HIDP_ERROR_CODES ; inline
666 : HIDP_STATUS_I8242_TRANS_UNKNOWN ( -- HRESULT ) HIDP_STATUS_I8042_TRANS_UNKNOWN ; inline
668 STRUCT: HIDD_CONFIGURATION
671 { RingBufferSize ULONG } ;
672 TYPEDEF: HIDD_CONFIGURATION* PHIDD_CONFIGURATION
674 STRUCT: HIDD_ATTRIBUTES
678 { VersionNumber USHORT } ;
679 TYPEDEF: HIDD_ATTRIBUTES* PHIDD_ATTRIBUTES
683 HANDLE HidDeviceObject,
684 PHIDD_ATTRIBUTES Attributes
693 HidD_GetPreparsedData (
694 HANDLE HidDeviceObject,
695 PHIDP_PREPARSED_DATA* PreparsedData
699 HidD_FreePreparsedData (
700 PHIDP_PREPARSED_DATA PreparsedData
705 HANDLE HidDeviceObject
709 HidD_GetConfiguration (
710 HANDLE HidDeviceObject,
711 PHIDD_CONFIGURATION Configuration,
712 ULONG ConfigurationLength
716 HidD_SetConfiguration (
717 HANDLE HidDeviceObject,
718 PHIDD_CONFIGURATION Configuration,
719 ULONG ConfigurationLength
724 HANDLE HidDeviceObject,
726 ULONG ReportBufferLength
731 HANDLE HidDeviceObject,
733 ULONG ReportBufferLength
737 HidD_GetInputReport (
738 HANDLE HidDeviceObject,
740 ULONG ReportBufferLength
744 HidD_SetOutputReport (
745 HANDLE HidDeviceObject,
747 ULONG ReportBufferLength
751 HidD_GetNumInputBuffers (
752 HANDLE HidDeviceObject,
757 HidD_SetNumInputBuffers (
758 HANDLE HidDeviceObject,
763 HidD_GetPhysicalDescriptor (
764 HANDLE HidDeviceObject,
770 HidD_GetManufacturerString (
771 HANDLE HidDeviceObject,
777 HidD_GetProductString (
778 HANDLE HidDeviceObject,
784 HidD_GetIndexedString (
785 HANDLE HidDeviceObject,
792 HidD_GetSerialNumberString (
793 HANDLE HidDeviceObject,
799 HidD_GetMsGenreDescriptor (
800 HANDLE HidDeviceObject,