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