]> git.xonotic.org Git - xonotic/xonotic.git/blobdiff - misc/builddeps/dp.win32/include/dinput.h
Move libraries into subdirectories for better selectivity when building.
[xonotic/xonotic.git] / misc / builddeps / dp.win32 / include / dinput.h
diff --git a/misc/builddeps/dp.win32/include/dinput.h b/misc/builddeps/dp.win32/include/dinput.h
deleted file mode 100644 (file)
index 5bf9f5a..0000000
+++ /dev/null
@@ -1,1849 +0,0 @@
-/****************************************************************************
- *
- *  Copyright (C) 1996-1997 Microsoft Corporation.  All Rights Reserved.
- *
- *  File:       dinput.h
- *  Content:    DirectInput include file
- *
- ****************************************************************************/
-
-#ifndef __DINPUT_INCLUDED__
-#define __DINPUT_INCLUDED__
-
-#ifndef DIJ_RINGZERO
-
-#ifdef _WIN32
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef DIRECTINPUT_VERSION
-#define DIRECTINPUT_VERSION         0x0500
-#endif
-
-#ifndef DIJ_RINGZERO
-/****************************************************************************
- *
- *      Class IDs
- *
- ****************************************************************************/
-
-DEFINE_GUID(CLSID_DirectInput,      0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(CLSID_DirectInputDevice,0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-/****************************************************************************
- *
- *      Interfaces
- *
- ****************************************************************************/
-
-DEFINE_GUID(IID_IDirectInputA,     0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputW,     0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInput2A,    0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInput2W,    0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputDevice2A,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(IID_IDirectInputDevice2W,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(IID_IDirectInputEffect,  0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-
-/****************************************************************************
- *
- *      Predefined object types
- *
- ****************************************************************************/
-
-DEFINE_GUID(GUID_XAxis,   0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_YAxis,   0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_ZAxis,   0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_RxAxis,  0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_RyAxis,  0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_RzAxis,  0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_Slider,  0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(GUID_Button,  0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_Key,     0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(GUID_POV,     0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-DEFINE_GUID(GUID_Unknown, 0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-/****************************************************************************
- *
- *      Predefined product GUIDs
- *
- ****************************************************************************/
-
-DEFINE_GUID(GUID_SysMouse,   0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-DEFINE_GUID(GUID_Joystick   ,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
-
-/****************************************************************************
- *
- *      Predefined force feedback effects
- *
- ****************************************************************************/
-
-DEFINE_GUID(GUID_ConstantForce,0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_RampForce,    0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Square,       0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Sine,         0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Triangle,     0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_SawtoothUp,   0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Spring,       0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Damper,       0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Inertia,      0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_Friction,     0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-DEFINE_GUID(GUID_CustomForce,  0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
-
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *      Interfaces and Structures...
- *
- ****************************************************************************/
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-
-/****************************************************************************
- *
- *      IDirectInputEffect
- *
- ****************************************************************************/
-
-#define DIEFT_ALL                   0x00000000
-
-#define DIEFT_CONSTANTFORCE         0x00000001
-#define DIEFT_RAMPFORCE             0x00000002
-#define DIEFT_PERIODIC              0x00000003
-#define DIEFT_CONDITION             0x00000004
-#define DIEFT_CUSTOMFORCE           0x00000005
-#define DIEFT_HARDWARE              0x000000FF
-
-#define DIEFT_FFATTACK              0x00000200
-#define DIEFT_FFFADE                0x00000400
-#define DIEFT_SATURATION            0x00000800
-#define DIEFT_POSNEGCOEFFICIENTS    0x00001000
-#define DIEFT_POSNEGSATURATION      0x00002000
-#define DIEFT_DEADBAND              0x00004000
-
-#define DIEFT_GETTYPE(n)            LOBYTE(n)
-
-#define DI_DEGREES                  100
-#define DI_FFNOMINALMAX             10000
-#define DI_SECONDS                  1000000
-
-typedef struct DICONSTANTFORCE {
-    LONG  lMagnitude;
-} DICONSTANTFORCE, *LPDICONSTANTFORCE;
-typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;
-
-typedef struct DIRAMPFORCE {
-    LONG  lStart;
-    LONG  lEnd;
-} DIRAMPFORCE, *LPDIRAMPFORCE;
-typedef const DIRAMPFORCE *LPCDIRAMPFORCE;
-
-typedef struct DIPERIODIC {
-    DWORD dwMagnitude;
-    LONG  lOffset;
-    DWORD dwPhase;
-    DWORD dwPeriod;
-} DIPERIODIC, *LPDIPERIODIC;
-typedef const DIPERIODIC *LPCDIPERIODIC;
-
-typedef struct DICONDITION {
-    LONG  lOffset;
-    LONG  lPositiveCoefficient;
-    LONG  lNegativeCoefficient;
-    DWORD dwPositiveSaturation;
-    DWORD dwNegativeSaturation;
-    LONG  lDeadBand;
-} DICONDITION, *LPDICONDITION;
-typedef const DICONDITION *LPCDICONDITION;
-
-typedef struct DICUSTOMFORCE {
-    DWORD cChannels;
-    DWORD dwSamplePeriod;
-    DWORD cSamples;
-    LPLONG rglForceData;
-} DICUSTOMFORCE, *LPDICUSTOMFORCE;
-typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;
-
-typedef struct DIENVELOPE {
-    DWORD dwSize;                   /* sizeof(DIENVELOPE)   */
-    DWORD dwAttackLevel;
-    DWORD dwAttackTime;             /* Microseconds         */
-    DWORD dwFadeLevel;
-    DWORD dwFadeTime;               /* Microseconds         */
-} DIENVELOPE, *LPDIENVELOPE;
-typedef const DIENVELOPE *LPCDIENVELOPE;
-
-typedef struct DIEFFECT {
-    DWORD dwSize;                   /* sizeof(DIEFFECT)     */
-    DWORD dwFlags;                  /* DIEFF_*              */
-    DWORD dwDuration;               /* Microseconds         */
-    DWORD dwSamplePeriod;           /* Microseconds         */
-    DWORD dwGain;
-    DWORD dwTriggerButton;          /* or DIEB_NOTRIGGER    */
-    DWORD dwTriggerRepeatInterval;  /* Microseconds         */
-    DWORD cAxes;                    /* Number of axes       */
-    LPDWORD rgdwAxes;               /* Array of axes        */
-    LPLONG rglDirection;            /* Array of directions  */
-    LPDIENVELOPE lpEnvelope;        /* Optional             */
-    DWORD cbTypeSpecificParams;     /* Size of params       */
-    LPVOID lpvTypeSpecificParams;   /* Pointer to params    */
-} DIEFFECT, *LPDIEFFECT;
-typedef const DIEFFECT *LPCDIEFFECT;
-
-#define DIEFF_OBJECTIDS             0x00000001
-#define DIEFF_OBJECTOFFSETS         0x00000002
-#define DIEFF_CARTESIAN             0x00000010
-#define DIEFF_POLAR                 0x00000020
-#define DIEFF_SPHERICAL             0x00000040
-
-#define DIEP_DURATION               0x00000001
-#define DIEP_SAMPLEPERIOD           0x00000002
-#define DIEP_GAIN                   0x00000004
-#define DIEP_TRIGGERBUTTON          0x00000008
-#define DIEP_TRIGGERREPEATINTERVAL  0x00000010
-#define DIEP_AXES                   0x00000020
-#define DIEP_DIRECTION              0x00000040
-#define DIEP_ENVELOPE               0x00000080
-#define DIEP_TYPESPECIFICPARAMS     0x00000100
-#define DIEP_ALLPARAMS              0x000001FF
-#define DIEP_START                  0x20000000
-#define DIEP_NORESTART              0x40000000
-#define DIEP_NODOWNLOAD             0x80000000
-#define DIEB_NOTRIGGER              0xFFFFFFFF
-
-#define DIES_SOLO                   0x00000001
-#define DIES_NODOWNLOAD             0x80000000
-
-#define DIEGES_PLAYING              0x00000001
-#define DIEGES_EMULATED             0x00000002
-
-typedef struct DIEFFESCAPE {
-    DWORD   dwSize;
-    DWORD   dwCommand;
-    LPVOID  lpvInBuffer;
-    DWORD   cbInBuffer;
-    LPVOID  lpvOutBuffer;
-    DWORD   cbOutBuffer;
-} DIEFFESCAPE, *LPDIEFFESCAPE;
-
-#ifndef DIJ_RINGZERO
-
-#undef INTERFACE
-#define INTERFACE IDirectInputEffect
-
-DECLARE_INTERFACE_(IDirectInputEffect, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputEffect methods ***/
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-    STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE;
-    STDMETHOD(GetParameters)(THIS_ LPDIEFFECT,DWORD) PURE;
-    STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT,DWORD) PURE;
-    STDMETHOD(Start)(THIS_ DWORD,DWORD) PURE;
-    STDMETHOD(Stop)(THIS) PURE;
-    STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE;
-    STDMETHOD(Download)(THIS) PURE;
-    STDMETHOD(Unload)(THIS) PURE;
-    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
-};
-
-typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
-#define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a)
-#define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b)
-#define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b)
-#define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b)
-#define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p)
-#define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a)
-#define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p)
-#define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p)
-#define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a)
-#else
-#define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInputEffect_AddRef(p) (p)->AddRef()
-#define IDirectInputEffect_Release(p) (p)->Release()
-#define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
-#define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a)
-#define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b)
-#define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b)
-#define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b)
-#define IDirectInputEffect_Stop(p) (p)->Stop()
-#define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a)
-#define IDirectInputEffect_Download(p) (p)->Download()
-#define IDirectInputEffect_Unload(p) (p)->Unload()
-#define IDirectInputEffect_Escape(p,a) (p)->Escape(a)
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-/****************************************************************************
- *
- *      IDirectInputDevice
- *
- ****************************************************************************/
-
-#define DIDEVTYPE_DEVICE    1
-#define DIDEVTYPE_MOUSE     2
-#define DIDEVTYPE_KEYBOARD  3
-#define DIDEVTYPE_JOYSTICK  4
-#define DIDEVTYPE_HID       0x00010000
-
-#define DIDEVTYPEMOUSE_UNKNOWN          1
-#define DIDEVTYPEMOUSE_TRADITIONAL      2
-#define DIDEVTYPEMOUSE_FINGERSTICK      3
-#define DIDEVTYPEMOUSE_TOUCHPAD         4
-#define DIDEVTYPEMOUSE_TRACKBALL        5
-
-#define DIDEVTYPEKEYBOARD_UNKNOWN       0
-#define DIDEVTYPEKEYBOARD_PCXT          1
-#define DIDEVTYPEKEYBOARD_OLIVETTI      2
-#define DIDEVTYPEKEYBOARD_PCAT          3
-#define DIDEVTYPEKEYBOARD_PCENH         4
-#define DIDEVTYPEKEYBOARD_NOKIA1050     5
-#define DIDEVTYPEKEYBOARD_NOKIA9140     6
-#define DIDEVTYPEKEYBOARD_NEC98         7
-#define DIDEVTYPEKEYBOARD_NEC98LAPTOP   8
-#define DIDEVTYPEKEYBOARD_NEC98106      9
-#define DIDEVTYPEKEYBOARD_JAPAN106     10
-#define DIDEVTYPEKEYBOARD_JAPANAX      11
-#define DIDEVTYPEKEYBOARD_J3100        12
-
-#define DIDEVTYPEJOYSTICK_UNKNOWN       1
-#define DIDEVTYPEJOYSTICK_TRADITIONAL   2
-#define DIDEVTYPEJOYSTICK_FLIGHTSTICK   3
-#define DIDEVTYPEJOYSTICK_GAMEPAD       4
-#define DIDEVTYPEJOYSTICK_RUDDER        5
-#define DIDEVTYPEJOYSTICK_WHEEL         6
-#define DIDEVTYPEJOYSTICK_HEADTRACKER   7
-
-#define GET_DIDEVICE_TYPE(dwDevType)    LOBYTE(dwDevType)
-#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-/* This structure is defined for DirectX 3.0 compatibility */
-
-typedef struct DIDEVCAPS_DX3 {
-    DWORD   dwSize;
-    DWORD   dwFlags;
-    DWORD   dwDevType;
-    DWORD   dwAxes;
-    DWORD   dwButtons;
-    DWORD   dwPOVs;
-} DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIDEVCAPS {
-    DWORD   dwSize;
-    DWORD   dwFlags;
-    DWORD   dwDevType;
-    DWORD   dwAxes;
-    DWORD   dwButtons;
-    DWORD   dwPOVs;
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    DWORD   dwFFSamplePeriod;
-    DWORD   dwFFMinTimeResolution;
-    DWORD   dwFirmwareRevision;
-    DWORD   dwHardwareRevision;
-    DWORD   dwFFDriverVersion;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVCAPS, *LPDIDEVCAPS;
-
-#define DIDC_ATTACHED           0x00000001
-#define DIDC_POLLEDDEVICE       0x00000002
-#define DIDC_EMULATED           0x00000004
-#define DIDC_POLLEDDATAFORMAT   0x00000008
-#if(DIRECTINPUT_VERSION >= 0x0500)
-#define DIDC_FORCEFEEDBACK      0x00000100
-#define DIDC_FFATTACK           0x00000200
-#define DIDC_FFFADE             0x00000400
-#define DIDC_SATURATION         0x00000800
-#define DIDC_POSNEGCOEFFICIENTS 0x00001000
-#define DIDC_POSNEGSATURATION   0x00002000
-#define DIDC_DEADBAND           0x00004000
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-#define DIDFT_ALL           0x00000000
-
-#define DIDFT_RELAXIS       0x00000001
-#define DIDFT_ABSAXIS       0x00000002
-#define DIDFT_AXIS          0x00000003
-
-#define DIDFT_PSHBUTTON     0x00000004
-#define DIDFT_TGLBUTTON     0x00000008
-#define DIDFT_BUTTON        0x0000000C
-
-#define DIDFT_POV           0x00000010
-
-#define DIDFT_COLLECTION    0x00000040
-#define DIDFT_NODATA        0x00000080
-
-#define DIDFT_ANYINSTANCE   0x00FFFF00
-#define DIDFT_INSTANCEMASK  DIDFT_ANYINSTANCE
-#define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8)
-#define DIDFT_GETTYPE(n)     LOBYTE(n)
-#define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8)
-#define DIDFT_FFACTUATOR        0x01000000
-#define DIDFT_FFEFFECTTRIGGER   0x02000000
-
-#define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)
-#define DIDFT_NOCOLLECTION      0x00FFFF00
-
-
-#ifndef DIJ_RINGZERO
-
-typedef struct _DIOBJECTDATAFORMAT {
-    const GUID *pguid;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;
-typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;
-
-typedef struct _DIDATAFORMAT {
-    DWORD   dwSize;
-    DWORD   dwObjSize;
-    DWORD   dwFlags;
-    DWORD   dwDataSize;
-    DWORD   dwNumObjs;
-    LPDIOBJECTDATAFORMAT rgodf;
-} DIDATAFORMAT, *LPDIDATAFORMAT;
-typedef const DIDATAFORMAT *LPCDIDATAFORMAT;
-
-#define DIDF_ABSAXIS            0x00000001
-#define DIDF_RELAXIS            0x00000002
-
-extern const DIDATAFORMAT c_dfDIMouse;
-extern const DIDATAFORMAT c_dfDIKeyboard;
-extern const DIDATAFORMAT c_dfDIJoystick;
-extern const DIDATAFORMAT c_dfDIJoystick2;
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-/* These structures are defined for DirectX 3.0 compatibility */
-
-typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    CHAR    tszName[MAX_PATH];
-} DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A;
-typedef struct DIDEVICEOBJECTINSTANCE_DX3W {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    WCHAR   tszName[MAX_PATH];
-} DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W;
-#ifdef UNICODE
-typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3;
-typedef LPDIDEVICEOBJECTINSTANCE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3;
-#else
-typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3;
-typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3;
-#endif // UNICODE
-typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;
-typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;
-typedef const DIDEVICEOBJECTINSTANCE_DX3  *LPCDIDEVICEOBJECTINSTANCE_DX3;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIDEVICEOBJECTINSTANCEA {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    CHAR    tszName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    DWORD   dwFFMaxForce;
-    DWORD   dwFFForceResolution;
-    WORD    wCollectionNumber;
-    WORD    wDesignatorIndex;
-    WORD    wUsagePage;
-    WORD    wUsage;
-    DWORD   dwDimension;
-    WORD    wExponent;
-    WORD    wReserved;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;
-typedef struct DIDEVICEOBJECTINSTANCEW {
-    DWORD   dwSize;
-    GUID    guidType;
-    DWORD   dwOfs;
-    DWORD   dwType;
-    DWORD   dwFlags;
-    WCHAR   tszName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    DWORD   dwFFMaxForce;
-    DWORD   dwFFForceResolution;
-    WORD    wCollectionNumber;
-    WORD    wDesignatorIndex;
-    WORD    wUsagePage;
-    WORD    wUsage;
-    DWORD   dwDimension;
-    WORD    wExponent;
-    WORD    wReserved;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;
-#ifdef UNICODE
-typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE;
-typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE;
-#else
-typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE;
-typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE;
-#endif // UNICODE
-typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;
-typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;
-typedef const DIDEVICEOBJECTINSTANCE  *LPCDIDEVICEOBJECTINSTANCE;
-
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID);
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID);
-#ifdef UNICODE
-#define LPDIENUMDEVICEOBJECTSCALLBACK  LPDIENUMDEVICEOBJECTSCALLBACKW
-#else
-#define LPDIENUMDEVICEOBJECTSCALLBACK  LPDIENUMDEVICEOBJECTSCALLBACKA
-#endif // !UNICODE
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-#define DIDOI_FFACTUATOR        0x00000001
-#define DIDOI_FFEFFECTTRIGGER   0x00000002
-#define DIDOI_POLLED            0x00008000
-#define DIDOI_ASPECTPOSITION    0x00000100
-#define DIDOI_ASPECTVELOCITY    0x00000200
-#define DIDOI_ASPECTACCEL       0x00000300
-#define DIDOI_ASPECTFORCE       0x00000400
-#define DIDOI_ASPECTMASK        0x00000F00
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIPROPHEADER {
-    DWORD   dwSize;
-    DWORD   dwHeaderSize;
-    DWORD   dwObj;
-    DWORD   dwHow;
-} DIPROPHEADER, *LPDIPROPHEADER;
-typedef const DIPROPHEADER *LPCDIPROPHEADER;
-
-#define DIPH_DEVICE             0
-#define DIPH_BYOFFSET           1
-#define DIPH_BYID               2
-
-typedef struct DIPROPDWORD {
-    DIPROPHEADER diph;
-    DWORD   dwData;
-} DIPROPDWORD, *LPDIPROPDWORD;
-typedef const DIPROPDWORD *LPCDIPROPDWORD;
-
-typedef struct DIPROPRANGE {
-    DIPROPHEADER diph;
-    LONG    lMin;
-    LONG    lMax;
-} DIPROPRANGE, *LPDIPROPRANGE;
-typedef const DIPROPRANGE *LPCDIPROPRANGE;
-
-#define DIPROPRANGE_NOMIN       ((LONG)0x80000000)
-#define DIPROPRANGE_NOMAX       ((LONG)0x7FFFFFFF)
-
-#ifdef __cplusplus
-#define MAKEDIPROP(prop)    (*(const GUID *)(prop))
-#else
-#define MAKEDIPROP(prop)    ((REFGUID)(prop))
-#endif
-
-#define DIPROP_BUFFERSIZE       MAKEDIPROP(1)
-
-#define DIPROP_AXISMODE         MAKEDIPROP(2)
-
-#define DIPROPAXISMODE_ABS      0
-#define DIPROPAXISMODE_REL      1
-
-#define DIPROP_GRANULARITY      MAKEDIPROP(3)
-
-#define DIPROP_RANGE            MAKEDIPROP(4)
-
-#define DIPROP_DEADZONE         MAKEDIPROP(5)
-
-#define DIPROP_SATURATION       MAKEDIPROP(6)
-
-#define DIPROP_FFGAIN           MAKEDIPROP(7)
-
-#define DIPROP_FFLOAD           MAKEDIPROP(8)
-
-#define DIPROP_AUTOCENTER       MAKEDIPROP(9)
-
-#define DIPROPAUTOCENTER_OFF    0
-#define DIPROPAUTOCENTER_ON     1
-
-#define DIPROP_CALIBRATIONMODE  MAKEDIPROP(10)
-
-#define DIPROPCALIBRATIONMODE_COOKED    0
-#define DIPROPCALIBRATIONMODE_RAW       1
-
-typedef struct DIDEVICEOBJECTDATA {
-    DWORD   dwOfs;
-    DWORD   dwData;
-    DWORD   dwTimeStamp;
-    DWORD   dwSequence;
-} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;
-typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;
-
-#define DIGDD_PEEK          0x00000001
-
-#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \
-                        ((int)((dwSequence1) - (dwSequence2)) cmp 0)
-#define DISCL_EXCLUSIVE     0x00000001
-#define DISCL_NONEXCLUSIVE  0x00000002
-#define DISCL_FOREGROUND    0x00000004
-#define DISCL_BACKGROUND    0x00000008
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-/* These structures are defined for DirectX 3.0 compatibility */
-
-typedef struct DIDEVICEINSTANCE_DX3A {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    CHAR    tszInstanceName[MAX_PATH];
-    CHAR    tszProductName[MAX_PATH];
-} DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A;
-typedef struct DIDEVICEINSTANCE_DX3W {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    WCHAR   tszInstanceName[MAX_PATH];
-    WCHAR   tszProductName[MAX_PATH];
-} DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W;
-#ifdef UNICODE
-typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3;
-typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3;
-#else
-typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3;
-typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3;
-#endif // UNICODE
-typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;
-typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;
-typedef const DIDEVICEINSTANCE_DX3  *LPCDIDEVICEINSTANCE_DX3;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-typedef struct DIDEVICEINSTANCEA {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    CHAR    tszInstanceName[MAX_PATH];
-    CHAR    tszProductName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    GUID    guidFFDriver;
-    WORD    wUsagePage;
-    WORD    wUsage;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA;
-typedef struct DIDEVICEINSTANCEW {
-    DWORD   dwSize;
-    GUID    guidInstance;
-    GUID    guidProduct;
-    DWORD   dwDevType;
-    WCHAR   tszInstanceName[MAX_PATH];
-    WCHAR   tszProductName[MAX_PATH];
-#if(DIRECTINPUT_VERSION >= 0x0500)
-    GUID    guidFFDriver;
-    WORD    wUsagePage;
-    WORD    wUsage;
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW;
-#ifdef UNICODE
-typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
-typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE;
-#else
-typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
-typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE;
-#endif // UNICODE
-typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;
-typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;
-typedef const DIDEVICEINSTANCE  *LPCDIDEVICEINSTANCE;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDeviceW
-
-DECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceW methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-};
-
-typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDeviceA
-
-DECLARE_INTERFACE_(IDirectInputDeviceA, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceA methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-};
-
-typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;
-
-#ifdef UNICODE
-#define IID_IDirectInputDevice IID_IDirectInputDeviceW
-#define IDirectInputDevice IDirectInputDeviceW
-#define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl
-#else
-#define IID_IDirectInputDevice IID_IDirectInputDeviceA
-#define IDirectInputDevice IDirectInputDeviceA
-#define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl
-#endif
-typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
-#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
-#define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
-#define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
-#define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p)
-#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p)
-#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
-#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
-#define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
-#define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
-#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
-#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
-#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
-#else
-#define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInputDevice_AddRef(p) (p)->AddRef()
-#define IDirectInputDevice_Release(p) (p)->Release()
-#define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a)
-#define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
-#define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b)
-#define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b)
-#define IDirectInputDevice_Acquire(p) (p)->Acquire()
-#define IDirectInputDevice_Unacquire(p) (p)->Unacquire()
-#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
-#define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
-#define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a)
-#define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a)
-#define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
-#define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
-#define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
-#define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-
-#if(DIRECTINPUT_VERSION >= 0x0500)
-
-#define DISFFC_RESET            0x00000001
-#define DISFFC_STOPALL          0x00000002
-#define DISFFC_PAUSE            0x00000004
-#define DISFFC_CONTINUE         0x00000008
-#define DISFFC_SETACTUATORSON   0x00000010
-#define DISFFC_SETACTUATORSOFF  0x00000020
-
-#define DIGFFS_EMPTY            0x00000001
-#define DIGFFS_STOPPED          0x00000002
-#define DIGFFS_PAUSED           0x00000004
-#define DIGFFS_ACTUATORSON      0x00000010
-#define DIGFFS_ACTUATORSOFF     0x00000020
-#define DIGFFS_POWERON          0x00000040
-#define DIGFFS_POWEROFF         0x00000080
-#define DIGFFS_SAFETYSWITCHON   0x00000100
-#define DIGFFS_SAFETYSWITCHOFF  0x00000200
-#define DIGFFS_USERFFSWITCHON   0x00000400
-#define DIGFFS_USERFFSWITCHOFF  0x00000800
-#define DIGFFS_DEVICELOST       0x80000000
-
-#ifndef DIJ_RINGZERO
-
-typedef struct DIEFFECTINFOA {
-    DWORD   dwSize;
-    GUID    guid;
-    DWORD   dwEffType;
-    DWORD   dwStaticParams;
-    DWORD   dwDynamicParams;
-    CHAR    tszName[MAX_PATH];
-} DIEFFECTINFOA, *LPDIEFFECTINFOA;
-typedef struct DIEFFECTINFOW {
-    DWORD   dwSize;
-    GUID    guid;
-    DWORD   dwEffType;
-    DWORD   dwStaticParams;
-    DWORD   dwDynamicParams;
-    WCHAR   tszName[MAX_PATH];
-} DIEFFECTINFOW, *LPDIEFFECTINFOW;
-#ifdef UNICODE
-typedef DIEFFECTINFOW DIEFFECTINFO;
-typedef LPDIEFFECTINFOW LPDIEFFECTINFO;
-#else
-typedef DIEFFECTINFOA DIEFFECTINFO;
-typedef LPDIEFFECTINFOA LPDIEFFECTINFO;
-#endif // UNICODE
-typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;
-typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;
-typedef const DIEFFECTINFO  *LPCDIEFFECTINFO;
-
-typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);
-typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);
-#ifdef UNICODE
-#define LPDIENUMEFFECTSCALLBACK  LPDIENUMEFFECTSCALLBACKW
-#else
-#define LPDIENUMEFFECTSCALLBACK  LPDIENUMEFFECTSCALLBACKA
-#endif // !UNICODE
-typedef BOOL (FAR PASCAL * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDevice2W
-
-DECLARE_INTERFACE_(IDirectInputDevice2W, IDirectInputDeviceW)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceW methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-
-    /*** IDirectInputDevice2W methods ***/
-    STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE;
-    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
-    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
-    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
-    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
-    STDMETHOD(Poll)(THIS) PURE;
-    STDMETHOD(SendDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-};
-
-typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputDevice2A
-
-DECLARE_INTERFACE_(IDirectInputDevice2A, IDirectInputDeviceA)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputDeviceA methods ***/
-    STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
-    STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
-    STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
-    STDMETHOD(Acquire)(THIS) PURE;
-    STDMETHOD(Unacquire)(THIS) PURE;
-    STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
-    STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-    STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
-    STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
-    STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
-    STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
-
-    /*** IDirectInputDevice2A methods ***/
-    STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
-    STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
-    STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
-    STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
-    STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
-    STDMETHOD(Poll)(THIS) PURE;
-    STDMETHOD(SendDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
-};
-
-typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;
-
-#ifdef UNICODE
-#define IID_IDirectInputDevice2 IID_IDirectInputDevice2W
-#define IDirectInputDevice2 IDirectInputDevice2W
-#define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl
-#else
-#define IID_IDirectInputDevice2 IID_IDirectInputDevice2A
-#define IDirectInputDevice2 IDirectInputDevice2A
-#define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl
-#endif
-typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
-#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
-#define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
-#define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
-#define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p)
-#define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p)
-#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
-#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
-#define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
-#define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
-#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
-#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
-#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
-#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
-#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)
-#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)
-#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)
-#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)
-#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
-#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
-#define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a)
-#define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p)
-#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
-#else
-#define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInputDevice2_AddRef(p) (p)->AddRef()
-#define IDirectInputDevice2_Release(p) (p)->Release()
-#define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a)
-#define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
-#define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b)
-#define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b)
-#define IDirectInputDevice2_Acquire(p) (p)->Acquire()
-#define IDirectInputDevice2_Unacquire(p) (p)->Unacquire()
-#define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
-#define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
-#define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a)
-#define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a)
-#define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
-#define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
-#define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
-#define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
-#define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)
-#define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)
-#define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)
-#define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)
-#define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)
-#define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
-#define IDirectInputDevice2_Escape(p,a) (p)->Escape(a)
-#define IDirectInputDevice2_Poll(p) (p)->Poll()
-#define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)
-#endif
-
-#endif /* DIJ_RINGZERO */
-
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-/****************************************************************************
- *
- *      Mouse
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-typedef struct _DIMOUSESTATE {
-    LONG    lX;
-    LONG    lY;
-    LONG    lZ;
-    BYTE    rgbButtons[4];
-} DIMOUSESTATE, *LPDIMOUSESTATE;
-
-#define DIMOFS_X        FIELD_OFFSET(DIMOUSESTATE, lX)
-#define DIMOFS_Y        FIELD_OFFSET(DIMOUSESTATE, lY)
-#define DIMOFS_Z        FIELD_OFFSET(DIMOUSESTATE, lZ)
-#define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0)
-#define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1)
-#define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2)
-#define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3)
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *      Keyboard
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-/****************************************************************************
- *
- *      DirectInput keyboard scan codes
- *
- ****************************************************************************/
-
-#define DIK_ESCAPE          0x01
-#define DIK_1               0x02
-#define DIK_2               0x03
-#define DIK_3               0x04
-#define DIK_4               0x05
-#define DIK_5               0x06
-#define DIK_6               0x07
-#define DIK_7               0x08
-#define DIK_8               0x09
-#define DIK_9               0x0A
-#define DIK_0               0x0B
-#define DIK_MINUS           0x0C    /* - on main keyboard */
-#define DIK_EQUALS          0x0D
-#define DIK_BACK            0x0E    /* backspace */
-#define DIK_TAB             0x0F
-#define DIK_Q               0x10
-#define DIK_W               0x11
-#define DIK_E               0x12
-#define DIK_R               0x13
-#define DIK_T               0x14
-#define DIK_Y               0x15
-#define DIK_U               0x16
-#define DIK_I               0x17
-#define DIK_O               0x18
-#define DIK_P               0x19
-#define DIK_LBRACKET        0x1A
-#define DIK_RBRACKET        0x1B
-#define DIK_RETURN          0x1C    /* Enter on main keyboard */
-#define DIK_LCONTROL        0x1D
-#define DIK_A               0x1E
-#define DIK_S               0x1F
-#define DIK_D               0x20
-#define DIK_F               0x21
-#define DIK_G               0x22
-#define DIK_H               0x23
-#define DIK_J               0x24
-#define DIK_K               0x25
-#define DIK_L               0x26
-#define DIK_SEMICOLON       0x27
-#define DIK_APOSTROPHE      0x28
-#define DIK_GRAVE           0x29    /* accent grave */
-#define DIK_LSHIFT          0x2A
-#define DIK_BACKSLASH       0x2B
-#define DIK_Z               0x2C
-#define DIK_X               0x2D
-#define DIK_C               0x2E
-#define DIK_V               0x2F
-#define DIK_B               0x30
-#define DIK_N               0x31
-#define DIK_M               0x32
-#define DIK_COMMA           0x33
-#define DIK_PERIOD          0x34    /* . on main keyboard */
-#define DIK_SLASH           0x35    /* / on main keyboard */
-#define DIK_RSHIFT          0x36
-#define DIK_MULTIPLY        0x37    /* * on numeric keypad */
-#define DIK_LMENU           0x38    /* left Alt */
-#define DIK_SPACE           0x39
-#define DIK_CAPITAL         0x3A
-#define DIK_F1              0x3B
-#define DIK_F2              0x3C
-#define DIK_F3              0x3D
-#define DIK_F4              0x3E
-#define DIK_F5              0x3F
-#define DIK_F6              0x40
-#define DIK_F7              0x41
-#define DIK_F8              0x42
-#define DIK_F9              0x43
-#define DIK_F10             0x44
-#define DIK_NUMLOCK         0x45
-#define DIK_SCROLL          0x46    /* Scroll Lock */
-#define DIK_NUMPAD7         0x47
-#define DIK_NUMPAD8         0x48
-#define DIK_NUMPAD9         0x49
-#define DIK_SUBTRACT        0x4A    /* - on numeric keypad */
-#define DIK_NUMPAD4         0x4B
-#define DIK_NUMPAD5         0x4C
-#define DIK_NUMPAD6         0x4D
-#define DIK_ADD             0x4E    /* + on numeric keypad */
-#define DIK_NUMPAD1         0x4F
-#define DIK_NUMPAD2         0x50
-#define DIK_NUMPAD3         0x51
-#define DIK_NUMPAD0         0x52
-#define DIK_DECIMAL         0x53    /* . on numeric keypad */
-#define DIK_F11             0x57
-#define DIK_F12             0x58
-
-#define DIK_F13             0x64    /*                     (NEC PC98) */
-#define DIK_F14             0x65    /*                     (NEC PC98) */
-#define DIK_F15             0x66    /*                     (NEC PC98) */
-
-#define DIK_KANA            0x70    /* (Japanese keyboard)            */
-#define DIK_CONVERT         0x79    /* (Japanese keyboard)            */
-#define DIK_NOCONVERT       0x7B    /* (Japanese keyboard)            */
-#define DIK_YEN             0x7D    /* (Japanese keyboard)            */
-#define DIK_NUMPADEQUALS    0x8D    /* = on numeric keypad (NEC PC98) */
-#define DIK_CIRCUMFLEX      0x90    /* (Japanese keyboard)            */
-#define DIK_AT              0x91    /*                     (NEC PC98) */
-#define DIK_COLON           0x92    /*                     (NEC PC98) */
-#define DIK_UNDERLINE       0x93    /*                     (NEC PC98) */
-#define DIK_KANJI           0x94    /* (Japanese keyboard)            */
-#define DIK_STOP            0x95    /*                     (NEC PC98) */
-#define DIK_AX              0x96    /*                     (Japan AX) */
-#define DIK_UNLABELED       0x97    /*                        (J3100) */
-#define DIK_NUMPADENTER     0x9C    /* Enter on numeric keypad */
-#define DIK_RCONTROL        0x9D
-#define DIK_NUMPADCOMMA     0xB3    /* , on numeric keypad (NEC PC98) */
-#define DIK_DIVIDE          0xB5    /* / on numeric keypad */
-#define DIK_SYSRQ           0xB7
-#define DIK_RMENU           0xB8    /* right Alt */
-#define DIK_HOME            0xC7    /* Home on arrow keypad */
-#define DIK_UP              0xC8    /* UpArrow on arrow keypad */
-#define DIK_PRIOR           0xC9    /* PgUp on arrow keypad */
-#define DIK_LEFT            0xCB    /* LeftArrow on arrow keypad */
-#define DIK_RIGHT           0xCD    /* RightArrow on arrow keypad */
-#define DIK_END             0xCF    /* End on arrow keypad */
-#define DIK_DOWN            0xD0    /* DownArrow on arrow keypad */
-#define DIK_NEXT            0xD1    /* PgDn on arrow keypad */
-#define DIK_INSERT          0xD2    /* Insert on arrow keypad */
-#define DIK_DELETE          0xD3    /* Delete on arrow keypad */
-#define DIK_LWIN            0xDB    /* Left Windows key */
-#define DIK_RWIN            0xDC    /* Right Windows key */
-#define DIK_APPS            0xDD    /* AppMenu key */
-
-/*
- *  Alternate names for keys, to facilitate transition from DOS.
- */
-#define DIK_BACKSPACE       DIK_BACK            /* backspace */
-#define DIK_NUMPADSTAR      DIK_MULTIPLY        /* * on numeric keypad */
-#define DIK_LALT            DIK_LMENU           /* left Alt */
-#define DIK_CAPSLOCK        DIK_CAPITAL         /* CapsLock */
-#define DIK_NUMPADMINUS     DIK_SUBTRACT        /* - on numeric keypad */
-#define DIK_NUMPADPLUS      DIK_ADD             /* + on numeric keypad */
-#define DIK_NUMPADPERIOD    DIK_DECIMAL         /* . on numeric keypad */
-#define DIK_NUMPADSLASH     DIK_DIVIDE          /* / on numeric keypad */
-#define DIK_RALT            DIK_RMENU           /* right Alt */
-#define DIK_UPARROW         DIK_UP              /* UpArrow on arrow keypad */
-#define DIK_PGUP            DIK_PRIOR           /* PgUp on arrow keypad */
-#define DIK_LEFTARROW       DIK_LEFT            /* LeftArrow on arrow keypad */
-#define DIK_RIGHTARROW      DIK_RIGHT           /* RightArrow on arrow keypad */
-#define DIK_DOWNARROW       DIK_DOWN            /* DownArrow on arrow keypad */
-#define DIK_PGDN            DIK_NEXT            /* PgDn on arrow keypad */
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *      Joystick
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-typedef struct DIJOYSTATE {
-    LONG    lX;                     /* x-axis position              */
-    LONG    lY;                     /* y-axis position              */
-    LONG    lZ;                     /* z-axis position              */
-    LONG    lRx;                    /* x-axis rotation              */
-    LONG    lRy;                    /* y-axis rotation              */
-    LONG    lRz;                    /* z-axis rotation              */
-    LONG    rglSlider[2];           /* extra axes positions         */
-    DWORD   rgdwPOV[4];             /* POV directions               */
-    BYTE    rgbButtons[32];         /* 32 buttons                   */
-} DIJOYSTATE, *LPDIJOYSTATE;
-
-typedef struct DIJOYSTATE2 {
-    LONG    lX;                     /* x-axis position              */
-    LONG    lY;                     /* y-axis position              */
-    LONG    lZ;                     /* z-axis position              */
-    LONG    lRx;                    /* x-axis rotation              */
-    LONG    lRy;                    /* y-axis rotation              */
-    LONG    lRz;                    /* z-axis rotation              */
-    LONG    rglSlider[2];           /* extra axes positions         */
-    DWORD   rgdwPOV[4];             /* POV directions               */
-    BYTE    rgbButtons[128];        /* 128 buttons                  */
-    LONG    lVX;                    /* x-axis velocity              */
-    LONG    lVY;                    /* y-axis velocity              */
-    LONG    lVZ;                    /* z-axis velocity              */
-    LONG    lVRx;                   /* x-axis angular velocity      */
-    LONG    lVRy;                   /* y-axis angular velocity      */
-    LONG    lVRz;                   /* z-axis angular velocity      */
-    LONG    rglVSlider[2];          /* extra axes velocities        */
-    LONG    lAX;                    /* x-axis acceleration          */
-    LONG    lAY;                    /* y-axis acceleration          */
-    LONG    lAZ;                    /* z-axis acceleration          */
-    LONG    lARx;                   /* x-axis angular acceleration  */
-    LONG    lARy;                   /* y-axis angular acceleration  */
-    LONG    lARz;                   /* z-axis angular acceleration  */
-    LONG    rglASlider[2];          /* extra axes accelerations     */
-    LONG    lFX;                    /* x-axis force                 */
-    LONG    lFY;                    /* y-axis force                 */
-    LONG    lFZ;                    /* z-axis force                 */
-    LONG    lFRx;                   /* x-axis torque                */
-    LONG    lFRy;                   /* y-axis torque                */
-    LONG    lFRz;                   /* z-axis torque                */
-    LONG    rglFSlider[2];          /* extra axes forces            */
-} DIJOYSTATE2, *LPDIJOYSTATE2;
-
-#define DIJOFS_X            FIELD_OFFSET(DIJOYSTATE, lX)
-#define DIJOFS_Y            FIELD_OFFSET(DIJOYSTATE, lY)
-#define DIJOFS_Z            FIELD_OFFSET(DIJOYSTATE, lZ)
-#define DIJOFS_RX           FIELD_OFFSET(DIJOYSTATE, lRx)
-#define DIJOFS_RY           FIELD_OFFSET(DIJOYSTATE, lRy)
-#define DIJOFS_RZ           FIELD_OFFSET(DIJOYSTATE, lRz)
-#define DIJOFS_SLIDER(n)   (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
-                                                        (n) * sizeof(LONG))
-#define DIJOFS_POV(n)      (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
-                                                        (n) * sizeof(DWORD))
-#define DIJOFS_BUTTON(n)   (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
-#define DIJOFS_BUTTON0      DIJOFS_BUTTON(0)
-#define DIJOFS_BUTTON1      DIJOFS_BUTTON(1)
-#define DIJOFS_BUTTON2      DIJOFS_BUTTON(2)
-#define DIJOFS_BUTTON3      DIJOFS_BUTTON(3)
-#define DIJOFS_BUTTON4      DIJOFS_BUTTON(4)
-#define DIJOFS_BUTTON5      DIJOFS_BUTTON(5)
-#define DIJOFS_BUTTON6      DIJOFS_BUTTON(6)
-#define DIJOFS_BUTTON7      DIJOFS_BUTTON(7)
-#define DIJOFS_BUTTON8      DIJOFS_BUTTON(8)
-#define DIJOFS_BUTTON9      DIJOFS_BUTTON(9)
-#define DIJOFS_BUTTON10     DIJOFS_BUTTON(10)
-#define DIJOFS_BUTTON11     DIJOFS_BUTTON(11)
-#define DIJOFS_BUTTON12     DIJOFS_BUTTON(12)
-#define DIJOFS_BUTTON13     DIJOFS_BUTTON(13)
-#define DIJOFS_BUTTON14     DIJOFS_BUTTON(14)
-#define DIJOFS_BUTTON15     DIJOFS_BUTTON(15)
-#define DIJOFS_BUTTON16     DIJOFS_BUTTON(16)
-#define DIJOFS_BUTTON17     DIJOFS_BUTTON(17)
-#define DIJOFS_BUTTON18     DIJOFS_BUTTON(18)
-#define DIJOFS_BUTTON19     DIJOFS_BUTTON(19)
-#define DIJOFS_BUTTON20     DIJOFS_BUTTON(20)
-#define DIJOFS_BUTTON21     DIJOFS_BUTTON(21)
-#define DIJOFS_BUTTON22     DIJOFS_BUTTON(22)
-#define DIJOFS_BUTTON23     DIJOFS_BUTTON(23)
-#define DIJOFS_BUTTON24     DIJOFS_BUTTON(24)
-#define DIJOFS_BUTTON25     DIJOFS_BUTTON(25)
-#define DIJOFS_BUTTON26     DIJOFS_BUTTON(26)
-#define DIJOFS_BUTTON27     DIJOFS_BUTTON(27)
-#define DIJOFS_BUTTON28     DIJOFS_BUTTON(28)
-#define DIJOFS_BUTTON29     DIJOFS_BUTTON(29)
-#define DIJOFS_BUTTON30     DIJOFS_BUTTON(30)
-#define DIJOFS_BUTTON31     DIJOFS_BUTTON(31)
-
-
-#endif /* DIJ_RINGZERO */
-
-/****************************************************************************
- *
- *  IDirectInput
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-#define DIENUM_STOP             0
-#define DIENUM_CONTINUE         1
-
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID);
-typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID);
-#ifdef UNICODE
-#define LPDIENUMDEVICESCALLBACK  LPDIENUMDEVICESCALLBACKW
-#else
-#define LPDIENUMDEVICESCALLBACK  LPDIENUMDEVICESCALLBACKA
-#endif // !UNICODE
-
-#define DIEDFL_ALLDEVICES       0x00000000
-#define DIEDFL_ATTACHEDONLY     0x00000001
-#if(DIRECTINPUT_VERSION >= 0x0500)
-#define DIEDFL_FORCEFEEDBACK    0x00000100
-#endif /* DIRECTINPUT_VERSION >= 0x0500 */
-
-#undef INTERFACE
-#define INTERFACE IDirectInputW
-
-DECLARE_INTERFACE_(IDirectInputW, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputW methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-};
-
-typedef struct IDirectInputW *LPDIRECTINPUTW;
-
-#undef INTERFACE
-#define INTERFACE IDirectInputA
-
-DECLARE_INTERFACE_(IDirectInputA, IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputA methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-};
-
-typedef struct IDirectInputA *LPDIRECTINPUTA;
-
-#ifdef UNICODE
-#define IID_IDirectInput IID_IDirectInputW
-#define IDirectInput IDirectInputW
-#define IDirectInputVtbl IDirectInputWVtbl
-#else
-#define IID_IDirectInput IID_IDirectInputA
-#define IDirectInput IDirectInputA
-#define IDirectInputVtbl IDirectInputAVtbl
-#endif
-typedef struct IDirectInput *LPDIRECTINPUT;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInput_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
-#define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
-#define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
-#else
-#define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInput_AddRef(p) (p)->AddRef()
-#define IDirectInput_Release(p) (p)->Release()
-#define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
-#define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
-#define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
-#define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b)
-#endif
-
-#undef INTERFACE
-#define INTERFACE IDirectInput2W
-
-DECLARE_INTERFACE_(IDirectInput2W, IDirectInputW)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputW methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-
-    /*** IDirectInput2W methods ***/
-    STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE;
-};
-
-typedef struct IDirectInput2W *LPDIRECTINPUT2W;
-
-#undef INTERFACE
-#define INTERFACE IDirectInput2A
-
-DECLARE_INTERFACE_(IDirectInput2A, IDirectInputA)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-
-    /*** IDirectInputA methods ***/
-    STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
-    STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
-    STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
-    STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
-    STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
-
-    /*** IDirectInput2A methods ***/
-    STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE;
-};
-
-typedef struct IDirectInput2A *LPDIRECTINPUT2A;
-
-#ifdef UNICODE
-#define IID_IDirectInput2 IID_IDirectInput2W
-#define IDirectInput2 IDirectInput2W
-#define IDirectInput2Vtbl IDirectInput2WVtbl
-#else
-#define IID_IDirectInput2 IID_IDirectInput2A
-#define IDirectInput2 IDirectInput2A
-#define IDirectInput2Vtbl IDirectInput2AVtbl
-#endif
-typedef struct IDirectInput2 *LPDIRECTINPUT2;
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
-#define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p)
-#define IDirectInput2_Release(p) (p)->lpVtbl->Release(p)
-#define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
-#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
-#define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
-#define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
-#define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
-#define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)
-#else
-#define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
-#define IDirectInput2_AddRef(p) (p)->AddRef()
-#define IDirectInput2_Release(p) (p)->Release()
-#define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
-#define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
-#define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
-#define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
-#define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b)
-#define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)
-#endif
-
-extern HRESULT WINAPI DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter);
-extern HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter);
-#ifdef UNICODE
-#define DirectInputCreate  DirectInputCreateW
-#else
-#define DirectInputCreate  DirectInputCreateA
-#endif // !UNICODE
-
-#endif /* DIJ_RINGZERO */
-
-
-/****************************************************************************
- *
- *  Return Codes
- *
- ****************************************************************************/
-
-/*
- *  The operation completed successfully.
- */
-#define DI_OK                           S_OK
-
-/*
- *  The device exists but is not currently attached.
- */
-#define DI_NOTATTACHED                  S_FALSE
-
-/*
- *  The device buffer overflowed.  Some input was lost.
- */
-#define DI_BUFFEROVERFLOW               S_FALSE
-
-/*
- *  The change in device properties had no effect.
- */
-#define DI_PROPNOEFFECT                 S_FALSE
-
-/*
- *  The operation had no effect.
- */
-#define DI_NOEFFECT                     S_FALSE
-
-/*
- *  The device is a polled device.  As a result, device buffering
- *  will not collect any data and event notifications will not be
- *  signalled until GetDeviceState is called.
- */
-#define DI_POLLEDDEVICE                 ((HRESULT)0x00000002L)
-
-/*
- *  The parameters of the effect were successfully updated by
- *  IDirectInputEffect::SetParameters, but the effect was not
- *  downloaded because the device is not exclusively acquired
- *  or because the DIEP_NODOWNLOAD flag was passed.
- */
-#define DI_DOWNLOADSKIPPED              ((HRESULT)0x00000003L)
-
-/*
- *  The parameters of the effect were successfully updated by
- *  IDirectInputEffect::SetParameters, but in order to change
- *  the parameters, the effect needed to be restarted.
- */
-#define DI_EFFECTRESTARTED              ((HRESULT)0x00000004L)
-
-/*
- *  The parameters of the effect were successfully updated by
- *  IDirectInputEffect::SetParameters, but some of them were
- *  beyond the capabilities of the device and were truncated.
- */
-#define DI_TRUNCATED                    ((HRESULT)0x00000008L)
-
-/*
- *  Equal to DI_EFFECTRESTARTED | DI_TRUNCATED.
- */
-#define DI_TRUNCATEDANDRESTARTED        ((HRESULT)0x0000000CL)
-
-/*
- *  The application requires a newer version of DirectInput.
- */
-#define DIERR_OLDDIRECTINPUTVERSION     \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION)
-
-/*
- *  The application was written for an unsupported prerelease version
- *  of DirectInput.
- */
-#define DIERR_BETADIRECTINPUTVERSION    \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP)
-
-/*
- *  The object could not be created due to an incompatible driver version
- *  or mismatched or incomplete driver components.
- */
-#define DIERR_BADDRIVERVER              \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL)
-
-/*
- * The device or device instance or effect is not registered with DirectInput.
- */
-#define DIERR_DEVICENOTREG              REGDB_E_CLASSNOTREG
-
-/*
- * The requested object does not exist.
- */
-#define DIERR_NOTFOUND                  \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
-
-/*
- * The requested object does not exist.
- */
-#define DIERR_OBJECTNOTFOUND            \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
-
-/*
- * An invalid parameter was passed to the returning function,
- * or the object was not in a state that admitted the function
- * to be called.
- */
-#define DIERR_INVALIDPARAM              E_INVALIDARG
-
-/*
- * The specified interface is not supported by the object
- */
-#define DIERR_NOINTERFACE               E_NOINTERFACE
-
-/*
- * An undetermined error occured inside the DInput subsystem
- */
-#define DIERR_GENERIC                   E_FAIL
-
-/*
- * The DInput subsystem couldn't allocate sufficient memory to complete the
- * caller's request.
- */
-#define DIERR_OUTOFMEMORY               E_OUTOFMEMORY
-
-/*
- * The function called is not supported at this time
- */
-#define DIERR_UNSUPPORTED               E_NOTIMPL
-
-/*
- * This object has not been initialized
- */
-#define DIERR_NOTINITIALIZED            \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY)
-
-/*
- * This object is already initialized
- */
-#define DIERR_ALREADYINITIALIZED        \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED)
-
-/*
- * This object does not support aggregation
- */
-#define DIERR_NOAGGREGATION             CLASS_E_NOAGGREGATION
-
-/*
- * Another app has a higher priority level, preventing this call from
- * succeeding.
- */
-#define DIERR_OTHERAPPHASPRIO           E_ACCESSDENIED
-
-/*
- * Access to the device has been lost.  It must be re-acquired.
- */
-#define DIERR_INPUTLOST                 \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT)
-
-/*
- * The operation cannot be performed while the device is acquired.
- */
-#define DIERR_ACQUIRED                  \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY)
-
-/*
- * The operation cannot be performed unless the device is acquired.
- */
-#define DIERR_NOTACQUIRED               \
-    MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS)
-
-/*
- * The specified property cannot be changed.
- */
-#define DIERR_READONLY                  E_ACCESSDENIED
-
-/*
- * The device already has an event notification associated with it.
- */
-#define DIERR_HANDLEEXISTS              E_ACCESSDENIED
-
-/*
- * Data is not yet available.
- */
-#ifndef E_PENDING
-#define E_PENDING                       0x80070007L
-#endif
-
-/*
- * Unable to IDirectInputJoyConfig_Acquire because the user
- * does not have sufficient privileges to change the joystick
- * configuration.
- */
-#define DIERR_INSUFFICIENTPRIVS         0x80040200L
-
-/*
- * The device is full.
- */
-#define DIERR_DEVICEFULL                0x80040201L
-
-/*
- * Not all the requested information fit into the buffer.
- */
-#define DIERR_MOREDATA                  0x80040202L
-
-/*
- * The effect is not downloaded.
- */
-#define DIERR_NOTDOWNLOADED             0x80040203L
-
-/*
- *  The device cannot be reinitialized because there are still effects
- *  attached to it.
- */
-#define DIERR_HASEFFECTS                0x80040204L
-
-/*
- *  The operation cannot be performed unless the device is acquired
- *  in DISCL_EXCLUSIVE mode.
- */
-#define DIERR_NOTEXCLUSIVEACQUIRED      0x80040205L
-
-/*
- *  The effect could not be downloaded because essential information
- *  is missing.  For example, no axes have been associated with the
- *  effect, or no type-specific information has been created.
- */
-#define DIERR_INCOMPLETEEFFECT          0x80040206L
-
-/*
- *  Attempted to read buffered device data from a device that is
- *  not buffered.
- */
-#define DIERR_NOTBUFFERED               0x80040207L
-
-/*
- *  An attempt was made to modify parameters of an effect while it is
- *  playing.  Not all hardware devices support altering the parameters
- *  of an effect while it is playing.
- */
-#define DIERR_EFFECTPLAYING             0x80040208L
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif  /* __DINPUT_INCLUDED__ */
-
-/****************************************************************************
- *
- *  Definitions for non-IDirectInput (VJoyD) features defined more recently
- *  than the current sdk files
- *
- ****************************************************************************/
-
-#ifdef _INC_MMSYSTEM
-#ifndef MMNOJOY
-
-#ifndef __VJOYDX_INCLUDED__
-#define __VJOYDX_INCLUDED__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure
- * contains mini-driver specific data to be passed by VJoyD to the mini-
- * driver instead of doing a poll.
- */
-#define JOY_PASSDRIVERDATA          0x10000000l
-
-/*
- * Informs the joystick driver that the configuration has been changed
- * and should be reloaded from the registery.
- * dwFlags is reserved and should be set to zero
- */
-WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags );
-
-/*
- * Hardware Setting indicating that the device is a headtracker
- */
-#define JOY_HWS_ISHEADTRACKER       0x02000000l
-
-/*
- * Hardware Setting indicating that the VxD is used to replace
- * the standard analog polling
- */
-#define JOY_HWS_ISGAMEPORTDRIVER    0x04000000l
-
-/*
- * Hardware Setting indicating that the driver needs a standard
- * gameport in order to communicate with the device.
- */
-#define JOY_HWS_ISANALOGPORTDRIVER  0x08000000l 
-
-/*
- * Hardware Setting indicating that VJoyD should not load this 
- * driver, it will be loaded externally and will register with
- * VJoyD of it's own accord.
- */
-#define JOY_HWS_AUTOLOAD            0x10000000l
-
-/*
- * Hardware Setting indicating that the driver acquires any 
- * resources needed without needing a devnode through VJoyD.
- */
-#define JOY_HWS_NODEVNODE           0x20000000l
-
-/*
- * Hardware Setting indicating that the VxD can be used as
- * a port 201h emulator.
- */
-#define JOY_HWS_ISGAMEPORTEMULATOR  0x40000000l
-
-
-/*
- * Usage Setting indicating that the settings are volatile and
- * should be removed if still present on a reboot.
- */
-#define JOY_US_VOLATILE             0x00000008L
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif  /* __VJOYDX_INCLUDED__ */
-
-#endif  /* not MMNOJOY */
-#endif  /* _INC_MMSYSTEM */
-
-/****************************************************************************
- *
- *  Definitions for non-IDirectInput (VJoyD) features defined more recently
- *  than the current ddk files
- *
- ****************************************************************************/
-
-#ifndef DIJ_RINGZERO
-
-#ifdef _INC_MMDDK
-#ifndef MMNOJOYDEV
-
-#ifndef __VJOYDXD_INCLUDED__
-#define __VJOYDXD_INCLUDED__
-/*
- * Poll type in which the do_other field of the JOYOEMPOLLDATA
- * structure contains mini-driver specific data passed from an app.
- */
-#define JOY_OEMPOLL_PASSDRIVERDATA  7
-
-#endif  /* __VJOYDXD_INCLUDED__ */
-
-#endif  /* not MMNOJOYDEV */
-#endif  /* _INC_MMDDK */
-
-#endif /* DIJ_RINGZERO */