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