]> gitweb.factorcode.org Git - factor.git/blob - basis/windows/dinput/dinput.factor
Fixing failing unit tests in compiler.tree.propagation due to constraints
[factor.git] / basis / windows / dinput / dinput.factor
1 USING: windows.kernel32 windows.ole32 windows.com windows.com.syntax
2 alien alien.c-types alien.syntax kernel system namespaces math
3 classes.struct ;
4 IN: windows.dinput
5
6 LIBRARY: dinput
7
8 TYPEDEF: void* LPDIENUMDEVICESCALLBACKW
9 : LPDIENUMDEVICESCALLBACKW ( quot -- alien )
10     [ "BOOL" { "LPCDIDEVICEINSTANCEW" "LPVOID" } "stdcall" ]
11     dip alien-callback ; inline
12 TYPEDEF: void* LPDIENUMDEVICESBYSEMANTICSCBW
13 : LPDIENUMDEVICESBYSEMANTICSCBW ( quot -- alien )
14     [ "BOOL" { "LPCDIDEVICEINSTANCEW" "IDirectInputDevice8W*" "DWORD" "DWORD" "LPVOID" } "stdcall" ]
15     dip alien-callback ; inline
16 TYPEDEF: void* LPDICONFIGUREDEVICESCALLBACK
17 : LPDICONFIGUREDEVICESCALLBACK ( quot -- alien )
18     [ "BOOL" { "IUnknown*" "LPVOID" } "stdcall" ]
19     dip alien-callback ; inline
20 TYPEDEF: void* LPDIENUMEFFECTSCALLBACKW
21 : LPDIENUMEFFECTSCALLBACKW ( quot -- alien )
22     [ "BOOL" { "LPCDIEFFECTINFOW" "LPVOID" } "stdcall" ]
23     dip alien-callback ; inline
24 TYPEDEF: void* LPDIENUMCREATEDEFFECTOBJECTSCALLBACK
25 : LPDIENUMCREATEDEFFECTOBJECTSCALLBACK ( quot -- callback )
26     [ "BOOL" { "LPDIRECTINPUTEFFECT" "LPVOID" } "stdcall" ]
27     dip alien-callback ; inline
28 TYPEDEF: void* LPDIENUMEFFECTSINFILECALLBACK
29 : LPDIENUMEFFECTSINFILECALLBACK ( quot -- callback )
30     [ "BOOL" { "LPCDIFILEEFFECT" "LPVOID" } "stdcall" ]
31     dip alien-callback ; inline
32 TYPEDEF: void* LPDIENUMDEVICEOBJECTSCALLBACKW
33 : LPDIENUMDEVICEOBJECTSCALLBACKW ( quot -- callback )
34     [ "BOOL" { "LPCDIDEVICEOBJECTINSTANCEW" "LPVOID" } "stdcall" ]
35     dip alien-callback ; inline
36
37 TYPEDEF: DWORD D3DCOLOR
38
39 STRUCT: DIDEVICEINSTANCEW
40     { dwSize          DWORD      }
41     { guidInstance    GUID       }
42     { guidProduct     GUID       }
43     { dwDevType       DWORD      }
44     { tszInstanceName WCHAR[260] }
45     { tszProductName  WCHAR[260] }
46     { guidFFDriver    GUID       }
47     { wUsagePage      WORD       }
48     { wUsage          WORD       } ;
49 TYPEDEF: DIDEVICEINSTANCEW* LPDIDEVICEINSTANCEW
50 TYPEDEF: DIDEVICEINSTANCEW* LPCDIDEVICEINSTANCEW
51 UNION-STRUCT: DIACTION-union
52     { lptszActionName LPCWSTR }
53     { uResIdString    UINT    } ;
54 STRUCT: DIACTIONW
55     { uAppData     UINT_PTR       }
56     { dwSemantic   DWORD          }
57     { dwFlags      DWORD          }
58     { union        DIACTION-union }
59     { guidInstance GUID           }
60     { dwObjID      DWORD          }
61     { dwHow        DWORD          } ;
62 TYPEDEF: DIACTIONW* LPDIACTIONW
63 TYPEDEF: DIACTIONW* LPCDIACTIONW
64 STRUCT: DIACTIONFORMATW
65     { dwSize        DWORD       }
66     { dwActionSize  DWORD       }
67     { dwDataSize    DWORD       }
68     { dwNumActions  DWORD       }
69     { rgoAction     LPDIACTIONW }
70     { guidActionMap GUID        }
71     { dwGenre       DWORD       }
72     { dwBufferSize  DWORD       }
73     { lAxisMin      LONG        }
74     { lAxisMax      LONG        }
75     { hInstString   HINSTANCE   }
76     { ftTimeStamp   FILETIME    }
77     { dwCRC         DWORD       }
78     { tszActionMap  WCHAR[260]  } ;
79 TYPEDEF: DIACTIONFORMATW* LPDIACTIONFORMATW
80 TYPEDEF: DIACTIONFORMATW* LPCDIACTIONFORMATW
81 STRUCT: DICOLORSET
82     { dwSize            DWORD    }
83     { cTextFore         D3DCOLOR }
84     { cTextHighlight    D3DCOLOR }
85     { cCalloutLine      D3DCOLOR }
86     { cCalloutHighlight D3DCOLOR }
87     { cBorder           D3DCOLOR }
88     { cControlFill      D3DCOLOR }
89     { cHighlightFill    D3DCOLOR }
90     { cAreaFill         D3DCOLOR } ;
91 TYPEDEF: DICOLORSET* LPDICOLORSET
92 TYPEDEF: DICOLORSET* LPCDICOLORSET
93
94 STRUCT: DICONFIGUREDEVICESPARAMSW
95     { dwSize         DWORD             }
96     { dwcUsers       DWORD             }
97     { lptszUserNames LPWSTR            }
98     { dwcFormats     DWORD             }
99     { lprgFormats    LPDIACTIONFORMATW }
100     { hwnd           HWND              }
101     { dics           DICOLORSET        }
102     { lpUnkDDSTarget IUnknown*         } ;
103 TYPEDEF: DICONFIGUREDEVICESPARAMSW* LPDICONFIGUREDEVICESPARAMSW
104 TYPEDEF: DICONFIGUREDEVICESPARAMSW* LPDICONFIGUREDEVICESPARAMSW
105
106 STRUCT: DIDEVCAPS
107     { dwSize DWORD }
108     { dwFlags DWORD }
109     { dwDevType DWORD }
110     { dwAxes DWORD }
111     { dwButtons DWORD }
112     { dwPOVs DWORD }
113     { dwFFSamplePeriod DWORD }
114     { dwFFMinTimeResolution DWORD }
115     { dwFirmwareRevision DWORD }
116     { dwHardwareRevision DWORD }
117     { dwFFDriverVersion DWORD } ;
118 TYPEDEF: DIDEVCAPS* LPDIDEVCAPS
119 TYPEDEF: DIDEVCAPS* LPCDIDEVCAPS
120 STRUCT: DIDEVICEOBJECTINSTANCEW
121     { dwSize DWORD }
122     { guidType GUID }
123     { dwOfs DWORD }
124     { dwType DWORD }
125     { dwFlags DWORD }
126     { tszName WCHAR[260] }
127     { dwFFMaxForce DWORD }
128     { dwFFForceResolution DWORD }
129     { wCollectionNumber WORD }
130     { wDesignatorIndex WORD }
131     { wUsagePage WORD }
132     { wUsage WORD }
133     { dwDimension DWORD }
134     { wExponent WORD }
135     { wReportId WORD } ;
136 TYPEDEF: DIDEVICEOBJECTINSTANCEW* LPDIDEVICEOBJECTINSTANCEW
137 TYPEDEF: DIDEVICEOBJECTINSTANCEW* LPCDIDEVICEOBJECTINSTANCEW
138 STRUCT: DIDEVICEOBJECTDATA
139     { dwOfs DWORD    }
140     { dwData DWORD    }
141     { dwTimeStamp DWORD    }
142     { dwSequence DWORD    }
143     { uAppData UINT_PTR } ;
144 TYPEDEF: DIDEVICEOBJECTDATA* LPDIDEVICEOBJECTDATA
145 TYPEDEF: DIDEVICEOBJECTDATA* LPCDIDEVICEOBJECTDATA
146 STRUCT: DIOBJECTDATAFORMAT
147     { pguid GUID* }
148     { dwOfs DWORD }
149     { dwType DWORD }
150     { dwFlags DWORD } ;
151 TYPEDEF: DIOBJECTDATAFORMAT* LPDIOBJECTDATAFORMAT
152 TYPEDEF: DIOBJECTDATAFORMAT* LPCDIOBJECTDATAFORMAT
153 STRUCT: DIDATAFORMAT
154     { dwSize DWORD }
155     { dwObjSize DWORD }
156     { dwFlags DWORD }
157     { dwDataSize DWORD }
158     { dwNumObjs DWORD }
159     { rgodf LPDIOBJECTDATAFORMAT } ;
160 TYPEDEF: DIDATAFORMAT* LPDIDATAFORMAT
161 TYPEDEF: DIDATAFORMAT* LPCDIDATAFORMAT
162 STRUCT: DIPROPHEADER
163     { dwSize DWORD }
164     { dwHeaderSize DWORD }
165     { dwObj DWORD }
166     { dwHow DWORD } ;
167 TYPEDEF: DIPROPHEADER* LPDIPROPHEADER
168 TYPEDEF: DIPROPHEADER* LPCDIPROPHEADER
169 STRUCT: DIPROPDWORD
170     { diph DIPROPHEADER }
171     { dwData DWORD        } ;
172 TYPEDEF: DIPROPDWORD* LPDIPROPDWORD
173 TYPEDEF: DIPROPDWORD* LPCDIPROPDWORD
174 STRUCT: DIPROPPOINTER
175     { diph DIPROPHEADER }
176     { uData UINT_PTR } ;
177 TYPEDEF: DIPROPPOINTER* LPDIPROPPOINTER
178 TYPEDEF: DIPROPPOINTER* LPCDIPROPPOINTER
179 STRUCT: DIPROPRANGE
180     { diph DIPROPHEADER }
181     { lMin LONG }
182     { lMax LONG } ;
183 TYPEDEF: DIPROPRANGE* LPDIPROPRANGE
184 TYPEDEF: DIPROPRANGE* LPCDIPROPRANGE
185 STRUCT: DIPROPCAL
186     { diph DIPROPHEADER }
187     { lMin LONG }
188     { lCenter LONG }
189     { lMax LONG } ;
190 TYPEDEF: DIPROPCAL* LPDIPROPCAL
191 TYPEDEF: DIPROPCAL* LPCDIPROPCAL
192 STRUCT: DIPROPGUIDANDPATH
193     { diph DIPROPHEADER }
194     { guidClass GUID }
195     { wszPath WCHAR[260]   } ;
196 TYPEDEF: DIPROPGUIDANDPATH* LPDIPROPGUIDANDPATH
197 TYPEDEF: DIPROPGUIDANDPATH* LPCDIPROPGUIDANDPATH
198 STRUCT: DIPROPSTRING
199     { diph DIPROPHEADER }
200     { wsz WCHAR[260]   } ;
201 TYPEDEF: DIPROPSTRING* LPDIPROPSTRING
202 TYPEDEF: DIPROPSTRING* LPCDIPROPSTRING
203 STRUCT: CPOINT
204     { lP LONG }
205     { dwLog DWORD } ;
206 STRUCT: DIPROPCPOINTS
207     { diph DIPROPHEADER }
208     { dwCPointsNum DWORD }
209     { cp CPOINT[8] } ;
210 TYPEDEF: DIPROPCPOINTS* LPDIPROPCPOINTS
211 TYPEDEF: DIPROPCPOINTS* LPCDIPROPCPOINTS
212 STRUCT: DIENVELOPE
213     { dwSize DWORD }
214     { dwAttackLevel DWORD }
215     { dwAttackTime DWORD }
216     { dwFadeLevel DWORD }
217     { dwFadeTime DWORD } ;
218 TYPEDEF: DIENVELOPE* LPDIENVELOPE
219 TYPEDEF: DIENVELOPE* LPCDIENVELOPE
220 STRUCT: DIEFFECT
221     { dwSize DWORD }
222     { dwFlags DWORD }
223     { dwDuration DWORD }
224     { dwSamplePeriod DWORD }
225     { dwGain DWORD }
226     { dwTriggerButton DWORD }
227     { dwTriggerRepeatInterval DWORD }
228     { cAxes DWORD }
229     { rgdwAxes LPDWORD }
230     { rglDirection LPLONG }
231     { lpEnvelope LPDIENVELOPE }
232     { cbTypeSpecificParams DWORD }
233     { lpvTypeSpecificParams LPVOID }
234     { dwStartDelay DWORD } ;
235 TYPEDEF: DIEFFECT* LPDIEFFECT
236 TYPEDEF: DIEFFECT* LPCDIEFFECT
237 STRUCT: DIEFFECTINFOW
238     { dwSize          DWORD      }
239     { guid            GUID       }
240     { dwEffType       DWORD      }
241     { dwStaticParams  DWORD      }
242     { dwDynamicParams DWORD      }
243     { tszName         WCHAR[260] } ;
244 TYPEDEF: DIEFFECTINFOW* LPDIEFFECTINFOW
245 TYPEDEF: DIEFFECTINFOW* LPCDIEFFECTINFOW
246 STRUCT: DIEFFESCAPE
247     { dwSize       DWORD  }
248     { dwCommand    DWORD  }
249     { lpvInBuffer  LPVOID }
250     { cbInBuffer   DWORD  }
251     { lpvOutBuffer LPVOID }
252     { cbOutBuffer  DWORD  } ;
253 TYPEDEF: DIEFFESCAPE* LPDIEFFESCAPE
254 TYPEDEF: DIEFFESCAPE* LPCDIEFFESCAPE
255 STRUCT: DIFILEEFFECT
256     { dwSize         DWORD       }
257     { GuidEffect     GUID        }
258     { lpDiEffect     LPCDIEFFECT }
259     { szFriendlyName CHAR[260]   } ;
260 TYPEDEF: DIFILEEFFECT* LPDIFILEEFFECT
261 TYPEDEF: DIFILEEFFECT* LPCDIFILEEFFECT
262 STRUCT: DIDEVICEIMAGEINFOW
263     { tszImagePath    WCHAR[260] }
264     { dwFlags         DWORD      }
265     { dwViewID        DWORD      }
266     { rcOverlay       RECT       }
267     { dwObjID         DWORD      }
268     { dwcValidPts     DWORD      }
269     { rgptCalloutLine POINT[5]   }
270     { rcCalloutRect   RECT       }
271     { dwTextAlign     DWORD      } ;
272 TYPEDEF: DIDEVICEIMAGEINFOW* LPDIDEVICEIMAGEINFOW
273 TYPEDEF: DIDEVICEIMAGEINFOW* LPCDIDEVICEIMAGEINFOW
274 STRUCT: DIDEVICEIMAGEINFOHEADERW
275     { dwSize          DWORD }
276     { dwSizeImageInfo DWORD }
277     { dwcViews        DWORD }
278     { dwcButtons      DWORD }
279     { dwcAxes         DWORD }
280     { dwcPOVs         DWORD }
281     { dwBufferSize    DWORD }
282     { dwBufferUsed    DWORD }
283     { lprgImageInfoArray DIDEVICEIMAGEINFOW* } ;
284 TYPEDEF: DIDEVICEIMAGEINFOHEADERW* LPDIDEVICEIMAGEINFOHEADERW
285 TYPEDEF: DIDEVICEIMAGEINFOHEADERW* LPCDIDEVICEIMAGEINFOHEADERW
286
287 STRUCT: DIMOUSESTATE2
288     { lX         LONG    }
289     { lY         LONG    }
290     { lZ         LONG    }
291     { rgbButtons BYTE[8] } ;
292 TYPEDEF: DIMOUSESTATE2* LPDIMOUSESTATE2
293 TYPEDEF: DIMOUSESTATE2* LPCDIMOUSESTATE2
294
295 STRUCT: DIJOYSTATE2
296     { lX         LONG      }
297     { lY         LONG      }
298     { lZ         LONG      }
299     { lRx        LONG      }
300     { lRy        LONG      }
301     { lRz        LONG      }
302     { rglSlider  LONG[2]   }
303     { rgdwPOV    DWORD[4]  }
304     { rgbButtons BYTE[128] }
305     { lVX        LONG      }
306     { lVY        LONG      }
307     { lVZ        LONG      }
308     { lVRx       LONG      }
309     { lVRy       LONG      }
310     { lVRz       LONG      }
311     { rglVSlider LONG[2]   }
312     { lAX        LONG      }
313     { lAY        LONG      }
314     { lAZ        LONG      }
315     { lARx       LONG      }
316     { lARy       LONG      }
317     { lARz       LONG      }
318     { rglASlider LONG[2]   }
319     { lFX        LONG      }
320     { lFY        LONG      }
321     { lFZ        LONG      }
322     { lFRx       LONG      }
323     { lFRy       LONG      }
324     { lFRz       LONG      }
325     { rglFSlider LONG[2]   } ;
326 TYPEDEF: DIJOYSTATE2* LPDIJOYSTATE2
327 TYPEDEF: DIJOYSTATE2* LPCDIJOYSTATE2
328
329 COM-INTERFACE: IDirectInputEffect IUnknown {E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}
330     HRESULT Initialize ( HINSTANCE hinst, DWORD dwVersion, REFGUID rguid )
331     HRESULT GetEffectGuid ( LPGUID pguid )
332     HRESULT GetParameters ( LPDIEFFECT peff, DWORD dwFlags )
333     HRESULT SetParameters ( LPCDIEFFECT peff, DWORD dwFlags )
334     HRESULT Start ( DWORD dwIterations, DWORD dwFlags )
335     HRESULT Stop ( )
336     HRESULT GetEffectStatus ( LPDWORD pdwFlags )
337     HRESULT Download ( )
338     HRESULT Unload ( )
339     HRESULT Escape ( LPDIEFFESCAPE pesc ) ;
340
341 COM-INTERFACE: IDirectInputDevice8W IUnknown {54D41081-DC15-4833-A41B-748F73A38179}
342     HRESULT GetCapabilities ( LPDIDEVCAPS lpDIDeviceCaps )
343     HRESULT EnumObjects ( LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags )
344     HRESULT GetProperty ( REFGUID rguidProp, LPDIPROPHEADER pdiph )
345     HRESULT SetProperty ( REFGUID rguidProp, LPCDIPROPHEADER pdiph )
346     HRESULT Acquire ( )
347     HRESULT Unacquire ( )
348     HRESULT GetDeviceState ( DWORD cbData, LPVOID lpvData )
349     HRESULT GetDeviceData ( DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags )
350     HRESULT SetDataFormat ( LPCDIDATAFORMAT lpdf )
351     HRESULT SetEventNotification ( HANDLE hEvent )
352     HRESULT SetCooperativeLevel ( HWND hwnd, DWORD dwFlags )
353     HRESULT GetObjectInfo ( LPDIDEVICEOBJECTINSTANCEW rdidoi, DWORD dwObj, DWORD dwHow )
354     HRESULT GetDeviceInfo ( LPDIDEVICEINSTANCEW pdidi )
355     HRESULT RunControlPanel ( HWND hwndOwner, DWORD dwFlags )
356     HRESULT Initialize ( HINSTANCE hinst, DWORD dwVersion, REFGUID rguid )
357     HRESULT CreateEffect ( REFGUID rguid, LPCDIEFFECT lpeff, IDirectInputEffect** ppdeff, LPUNKNOWN punkOuter )
358     HRESULT EnumEffects ( LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType )
359     HRESULT GetEffectInfo ( LPDIEFFECTINFOW pdei, REFGUID rguid )
360     HRESULT GetForceFeedbackState ( LPDWORD pdwOut )
361     HRESULT SendForceFeedbackCommand ( DWORD dwFlags )
362     HRESULT EnumCreatedEffectObjects ( LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl )
363     HRESULT Escape ( LPDIEFFESCAPE pesc )
364     HRESULT Poll ( )
365     HRESULT SendDeviceData ( DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl )
366     HRESULT EnumEffectsInFile ( LPCWSTR lpszFileName, LPDIENUMEFFECTSINFILECALLBACK lpCallback, LPVOID pvRef, DWORD dwFlags )
367     HRESULT WriteEffectToFile ( LPCWSTR lpszFileName, DWORD dwEntries, LPDIFILEEFFECT rgDiFileEffect, DWORD dwFlags )
368     HRESULT BuildActionMap ( LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags )
369     HRESULT SetActionMap ( LPDIACTIONFORMATW lpdiActionFormat, LPCWSTR lpwszUserName, DWORD dwFlags )
370     HRESULT GetImageInfo ( LPDIDEVICEIMAGEINFOHEADERW lpdiDeviceImageInfoHeader ) ;
371
372 COM-INTERFACE: IDirectInput8W IUnknown {BF798031-483A-4DA2-AA99-5D64ED369700}
373     HRESULT CreateDevice ( REFGUID rguid, IDirectInputDevice8W** lplpDevice, LPUNKNOWN pUnkOuter )
374     HRESULT EnumDevices ( DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags )
375     HRESULT GetDeviceStatus ( REFGUID rguidInstance )
376     HRESULT RunControlPanel ( HWND hwndOwner, DWORD dwFlags )
377     HRESULT Initialize ( HINSTANCE hinst, DWORD dwVersion )
378     HRESULT FindDevice ( REFGUID rguidClass, LPCWSTR pwszName, LPGUID pguidInstance )
379     HRESULT EnumDevicesBySemantics ( LPCWSTR pwszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags )
380     HRESULT ConfigureDevices ( LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData ) ;
381
382 FUNCTION: HRESULT DirectInput8Create ( HINSTANCE hinst, DWORD dwVersion, REFIID riidtlf, LPVOID* ppvOut, LPUNKNOWN punkOuter ) ;
383
384 CONSTANT: DIRECTINPUT_VERSION HEX: 0800
385                                
386 CONSTANT: DI8DEVCLASS_ALL             0
387 CONSTANT: DI8DEVCLASS_DEVICE          1
388 CONSTANT: DI8DEVCLASS_POINTER         2
389 CONSTANT: DI8DEVCLASS_KEYBOARD        3
390 CONSTANT: DI8DEVCLASS_GAMECTRL        4
391
392 CONSTANT: DIEDFL_ALLDEVICES       HEX: 00000000
393 CONSTANT: DIEDFL_ATTACHEDONLY     HEX: 00000001
394 CONSTANT: DIEDFL_FORCEFEEDBACK    HEX: 00000100
395 CONSTANT: DIEDFL_INCLUDEALIASES   HEX: 00010000
396 CONSTANT: DIEDFL_INCLUDEPHANTOMS  HEX: 00020000
397 CONSTANT: DIEDFL_INCLUDEHIDDEN    HEX: 00040000
398                                                
399 CONSTANT: DIENUM_STOP             0
400 CONSTANT: DIENUM_CONTINUE         1
401
402 CONSTANT: DIDF_ABSAXIS            1
403 CONSTANT: DIDF_RELAXIS            2
404
405 CONSTANT: DIDFT_ALL           HEX: 00000000
406          
407 CONSTANT: DIDFT_RELAXIS       HEX: 00000001
408 CONSTANT: DIDFT_ABSAXIS       HEX: 00000002
409 CONSTANT: DIDFT_AXIS          HEX: 00000003
410          
411 CONSTANT: DIDFT_PSHBUTTON     HEX: 00000004
412 CONSTANT: DIDFT_TGLBUTTON     HEX: 00000008
413 CONSTANT: DIDFT_BUTTON        HEX: 0000000C
414          
415 CONSTANT: DIDFT_POV           HEX: 00000010
416 CONSTANT: DIDFT_COLLECTION    HEX: 00000040
417 CONSTANT: DIDFT_NODATA        HEX: 00000080
418          
419 CONSTANT: DIDFT_ANYINSTANCE   HEX: 00FFFF00
420 ALIAS: DIDFT_INSTANCEMASK  DIDFT_ANYINSTANCE
421 : DIDFT_MAKEINSTANCE ( n -- instance ) 8 shift                   ; inline
422 : DIDFT_GETTYPE      ( n -- type     ) HEX: FF bitand            ; inline
423 : DIDFT_GETINSTANCE  ( n -- instance ) -8 shift HEX: FFFF bitand ; inline
424 CONSTANT: DIDFT_FFACTUATOR        HEX: 01000000
425 CONSTANT: DIDFT_FFEFFECTTRIGGER   HEX: 02000000
426 CONSTANT: DIDFT_OUTPUT            HEX: 10000000
427 CONSTANT: DIDFT_VENDORDEFINED     HEX: 04000000
428 CONSTANT: DIDFT_ALIAS             HEX: 08000000
429 CONSTANT: DIDFT_OPTIONAL          HEX: 80000000
430
431 : DIDFT_ENUMCOLLECTION ( n -- instance ) 8 shift HEX: FFFF bitand ; inline
432 CONSTANT: DIDFT_NOCOLLECTION      HEX: 00FFFF00
433
434 CONSTANT: DIDOI_FFACTUATOR        HEX: 00000001
435 CONSTANT: DIDOI_FFEFFECTTRIGGER   HEX: 00000002
436 CONSTANT: DIDOI_POLLED            HEX: 00008000
437 CONSTANT: DIDOI_ASPECTPOSITION    HEX: 00000100
438 CONSTANT: DIDOI_ASPECTVELOCITY    HEX: 00000200
439 CONSTANT: DIDOI_ASPECTACCEL       HEX: 00000300
440 CONSTANT: DIDOI_ASPECTFORCE       HEX: 00000400
441 CONSTANT: DIDOI_ASPECTMASK        HEX: 00000F00
442 CONSTANT: DIDOI_GUIDISUSAGE       HEX: 00010000
443
444 CONSTANT: DISCL_EXCLUSIVE     HEX: 00000001
445 CONSTANT: DISCL_NONEXCLUSIVE  HEX: 00000002
446 CONSTANT: DISCL_FOREGROUND    HEX: 00000004
447 CONSTANT: DISCL_BACKGROUND    HEX: 00000008
448 CONSTANT: DISCL_NOWINKEY      HEX: 00000010
449
450 CONSTANT: DIMOFS_X        0
451 CONSTANT: DIMOFS_Y        4
452 CONSTANT: DIMOFS_Z        8
453 CONSTANT: DIMOFS_BUTTON0 12
454 CONSTANT: DIMOFS_BUTTON1 13
455 CONSTANT: DIMOFS_BUTTON2 14
456 CONSTANT: DIMOFS_BUTTON3 15
457 CONSTANT: DIMOFS_BUTTON4 16
458 CONSTANT: DIMOFS_BUTTON5 17
459 CONSTANT: DIMOFS_BUTTON6 18
460 CONSTANT: DIMOFS_BUTTON7 19
461
462 CONSTANT: DIK_ESCAPE          HEX: 01
463 CONSTANT: DIK_1               HEX: 02
464 CONSTANT: DIK_2               HEX: 03
465 CONSTANT: DIK_3               HEX: 04
466 CONSTANT: DIK_4               HEX: 05
467 CONSTANT: DIK_5               HEX: 06
468 CONSTANT: DIK_6               HEX: 07
469 CONSTANT: DIK_7               HEX: 08
470 CONSTANT: DIK_8               HEX: 09
471 CONSTANT: DIK_9               HEX: 0A
472 CONSTANT: DIK_0               HEX: 0B
473 CONSTANT: DIK_MINUS           HEX: 0C
474 CONSTANT: DIK_EQUALS          HEX: 0D
475 CONSTANT: DIK_BACK            HEX: 0E
476 CONSTANT: DIK_TAB             HEX: 0F
477 CONSTANT: DIK_Q               HEX: 10
478 CONSTANT: DIK_W               HEX: 11
479 CONSTANT: DIK_E               HEX: 12
480 CONSTANT: DIK_R               HEX: 13
481 CONSTANT: DIK_T               HEX: 14
482 CONSTANT: DIK_Y               HEX: 15
483 CONSTANT: DIK_U               HEX: 16
484 CONSTANT: DIK_I               HEX: 17
485 CONSTANT: DIK_O               HEX: 18
486 CONSTANT: DIK_P               HEX: 19
487 CONSTANT: DIK_LBRACKET        HEX: 1A
488 CONSTANT: DIK_RBRACKET        HEX: 1B
489 CONSTANT: DIK_RETURN          HEX: 1C
490 CONSTANT: DIK_LCONTROL        HEX: 1D
491 CONSTANT: DIK_A               HEX: 1E
492 CONSTANT: DIK_S               HEX: 1F
493 CONSTANT: DIK_D               HEX: 20
494 CONSTANT: DIK_F               HEX: 21
495 CONSTANT: DIK_G               HEX: 22
496 CONSTANT: DIK_H               HEX: 23
497 CONSTANT: DIK_J               HEX: 24
498 CONSTANT: DIK_K               HEX: 25
499 CONSTANT: DIK_L               HEX: 26
500 CONSTANT: DIK_SEMICOLON       HEX: 27
501 CONSTANT: DIK_APOSTROPHE      HEX: 28
502 CONSTANT: DIK_GRAVE           HEX: 29
503 CONSTANT: DIK_LSHIFT          HEX: 2A
504 CONSTANT: DIK_BACKSLASH       HEX: 2B
505 CONSTANT: DIK_Z               HEX: 2C
506 CONSTANT: DIK_X               HEX: 2D
507 CONSTANT: DIK_C               HEX: 2E
508 CONSTANT: DIK_V               HEX: 2F
509 CONSTANT: DIK_B               HEX: 30
510 CONSTANT: DIK_N               HEX: 31
511 CONSTANT: DIK_M               HEX: 32
512 CONSTANT: DIK_COMMA           HEX: 33
513 CONSTANT: DIK_PERIOD          HEX: 34
514 CONSTANT: DIK_SLASH           HEX: 35
515 CONSTANT: DIK_RSHIFT          HEX: 36
516 CONSTANT: DIK_MULTIPLY        HEX: 37
517 CONSTANT: DIK_LMENU           HEX: 38
518 CONSTANT: DIK_SPACE           HEX: 39
519 CONSTANT: DIK_CAPITAL         HEX: 3A
520 CONSTANT: DIK_F1              HEX: 3B
521 CONSTANT: DIK_F2              HEX: 3C
522 CONSTANT: DIK_F3              HEX: 3D
523 CONSTANT: DIK_F4              HEX: 3E
524 CONSTANT: DIK_F5              HEX: 3F
525 CONSTANT: DIK_F6              HEX: 40
526 CONSTANT: DIK_F7              HEX: 41
527 CONSTANT: DIK_F8              HEX: 42
528 CONSTANT: DIK_F9              HEX: 43
529 CONSTANT: DIK_F10             HEX: 44
530 CONSTANT: DIK_NUMLOCK         HEX: 45
531 CONSTANT: DIK_SCROLL          HEX: 46
532 CONSTANT: DIK_NUMPAD7         HEX: 47
533 CONSTANT: DIK_NUMPAD8         HEX: 48
534 CONSTANT: DIK_NUMPAD9         HEX: 49
535 CONSTANT: DIK_SUBTRACT        HEX: 4A
536 CONSTANT: DIK_NUMPAD4         HEX: 4B
537 CONSTANT: DIK_NUMPAD5         HEX: 4C
538 CONSTANT: DIK_NUMPAD6         HEX: 4D
539 CONSTANT: DIK_ADD             HEX: 4E
540 CONSTANT: DIK_NUMPAD1         HEX: 4F
541 CONSTANT: DIK_NUMPAD2         HEX: 50
542 CONSTANT: DIK_NUMPAD3         HEX: 51
543 CONSTANT: DIK_NUMPAD0         HEX: 52
544 CONSTANT: DIK_DECIMAL         HEX: 53
545 CONSTANT: DIK_OEM_102         HEX: 56
546 CONSTANT: DIK_F11             HEX: 57
547 CONSTANT: DIK_F12             HEX: 58
548 CONSTANT: DIK_F13             HEX: 64
549 CONSTANT: DIK_F14             HEX: 65
550 CONSTANT: DIK_F15             HEX: 66
551 CONSTANT: DIK_KANA            HEX: 70
552 CONSTANT: DIK_ABNT_C1         HEX: 73
553 CONSTANT: DIK_CONVERT         HEX: 79
554 CONSTANT: DIK_NOCONVERT       HEX: 7B
555 CONSTANT: DIK_YEN             HEX: 7D
556 CONSTANT: DIK_ABNT_C2         HEX: 7E
557 CONSTANT: DIK_NUMPADEQUALS    HEX: 8D
558 CONSTANT: DIK_PREVTRACK       HEX: 90
559 CONSTANT: DIK_AT              HEX: 91
560 CONSTANT: DIK_COLON           HEX: 92
561 CONSTANT: DIK_UNDERLINE       HEX: 93
562 CONSTANT: DIK_KANJI           HEX: 94
563 CONSTANT: DIK_STOP            HEX: 95
564 CONSTANT: DIK_AX              HEX: 96
565 CONSTANT: DIK_UNLABELED       HEX: 97
566 CONSTANT: DIK_NEXTTRACK       HEX: 99
567 CONSTANT: DIK_NUMPADENTER     HEX: 9C
568 CONSTANT: DIK_RCONTROL        HEX: 9D
569 CONSTANT: DIK_MUTE            HEX: A0
570 CONSTANT: DIK_CALCULATOR      HEX: A1
571 CONSTANT: DIK_PLAYPAUSE       HEX: A2
572 CONSTANT: DIK_MEDIASTOP       HEX: A4
573 CONSTANT: DIK_VOLUMEDOWN      HEX: AE
574 CONSTANT: DIK_VOLUMEUP        HEX: B0
575 CONSTANT: DIK_WEBHOME         HEX: B2
576 CONSTANT: DIK_NUMPADCOMMA     HEX: B3
577 CONSTANT: DIK_DIVIDE          HEX: B5
578 CONSTANT: DIK_SYSRQ           HEX: B7
579 CONSTANT: DIK_RMENU           HEX: B8
580 CONSTANT: DIK_PAUSE           HEX: C5
581 CONSTANT: DIK_HOME            HEX: C7
582 CONSTANT: DIK_UP              HEX: C8
583 CONSTANT: DIK_PRIOR           HEX: C9
584 CONSTANT: DIK_LEFT            HEX: CB
585 CONSTANT: DIK_RIGHT           HEX: CD
586 CONSTANT: DIK_END             HEX: CF
587 CONSTANT: DIK_DOWN            HEX: D0
588 CONSTANT: DIK_NEXT            HEX: D1
589 CONSTANT: DIK_INSERT          HEX: D2
590 CONSTANT: DIK_DELETE          HEX: D3
591 CONSTANT: DIK_LWIN            HEX: DB
592 CONSTANT: DIK_RWIN            HEX: DC
593 CONSTANT: DIK_APPS            HEX: DD
594 CONSTANT: DIK_POWER           HEX: DE
595 CONSTANT: DIK_SLEEP           HEX: DF
596 CONSTANT: DIK_WAKE            HEX: E3
597 CONSTANT: DIK_WEBSEARCH       HEX: E5
598 CONSTANT: DIK_WEBFAVORITES    HEX: E6
599 CONSTANT: DIK_WEBREFRESH      HEX: E7
600 CONSTANT: DIK_WEBSTOP         HEX: E8
601 CONSTANT: DIK_WEBFORWARD      HEX: E9
602 CONSTANT: DIK_WEBBACK         HEX: EA
603 CONSTANT: DIK_MYCOMPUTER      HEX: EB
604 CONSTANT: DIK_MAIL            HEX: EC
605 CONSTANT: DIK_MEDIASELECT     HEX: ED
606
607 ALIAS: DIK_BACKSPACE       DIK_BACK
608 ALIAS: DIK_NUMPADSTAR      DIK_MULTIPLY
609 ALIAS: DIK_LALT            DIK_LMENU
610 ALIAS: DIK_CAPSLOCK        DIK_CAPITAL
611 ALIAS: DIK_NUMPADMINUS     DIK_SUBTRACT
612 ALIAS: DIK_NUMPADPLUS      DIK_ADD
613 ALIAS: DIK_NUMPADPERIOD    DIK_DECIMAL
614 ALIAS: DIK_NUMPADSLASH     DIK_DIVIDE
615 ALIAS: DIK_RALT            DIK_RMENU
616 ALIAS: DIK_UPARROW         DIK_UP
617 ALIAS: DIK_PGUP            DIK_PRIOR
618 ALIAS: DIK_LEFTARROW       DIK_LEFT
619 ALIAS: DIK_RIGHTARROW      DIK_RIGHT
620 ALIAS: DIK_DOWNARROW       DIK_DOWN
621 ALIAS: DIK_PGDN            DIK_NEXT
622
623 ALIAS: DIK_CIRCUMFLEX      DIK_PREVTRACK
624
625 CONSTANT: DI8DEVTYPE_DEVICE           HEX: 11
626 CONSTANT: DI8DEVTYPE_MOUSE            HEX: 12
627 CONSTANT: DI8DEVTYPE_KEYBOARD         HEX: 13
628 CONSTANT: DI8DEVTYPE_JOYSTICK         HEX: 14
629 CONSTANT: DI8DEVTYPE_GAMEPAD          HEX: 15
630 CONSTANT: DI8DEVTYPE_DRIVING          HEX: 16
631 CONSTANT: DI8DEVTYPE_FLIGHT           HEX: 17
632 CONSTANT: DI8DEVTYPE_1STPERSON        HEX: 18
633 CONSTANT: DI8DEVTYPE_DEVICECTRL       HEX: 19
634 CONSTANT: DI8DEVTYPE_SCREENPOINTER    HEX: 1A
635 CONSTANT: DI8DEVTYPE_REMOTE           HEX: 1B
636 CONSTANT: DI8DEVTYPE_SUPPLEMENTAL     HEX: 1C
637
638 : GET_DIDEVICE_TYPE ( dwType -- type ) HEX: FF bitand ; inline
639
640 CONSTANT: DIPROPRANGE_NOMIN       HEX: 80000000
641 CONSTANT: DIPROPRANGE_NOMAX       HEX: 7FFFFFFF
642 CONSTANT: MAXCPOINTSNUM           8
643
644 CONSTANT: DIPH_DEVICE             0
645 CONSTANT: DIPH_BYOFFSET           1
646 CONSTANT: DIPH_BYID               2
647 CONSTANT: DIPH_BYUSAGE            3
648                                    
649 : DIMAKEUSAGEDWORD ( UsagePage Usage -- DWORD ) 16 shift bitor ; inline
650
651 : DIPROP_BUFFERSIZE ( -- alien ) 1 <alien> ; inline
652 : DIPROP_AXISMODE   ( -- alien ) 2 <alien> ; inline
653
654 CONSTANT: DIPROPAXISMODE_ABS      0
655 CONSTANT: DIPROPAXISMODE_REL      1
656                                    
657 : DIPROP_GRANULARITY ( -- alien ) 3 <alien> ; inline
658 : DIPROP_RANGE       ( -- alien ) 4 <alien> ; inline
659 : DIPROP_DEADZONE    ( -- alien ) 5 <alien> ; inline
660 : DIPROP_SATURATION  ( -- alien ) 6 <alien> ; inline
661 : DIPROP_FFGAIN      ( -- alien ) 7 <alien> ; inline
662 : DIPROP_FFLOAD      ( -- alien ) 8 <alien> ; inline
663 : DIPROP_AUTOCENTER  ( -- alien ) 9 <alien> ; inline
664
665 CONSTANT: DIPROPAUTOCENTER_OFF    0
666 CONSTANT: DIPROPAUTOCENTER_ON     1
667
668 : DIPROP_CALIBRATIONMODE ( -- alien ) 10 <alien> ; inline
669
670 CONSTANT: DIPROPCALIBRATIONMODE_COOKED    0
671 CONSTANT: DIPROPCALIBRATIONMODE_RAW       1
672
673 : DIPROP_CALIBRATION ( -- alien )        11 <alien> ; inline
674 : DIPROP_GUIDANDPATH ( -- alien )        12 <alien> ; inline
675 : DIPROP_INSTANCENAME ( -- alien )       13 <alien> ; inline
676 : DIPROP_PRODUCTNAME ( -- alien )        14 <alien> ; inline
677 : DIPROP_JOYSTICKID ( -- alien )         15 <alien> ; inline
678 : DIPROP_GETPORTDISPLAYNAME ( -- alien ) 16 <alien> ; inline
679 : DIPROP_PHYSICALRANGE ( -- alien )      18 <alien> ; inline
680 : DIPROP_LOGICALRANGE ( -- alien )       19 <alien> ; inline
681 : DIPROP_KEYNAME ( -- alien )            20 <alien> ; inline
682 : DIPROP_CPOINTS ( -- alien )            21 <alien> ; inline
683 : DIPROP_APPDATA ( -- alien )            22 <alien> ; inline
684 : DIPROP_SCANCODE ( -- alien )           23 <alien> ; inline
685 : DIPROP_VIDPID ( -- alien )             24 <alien> ; inline
686 : DIPROP_USERNAME ( -- alien )           25 <alien> ; inline
687 : DIPROP_TYPENAME ( -- alien )           26 <alien> ; inline
688
689 CONSTANT: GUID_XAxis          GUID: {A36D02E0-C9F3-11CF-BFC7-444553540000}
690 CONSTANT: GUID_YAxis          GUID: {A36D02E1-C9F3-11CF-BFC7-444553540000}
691 CONSTANT: GUID_ZAxis          GUID: {A36D02E2-C9F3-11CF-BFC7-444553540000}
692 CONSTANT: GUID_RxAxis         GUID: {A36D02F4-C9F3-11CF-BFC7-444553540000}
693 CONSTANT: GUID_RyAxis         GUID: {A36D02F5-C9F3-11CF-BFC7-444553540000}
694 CONSTANT: GUID_RzAxis         GUID: {A36D02E3-C9F3-11CF-BFC7-444553540000}
695 CONSTANT: GUID_Slider         GUID: {A36D02E4-C9F3-11CF-BFC7-444553540000}
696 CONSTANT: GUID_Button         GUID: {A36D02F0-C9F3-11CF-BFC7-444553540000}
697 CONSTANT: GUID_Key            GUID: {55728220-D33C-11CF-BFC7-444553540000}
698 CONSTANT: GUID_POV            GUID: {A36D02F2-C9F3-11CF-BFC7-444553540000}
699 CONSTANT: GUID_Unknown        GUID: {A36D02F3-C9F3-11CF-BFC7-444553540000}
700 CONSTANT: GUID_SysMouse       GUID: {6F1D2B60-D5A0-11CF-BFC7-444553540000}
701 CONSTANT: GUID_SysKeyboard    GUID: {6F1D2B61-D5A0-11CF-BFC7-444553540000}
702 CONSTANT: GUID_Joystick       GUID: {6F1D2B70-D5A0-11CF-BFC7-444553540000}
703 CONSTANT: GUID_SysMouseEm     GUID: {6F1D2B80-D5A0-11CF-BFC7-444553540000}
704 CONSTANT: GUID_SysMouseEm2    GUID: {6F1D2B81-D5A0-11CF-BFC7-444553540000}
705 CONSTANT: GUID_SysKeyboardEm  GUID: {6F1D2B82-D5A0-11CF-BFC7-444553540000}
706 CONSTANT: GUID_SysKeyboardEm2 GUID: {6F1D2B83-D5A0-11CF-BFC7-444553540000}