CommonLibVR
DINPUT.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "REX/W32/COM.h"
4 #include "REX/W32/D3D.h"
5 
6 namespace REX::W32
7 {
8  struct IDirectInput8A;
9  struct IDirectInputDevice8A;
10  struct IDirectInputEffect;
11 }
12 
13 namespace REX::W32
14 {
15  enum DIK : std::uint32_t
16  {
17  DIK_ESCAPE = 0x1,
18  DIK_1 = 0x2,
19  DIK_2 = 0x3,
20  DIK_3 = 0x4,
21  DIK_4 = 0x5,
22  DIK_5 = 0x6,
23  DIK_6 = 0x7,
24  DIK_7 = 0x8,
25  DIK_8 = 0x9,
26  DIK_9 = 0xA,
27  DIK_0 = 0xB,
28  DIK_MINUS = 0xC,
29  DIK_EQUALS = 0xD,
30  DIK_BACK = 0xE,
31  DIK_TAB = 0xF,
32  DIK_Q = 0x10,
33  DIK_W = 0x11,
34  DIK_E = 0x12,
35  DIK_R = 0x13,
36  DIK_T = 0x14,
37  DIK_Y = 0x15,
38  DIK_U = 0x16,
39  DIK_I = 0x17,
40  DIK_O = 0x18,
41  DIK_P = 0x19,
42  DIK_LBRACKET = 0x1A,
43  DIK_RBRACKET = 0x1B,
44  DIK_RETURN = 0x1C,
45  DIK_LCONTROL = 0x1D,
46  DIK_A = 0x1E,
47  DIK_S = 0x1F,
48  DIK_D = 0x20,
49  DIK_F = 0x21,
50  DIK_G = 0x22,
51  DIK_H = 0x23,
52  DIK_J = 0x24,
53  DIK_K = 0x25,
54  DIK_L = 0x26,
55  DIK_SEMICOLON = 0x27,
57  DIK_GRAVE = 0x29,
58  DIK_LSHIFT = 0x2A,
59  DIK_BACKSLASH = 0x2B,
60  DIK_Z = 0x2C,
61  DIK_X = 0x2D,
62  DIK_C = 0x2E,
63  DIK_V = 0x2F,
64  DIK_B = 0x30,
65  DIK_N = 0x31,
66  DIK_M = 0x32,
67  DIK_COMMA = 0x33,
68  DIK_PERIOD = 0x34,
69  DIK_SLASH = 0x35,
70  DIK_RSHIFT = 0x36,
71  DIK_MULTIPLY = 0x37,
72  DIK_LMENU = 0x38,
73  DIK_SPACE = 0x39,
74  DIK_CAPITAL = 0x3A,
75  DIK_F1 = 0x3B,
76  DIK_F2 = 0x3C,
77  DIK_F3 = 0x3D,
78  DIK_F4 = 0x3E,
79  DIK_F5 = 0x3F,
80  DIK_F6 = 0x40,
81  DIK_F7 = 0x41,
82  DIK_F8 = 0x42,
83  DIK_F9 = 0x43,
84  DIK_F10 = 0x44,
85  DIK_NUMLOCK = 0x45,
86  DIK_SCROLL = 0x46,
87  DIK_NUMPAD7 = 0x47,
88  DIK_NUMPAD8 = 0x48,
89  DIK_NUMPAD9 = 0x49,
90  DIK_SUBTRACT = 0x4A,
91  DIK_NUMPAD4 = 0x4B,
92  DIK_NUMPAD5 = 0x4C,
93  DIK_NUMPAD6 = 0x4D,
94  DIK_ADD = 0x4E,
95  DIK_NUMPAD1 = 0x4F,
96  DIK_NUMPAD2 = 0x50,
97  DIK_NUMPAD3 = 0x51,
98  DIK_NUMPAD0 = 0x52,
99  DIK_DECIMAL = 0x53,
100  DIK_OEM_102 = 0x56,
101  DIK_F11 = 0x57,
102  DIK_F12 = 0x58,
103  DIK_F13 = 0x64,
104  DIK_F14 = 0x65,
105  DIK_F15 = 0x66,
106  DIK_KANA = 0x70,
107  DIK_ABNT_C1 = 0x73,
108  DIK_CONVERT = 0x79,
110  DIK_YEN = 0x7D,
111  DIK_ABNT_C2 = 0x7E,
114  DIK_AT = 0x91,
115  DIK_COLON = 0x92,
117  DIK_KANJI = 0x94,
118  DIK_STOP = 0x95,
119  DIK_AX = 0x96,
123  DIK_RCONTROL = 0x9D,
124  DIK_MUTE = 0xA0,
129  DIK_VOLUMEUP = 0xB0,
130  DIK_WEBHOME = 0xB2,
132  DIK_DIVIDE = 0xB5,
133  DIK_SYSRQ = 0xB7,
134  DIK_RMENU = 0xB8,
135  DIK_PAUSE = 0xC5,
136  DIK_HOME = 0xC7,
137  DIK_UP = 0xC8,
138  DIK_PRIOR = 0xC9,
139  DIK_LEFT = 0xCB,
140  DIK_RIGHT = 0xCD,
141  DIK_END = 0xCF,
142  DIK_DOWN = 0xD0,
143  DIK_NEXT = 0xD1,
144  DIK_INSERT = 0xD2,
145  DIK_DELETE = 0xD3,
146  DIK_LWIN = 0xDB,
147  DIK_RWIN = 0xDC,
148  DIK_APPS = 0xDD,
149  DIK_POWER = 0xDE,
150  DIK_SLEEP = 0xDF,
151  DIK_WAKE = 0xE3,
155  DIK_WEBSTOP = 0xE8,
157  DIK_WEBBACK = 0xEA,
159  DIK_MAIL = 0xEC,
176  };
177 }
178 
179 namespace REX::W32
180 {
181  struct DIENVELOPE;
182  struct DIOBJECTDATAFORMAT;
183 
184  struct DIACTIONA
185  {
186  std::uintptr_t appData;
187  std::uint32_t semantic;
188  std::uint32_t flags;
189  union
190  {
191  const char* actionName;
192  std::uint32_t resIdString;
193  };
195  std::uint32_t objID;
196  std::uint32_t how;
197  };
198 
200  {
201  std::uint32_t size;
202  std::uint32_t actionSize;
203  std::uint32_t dataSize;
204  std::uint32_t numActions;
207  std::uint32_t genre;
208  std::uint32_t bufferSize;
209  std::int32_t axisMin;
210  std::int32_t axisMax;
213  std::uint32_t crc;
215  };
216 
217  struct DICOLORSET
218  {
219  std::uint32_t size;
228  };
229 
231  {
232  std::uint32_t size;
233  std::uint32_t users;
234  char* userNames;
235  std::uint32_t formatsSize;
239  IUnknown* unkDDSTarget;
240  };
241 
243  {
244  std::uint32_t size;
245  std::uint32_t objSize;
246  std::uint32_t flags;
247  std::uint32_t dataSize;
248  std::uint32_t numObjs;
250  };
251 
252  struct DIDEVCAPS
253  {
254  std::uint32_t size;
255  std::uint32_t flags;
256  std::uint32_t devType;
257  std::uint32_t axes;
258  std::uint32_t buttons;
259  std::uint32_t povs;
260  std::uint32_t ffSamplePeriod;
261  std::uint32_t ffMinTimeResolution;
262  std::uint32_t firmwareRevision;
263  std::uint32_t hardwareRevision;
264  std::uint32_t ffDriverVersion;
265  };
266 
268  {
270  std::uint32_t flags;
271  std::uint32_t viewID;
273  std::uint32_t objID;
274  std::uint32_t validPts;
277  std::uint32_t textAlign;
278  };
279 
281  {
282  std::uint32_t size;
283  std::uint32_t sizeImageInfo;
284  std::uint32_t views;
285  std::uint32_t buttons;
286  std::uint32_t axes;
287  std::uint32_t povs;
288  std::uint32_t bufferSize;
289  std::uint32_t bufferUsed;
291  };
292 
294  {
295  std::uint32_t size;
298  std::uint32_t devType;
302 
303  // DIRECTINPUT_VERSION >= 0x0500
304  std::uint16_t usagePage;
305  std::uint16_t usage;
306  };
307 
309  {
310  std::uint32_t ofs;
311  std::uint32_t data;
312  std::uint32_t timeStamp;
313  std::uint32_t sequence;
314  std::uintptr_t appData;
315  };
316 
318  {
319  std::uint32_t size;
321  std::uint32_t ofs;
322  std::uint32_t type;
323  std::uint32_t flags;
324  char name[MAX_PATH];
325 
326  // DIRECTINPUT_VERSION >= 0x0500
327  std::uint32_t ffMaxForce;
328  std::uint32_t ffForceResolution;
329  std::uint16_t collectionNumber;
330  std::uint16_t designatorIndex;
331  std::uint16_t usagePage;
332  std::uint16_t usage;
333  std::uint32_t dimension;
334  std::uint16_t exponent;
335  std::uint16_t reportId;
336  };
337 
338  struct DIEFFECT
339  {
340  std::uint32_t size;
341  std::uint32_t flags;
342  std::uint32_t duration;
343  std::uint32_t samplePeriod;
344  std::uint32_t gain;
345  std::uint32_t triggerButton;
346  std::uint32_t triggerRepeatInterval;
347  std::uint32_t axesSize;
348  std::uint32_t* axes;
349  std::int32_t* direction;
351  std::uint32_t typeSpecificParamsSize;
353  std::uint32_t startDelay;
354  };
355 
356  struct DIENVELOPE
357  {
358  std::uint32_t size;
359  std::uint32_t attackLevel;
360  std::uint32_t attackTime;
361  std::uint32_t fadeLevel;
362  std::uint32_t fadeTime;
363  };
364 
366  {
367  std::uint32_t size;
369  std::uint32_t effectType;
370  std::uint32_t staticParams;
371  std::uint32_t dynamicParams;
372  char name[MAX_PATH];
373  };
374 
375  struct DIEFFESCAPE
376  {
377  std::uint32_t size;
378  std::uint32_t command;
379  void* inBuffer;
380  std::uint32_t inBufferSize;
381  void* outBuffer;
382  std::uint32_t outBufferSize;
383  };
384 
386  {
387  std::uint32_t size;
389  const DIEFFECT* effect;
391  };
392 
394  {
395  std::int32_t x;
396  std::int32_t y;
397  std::int32_t z;
398  std::uint8_t rgbButtons[8];
399  };
400 
402  {
403  const GUID* guid;
404  std::uint32_t ofs;
405  std::uint32_t type;
406  std::uint32_t flags;
407  };
408 
410  {
411  std::uint32_t size;
412  std::uint32_t headerSize;
413  std::uint32_t obj;
414  std::uint32_t how;
415  };
416 }
417 
418 namespace REX::W32
419 {
420  using LPDICONFIGUREDEVICESCALLBACK = BOOL(__stdcall*)(IUnknown*, void*);
421  using LPDIENUMCREATEDEFFECTOBJECTSCALLBACK = BOOL(__stdcall*)(IDirectInputEffect*, void*);
422  using LPDIENUMDEVICESBYSEMANTICSCBA = BOOL(__stdcall*)(const DIDEVICEINSTANCEA*, IDirectInputDevice8A*, std::uint32_t, std::uint32_t, void*);
423  using LPDIENUMDEVICESCALLBACKA = BOOL(__stdcall*)(const DIDEVICEINSTANCEA*, void*);
424  using LPDIENUMDEVICEOBJECTSCALLBACKA = BOOL(__stdcall*)(const DIDEVICEOBJECTINSTANCEA*, void*);
425  using LPDIENUMEFFECTSCALLBACKA = BOOL(__stdcall*)(const DIEFFECTINFOA*, void*);
426  using LPDIENUMEFFECTSINFILECALLBACK = BOOL(__stdcall*)(const DIFILEEFFECT*, void*);
427 }
428 
429 namespace REX::W32
430 {
431  struct __declspec(novtable, uuid("BF798030-483A-4DA2-AA99-5D64ED369700"))
432  IDirectInput8A : public IUnknown
433  {
434  virtual HRESULT CreateDevice(const GUID&, IDirectInputDevice8A**, IUnknown*) noexcept = 0;
435  virtual HRESULT EnumDevices(std::uint32_t, LPDIENUMDEVICESCALLBACKA, void*, std::uint32_t) noexcept = 0;
436  virtual HRESULT GetDeviceStatus(const GUID&) noexcept = 0;
437  virtual HRESULT RunControlPanel(HWND, std::uint32_t) noexcept = 0;
438  virtual HRESULT Initialize(HINSTANCE, std::uint32_t) noexcept = 0;
439  virtual HRESULT FindDevice(const GUID&, const char*, GUID*) noexcept = 0;
440  virtual HRESULT EnumDevicesBySemantics(const char*, DIACTIONFORMATA*, LPDIENUMDEVICESBYSEMANTICSCBA, void*, std::uint32_t) noexcept = 0;
441  virtual HRESULT ConfigureDevices(LPDICONFIGUREDEVICESCALLBACK, DICONFIGUREDEVICESPARAMSA*, std::uint32_t, void*) noexcept = 0;
442  };
443 
444  struct __declspec(novtable, uuid("54D41080-DC15-4833-A41B-748F73A38179"))
445  IDirectInputDevice8A : public IUnknown
446  {
447  virtual HRESULT GetCapabilities(DIDEVCAPS*) noexcept = 0;
448  virtual HRESULT EnumObjects(LPDIENUMDEVICEOBJECTSCALLBACKA, void*, std::uint32_t) noexcept = 0;
449  virtual HRESULT GetProperty(const GUID&, DIPROPHEADER*) noexcept = 0;
450  virtual HRESULT SetProperty(const GUID&, const DIPROPHEADER*) noexcept = 0;
451  virtual HRESULT Acquire() noexcept = 0;
452  virtual HRESULT Unacquire() noexcept = 0;
453  virtual HRESULT GetDeviceState(std::uint32_t, void*) noexcept = 0;
454  virtual HRESULT GetDeviceData(std::uint32_t, DIDEVICEOBJECTDATA*, std::uint32_t*, std::uint32_t) noexcept = 0;
455  virtual HRESULT SetDataFormat(const DIDATAFORMAT*) noexcept = 0;
456  virtual HRESULT SetEventNotification(HANDLE) noexcept = 0;
457  virtual HRESULT SetCooperativeLevel(HWND, std::uint32_t) noexcept = 0;
458  virtual HRESULT GetObjectInfo(DIDEVICEOBJECTINSTANCEA*, std::uint32_t, std::uint32_t) noexcept = 0;
459  virtual HRESULT GetDeviceInfo(DIDEVICEINSTANCEA*) noexcept = 0;
460  virtual HRESULT RunControlPanel(HWND, std::uint32_t) noexcept = 0;
461  virtual HRESULT Initialize(HINSTANCE, std::uint32_t, const GUID&) noexcept = 0;
462  virtual HRESULT CreateEffect(const GUID&, const DIEFFECT*, IDirectInputEffect*, IUnknown*) noexcept = 0;
463  virtual HRESULT EnumEffects(LPDIENUMEFFECTSCALLBACKA, void*, std::uint32_t) noexcept = 0;
464  virtual HRESULT GetEffectInfo(DIEFFECTINFOA*, const GUID&) noexcept = 0;
465  virtual HRESULT GetForceFeedbackState(std::uint32_t*) noexcept = 0;
466  virtual HRESULT SendForceFeedbackCommand(std::uint32_t) noexcept = 0;
467  virtual HRESULT EnumCreatedEffectObjects(LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, void*, std::uint32_t) noexcept = 0;
468  virtual HRESULT Escape(DIEFFESCAPE*) noexcept = 0;
469  virtual HRESULT Poll() noexcept = 0;
470  virtual HRESULT SendDeviceData(std::uint32_t, const DIDEVICEOBJECTDATA*, std::uint32_t*, std::uint32_t) noexcept = 0;
471  virtual HRESULT EnumEffectsInFile(const char*, LPDIENUMEFFECTSINFILECALLBACK, void*, std::uint32_t) noexcept = 0;
472  virtual HRESULT WriteEffectToFile(const char*, std::uint32_t, DIFILEEFFECT*, std::uint32_t) noexcept = 0;
473  virtual HRESULT BuildActionMap(DIACTIONFORMATA*, const char*, std::uint32_t) noexcept = 0;
474  virtual HRESULT SetActionMap(DIACTIONFORMATA*, const char*, std::uint32_t) noexcept = 0;
475  virtual HRESULT GetImageInfo(DIDEVICEIMAGEINFOHEADERA*) noexcept = 0;
476  };
477 
478  struct __declspec(novtable, uuid("E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35"))
479  IDirectInputEffect : public IUnknown
480  {
481  virtual HRESULT Initialize(HINSTANCE, std::uint32_t, const GUID&) noexcept = 0;
482  virtual HRESULT GetEffectGuid(GUID*) noexcept = 0;
483  virtual HRESULT GetParameters(DIEFFECT*, std::uint32_t) noexcept = 0;
484  virtual HRESULT SetParameters(const DIEFFECT*, std::uint32_t) noexcept = 0;
485  virtual HRESULT Start(std::uint32_t, std::uint32_t) noexcept = 0;
486  virtual HRESULT Stop() noexcept = 0;
487  virtual HRESULT GetEffectStatus(std::uint32_t*) noexcept = 0;
488  virtual HRESULT Download() noexcept = 0;
489  virtual HRESULT Unload() noexcept = 0;
490  virtual HRESULT Escape(DIEFFESCAPE*) noexcept = 0;
491  };
492 }
493 
494 namespace REX::W32
495 {
496  inline constexpr IID IID_IDirectInput8A{ 0xBF798030, 0x483A, 0x4DA2, { 0xAA, 0x99, 0x5D, 0x64, 0xED, 0x36, 0x97, 0x00 } };
497  inline constexpr IID IID_IDirectInputDevice8A{ 0x54D41080, 0xDC15, 0x4833, { 0xA4, 0x1B, 0x74, 0x8F, 0x73, 0xA3, 0x81, 0x79 } };
498  inline constexpr IID IID_IDirectInputEffect{ 0xE7E1F7C0, 0x88D2, 0x11D0, { 0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35 } };
499 }
Definition: BSDirectInputManager.h:8
std::uint32_t D3DCOLOR
Definition: D3D.h:673
BOOL(__stdcall *)(const DIDEVICEINSTANCEA *, IDirectInputDevice8A *, std::uint32_t, std::uint32_t, void *) LPDIENUMDEVICESBYSEMANTICSCBA
Definition: DINPUT.h:422
BOOL(__stdcall *)(const DIDEVICEOBJECTINSTANCEA *, void *) LPDIENUMDEVICEOBJECTSCALLBACKA
Definition: DINPUT.h:424
BOOL(__stdcall *)(const DIEFFECTINFOA *, void *) LPDIENUMEFFECTSCALLBACKA
Definition: DINPUT.h:425
void * HANDLE
Definition: BASE.h:14
constexpr IID IID_IDirectInputDevice8A
Definition: DINPUT.h:497
struct __declspec(novtable, uuid("00000000-0000-0000-c000-000000000046")) IUnknown
Definition: COM.h:7
std::int32_t BOOL
Definition: BASE.h:13
constexpr IID IID_IDirectInput8A
Definition: DINPUT.h:496
constexpr auto MAX_PATH
Definition: BASE.h:34
BOOL(__stdcall *)(IDirectInputEffect *, void *) LPDIENUMCREATEDEFFECTOBJECTSCALLBACK
Definition: DINPUT.h:421
constexpr IID IID_IDirectInputEffect
Definition: DINPUT.h:498
BOOL(__stdcall *)(const DIFILEEFFECT *, void *) LPDIENUMEFFECTSINFILECALLBACK
Definition: DINPUT.h:426
BOOL(__stdcall *)(IUnknown *, void *) LPDICONFIGUREDEVICESCALLBACK
Definition: DINPUT.h:420
DIK
Definition: DINPUT.h:16
@ DIK_NUMPAD0
Definition: DINPUT.h:98
@ DIK_LBRACKET
Definition: DINPUT.h:42
@ DIK_B
Definition: DINPUT.h:64
@ DIK_ABNT_C1
Definition: DINPUT.h:107
@ DIK_POWER
Definition: DINPUT.h:149
@ DIK_PRIOR
Definition: DINPUT.h:138
@ DIK_RBRACKET
Definition: DINPUT.h:43
@ DIK_WEBHOME
Definition: DINPUT.h:130
@ DIK_AX
Definition: DINPUT.h:119
@ DIK_HOME
Definition: DINPUT.h:136
@ DIK_NUMPAD6
Definition: DINPUT.h:93
@ DIK_J
Definition: DINPUT.h:52
@ DIK_F
Definition: DINPUT.h:49
@ DIK_NUMPADSTAR
Definition: DINPUT.h:162
@ DIK_RCONTROL
Definition: DINPUT.h:123
@ DIK_WEBBACK
Definition: DINPUT.h:157
@ DIK_GRAVE
Definition: DINPUT.h:57
@ DIK_PERIOD
Definition: DINPUT.h:68
@ DIK_A
Definition: DINPUT.h:46
@ DIK_NUMPAD2
Definition: DINPUT.h:96
@ DIK_DECIMAL
Definition: DINPUT.h:99
@ DIK_RIGHT
Definition: DINPUT.h:140
@ DIK_8
Definition: DINPUT.h:25
@ DIK_F5
Definition: DINPUT.h:79
@ DIK_SUBTRACT
Definition: DINPUT.h:90
@ DIK_VOLUMEUP
Definition: DINPUT.h:129
@ DIK_WAKE
Definition: DINPUT.h:151
@ DIK_F7
Definition: DINPUT.h:81
@ DIK_END
Definition: DINPUT.h:141
@ DIK_SLEEP
Definition: DINPUT.h:150
@ DIK_COMMA
Definition: DINPUT.h:67
@ DIK_RETURN
Definition: DINPUT.h:44
@ DIK_UP
Definition: DINPUT.h:137
@ DIK_DIVIDE
Definition: DINPUT.h:132
@ DIK_CAPITAL
Definition: DINPUT.h:74
@ DIK_SYSRQ
Definition: DINPUT.h:133
@ DIK_W
Definition: DINPUT.h:33
@ DIK_SLASH
Definition: DINPUT.h:69
@ DIK_NUMPADEQUALS
Definition: DINPUT.h:112
@ DIK_F11
Definition: DINPUT.h:101
@ DIK_KANA
Definition: DINPUT.h:106
@ DIK_ABNT_C2
Definition: DINPUT.h:111
@ DIK_PAUSE
Definition: DINPUT.h:135
@ DIK_5
Definition: DINPUT.h:22
@ DIK_COLON
Definition: DINPUT.h:115
@ DIK_NUMPADENTER
Definition: DINPUT.h:122
@ DIK_NUMPADSLASH
Definition: DINPUT.h:168
@ DIK_LMENU
Definition: DINPUT.h:72
@ DIK_2
Definition: DINPUT.h:19
@ DIK_ESCAPE
Definition: DINPUT.h:17
@ DIK_EQUALS
Definition: DINPUT.h:29
@ DIK_PREVTRACK
Definition: DINPUT.h:113
@ DIK_LCONTROL
Definition: DINPUT.h:45
@ DIK_BACKSLASH
Definition: DINPUT.h:59
@ DIK_UNLABELED
Definition: DINPUT.h:120
@ DIK_3
Definition: DINPUT.h:20
@ DIK_NEXT
Definition: DINPUT.h:143
@ DIK_LSHIFT
Definition: DINPUT.h:58
@ DIK_LEFT
Definition: DINPUT.h:139
@ DIK_NUMPADPERIOD
Definition: DINPUT.h:167
@ DIK_MULTIPLY
Definition: DINPUT.h:71
@ DIK_PLAYPAUSE
Definition: DINPUT.h:126
@ DIK_V
Definition: DINPUT.h:63
@ DIK_NUMLOCK
Definition: DINPUT.h:85
@ DIK_RWIN
Definition: DINPUT.h:147
@ DIK_LEFTARROW
Definition: DINPUT.h:172
@ DIK_F6
Definition: DINPUT.h:80
@ DIK_CALCULATOR
Definition: DINPUT.h:125
@ DIK_NUMPAD8
Definition: DINPUT.h:88
@ DIK_E
Definition: DINPUT.h:34
@ DIK_YEN
Definition: DINPUT.h:110
@ DIK_F4
Definition: DINPUT.h:78
@ DIK_F8
Definition: DINPUT.h:82
@ DIK_PGDN
Definition: DINPUT.h:175
@ DIK_F15
Definition: DINPUT.h:105
@ DIK_NUMPADMINUS
Definition: DINPUT.h:165
@ DIK_X
Definition: DINPUT.h:61
@ DIK_F12
Definition: DINPUT.h:102
@ DIK_RIGHTARROW
Definition: DINPUT.h:173
@ DIK_CONVERT
Definition: DINPUT.h:108
@ DIK_R
Definition: DINPUT.h:35
@ DIK_CAPSLOCK
Definition: DINPUT.h:164
@ DIK_NUMPAD5
Definition: DINPUT.h:92
@ DIK_F9
Definition: DINPUT.h:83
@ DIK_Q
Definition: DINPUT.h:32
@ DIK_MEDIASELECT
Definition: DINPUT.h:160
@ DIK_MEDIASTOP
Definition: DINPUT.h:127
@ DIK_MYCOMPUTER
Definition: DINPUT.h:158
@ DIK_APPS
Definition: DINPUT.h:148
@ DIK_NUMPAD9
Definition: DINPUT.h:89
@ DIK_K
Definition: DINPUT.h:53
@ DIK_N
Definition: DINPUT.h:65
@ DIK_L
Definition: DINPUT.h:54
@ DIK_RSHIFT
Definition: DINPUT.h:70
@ DIK_MUTE
Definition: DINPUT.h:124
@ DIK_DELETE
Definition: DINPUT.h:145
@ DIK_INSERT
Definition: DINPUT.h:144
@ DIK_F2
Definition: DINPUT.h:76
@ DIK_WEBSTOP
Definition: DINPUT.h:155
@ DIK_WEBFORWARD
Definition: DINPUT.h:156
@ DIK_M
Definition: DINPUT.h:66
@ DIK_KANJI
Definition: DINPUT.h:117
@ DIK_LWIN
Definition: DINPUT.h:146
@ DIK_F10
Definition: DINPUT.h:84
@ DIK_DOWN
Definition: DINPUT.h:142
@ DIK_BACKSPACE
Definition: DINPUT.h:161
@ DIK_T
Definition: DINPUT.h:36
@ DIK_F1
Definition: DINPUT.h:75
@ DIK_STOP
Definition: DINPUT.h:118
@ DIK_NUMPAD1
Definition: DINPUT.h:95
@ DIK_O
Definition: DINPUT.h:40
@ DIK_UPARROW
Definition: DINPUT.h:170
@ DIK_SPACE
Definition: DINPUT.h:73
@ DIK_G
Definition: DINPUT.h:50
@ DIK_C
Definition: DINPUT.h:62
@ DIK_MAIL
Definition: DINPUT.h:159
@ DIK_F14
Definition: DINPUT.h:104
@ DIK_NUMPADPLUS
Definition: DINPUT.h:166
@ DIK_WEBFAVORITES
Definition: DINPUT.h:153
@ DIK_RMENU
Definition: DINPUT.h:134
@ DIK_AT
Definition: DINPUT.h:114
@ DIK_0
Definition: DINPUT.h:27
@ DIK_I
Definition: DINPUT.h:39
@ DIK_NOCONVERT
Definition: DINPUT.h:109
@ DIK_RALT
Definition: DINPUT.h:169
@ DIK_NEXTTRACK
Definition: DINPUT.h:121
@ DIK_F3
Definition: DINPUT.h:77
@ DIK_4
Definition: DINPUT.h:21
@ DIK_U
Definition: DINPUT.h:38
@ DIK_ADD
Definition: DINPUT.h:94
@ DIK_NUMPAD4
Definition: DINPUT.h:91
@ DIK_S
Definition: DINPUT.h:47
@ DIK_UNDERLINE
Definition: DINPUT.h:116
@ DIK_6
Definition: DINPUT.h:23
@ DIK_F13
Definition: DINPUT.h:103
@ DIK_PGUP
Definition: DINPUT.h:171
@ DIK_NUMPAD3
Definition: DINPUT.h:97
@ DIK_H
Definition: DINPUT.h:51
@ DIK_DOWNARROW
Definition: DINPUT.h:174
@ DIK_Y
Definition: DINPUT.h:37
@ DIK_LALT
Definition: DINPUT.h:163
@ DIK_WEBSEARCH
Definition: DINPUT.h:152
@ DIK_BACK
Definition: DINPUT.h:30
@ DIK_NUMPAD7
Definition: DINPUT.h:87
@ DIK_7
Definition: DINPUT.h:24
@ DIK_TAB
Definition: DINPUT.h:31
@ DIK_APOSTROPHE
Definition: DINPUT.h:56
@ DIK_SEMICOLON
Definition: DINPUT.h:55
@ DIK_9
Definition: DINPUT.h:26
@ DIK_OEM_102
Definition: DINPUT.h:100
@ DIK_D
Definition: DINPUT.h:48
@ DIK_VOLUMEDOWN
Definition: DINPUT.h:128
@ DIK_SCROLL
Definition: DINPUT.h:86
@ DIK_NUMPADCOMMA
Definition: DINPUT.h:131
@ DIK_P
Definition: DINPUT.h:41
@ DIK_WEBREFRESH
Definition: DINPUT.h:154
@ DIK_MINUS
Definition: DINPUT.h:28
@ DIK_Z
Definition: DINPUT.h:60
@ DIK_1
Definition: DINPUT.h:18
struct HWND__ * HWND
Definition: BASE.h:30
std::int32_t HRESULT
Definition: BASE.h:28
struct HINSTANCE__ * HINSTANCE
Definition: BASE.h:21
BOOL(__stdcall *)(const DIDEVICEINSTANCEA *, void *) LPDIENUMDEVICESCALLBACKA
Definition: DINPUT.h:423
Definition: BSDirectInputManager.h:8
constexpr REL::ID Stop(static_cast< std::uint64_t >(66358))
constexpr REL::ID Start(static_cast< std::uint64_t >(33961))
Definition: EffectArchetypes.h:65
Definition: DINPUT.h:185
std::uint32_t resIdString
Definition: DINPUT.h:192
std::uint32_t objID
Definition: DINPUT.h:195
const char * actionName
Definition: DINPUT.h:191
std::uint32_t how
Definition: DINPUT.h:196
std::uintptr_t appData
Definition: DINPUT.h:186
std::uint32_t semantic
Definition: DINPUT.h:187
GUID guidInstance
Definition: DINPUT.h:194
std::uint32_t flags
Definition: DINPUT.h:188
Definition: DINPUT.h:200
HINSTANCE instString
Definition: DINPUT.h:211
char actionMap[MAX_PATH]
Definition: DINPUT.h:214
std::uint32_t bufferSize
Definition: DINPUT.h:208
std::uint32_t crc
Definition: DINPUT.h:213
std::uint32_t dataSize
Definition: DINPUT.h:203
std::int32_t axisMax
Definition: DINPUT.h:210
GUID guidActionMap
Definition: DINPUT.h:206
std::int32_t axisMin
Definition: DINPUT.h:209
std::uint32_t actionSize
Definition: DINPUT.h:202
FILETIME timeStamp
Definition: DINPUT.h:212
std::uint32_t numActions
Definition: DINPUT.h:204
std::uint32_t size
Definition: DINPUT.h:201
DIACTIONA * action
Definition: DINPUT.h:205
std::uint32_t genre
Definition: DINPUT.h:207
Definition: DINPUT.h:218
D3DCOLOR calloutLine
Definition: DINPUT.h:222
std::uint32_t size
Definition: DINPUT.h:219
D3DCOLOR highlightFill
Definition: DINPUT.h:226
D3DCOLOR areaFill
Definition: DINPUT.h:227
D3DCOLOR textFore
Definition: DINPUT.h:220
D3DCOLOR calloutHighlight
Definition: DINPUT.h:223
D3DCOLOR textHighlight
Definition: DINPUT.h:221
D3DCOLOR border
Definition: DINPUT.h:224
D3DCOLOR controlFill
Definition: DINPUT.h:225
Definition: DINPUT.h:231
IUnknown * unkDDSTarget
Definition: DINPUT.h:239
std::uint32_t size
Definition: DINPUT.h:232
char * userNames
Definition: DINPUT.h:234
HWND hwnd
Definition: DINPUT.h:237
std::uint32_t users
Definition: DINPUT.h:233
DIACTIONFORMATA * formats
Definition: DINPUT.h:236
std::uint32_t formatsSize
Definition: DINPUT.h:235
DICOLORSET dics
Definition: DINPUT.h:238
Definition: DINPUT.h:243
std::uint32_t size
Definition: DINPUT.h:244
std::uint32_t flags
Definition: DINPUT.h:246
std::uint32_t objSize
Definition: DINPUT.h:245
DIOBJECTDATAFORMAT * odf
Definition: DINPUT.h:249
std::uint32_t numObjs
Definition: DINPUT.h:248
std::uint32_t dataSize
Definition: DINPUT.h:247
Definition: DINPUT.h:253
std::uint32_t axes
Definition: DINPUT.h:257
std::uint32_t hardwareRevision
Definition: DINPUT.h:263
std::uint32_t buttons
Definition: DINPUT.h:258
std::uint32_t firmwareRevision
Definition: DINPUT.h:262
std::uint32_t ffMinTimeResolution
Definition: DINPUT.h:261
std::uint32_t ffSamplePeriod
Definition: DINPUT.h:260
std::uint32_t devType
Definition: DINPUT.h:256
std::uint32_t flags
Definition: DINPUT.h:255
std::uint32_t povs
Definition: DINPUT.h:259
std::uint32_t ffDriverVersion
Definition: DINPUT.h:264
std::uint32_t size
Definition: DINPUT.h:254
Definition: DINPUT.h:268
POINT calloutLine[5]
Definition: DINPUT.h:275
std::uint32_t textAlign
Definition: DINPUT.h:277
std::uint32_t flags
Definition: DINPUT.h:270
std::uint32_t validPts
Definition: DINPUT.h:274
char imagePath[MAX_PATH]
Definition: DINPUT.h:269
RECT calloutRect
Definition: DINPUT.h:276
RECT overlay
Definition: DINPUT.h:272
std::uint32_t objID
Definition: DINPUT.h:273
std::uint32_t viewID
Definition: DINPUT.h:271
Definition: DINPUT.h:281
std::uint32_t buttons
Definition: DINPUT.h:285
std::uint32_t sizeImageInfo
Definition: DINPUT.h:283
std::uint32_t views
Definition: DINPUT.h:284
std::uint32_t size
Definition: DINPUT.h:282
std::uint32_t bufferUsed
Definition: DINPUT.h:289
std::uint32_t axes
Definition: DINPUT.h:286
DIDEVICEIMAGEINFOA * imageInfoArray
Definition: DINPUT.h:290
std::uint32_t povs
Definition: DINPUT.h:287
std::uint32_t bufferSize
Definition: DINPUT.h:288
Definition: DINPUT.h:294
std::uint16_t usage
Definition: DINPUT.h:305
std::uint32_t size
Definition: DINPUT.h:295
GUID guidFFDriver
Definition: DINPUT.h:301
char instanceName[MAX_PATH]
Definition: DINPUT.h:299
std::uint32_t devType
Definition: DINPUT.h:298
std::uint16_t usagePage
Definition: DINPUT.h:304
GUID guidProduct
Definition: DINPUT.h:297
char productName[MAX_PATH]
Definition: DINPUT.h:300
GUID guidInstance
Definition: DINPUT.h:296
Definition: DINPUT.h:309
std::uint32_t sequence
Definition: DINPUT.h:313
std::uint32_t data
Definition: DINPUT.h:311
std::uint32_t ofs
Definition: DINPUT.h:310
std::uintptr_t appData
Definition: DINPUT.h:314
std::uint32_t timeStamp
Definition: DINPUT.h:312
Definition: DINPUT.h:318
std::uint32_t flags
Definition: DINPUT.h:323
GUID guidType
Definition: DINPUT.h:320
std::uint16_t usage
Definition: DINPUT.h:332
std::uint16_t designatorIndex
Definition: DINPUT.h:330
std::uint16_t exponent
Definition: DINPUT.h:334
std::uint32_t ffMaxForce
Definition: DINPUT.h:327
std::uint16_t usagePage
Definition: DINPUT.h:331
std::uint32_t type
Definition: DINPUT.h:322
std::uint32_t ffForceResolution
Definition: DINPUT.h:328
std::uint16_t collectionNumber
Definition: DINPUT.h:329
std::uint16_t reportId
Definition: DINPUT.h:335
std::uint32_t dimension
Definition: DINPUT.h:333
std::uint32_t size
Definition: DINPUT.h:319
std::uint32_t ofs
Definition: DINPUT.h:321
char name[MAX_PATH]
Definition: DINPUT.h:324
Definition: DINPUT.h:366
std::uint32_t effectType
Definition: DINPUT.h:369
std::uint32_t staticParams
Definition: DINPUT.h:370
char name[MAX_PATH]
Definition: DINPUT.h:372
GUID guid
Definition: DINPUT.h:368
std::uint32_t dynamicParams
Definition: DINPUT.h:371
std::uint32_t size
Definition: DINPUT.h:367
Definition: DINPUT.h:339
DIENVELOPE * envelope
Definition: DINPUT.h:350
std::uint32_t size
Definition: DINPUT.h:340
std::int32_t * direction
Definition: DINPUT.h:349
std::uint32_t gain
Definition: DINPUT.h:344
std::uint32_t axesSize
Definition: DINPUT.h:347
std::uint32_t duration
Definition: DINPUT.h:342
void * typeSpecificParams
Definition: DINPUT.h:352
std::uint32_t samplePeriod
Definition: DINPUT.h:343
std::uint32_t triggerRepeatInterval
Definition: DINPUT.h:346
std::uint32_t * axes
Definition: DINPUT.h:348
std::uint32_t typeSpecificParamsSize
Definition: DINPUT.h:351
std::uint32_t triggerButton
Definition: DINPUT.h:345
std::uint32_t flags
Definition: DINPUT.h:341
std::uint32_t startDelay
Definition: DINPUT.h:353
Definition: DINPUT.h:376
std::uint32_t inBufferSize
Definition: DINPUT.h:380
void * inBuffer
Definition: DINPUT.h:379
std::uint32_t outBufferSize
Definition: DINPUT.h:382
std::uint32_t command
Definition: DINPUT.h:378
std::uint32_t size
Definition: DINPUT.h:377
void * outBuffer
Definition: DINPUT.h:381
Definition: DINPUT.h:357
std::uint32_t fadeTime
Definition: DINPUT.h:362
std::uint32_t fadeLevel
Definition: DINPUT.h:361
std::uint32_t size
Definition: DINPUT.h:358
std::uint32_t attackLevel
Definition: DINPUT.h:359
std::uint32_t attackTime
Definition: DINPUT.h:360
Definition: DINPUT.h:386
GUID guidEffect
Definition: DINPUT.h:388
std::uint32_t size
Definition: DINPUT.h:387
char friendlyName[MAX_PATH]
Definition: DINPUT.h:390
const DIEFFECT * effect
Definition: DINPUT.h:389
Definition: DINPUT.h:394
std::int32_t z
Definition: DINPUT.h:397
std::uint8_t rgbButtons[8]
Definition: DINPUT.h:398
std::int32_t x
Definition: DINPUT.h:395
std::int32_t y
Definition: DINPUT.h:396
Definition: DINPUT.h:402
const GUID * guid
Definition: DINPUT.h:403
std::uint32_t type
Definition: DINPUT.h:405
std::uint32_t ofs
Definition: DINPUT.h:404
std::uint32_t flags
Definition: DINPUT.h:406
Definition: DINPUT.h:410
std::uint32_t how
Definition: DINPUT.h:414
std::uint32_t headerSize
Definition: DINPUT.h:412
std::uint32_t obj
Definition: DINPUT.h:413
std::uint32_t size
Definition: DINPUT.h:411
Definition: BASE.h:40
Definition: BASE.h:62
Definition: BASE.h:93
Definition: BASE.h:109