1 ! Copyright (C) 2010 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.libraries alien.syntax classes.struct
4 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
213 TYPEDEF: int HIDP_REPORT_TYPE
215 STRUCT: USAGE_AND_PAGE
217 { UsagePage USAGE } ;
218 TYPEDEF: USAGE_AND_PAGE* PUSAGE_AND_PAGE
220 : HidP_IsSameUsageAndPage ( u1 u2 -- ? ) = ; inline
222 STRUCT: HIDP_BUTTONS_CAPS_range
227 { DesignatorMin USHORT }
228 { DesignatorMax USHORT }
229 { DataIndexMin USHORT }
230 { DataIndexMax USHORT } ;
232 STRUCT: HIDP_BUTTONS_CAPS_not_range
235 { StringIndex USHORT }
237 { DesignatorIndex USHORT }
240 { Reserved4 USHORT } ;
242 UNION-STRUCT: HIDP_BUTTONS_CAPS_union
243 { Range HIDP_BUTTONS_CAPS_range }
244 { NotRange HIDP_BUTTONS_CAPS_not_range } ;
246 STRUCT: HIDP_BUTTON_CAPS
251 { LinkCollection USHORT }
253 { LinkUsagePage USAGE }
255 { IsStringRange BOOLEAN }
256 { IsDesignatorRange BOOLEAN }
257 { IsAbsolute BOOLEAN }
258 { Reserved ULONG[10] }
259 { Union HIDP_BUTTONS_CAPS_union } ;
260 TYPEDEF: HIDP_BUTTON_CAPS* PHIDP_BUTTON_CAPS
262 STRUCT: HIDP_VALUE_CAPS_range
267 { DesignatorMin USHORT }
268 { DesignatorMax USHORT }
269 { DataIndexMin USHORT }
270 { DataIndexMax USHORT } ;
272 STRUCT: HIDP_VALUE_CAPS_not_range
275 { StringIndex USHORT }
277 { DesignatorIndex USHORT }
280 { Reserved4 USHORT } ;
282 UNION-STRUCT: HIDP_VALUE_CAPS_union
283 { Range HIDP_VALUE_CAPS_range }
284 { NotRange HIDP_VALUE_CAPS_not_range } ;
286 STRUCT: HIDP_VALUE_CAPS
291 { LinkCollection USHORT }
293 { LinkUsagePage USAGE }
295 { IsStringRange BOOLEAN }
296 { IsDesignatorRange BOOLEAN }
297 { IsAbsolute BOOLEAN }
301 { ReportCount USHORT }
302 { Reserved2 USHORT[5] }
309 { Union HIDP_VALUE_CAPS_union } ;
310 TYPEDEF: HIDP_VALUE_CAPS* PHIDP_VALUE_CAPS
312 STRUCT: HIDP_LINK_COLLECTION_NODE
314 { LinkUsagePage USAGE }
316 { NumberOfChildren USHORT }
317 { NextSibling USHORT }
318 { FirstChild USHORT }
319 { CollectionTypeIsAliasBitfield ULONG }
320 { UserContext PVOID } ;
321 TYPEDEF: HIDP_LINK_COLLECTION_NODE* PHIDP_LINK_COLLECTION_NODE
323 TYPEDEF: PUCHAR PHIDP_REPORT_DESCRIPTOR
324 C-TYPE: HIDP_PREPARSED_DATA
325 TYPEDEF: HIDP_PREPARSED_DATA* PHIDP_PREPARSED_DATA
330 { InputReportByteLength USHORT }
331 { OutputReportByteLength USHORT }
332 { FeatureReportByteLength USHORT }
333 { Reserved USHORT[17] }
334 { NumberLinkCollectionNodes USHORT }
335 { NumberInputButtonCaps USHORT }
336 { NumberInputValueCaps USHORT }
337 { NumberInputDataIndices USHORT }
338 { NumberOutputButtonCaps USHORT }
339 { NumberOutputValueCaps USHORT }
340 { NumberOutputDataIndices USHORT }
341 { NumberFeatureButtonCaps USHORT }
342 { NumberFeatureValueCaps USHORT }
343 { NumberFeatureDataIndices USHORT } ;
344 TYPEDEF: HIDP_CAPS* PHIDP_CAPS
350 TYPEDEF: HIDP_DATA* PHIDP_DATA
352 STRUCT: HIDP_UNKNOWN_TOKEN
354 { Reserved UCHAR[3] }
356 TYPEDEF: HIDP_UNKNOWN_TOKEN* PHIDP_UNKNOWN_TOKEN
358 STRUCT: HIDP_EXTENDED_ATTRIBUTES
359 { NumGlobalUnknowns UCHAR }
360 { Reserved UCHAR[3] }
361 { GlobalUnknowns PHIDP_UNKNOWN_TOKEN }
363 TYPEDEF: HIDP_EXTENDED_ATTRIBUTES* PHIDP_EXTENDED_ATTRIBUTES
367 PHIDP_PREPARSED_DATA PreparsedData,
368 PHIDP_CAPS Capabilities
372 HidP_GetLinkCollectionNodes (
373 PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
374 PULONG LinkCollectionNodesLength,
375 PHIDP_PREPARSED_DATA PreparsedData
379 HidP_GetSpecificButtonCaps (
380 HIDP_REPORT_TYPE ReportType,
382 USHORT LinkCollection,
384 PHIDP_BUTTON_CAPS ButtonCaps,
385 PUSHORT ButtonCapsLength,
386 PHIDP_PREPARSED_DATA PreparsedData
391 HIDP_REPORT_TYPE ReportType,
392 PHIDP_BUTTON_CAPS ButtonCaps,
393 PUSHORT ButtonCapsLength,
394 PHIDP_PREPARSED_DATA PreparsedData
398 HidP_GetSpecificValueCaps (
399 HIDP_REPORT_TYPE ReportType,
401 USHORT LinkCollection,
403 PHIDP_VALUE_CAPS ValueCaps,
404 PUSHORT ValueCapsLength,
405 PHIDP_PREPARSED_DATA PreparsedData
410 HIDP_REPORT_TYPE ReportType,
411 PHIDP_VALUE_CAPS ValueCaps,
412 PUSHORT ValueCapsLength,
413 PHIDP_PREPARSED_DATA PreparsedData
417 HidP_GetExtendedAttributes (
418 HIDP_REPORT_TYPE ReportType,
420 PHIDP_PREPARSED_DATA PreparsedData,
421 PHIDP_EXTENDED_ATTRIBUTES Attributes,
422 PULONG LengthAttributes
426 HidP_InitializeReportForID (
427 HIDP_REPORT_TYPE ReportType,
429 PHIDP_PREPARSED_DATA PreparsedData,
436 HIDP_REPORT_TYPE ReportType,
439 PHIDP_PREPARSED_DATA PreparsedData,
446 HIDP_REPORT_TYPE ReportType,
449 PHIDP_PREPARSED_DATA PreparsedData,
455 HidP_MaxDataListLength (
456 HIDP_REPORT_TYPE ReportType,
457 PHIDP_PREPARSED_DATA PreparsedData
462 HIDP_REPORT_TYPE ReportType,
464 USHORT LinkCollection,
467 PHIDP_PREPARSED_DATA PreparsedData,
471 ALIAS: HidP_SetButtons HidP_SetUsages
475 HIDP_REPORT_TYPE ReportType,
477 USHORT LinkCollection,
480 PHIDP_PREPARSED_DATA PreparsedData,
484 ALIAS: HidP_UnsetButtons HidP_UnsetUsages
488 HIDP_REPORT_TYPE ReportType,
490 USHORT LinkCollection,
493 PHIDP_PREPARSED_DATA PreparsedData,
497 ALIAS: HidP_GetButtons HidP_GetUsages
501 HIDP_REPORT_TYPE ReportType,
502 USHORT LinkCollection,
503 PUSAGE_AND_PAGE ButtonList,
505 PHIDP_PREPARSED_DATA PreparsedData,
509 ALIAS: HidP_GetButtonsEx HidP_GetUsagesEx
512 HidP_MaxUsageListLength (
513 HIDP_REPORT_TYPE ReportType,
515 PHIDP_PREPARSED_DATA PreparsedData
520 HIDP_REPORT_TYPE ReportType,
522 USHORT LinkCollection,
525 PHIDP_PREPARSED_DATA PreparsedData,
531 HidP_SetScaledUsageValue (
532 HIDP_REPORT_TYPE ReportType,
534 USHORT LinkCollection,
537 PHIDP_PREPARSED_DATA PreparsedData,
543 HidP_SetUsageValueArray (
544 HIDP_REPORT_TYPE ReportType,
546 USHORT LinkCollection,
549 USHORT UsageValueByteLength,
550 PHIDP_PREPARSED_DATA PreparsedData,
558 HIDP_REPORT_TYPE ReportType,
560 USHORT LinkCollection,
563 PHIDP_PREPARSED_DATA PreparsedData,
569 HidP_GetScaledUsageValue (
570 HIDP_REPORT_TYPE ReportType,
572 USHORT LinkCollection,
575 PHIDP_PREPARSED_DATA PreparsedData,
581 HidP_GetUsageValueArray (
582 HIDP_REPORT_TYPE ReportType,
584 USHORT LinkCollection,
587 USHORT UsageValueByteLength,
588 PHIDP_PREPARSED_DATA PreparsedData,
594 HidP_UsageListDifference (
595 PUSAGE PreviousUsageList,
596 PUSAGE CurrentUsageList,
597 PUSAGE BreakUsageList,
598 PUSAGE MakeUsageList,
599 ULONG UsageListLength
603 HidP_UsageAndPageListDifference (
604 PUSAGE_AND_PAGE PreviousUsageList,
605 PUSAGE_AND_PAGE CurrentUsageList,
606 PUSAGE_AND_PAGE BreakUsageList,
607 PUSAGE_AND_PAGE MakeUsageList,
608 ULONG UsageListLength
614 TYPEDEF: int HIDP_KEYBOARD_DIRECTION
616 STRUCT: HIDP_KEYBOARD_MODIFIER_STATE
618 TYPEDEF: HIDP_KEYBOARD_MODIFIER_STATE* PHIDP_KEYBOARD_MODIFIER_STATE
620 CALLBACK: BOOLEAN PHIDP_INSERT_SCANCODES (
626 HidP_TranslateUsageAndPagesToI8042ScanCodes (
627 PUSAGE_AND_PAGE ChangedUsageList,
628 ULONG UsageListLength,
629 HIDP_KEYBOARD_DIRECTION KeyAction,
630 PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
631 PHIDP_INSERT_SCANCODES InsertCodesProcedure,
632 PVOID InsertCodesContext
637 HidP_TranslateUsagesToI8042ScanCodes (
638 PUSAGE ChangedUsageList,
639 ULONG UsageListLength,
640 HIDP_KEYBOARD_DIRECTION KeyAction,
641 PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
642 PHIDP_INSERT_SCANCODES InsertCodesProcedure,
643 PVOID InsertCodesContext
646 CONSTANT: FACILITY_HID_ERROR_CODE HEX: 11
647 : HIDP_ERROR_CODES ( SEV CODE -- HRESULT )
648 [ 28 shift ] dip bitor FACILITY_HID_ERROR_CODE 16 shift bitor ; inline
649 : HIDP_STATUS_SUCCESS ( -- HRESULT ) HEX: 0 HEX: 0 HIDP_ERROR_CODES ; inline
650 : HIDP_STATUS_NULL ( -- HRESULT ) HEX: 8 HEX: 1 HIDP_ERROR_CODES ; inline
651 : HIDP_STATUS_INVALID_PREPARSED_DATA ( -- HRESULT ) HEX: C HEX: 1 HIDP_ERROR_CODES ; inline
652 : HIDP_STATUS_INVALID_REPORT_TYPE ( -- HRESULT ) HEX: C HEX: 2 HIDP_ERROR_CODES ; inline
653 : HIDP_STATUS_INVALID_REPORT_LENGTH ( -- HRESULT ) HEX: C HEX: 3 HIDP_ERROR_CODES ; inline
654 : HIDP_STATUS_USAGE_NOT_FOUND ( -- HRESULT ) HEX: C HEX: 4 HIDP_ERROR_CODES ; inline
655 : HIDP_STATUS_VALUE_OUT_OF_RANGE ( -- HRESULT ) HEX: C HEX: 5 HIDP_ERROR_CODES ; inline
656 : HIDP_STATUS_BAD_LOG_PHY_VALUES ( -- HRESULT ) HEX: C HEX: 6 HIDP_ERROR_CODES ; inline
657 : HIDP_STATUS_BUFFER_TOO_SMALL ( -- HRESULT ) HEX: C HEX: 7 HIDP_ERROR_CODES ; inline
658 : HIDP_STATUS_INTERNAL_ERROR ( -- HRESULT ) HEX: C HEX: 8 HIDP_ERROR_CODES ; inline
659 : HIDP_STATUS_I8042_TRANS_UNKNOWN ( -- HRESULT ) HEX: C HEX: 9 HIDP_ERROR_CODES ; inline
660 : HIDP_STATUS_INCOMPATIBLE_REPORT_ID ( -- HRESULT ) HEX: C HEX: A HIDP_ERROR_CODES ; inline
661 : HIDP_STATUS_NOT_VALUE_ARRAY ( -- HRESULT ) HEX: C HEX: B HIDP_ERROR_CODES ; inline
662 : HIDP_STATUS_IS_VALUE_ARRAY ( -- HRESULT ) HEX: C HEX: C HIDP_ERROR_CODES ; inline
663 : HIDP_STATUS_DATA_INDEX_NOT_FOUND ( -- HRESULT ) HEX: C HEX: D HIDP_ERROR_CODES ; inline
664 : HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE ( -- HRESULT ) HEX: C HEX: E HIDP_ERROR_CODES ; inline
665 : HIDP_STATUS_BUTTON_NOT_PRESSED ( -- HRESULT ) HEX: C HEX: F HIDP_ERROR_CODES ; inline
666 : HIDP_STATUS_REPORT_DOES_NOT_EXIST ( -- HRESULT ) HEX: C HEX: 10 HIDP_ERROR_CODES ; inline
667 : HIDP_STATUS_NOT_IMPLEMENTED ( -- HRESULT ) HEX: C HEX: 20 HIDP_ERROR_CODES ; inline
668 : HIDP_STATUS_I8242_TRANS_UNKNOWN ( -- HRESULT ) HIDP_STATUS_I8042_TRANS_UNKNOWN ; inline
670 STRUCT: HIDD_CONFIGURATION
673 { RingBufferSize ULONG } ;
674 TYPEDEF: HIDD_CONFIGURATION* PHIDD_CONFIGURATION
676 STRUCT: HIDD_ATTRIBUTES
680 { VersionNumber USHORT } ;
681 TYPEDEF: HIDD_ATTRIBUTES* PHIDD_ATTRIBUTES
685 HANDLE HidDeviceObject,
686 PHIDD_ATTRIBUTES Attributes
695 HidD_GetPreparsedData (
696 HANDLE HidDeviceObject,
697 PHIDP_PREPARSED_DATA* PreparsedData
701 HidD_FreePreparsedData (
702 PHIDP_PREPARSED_DATA PreparsedData
707 HANDLE HidDeviceObject
711 HidD_GetConfiguration (
712 HANDLE HidDeviceObject,
713 PHIDD_CONFIGURATION Configuration,
714 ULONG ConfigurationLength
718 HidD_SetConfiguration (
719 HANDLE HidDeviceObject,
720 PHIDD_CONFIGURATION Configuration,
721 ULONG ConfigurationLength
726 HANDLE HidDeviceObject,
728 ULONG ReportBufferLength
733 HANDLE HidDeviceObject,
735 ULONG ReportBufferLength
739 HidD_GetInputReport (
740 HANDLE HidDeviceObject,
742 ULONG ReportBufferLength
746 HidD_SetOutputReport (
747 HANDLE HidDeviceObject,
749 ULONG ReportBufferLength
753 HidD_GetNumInputBuffers (
754 HANDLE HidDeviceObject,
759 HidD_SetNumInputBuffers (
760 HANDLE HidDeviceObject,
765 HidD_GetPhysicalDescriptor (
766 HANDLE HidDeviceObject,
772 HidD_GetManufacturerString (
773 HANDLE HidDeviceObject,
779 HidD_GetProductString (
780 HANDLE HidDeviceObject,
786 HidD_GetIndexedString (
787 HANDLE HidDeviceObject,
794 HidD_GetSerialNumberString (
795 HANDLE HidDeviceObject,
801 HidD_GetMsGenreDescriptor (
802 HANDLE HidDeviceObject,