1*c2c66affSColin Finck /* 2*c2c66affSColin Finck * Copyright (C) the Wine project 3*c2c66affSColin Finck * 4*c2c66affSColin Finck * This library is free software; you can redistribute it and/or 5*c2c66affSColin Finck * modify it under the terms of the GNU Lesser General Public 6*c2c66affSColin Finck * License as published by the Free Software Foundation; either 7*c2c66affSColin Finck * version 2.1 of the License, or (at your option) any later version. 8*c2c66affSColin Finck * 9*c2c66affSColin Finck * This library is distributed in the hope that it will be useful, 10*c2c66affSColin Finck * but WITHOUT ANY WARRANTY; without even the implied warranty of 11*c2c66affSColin Finck * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12*c2c66affSColin Finck * Lesser General Public License for more details. 13*c2c66affSColin Finck * 14*c2c66affSColin Finck * You should have received a copy of the GNU Lesser General Public 15*c2c66affSColin Finck * License along with this library; if not, write to the Free Software 16*c2c66affSColin Finck * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17*c2c66affSColin Finck */ 18*c2c66affSColin Finck 19*c2c66affSColin Finck #ifndef __DINPUT_INCLUDED__ 20*c2c66affSColin Finck #define __DINPUT_INCLUDED__ 21*c2c66affSColin Finck 22*c2c66affSColin Finck #define COM_NO_WINDOWS_H 23*c2c66affSColin Finck #include <objbase.h> 24*c2c66affSColin Finck 25*c2c66affSColin Finck #ifndef DIRECTINPUT_VERSION 26*c2c66affSColin Finck #define DIRECTINPUT_VERSION 0x0800 27*c2c66affSColin Finck #endif 28*c2c66affSColin Finck 29*c2c66affSColin Finck /* Classes */ 30*c2c66affSColin Finck DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 31*c2c66affSColin Finck DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 32*c2c66affSColin Finck 33*c2c66affSColin Finck DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 34*c2c66affSColin Finck DEFINE_GUID(CLSID_DirectInputDevice8, 0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 35*c2c66affSColin Finck 36*c2c66affSColin Finck /* Interfaces */ 37*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 38*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 39*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 40*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 41*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 42*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 43*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); 44*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00); 45*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 46*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 47*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputDevice2A, 0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 48*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputDevice2W, 0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 49*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputDevice7A, 0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 50*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputDevice7W, 0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE); 51*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputDevice8A, 0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); 52*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputDevice8W, 0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79); 53*c2c66affSColin Finck DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 54*c2c66affSColin Finck 55*c2c66affSColin Finck /* Predefined object types */ 56*c2c66affSColin Finck DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 57*c2c66affSColin Finck DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 58*c2c66affSColin Finck DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 59*c2c66affSColin Finck DEFINE_GUID(GUID_RxAxis,0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 60*c2c66affSColin Finck DEFINE_GUID(GUID_RyAxis,0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 61*c2c66affSColin Finck DEFINE_GUID(GUID_RzAxis,0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 62*c2c66affSColin Finck DEFINE_GUID(GUID_Slider,0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 63*c2c66affSColin Finck DEFINE_GUID(GUID_Button,0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 64*c2c66affSColin Finck DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 65*c2c66affSColin Finck DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 66*c2c66affSColin Finck DEFINE_GUID(GUID_Unknown,0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 67*c2c66affSColin Finck 68*c2c66affSColin Finck /* Predefined product GUIDs */ 69*c2c66affSColin Finck DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 70*c2c66affSColin Finck DEFINE_GUID(GUID_SysKeyboard, 0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 71*c2c66affSColin Finck DEFINE_GUID(GUID_Joystick, 0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 72*c2c66affSColin Finck DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 73*c2c66affSColin Finck DEFINE_GUID(GUID_SysMouseEm2, 0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 74*c2c66affSColin Finck DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 75*c2c66affSColin Finck DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00); 76*c2c66affSColin Finck 77*c2c66affSColin Finck /* predefined forcefeedback effects */ 78*c2c66affSColin Finck DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 79*c2c66affSColin Finck DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 80*c2c66affSColin Finck DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 81*c2c66affSColin Finck DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 82*c2c66affSColin Finck DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 83*c2c66affSColin Finck DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 84*c2c66affSColin Finck DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 85*c2c66affSColin Finck DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 86*c2c66affSColin Finck DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 87*c2c66affSColin Finck DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 88*c2c66affSColin Finck DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 89*c2c66affSColin Finck DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35); 90*c2c66affSColin Finck 91*c2c66affSColin Finck typedef struct IDirectInputA *LPDIRECTINPUTA; 92*c2c66affSColin Finck typedef struct IDirectInputW *LPDIRECTINPUTW; 93*c2c66affSColin Finck typedef struct IDirectInput2A *LPDIRECTINPUT2A; 94*c2c66affSColin Finck typedef struct IDirectInput2W *LPDIRECTINPUT2W; 95*c2c66affSColin Finck typedef struct IDirectInput7A *LPDIRECTINPUT7A; 96*c2c66affSColin Finck typedef struct IDirectInput7W *LPDIRECTINPUT7W; 97*c2c66affSColin Finck typedef struct IDirectInput8A *LPDIRECTINPUT8A; 98*c2c66affSColin Finck typedef struct IDirectInput8W *LPDIRECTINPUT8W; 99*c2c66affSColin Finck typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA; 100*c2c66affSColin Finck typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW; 101*c2c66affSColin Finck typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A; 102*c2c66affSColin Finck typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W; 103*c2c66affSColin Finck typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A; 104*c2c66affSColin Finck typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W; 105*c2c66affSColin Finck typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A; 106*c2c66affSColin Finck typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W; 107*c2c66affSColin Finck typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT; 108*c2c66affSColin Finck typedef struct SysKeyboardA *LPSYSKEYBOARDA; 109*c2c66affSColin Finck typedef struct SysMouseA *LPSYSMOUSEA; 110*c2c66affSColin Finck 111*c2c66affSColin Finck #define IID_IDirectInput WINELIB_NAME_AW(IID_IDirectInput) 112*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIRECTINPUT) 113*c2c66affSColin Finck #define IID_IDirectInput2 WINELIB_NAME_AW(IID_IDirectInput2) 114*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIRECTINPUT2) 115*c2c66affSColin Finck #define IID_IDirectInput7 WINELIB_NAME_AW(IID_IDirectInput7) 116*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIRECTINPUT7) 117*c2c66affSColin Finck #define IID_IDirectInput8 WINELIB_NAME_AW(IID_IDirectInput8) 118*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIRECTINPUT8) 119*c2c66affSColin Finck #define IID_IDirectInputDevice WINELIB_NAME_AW(IID_IDirectInputDevice) 120*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE) 121*c2c66affSColin Finck #define IID_IDirectInputDevice2 WINELIB_NAME_AW(IID_IDirectInputDevice2) 122*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE2) 123*c2c66affSColin Finck #define IID_IDirectInputDevice7 WINELIB_NAME_AW(IID_IDirectInputDevice7) 124*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE7) 125*c2c66affSColin Finck #define IID_IDirectInputDevice8 WINELIB_NAME_AW(IID_IDirectInputDevice8) 126*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIRECTINPUTDEVICE8) 127*c2c66affSColin Finck 128*c2c66affSColin Finck #define DI_OK S_OK 129*c2c66affSColin Finck #define DI_NOTATTACHED S_FALSE 130*c2c66affSColin Finck #define DI_BUFFEROVERFLOW S_FALSE 131*c2c66affSColin Finck #define DI_PROPNOEFFECT S_FALSE 132*c2c66affSColin Finck #define DI_NOEFFECT S_FALSE 133*c2c66affSColin Finck #define DI_POLLEDDEVICE ((HRESULT)0x00000002) 134*c2c66affSColin Finck #define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003) 135*c2c66affSColin Finck #define DI_EFFECTRESTARTED ((HRESULT)0x00000004) 136*c2c66affSColin Finck #define DI_TRUNCATED ((HRESULT)0x00000008) 137*c2c66affSColin Finck #define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000B) 138*c2c66affSColin Finck #define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000C) 139*c2c66affSColin Finck #define DI_WRITEPROTECT ((HRESULT)0x00000013) 140*c2c66affSColin Finck 141*c2c66affSColin Finck #define DIERR_OLDDIRECTINPUTVERSION \ 142*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION) 143*c2c66affSColin Finck #define DIERR_BETADIRECTINPUTVERSION \ 144*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP) 145*c2c66affSColin Finck #define DIERR_BADDRIVERVER \ 146*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL) 147*c2c66affSColin Finck #define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG 148*c2c66affSColin Finck #define DIERR_NOTFOUND \ 149*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) 150*c2c66affSColin Finck #define DIERR_OBJECTNOTFOUND \ 151*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND) 152*c2c66affSColin Finck #define DIERR_INVALIDPARAM E_INVALIDARG 153*c2c66affSColin Finck #define DIERR_NOINTERFACE E_NOINTERFACE 154*c2c66affSColin Finck #define DIERR_GENERIC E_FAIL 155*c2c66affSColin Finck #define DIERR_OUTOFMEMORY E_OUTOFMEMORY 156*c2c66affSColin Finck #define DIERR_UNSUPPORTED E_NOTIMPL 157*c2c66affSColin Finck #define DIERR_NOTINITIALIZED \ 158*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY) 159*c2c66affSColin Finck #define DIERR_ALREADYINITIALIZED \ 160*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED) 161*c2c66affSColin Finck #define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION 162*c2c66affSColin Finck #define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED 163*c2c66affSColin Finck #define DIERR_INPUTLOST \ 164*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT) 165*c2c66affSColin Finck #define DIERR_ACQUIRED \ 166*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY) 167*c2c66affSColin Finck #define DIERR_NOTACQUIRED \ 168*c2c66affSColin Finck MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS) 169*c2c66affSColin Finck #define DIERR_READONLY E_ACCESSDENIED 170*c2c66affSColin Finck #define DIERR_HANDLEEXISTS E_ACCESSDENIED 171*c2c66affSColin Finck #ifndef E_PENDING 172*c2c66affSColin Finck #define E_PENDING 0x8000000AL 173*c2c66affSColin Finck #endif 174*c2c66affSColin Finck #define DIERR_INSUFFICIENTPRIVS 0x80040200L 175*c2c66affSColin Finck #define DIERR_DEVICEFULL 0x80040201L 176*c2c66affSColin Finck #define DIERR_MOREDATA 0x80040202L 177*c2c66affSColin Finck #define DIERR_NOTDOWNLOADED 0x80040203L 178*c2c66affSColin Finck #define DIERR_HASEFFECTS 0x80040204L 179*c2c66affSColin Finck #define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L 180*c2c66affSColin Finck #define DIERR_INCOMPLETEEFFECT 0x80040206L 181*c2c66affSColin Finck #define DIERR_NOTBUFFERED 0x80040207L 182*c2c66affSColin Finck #define DIERR_EFFECTPLAYING 0x80040208L 183*c2c66affSColin Finck #define DIERR_UNPLUGGED 0x80040209L 184*c2c66affSColin Finck #define DIERR_REPORTFULL 0x8004020AL 185*c2c66affSColin Finck #define DIERR_MAPFILEFAIL 0x8004020BL 186*c2c66affSColin Finck 187*c2c66affSColin Finck #define DIENUM_STOP 0 188*c2c66affSColin Finck #define DIENUM_CONTINUE 1 189*c2c66affSColin Finck 190*c2c66affSColin Finck #define DIEDFL_ALLDEVICES 0x00000000 191*c2c66affSColin Finck #define DIEDFL_ATTACHEDONLY 0x00000001 192*c2c66affSColin Finck #define DIEDFL_FORCEFEEDBACK 0x00000100 193*c2c66affSColin Finck #define DIEDFL_INCLUDEALIASES 0x00010000 194*c2c66affSColin Finck #define DIEDFL_INCLUDEPHANTOMS 0x00020000 195*c2c66affSColin Finck #define DIEDFL_INCLUDEHIDDEN 0x00040000 196*c2c66affSColin Finck 197*c2c66affSColin Finck #define DIDEVTYPE_DEVICE 1 198*c2c66affSColin Finck #define DIDEVTYPE_MOUSE 2 199*c2c66affSColin Finck #define DIDEVTYPE_KEYBOARD 3 200*c2c66affSColin Finck #define DIDEVTYPE_JOYSTICK 4 201*c2c66affSColin Finck #define DIDEVTYPE_HID 0x00010000 202*c2c66affSColin Finck 203*c2c66affSColin Finck #define DI8DEVCLASS_ALL 0 204*c2c66affSColin Finck #define DI8DEVCLASS_DEVICE 1 205*c2c66affSColin Finck #define DI8DEVCLASS_POINTER 2 206*c2c66affSColin Finck #define DI8DEVCLASS_KEYBOARD 3 207*c2c66affSColin Finck #define DI8DEVCLASS_GAMECTRL 4 208*c2c66affSColin Finck 209*c2c66affSColin Finck #define DI8DEVTYPE_DEVICE 0x11 210*c2c66affSColin Finck #define DI8DEVTYPE_MOUSE 0x12 211*c2c66affSColin Finck #define DI8DEVTYPE_KEYBOARD 0x13 212*c2c66affSColin Finck #define DI8DEVTYPE_JOYSTICK 0x14 213*c2c66affSColin Finck #define DI8DEVTYPE_GAMEPAD 0x15 214*c2c66affSColin Finck #define DI8DEVTYPE_DRIVING 0x16 215*c2c66affSColin Finck #define DI8DEVTYPE_FLIGHT 0x17 216*c2c66affSColin Finck #define DI8DEVTYPE_1STPERSON 0x18 217*c2c66affSColin Finck #define DI8DEVTYPE_DEVICECTRL 0x19 218*c2c66affSColin Finck #define DI8DEVTYPE_SCREENPOINTER 0x1A 219*c2c66affSColin Finck #define DI8DEVTYPE_REMOTE 0x1B 220*c2c66affSColin Finck #define DI8DEVTYPE_SUPPLEMENTAL 0x1C 221*c2c66affSColin Finck 222*c2c66affSColin Finck #define DIDEVTYPEMOUSE_UNKNOWN 1 223*c2c66affSColin Finck #define DIDEVTYPEMOUSE_TRADITIONAL 2 224*c2c66affSColin Finck #define DIDEVTYPEMOUSE_FINGERSTICK 3 225*c2c66affSColin Finck #define DIDEVTYPEMOUSE_TOUCHPAD 4 226*c2c66affSColin Finck #define DIDEVTYPEMOUSE_TRACKBALL 5 227*c2c66affSColin Finck 228*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_UNKNOWN 0 229*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_PCXT 1 230*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_OLIVETTI 2 231*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_PCAT 3 232*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_PCENH 4 233*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_NOKIA1050 5 234*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_NOKIA9140 6 235*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_NEC98 7 236*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8 237*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_NEC98106 9 238*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_JAPAN106 10 239*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_JAPANAX 11 240*c2c66affSColin Finck #define DIDEVTYPEKEYBOARD_J3100 12 241*c2c66affSColin Finck 242*c2c66affSColin Finck #define DIDEVTYPEJOYSTICK_UNKNOWN 1 243*c2c66affSColin Finck #define DIDEVTYPEJOYSTICK_TRADITIONAL 2 244*c2c66affSColin Finck #define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3 245*c2c66affSColin Finck #define DIDEVTYPEJOYSTICK_GAMEPAD 4 246*c2c66affSColin Finck #define DIDEVTYPEJOYSTICK_RUDDER 5 247*c2c66affSColin Finck #define DIDEVTYPEJOYSTICK_WHEEL 6 248*c2c66affSColin Finck #define DIDEVTYPEJOYSTICK_HEADTRACKER 7 249*c2c66affSColin Finck 250*c2c66affSColin Finck #define DI8DEVTYPEMOUSE_UNKNOWN 1 251*c2c66affSColin Finck #define DI8DEVTYPEMOUSE_TRADITIONAL 2 252*c2c66affSColin Finck #define DI8DEVTYPEMOUSE_FINGERSTICK 3 253*c2c66affSColin Finck #define DI8DEVTYPEMOUSE_TOUCHPAD 4 254*c2c66affSColin Finck #define DI8DEVTYPEMOUSE_TRACKBALL 5 255*c2c66affSColin Finck #define DI8DEVTYPEMOUSE_ABSOLUTE 6 256*c2c66affSColin Finck 257*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_UNKNOWN 0 258*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_PCXT 1 259*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_OLIVETTI 2 260*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_PCAT 3 261*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_PCENH 4 262*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_NOKIA1050 5 263*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_NOKIA9140 6 264*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_NEC98 7 265*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8 266*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_NEC98106 9 267*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_JAPAN106 10 268*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_JAPANAX 11 269*c2c66affSColin Finck #define DI8DEVTYPEKEYBOARD_J3100 12 270*c2c66affSColin Finck 271*c2c66affSColin Finck #define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1 272*c2c66affSColin Finck 273*c2c66affSColin Finck #define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 274*c2c66affSColin Finck #define DI8DEVTYPEJOYSTICK_STANDARD 2 275*c2c66affSColin Finck 276*c2c66affSColin Finck #define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 277*c2c66affSColin Finck #define DI8DEVTYPEGAMEPAD_STANDARD 2 278*c2c66affSColin Finck #define DI8DEVTYPEGAMEPAD_TILT 3 279*c2c66affSColin Finck 280*c2c66affSColin Finck #define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 281*c2c66affSColin Finck #define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2 282*c2c66affSColin Finck #define DI8DEVTYPEDRIVING_DUALPEDALS 3 283*c2c66affSColin Finck #define DI8DEVTYPEDRIVING_THREEPEDALS 4 284*c2c66affSColin Finck #define DI8DEVTYPEDRIVING_HANDHELD 5 285*c2c66affSColin Finck 286*c2c66affSColin Finck #define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 287*c2c66affSColin Finck #define DI8DEVTYPEFLIGHT_STICK 2 288*c2c66affSColin Finck #define DI8DEVTYPEFLIGHT_YOKE 3 289*c2c66affSColin Finck #define DI8DEVTYPEFLIGHT_RC 4 290*c2c66affSColin Finck 291*c2c66affSColin Finck #define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE 292*c2c66affSColin Finck #define DI8DEVTYPE1STPERSON_UNKNOWN 2 293*c2c66affSColin Finck #define DI8DEVTYPE1STPERSON_SIXDOF 3 294*c2c66affSColin Finck #define DI8DEVTYPE1STPERSON_SHOOTER 4 295*c2c66affSColin Finck 296*c2c66affSColin Finck #define DI8DEVTYPESCREENPTR_UNKNOWN 2 297*c2c66affSColin Finck #define DI8DEVTYPESCREENPTR_LIGHTGUN 3 298*c2c66affSColin Finck #define DI8DEVTYPESCREENPTR_LIGHTPEN 4 299*c2c66affSColin Finck #define DI8DEVTYPESCREENPTR_TOUCH 5 300*c2c66affSColin Finck 301*c2c66affSColin Finck #define DI8DEVTYPEREMOTE_UNKNOWN 2 302*c2c66affSColin Finck 303*c2c66affSColin Finck #define DI8DEVTYPEDEVICECTRL_UNKNOWN 2 304*c2c66affSColin Finck #define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3 305*c2c66affSColin Finck #define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4 306*c2c66affSColin Finck 307*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2 308*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3 309*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4 310*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5 311*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6 312*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7 313*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8 314*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9 315*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10 316*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11 317*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12 318*c2c66affSColin Finck #define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13 319*c2c66affSColin Finck 320*c2c66affSColin Finck #define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType) 321*c2c66affSColin Finck #define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType) 322*c2c66affSColin Finck 323*c2c66affSColin Finck typedef struct DIDEVICEOBJECTINSTANCE_DX3A { 324*c2c66affSColin Finck DWORD dwSize; 325*c2c66affSColin Finck GUID guidType; 326*c2c66affSColin Finck DWORD dwOfs; 327*c2c66affSColin Finck DWORD dwType; 328*c2c66affSColin Finck DWORD dwFlags; 329*c2c66affSColin Finck CHAR tszName[MAX_PATH]; 330*c2c66affSColin Finck } DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A; 331*c2c66affSColin Finck typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A; 332*c2c66affSColin Finck typedef struct DIDEVICEOBJECTINSTANCE_DX3W { 333*c2c66affSColin Finck DWORD dwSize; 334*c2c66affSColin Finck GUID guidType; 335*c2c66affSColin Finck DWORD dwOfs; 336*c2c66affSColin Finck DWORD dwType; 337*c2c66affSColin Finck DWORD dwFlags; 338*c2c66affSColin Finck WCHAR tszName[MAX_PATH]; 339*c2c66affSColin Finck } DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W; 340*c2c66affSColin Finck typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W; 341*c2c66affSColin Finck 342*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE_DX3) 343*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE_DX3) 344*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE_DX3) 345*c2c66affSColin Finck 346*c2c66affSColin Finck typedef struct DIDEVICEOBJECTINSTANCEA { 347*c2c66affSColin Finck DWORD dwSize; 348*c2c66affSColin Finck GUID guidType; 349*c2c66affSColin Finck DWORD dwOfs; 350*c2c66affSColin Finck DWORD dwType; 351*c2c66affSColin Finck DWORD dwFlags; 352*c2c66affSColin Finck CHAR tszName[MAX_PATH]; 353*c2c66affSColin Finck DWORD dwFFMaxForce; 354*c2c66affSColin Finck DWORD dwFFForceResolution; 355*c2c66affSColin Finck WORD wCollectionNumber; 356*c2c66affSColin Finck WORD wDesignatorIndex; 357*c2c66affSColin Finck WORD wUsagePage; 358*c2c66affSColin Finck WORD wUsage; 359*c2c66affSColin Finck DWORD dwDimension; 360*c2c66affSColin Finck WORD wExponent; 361*c2c66affSColin Finck WORD wReserved; 362*c2c66affSColin Finck } DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA; 363*c2c66affSColin Finck typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA; 364*c2c66affSColin Finck 365*c2c66affSColin Finck typedef struct DIDEVICEOBJECTINSTANCEW { 366*c2c66affSColin Finck DWORD dwSize; 367*c2c66affSColin Finck GUID guidType; 368*c2c66affSColin Finck DWORD dwOfs; 369*c2c66affSColin Finck DWORD dwType; 370*c2c66affSColin Finck DWORD dwFlags; 371*c2c66affSColin Finck WCHAR tszName[MAX_PATH]; 372*c2c66affSColin Finck DWORD dwFFMaxForce; 373*c2c66affSColin Finck DWORD dwFFForceResolution; 374*c2c66affSColin Finck WORD wCollectionNumber; 375*c2c66affSColin Finck WORD wDesignatorIndex; 376*c2c66affSColin Finck WORD wUsagePage; 377*c2c66affSColin Finck WORD wUsage; 378*c2c66affSColin Finck DWORD dwDimension; 379*c2c66affSColin Finck WORD wExponent; 380*c2c66affSColin Finck WORD wReserved; 381*c2c66affSColin Finck } DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW; 382*c2c66affSColin Finck typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW; 383*c2c66affSColin Finck 384*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DIDEVICEOBJECTINSTANCE) 385*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIDEVICEOBJECTINSTANCE) 386*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDIDEVICEOBJECTINSTANCE) 387*c2c66affSColin Finck 388*c2c66affSColin Finck typedef struct DIDEVICEINSTANCE_DX3A { 389*c2c66affSColin Finck DWORD dwSize; 390*c2c66affSColin Finck GUID guidInstance; 391*c2c66affSColin Finck GUID guidProduct; 392*c2c66affSColin Finck DWORD dwDevType; 393*c2c66affSColin Finck CHAR tszInstanceName[MAX_PATH]; 394*c2c66affSColin Finck CHAR tszProductName[MAX_PATH]; 395*c2c66affSColin Finck } DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A; 396*c2c66affSColin Finck typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A; 397*c2c66affSColin Finck typedef struct DIDEVICEINSTANCE_DX3W { 398*c2c66affSColin Finck DWORD dwSize; 399*c2c66affSColin Finck GUID guidInstance; 400*c2c66affSColin Finck GUID guidProduct; 401*c2c66affSColin Finck DWORD dwDevType; 402*c2c66affSColin Finck WCHAR tszInstanceName[MAX_PATH]; 403*c2c66affSColin Finck WCHAR tszProductName[MAX_PATH]; 404*c2c66affSColin Finck } DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W; 405*c2c66affSColin Finck typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W; 406*c2c66affSColin Finck 407*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE_DX3) 408*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE_DX3) 409*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE_DX3) 410*c2c66affSColin Finck 411*c2c66affSColin Finck typedef struct DIDEVICEINSTANCEA { 412*c2c66affSColin Finck DWORD dwSize; 413*c2c66affSColin Finck GUID guidInstance; 414*c2c66affSColin Finck GUID guidProduct; 415*c2c66affSColin Finck DWORD dwDevType; 416*c2c66affSColin Finck CHAR tszInstanceName[MAX_PATH]; 417*c2c66affSColin Finck CHAR tszProductName[MAX_PATH]; 418*c2c66affSColin Finck GUID guidFFDriver; 419*c2c66affSColin Finck WORD wUsagePage; 420*c2c66affSColin Finck WORD wUsage; 421*c2c66affSColin Finck } DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA; 422*c2c66affSColin Finck typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA; 423*c2c66affSColin Finck 424*c2c66affSColin Finck typedef struct DIDEVICEINSTANCEW { 425*c2c66affSColin Finck DWORD dwSize; 426*c2c66affSColin Finck GUID guidInstance; 427*c2c66affSColin Finck GUID guidProduct; 428*c2c66affSColin Finck DWORD dwDevType; 429*c2c66affSColin Finck WCHAR tszInstanceName[MAX_PATH]; 430*c2c66affSColin Finck WCHAR tszProductName[MAX_PATH]; 431*c2c66affSColin Finck GUID guidFFDriver; 432*c2c66affSColin Finck WORD wUsagePage; 433*c2c66affSColin Finck WORD wUsage; 434*c2c66affSColin Finck } DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW; 435*c2c66affSColin Finck typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW; 436*c2c66affSColin Finck 437*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DIDEVICEINSTANCE) 438*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIDEVICEINSTANCE) 439*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDIDEVICEINSTANCE) 440*c2c66affSColin Finck 441*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA,LPVOID); 442*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW,LPVOID); 443*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESCALLBACK) 444*c2c66affSColin Finck 445*c2c66affSColin Finck #define DIEDBS_MAPPEDPRI1 0x00000001 446*c2c66affSColin Finck #define DIEDBS_MAPPEDPRI2 0x00000002 447*c2c66affSColin Finck #define DIEDBS_RECENTDEVICE 0x00000010 448*c2c66affSColin Finck #define DIEDBS_NEWDEVICE 0x00000020 449*c2c66affSColin Finck 450*c2c66affSColin Finck #define DIEDBSFL_ATTACHEDONLY 0x00000000 451*c2c66affSColin Finck #define DIEDBSFL_THISUSER 0x00000010 452*c2c66affSColin Finck #define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK 453*c2c66affSColin Finck #define DIEDBSFL_AVAILABLEDEVICES 0x00001000 454*c2c66affSColin Finck #define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000 455*c2c66affSColin Finck #define DIEDBSFL_NONGAMINGDEVICES 0x00004000 456*c2c66affSColin Finck #define DIEDBSFL_VALID 0x00007110 457*c2c66affSColin Finck 458*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA,LPDIRECTINPUTDEVICE8A,DWORD,DWORD,LPVOID); 459*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW,LPDIRECTINPUTDEVICE8W,DWORD,DWORD,LPVOID); 460*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIENUMDEVICESBYSEMANTICSCB) 461*c2c66affSColin Finck 462*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDICONFIGUREDEVICESCALLBACK)(LPUNKNOWN,LPVOID); 463*c2c66affSColin Finck 464*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA,LPVOID); 465*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW,LPVOID); 466*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIENUMDEVICEOBJECTSCALLBACK) 467*c2c66affSColin Finck 468*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID); 469*c2c66affSColin Finck 470*c2c66affSColin Finck #define DIK_ESCAPE 0x01 471*c2c66affSColin Finck #define DIK_1 0x02 472*c2c66affSColin Finck #define DIK_2 0x03 473*c2c66affSColin Finck #define DIK_3 0x04 474*c2c66affSColin Finck #define DIK_4 0x05 475*c2c66affSColin Finck #define DIK_5 0x06 476*c2c66affSColin Finck #define DIK_6 0x07 477*c2c66affSColin Finck #define DIK_7 0x08 478*c2c66affSColin Finck #define DIK_8 0x09 479*c2c66affSColin Finck #define DIK_9 0x0A 480*c2c66affSColin Finck #define DIK_0 0x0B 481*c2c66affSColin Finck #define DIK_MINUS 0x0C /* - on main keyboard */ 482*c2c66affSColin Finck #define DIK_EQUALS 0x0D 483*c2c66affSColin Finck #define DIK_BACK 0x0E /* backspace */ 484*c2c66affSColin Finck #define DIK_TAB 0x0F 485*c2c66affSColin Finck #define DIK_Q 0x10 486*c2c66affSColin Finck #define DIK_W 0x11 487*c2c66affSColin Finck #define DIK_E 0x12 488*c2c66affSColin Finck #define DIK_R 0x13 489*c2c66affSColin Finck #define DIK_T 0x14 490*c2c66affSColin Finck #define DIK_Y 0x15 491*c2c66affSColin Finck #define DIK_U 0x16 492*c2c66affSColin Finck #define DIK_I 0x17 493*c2c66affSColin Finck #define DIK_O 0x18 494*c2c66affSColin Finck #define DIK_P 0x19 495*c2c66affSColin Finck #define DIK_LBRACKET 0x1A 496*c2c66affSColin Finck #define DIK_RBRACKET 0x1B 497*c2c66affSColin Finck #define DIK_RETURN 0x1C /* Enter on main keyboard */ 498*c2c66affSColin Finck #define DIK_LCONTROL 0x1D 499*c2c66affSColin Finck #define DIK_A 0x1E 500*c2c66affSColin Finck #define DIK_S 0x1F 501*c2c66affSColin Finck #define DIK_D 0x20 502*c2c66affSColin Finck #define DIK_F 0x21 503*c2c66affSColin Finck #define DIK_G 0x22 504*c2c66affSColin Finck #define DIK_H 0x23 505*c2c66affSColin Finck #define DIK_J 0x24 506*c2c66affSColin Finck #define DIK_K 0x25 507*c2c66affSColin Finck #define DIK_L 0x26 508*c2c66affSColin Finck #define DIK_SEMICOLON 0x27 509*c2c66affSColin Finck #define DIK_APOSTROPHE 0x28 510*c2c66affSColin Finck #define DIK_GRAVE 0x29 /* accent grave */ 511*c2c66affSColin Finck #define DIK_LSHIFT 0x2A 512*c2c66affSColin Finck #define DIK_BACKSLASH 0x2B 513*c2c66affSColin Finck #define DIK_Z 0x2C 514*c2c66affSColin Finck #define DIK_X 0x2D 515*c2c66affSColin Finck #define DIK_C 0x2E 516*c2c66affSColin Finck #define DIK_V 0x2F 517*c2c66affSColin Finck #define DIK_B 0x30 518*c2c66affSColin Finck #define DIK_N 0x31 519*c2c66affSColin Finck #define DIK_M 0x32 520*c2c66affSColin Finck #define DIK_COMMA 0x33 521*c2c66affSColin Finck #define DIK_PERIOD 0x34 /* . on main keyboard */ 522*c2c66affSColin Finck #define DIK_SLASH 0x35 /* / on main keyboard */ 523*c2c66affSColin Finck #define DIK_RSHIFT 0x36 524*c2c66affSColin Finck #define DIK_MULTIPLY 0x37 /* * on numeric keypad */ 525*c2c66affSColin Finck #define DIK_LMENU 0x38 /* left Alt */ 526*c2c66affSColin Finck #define DIK_SPACE 0x39 527*c2c66affSColin Finck #define DIK_CAPITAL 0x3A 528*c2c66affSColin Finck #define DIK_F1 0x3B 529*c2c66affSColin Finck #define DIK_F2 0x3C 530*c2c66affSColin Finck #define DIK_F3 0x3D 531*c2c66affSColin Finck #define DIK_F4 0x3E 532*c2c66affSColin Finck #define DIK_F5 0x3F 533*c2c66affSColin Finck #define DIK_F6 0x40 534*c2c66affSColin Finck #define DIK_F7 0x41 535*c2c66affSColin Finck #define DIK_F8 0x42 536*c2c66affSColin Finck #define DIK_F9 0x43 537*c2c66affSColin Finck #define DIK_F10 0x44 538*c2c66affSColin Finck #define DIK_NUMLOCK 0x45 539*c2c66affSColin Finck #define DIK_SCROLL 0x46 /* Scroll Lock */ 540*c2c66affSColin Finck #define DIK_NUMPAD7 0x47 541*c2c66affSColin Finck #define DIK_NUMPAD8 0x48 542*c2c66affSColin Finck #define DIK_NUMPAD9 0x49 543*c2c66affSColin Finck #define DIK_SUBTRACT 0x4A /* - on numeric keypad */ 544*c2c66affSColin Finck #define DIK_NUMPAD4 0x4B 545*c2c66affSColin Finck #define DIK_NUMPAD5 0x4C 546*c2c66affSColin Finck #define DIK_NUMPAD6 0x4D 547*c2c66affSColin Finck #define DIK_ADD 0x4E /* + on numeric keypad */ 548*c2c66affSColin Finck #define DIK_NUMPAD1 0x4F 549*c2c66affSColin Finck #define DIK_NUMPAD2 0x50 550*c2c66affSColin Finck #define DIK_NUMPAD3 0x51 551*c2c66affSColin Finck #define DIK_NUMPAD0 0x52 552*c2c66affSColin Finck #define DIK_DECIMAL 0x53 /* . on numeric keypad */ 553*c2c66affSColin Finck #define DIK_F11 0x57 554*c2c66affSColin Finck #define DIK_F12 0x58 555*c2c66affSColin Finck #define DIK_F13 0x64 /* (NEC PC98) */ 556*c2c66affSColin Finck #define DIK_F14 0x65 /* (NEC PC98) */ 557*c2c66affSColin Finck #define DIK_F15 0x66 /* (NEC PC98) */ 558*c2c66affSColin Finck #define DIK_KANA 0x70 /* (Japanese keyboard) */ 559*c2c66affSColin Finck #define DIK_CONVERT 0x79 /* (Japanese keyboard) */ 560*c2c66affSColin Finck #define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */ 561*c2c66affSColin Finck #define DIK_YEN 0x7D /* (Japanese keyboard) */ 562*c2c66affSColin Finck #define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */ 563*c2c66affSColin Finck #define DIK_CIRCUMFLEX 0x90 /* (Japanese keyboard) */ 564*c2c66affSColin Finck #define DIK_AT 0x91 /* (NEC PC98) */ 565*c2c66affSColin Finck #define DIK_COLON 0x92 /* (NEC PC98) */ 566*c2c66affSColin Finck #define DIK_UNDERLINE 0x93 /* (NEC PC98) */ 567*c2c66affSColin Finck #define DIK_KANJI 0x94 /* (Japanese keyboard) */ 568*c2c66affSColin Finck #define DIK_STOP 0x95 /* (NEC PC98) */ 569*c2c66affSColin Finck #define DIK_AX 0x96 /* (Japan AX) */ 570*c2c66affSColin Finck #define DIK_UNLABELED 0x97 /* (J3100) */ 571*c2c66affSColin Finck #define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */ 572*c2c66affSColin Finck #define DIK_RCONTROL 0x9D 573*c2c66affSColin Finck #define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */ 574*c2c66affSColin Finck #define DIK_DIVIDE 0xB5 /* / on numeric keypad */ 575*c2c66affSColin Finck #define DIK_SYSRQ 0xB7 576*c2c66affSColin Finck #define DIK_RMENU 0xB8 /* right Alt */ 577*c2c66affSColin Finck #define DIK_PAUSE 0xC5 /* Pause */ 578*c2c66affSColin Finck #define DIK_HOME 0xC7 /* Home on arrow keypad */ 579*c2c66affSColin Finck #define DIK_UP 0xC8 /* UpArrow on arrow keypad */ 580*c2c66affSColin Finck #define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */ 581*c2c66affSColin Finck #define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */ 582*c2c66affSColin Finck #define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */ 583*c2c66affSColin Finck #define DIK_END 0xCF /* End on arrow keypad */ 584*c2c66affSColin Finck #define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */ 585*c2c66affSColin Finck #define DIK_NEXT 0xD1 /* PgDn on arrow keypad */ 586*c2c66affSColin Finck #define DIK_INSERT 0xD2 /* Insert on arrow keypad */ 587*c2c66affSColin Finck #define DIK_DELETE 0xD3 /* Delete on arrow keypad */ 588*c2c66affSColin Finck #define DIK_LWIN 0xDB /* Left Windows key */ 589*c2c66affSColin Finck #define DIK_RWIN 0xDC /* Right Windows key */ 590*c2c66affSColin Finck #define DIK_APPS 0xDD /* AppMenu key */ 591*c2c66affSColin Finck #define DIK_POWER 0xDE 592*c2c66affSColin Finck #define DIK_SLEEP 0xDF 593*c2c66affSColin Finck #define DIK_BACKSPACE DIK_BACK /* backspace */ 594*c2c66affSColin Finck #define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */ 595*c2c66affSColin Finck #define DIK_LALT DIK_LMENU /* left Alt */ 596*c2c66affSColin Finck #define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */ 597*c2c66affSColin Finck #define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */ 598*c2c66affSColin Finck #define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */ 599*c2c66affSColin Finck #define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */ 600*c2c66affSColin Finck #define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */ 601*c2c66affSColin Finck #define DIK_RALT DIK_RMENU /* right Alt */ 602*c2c66affSColin Finck #define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */ 603*c2c66affSColin Finck #define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */ 604*c2c66affSColin Finck #define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */ 605*c2c66affSColin Finck #define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */ 606*c2c66affSColin Finck #define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */ 607*c2c66affSColin Finck #define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */ 608*c2c66affSColin Finck 609*c2c66affSColin Finck /* New DirectInput8 style keyboard constants */ 610*c2c66affSColin Finck 611*c2c66affSColin Finck #define DIKEYBOARD_ESCAPE (DIK_ESCAPE | 0x81000400) 612*c2c66affSColin Finck #define DIKEYBOARD_1 (DIK_1 | 0x81000400) 613*c2c66affSColin Finck #define DIKEYBOARD_2 (DIK_2 | 0x81000400) 614*c2c66affSColin Finck #define DIKEYBOARD_3 (DIK_3 | 0x81000400) 615*c2c66affSColin Finck #define DIKEYBOARD_4 (DIK_4 | 0x81000400) 616*c2c66affSColin Finck #define DIKEYBOARD_5 (DIK_5 | 0x81000400) 617*c2c66affSColin Finck #define DIKEYBOARD_6 (DIK_6 | 0x81000400) 618*c2c66affSColin Finck #define DIKEYBOARD_7 (DIK_7 | 0x81000400) 619*c2c66affSColin Finck #define DIKEYBOARD_8 (DIK_8 | 0x81000400) 620*c2c66affSColin Finck #define DIKEYBOARD_9 (DIK_9 | 0x81000400) 621*c2c66affSColin Finck #define DIKEYBOARD_0 (DIK_0 | 0x81000400) 622*c2c66affSColin Finck #define DIKEYBOARD_MINUS (DIK_MINUS | 0x81000400) 623*c2c66affSColin Finck #define DIKEYBOARD_EQUALS (DIK_EQUALS | 0x81000400) 624*c2c66affSColin Finck #define DIKEYBOARD_BACK (DIK_BACK | 0x81000400) 625*c2c66affSColin Finck #define DIKEYBOARD_TAB (DIK_TAB | 0x81000400) 626*c2c66affSColin Finck #define DIKEYBOARD_Q (DIK_Q | 0x81000400) 627*c2c66affSColin Finck #define DIKEYBOARD_W (DIK_W | 0x81000400) 628*c2c66affSColin Finck #define DIKEYBOARD_E (DIK_E | 0x81000400) 629*c2c66affSColin Finck #define DIKEYBOARD_R (DIK_R | 0x81000400) 630*c2c66affSColin Finck #define DIKEYBOARD_T (DIK_T | 0x81000400) 631*c2c66affSColin Finck #define DIKEYBOARD_Y (DIK_Y | 0x81000400) 632*c2c66affSColin Finck #define DIKEYBOARD_U (DIK_U | 0x81000400) 633*c2c66affSColin Finck #define DIKEYBOARD_I (DIK_I | 0x81000400) 634*c2c66affSColin Finck #define DIKEYBOARD_O (DIK_O | 0x81000400) 635*c2c66affSColin Finck #define DIKEYBOARD_P (DIK_P | 0x81000400) 636*c2c66affSColin Finck #define DIKEYBOARD_LBRACKET (DIK_LBRACKET | 0x81000400) 637*c2c66affSColin Finck #define DIKEYBOARD_RBRACKET (DIK_RBRACKET | 0x81000400) 638*c2c66affSColin Finck #define DIKEYBOARD_RETURN (DIK_RETURN | 0x81000400) 639*c2c66affSColin Finck #define DIKEYBOARD_LCONTROL (DIK_LCONTROL | 0x81000400) 640*c2c66affSColin Finck #define DIKEYBOARD_A (DIK_A | 0x81000400) 641*c2c66affSColin Finck #define DIKEYBOARD_S (DIK_S | 0x81000400) 642*c2c66affSColin Finck #define DIKEYBOARD_D (DIK_D | 0x81000400) 643*c2c66affSColin Finck #define DIKEYBOARD_F (DIK_F | 0x81000400) 644*c2c66affSColin Finck #define DIKEYBOARD_G (DIK_G | 0x81000400) 645*c2c66affSColin Finck #define DIKEYBOARD_H (DIK_H | 0x81000400) 646*c2c66affSColin Finck #define DIKEYBOARD_J (DIK_J | 0x81000400) 647*c2c66affSColin Finck #define DIKEYBOARD_K (DIK_K | 0x81000400) 648*c2c66affSColin Finck #define DIKEYBOARD_L (DIK_L | 0x81000400) 649*c2c66affSColin Finck #define DIKEYBOARD_SEMICOLON (DIK_SEMICOLON | 0x81000400) 650*c2c66affSColin Finck #define DIKEYBOARD_APOSTROPHE (DIK_APOSTROPHE | 0x81000400) 651*c2c66affSColin Finck #define DIKEYBOARD_GRAVE (DIK_GRAVE | 0x81000400) 652*c2c66affSColin Finck #define DIKEYBOARD_LSHIFT (DIK_LSHIFT | 0x81000400) 653*c2c66affSColin Finck #define DIKEYBOARD_BACKSLASH (DIK_BACKSLASH | 0x81000400) 654*c2c66affSColin Finck #define DIKEYBOARD_Z (DIK_Z | 0x81000400) 655*c2c66affSColin Finck #define DIKEYBOARD_X (DIK_X | 0x81000400) 656*c2c66affSColin Finck #define DIKEYBOARD_C (DIK_C | 0x81000400) 657*c2c66affSColin Finck #define DIKEYBOARD_V (DIK_V | 0x81000400) 658*c2c66affSColin Finck #define DIKEYBOARD_B (DIK_B | 0x81000400) 659*c2c66affSColin Finck #define DIKEYBOARD_N (DIK_N | 0x81000400) 660*c2c66affSColin Finck #define DIKEYBOARD_M (DIK_M | 0x81000400) 661*c2c66affSColin Finck #define DIKEYBOARD_COMMA (DIK_COMMA | 0x81000400) 662*c2c66affSColin Finck #define DIKEYBOARD_PERIOD (DIK_PERIOD | 0x81000400) 663*c2c66affSColin Finck #define DIKEYBOARD_SLASH (DIK_SLASH | 0x81000400) 664*c2c66affSColin Finck #define DIKEYBOARD_RSHIFT (DIK_RSHIFT | 0x81000400) 665*c2c66affSColin Finck #define DIKEYBOARD_MULTIPLY (DIK_MULTIPLY | 0x81000400) 666*c2c66affSColin Finck #define DIKEYBOARD_LMENU (DIK_LMENU | 0x81000400) 667*c2c66affSColin Finck #define DIKEYBOARD_SPACE (DIK_SPACE | 0x81000400) 668*c2c66affSColin Finck #define DIKEYBOARD_CAPITAL (DIK_CAPITAL | 0x81000400) 669*c2c66affSColin Finck #define DIKEYBOARD_F1 (DIK_F1 | 0x81000400) 670*c2c66affSColin Finck #define DIKEYBOARD_F2 (DIK_F2 | 0x81000400) 671*c2c66affSColin Finck #define DIKEYBOARD_F3 (DIK_F3 | 0x81000400) 672*c2c66affSColin Finck #define DIKEYBOARD_F4 (DIK_F4 | 0x81000400) 673*c2c66affSColin Finck #define DIKEYBOARD_F5 (DIK_F5 | 0x81000400) 674*c2c66affSColin Finck #define DIKEYBOARD_F6 (DIK_F6 | 0x81000400) 675*c2c66affSColin Finck #define DIKEYBOARD_F7 (DIK_F7 | 0x81000400) 676*c2c66affSColin Finck #define DIKEYBOARD_F8 (DIK_F8 | 0x81000400) 677*c2c66affSColin Finck #define DIKEYBOARD_F9 (DIK_F9 | 0x81000400) 678*c2c66affSColin Finck #define DIKEYBOARD_F10 (DIK_F10 | 0x81000400) 679*c2c66affSColin Finck #define DIKEYBOARD_NUMLOCK (DIK_NUMLOCK | 0x81000400) 680*c2c66affSColin Finck #define DIKEYBOARD_SCROLL (DIK_SCROLL | 0x81000400) 681*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD7 (DIK_NUMPAD7 | 0x81000400) 682*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD8 (DIK_NUMPAD8 | 0x81000400) 683*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD9 (DIK_NUMPAD9 | 0x81000400) 684*c2c66affSColin Finck #define DIKEYBOARD_SUBTRACT (DIK_SUBTRACT | 0x81000400) 685*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD4 (DIK_NUMPAD4 | 0x81000400) 686*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD5 (DIK_NUMPAD5 | 0x81000400) 687*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD6 (DIK_NUMPAD6 | 0x81000400) 688*c2c66affSColin Finck #define DIKEYBOARD_ADD (DIK_ADD | 0x81000400) 689*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD1 (DIK_NUMPAD1 | 0x81000400) 690*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD2 (DIK_NUMPAD2 | 0x81000400) 691*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD3 (DIK_NUMPAD3 | 0x81000400) 692*c2c66affSColin Finck #define DIKEYBOARD_NUMPAD0 (DIK_NUMPAD0 | 0x81000400) 693*c2c66affSColin Finck #define DIKEYBOARD_DECIMAL (DIK_DECIMAL | 0x81000400) 694*c2c66affSColin Finck #define DIKEYBOARD_F11 (DIK_F11 | 0x81000400) 695*c2c66affSColin Finck #define DIKEYBOARD_F12 (DIK_F12 | 0x81000400) 696*c2c66affSColin Finck #define DIKEYBOARD_F13 (DIK_F13 | 0x81000400) 697*c2c66affSColin Finck #define DIKEYBOARD_F14 (DIK_F14 | 0x81000400) 698*c2c66affSColin Finck #define DIKEYBOARD_F15 (DIK_F15 | 0x81000400) 699*c2c66affSColin Finck #define DIKEYBOARD_KANA (DIK_KANA | 0x81000400) 700*c2c66affSColin Finck #define DIKEYBOARD_CONVERT (DIK_CONVERT | 0x81000400) 701*c2c66affSColin Finck #define DIKEYBOARD_NOCONVERT (DIK_NOCONVERT | 0x81000400) 702*c2c66affSColin Finck #define DIKEYBOARD_YEN (DIK_YEN | 0x81000400) 703*c2c66affSColin Finck #define DIKEYBOARD_NUMPADEQUALS (DIK_NUMPADEQUALS | 0x81000400) 704*c2c66affSColin Finck #define DIKEYBOARD_CIRCUMFLEX (DIK_CIRCUMFLEX | 0x81000400) 705*c2c66affSColin Finck #define DIKEYBOARD_AT (DIK_AT | 0x81000400) 706*c2c66affSColin Finck #define DIKEYBOARD_COLON (DIK_COLON | 0x81000400) 707*c2c66affSColin Finck #define DIKEYBOARD_UNDERLINE (DIK_UNDERLINE | 0x81000400) 708*c2c66affSColin Finck #define DIKEYBOARD_KANJI (DIK_KANJI | 0x81000400) 709*c2c66affSColin Finck #define DIKEYBOARD_STOP (DIK_STOP | 0x81000400) 710*c2c66affSColin Finck #define DIKEYBOARD_AX (DIK_AX | 0x81000400) 711*c2c66affSColin Finck #define DIKEYBOARD_UNLABELED (DIK_UNLABELED | 0x81000400) 712*c2c66affSColin Finck #define DIKEYBOARD_NUMPADENTER (DIK_NUMPADENTER | 0x81000400) 713*c2c66affSColin Finck #define DIKEYBOARD_RCONTROL (DIK_RCONTROL | 0x81000400) 714*c2c66affSColin Finck #define DIKEYBOARD_NUMPADCOMMA (DIK_NUMPADCOMMA | 0x81000400) 715*c2c66affSColin Finck #define DIKEYBOARD_DIVIDE (DIK_DIVIDE | 0x81000400) 716*c2c66affSColin Finck #define DIKEYBOARD_SYSRQ (DIK_SYSRQ | 0x81000400) 717*c2c66affSColin Finck #define DIKEYBOARD_RMENU (DIK_RMENU | 0x81000400) 718*c2c66affSColin Finck #define DIKEYBOARD_PAUSE (DIK_PAUSE | 0x81000400) 719*c2c66affSColin Finck #define DIKEYBOARD_HOME (DIK_HOME | 0x81000400) 720*c2c66affSColin Finck #define DIKEYBOARD_UP (DIK_UP | 0x81000400) 721*c2c66affSColin Finck #define DIKEYBOARD_PRIOR (DIK_PRIOR | 0x81000400) 722*c2c66affSColin Finck #define DIKEYBOARD_LEFT (DIK_LEFT | 0x81000400) 723*c2c66affSColin Finck #define DIKEYBOARD_RIGHT (DIK_RIGHT | 0x81000400) 724*c2c66affSColin Finck #define DIKEYBOARD_END (DIK_END | 0x81000400) 725*c2c66affSColin Finck #define DIKEYBOARD_DOWN (DIK_DOWN | 0x81000400) 726*c2c66affSColin Finck #define DIKEYBOARD_NEXT (DIK_NEXT | 0x81000400) 727*c2c66affSColin Finck #define DIKEYBOARD_INSERT (DIK_INSERT | 0x81000400) 728*c2c66affSColin Finck #define DIKEYBOARD_DELETE (DIK_DELETE | 0x81000400) 729*c2c66affSColin Finck #define DIKEYBOARD_LWIN (DIK_LWIN | 0x81000400) 730*c2c66affSColin Finck #define DIKEYBOARD_RWIN (DIK_RWIN | 0x81000400) 731*c2c66affSColin Finck #define DIKEYBOARD_APPS (DIK_APPS | 0x81000400) 732*c2c66affSColin Finck #define DIKEYBOARD_POWER (DIK_POWER | 0x81000400) 733*c2c66affSColin Finck #define DIKEYBOARD_SLEEP (DIK_SLEEP | 0x81000400) 734*c2c66affSColin Finck #define DIKEYBOARD_BACKSPACE (DIK_BACKSPACE | 0x81000400) 735*c2c66affSColin Finck #define DIKEYBOARD_NUMPADSTAR (DIK_NUMPADSTAR | 0x81000400) 736*c2c66affSColin Finck #define DIKEYBOARD_LALT (DIK_LALT | 0x81000400) 737*c2c66affSColin Finck #define DIKEYBOARD_CAPSLOCK (DIK_CAPSLOCK | 0x81000400) 738*c2c66affSColin Finck #define DIKEYBOARD_NUMPADMINUS (DIK_NUMPADMINUS | 0x81000400) 739*c2c66affSColin Finck #define DIKEYBOARD_NUMPADPLUS (DIK_NUMPADPLUS | 0x81000400) 740*c2c66affSColin Finck #define DIKEYBOARD_NUMPADPERIOD (DIK_NUMPADPERIOD | 0x81000400) 741*c2c66affSColin Finck #define DIKEYBOARD_NUMPADSLASH (DIK_NUMPADSLASH | 0x81000400) 742*c2c66affSColin Finck #define DIKEYBOARD_RALT (DIK_RALT | 0x81000400) 743*c2c66affSColin Finck #define DIKEYBOARD_UPARROW (DIK_UPARROW | 0x81000400) 744*c2c66affSColin Finck #define DIKEYBOARD_PGUP (DIK_PGUP | 0x81000400) 745*c2c66affSColin Finck #define DIKEYBOARD_LEFTARROW (DIK_LEFTARROW | 0x81000400) 746*c2c66affSColin Finck #define DIKEYBOARD_RIGHTARROW (DIK_RIGHTARROW | 0x81000400) 747*c2c66affSColin Finck #define DIKEYBOARD_DOWNARROW (DIK_DOWNARROW | 0x81000400) 748*c2c66affSColin Finck #define DIKEYBOARD_PGDN (DIK_PGDN | 0x81000400) 749*c2c66affSColin Finck 750*c2c66affSColin Finck #define DIDFT_ALL 0x00000000 751*c2c66affSColin Finck #define DIDFT_RELAXIS 0x00000001 752*c2c66affSColin Finck #define DIDFT_ABSAXIS 0x00000002 753*c2c66affSColin Finck #define DIDFT_AXIS 0x00000003 754*c2c66affSColin Finck #define DIDFT_PSHBUTTON 0x00000004 755*c2c66affSColin Finck #define DIDFT_TGLBUTTON 0x00000008 756*c2c66affSColin Finck #define DIDFT_BUTTON 0x0000000C 757*c2c66affSColin Finck #define DIDFT_POV 0x00000010 758*c2c66affSColin Finck #define DIDFT_COLLECTION 0x00000040 759*c2c66affSColin Finck #define DIDFT_NODATA 0x00000080 760*c2c66affSColin Finck #define DIDFT_ANYINSTANCE 0x00FFFF00 761*c2c66affSColin Finck #define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE 762*c2c66affSColin Finck #define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8) 763*c2c66affSColin Finck #define DIDFT_GETTYPE(n) LOBYTE(n) 764*c2c66affSColin Finck #define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8) 765*c2c66affSColin Finck #define DIDFT_FFACTUATOR 0x01000000 766*c2c66affSColin Finck #define DIDFT_FFEFFECTTRIGGER 0x02000000 767*c2c66affSColin Finck #define DIDFT_OUTPUT 0x10000000 768*c2c66affSColin Finck #define DIDFT_VENDORDEFINED 0x04000000 769*c2c66affSColin Finck #define DIDFT_ALIAS 0x08000000 770*c2c66affSColin Finck #ifndef DIDFT_OPTIONAL 771*c2c66affSColin Finck #define DIDFT_OPTIONAL 0x80000000 772*c2c66affSColin Finck #endif 773*c2c66affSColin Finck #define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8) 774*c2c66affSColin Finck #define DIDFT_NOCOLLECTION 0x00FFFF00 775*c2c66affSColin Finck #define DIDF_ABSAXIS 0x00000001 776*c2c66affSColin Finck #define DIDF_RELAXIS 0x00000002 777*c2c66affSColin Finck 778*c2c66affSColin Finck #define DIGDD_PEEK 0x00000001 779*c2c66affSColin Finck 780*c2c66affSColin Finck #define DISEQUENCE_COMPARE(dwSq1,cmp,dwSq2) ((int)((dwSq1) - (dwSq2)) cmp 0) 781*c2c66affSColin Finck 782*c2c66affSColin Finck typedef struct DIDEVICEOBJECTDATA_DX3 { 783*c2c66affSColin Finck DWORD dwOfs; 784*c2c66affSColin Finck DWORD dwData; 785*c2c66affSColin Finck DWORD dwTimeStamp; 786*c2c66affSColin Finck DWORD dwSequence; 787*c2c66affSColin Finck } DIDEVICEOBJECTDATA_DX3,*LPDIDEVICEOBJECTDATA_DX3; 788*c2c66affSColin Finck typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX3; 789*c2c66affSColin Finck 790*c2c66affSColin Finck typedef struct DIDEVICEOBJECTDATA { 791*c2c66affSColin Finck DWORD dwOfs; 792*c2c66affSColin Finck DWORD dwData; 793*c2c66affSColin Finck DWORD dwTimeStamp; 794*c2c66affSColin Finck DWORD dwSequence; 795*c2c66affSColin Finck UINT_PTR uAppData; 796*c2c66affSColin Finck } DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; 797*c2c66affSColin Finck typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA; 798*c2c66affSColin Finck 799*c2c66affSColin Finck typedef struct _DIOBJECTDATAFORMAT { 800*c2c66affSColin Finck const GUID *pguid; 801*c2c66affSColin Finck DWORD dwOfs; 802*c2c66affSColin Finck DWORD dwType; 803*c2c66affSColin Finck DWORD dwFlags; 804*c2c66affSColin Finck } DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT; 805*c2c66affSColin Finck typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT; 806*c2c66affSColin Finck 807*c2c66affSColin Finck typedef struct _DIDATAFORMAT { 808*c2c66affSColin Finck DWORD dwSize; 809*c2c66affSColin Finck DWORD dwObjSize; 810*c2c66affSColin Finck DWORD dwFlags; 811*c2c66affSColin Finck DWORD dwDataSize; 812*c2c66affSColin Finck DWORD dwNumObjs; 813*c2c66affSColin Finck LPDIOBJECTDATAFORMAT rgodf; 814*c2c66affSColin Finck } DIDATAFORMAT, *LPDIDATAFORMAT; 815*c2c66affSColin Finck typedef const DIDATAFORMAT *LPCDIDATAFORMAT; 816*c2c66affSColin Finck 817*c2c66affSColin Finck #define DIDOI_FFACTUATOR 0x00000001 818*c2c66affSColin Finck #define DIDOI_FFEFFECTTRIGGER 0x00000002 819*c2c66affSColin Finck #define DIDOI_POLLED 0x00008000 820*c2c66affSColin Finck #define DIDOI_ASPECTPOSITION 0x00000100 821*c2c66affSColin Finck #define DIDOI_ASPECTVELOCITY 0x00000200 822*c2c66affSColin Finck #define DIDOI_ASPECTACCEL 0x00000300 823*c2c66affSColin Finck #define DIDOI_ASPECTFORCE 0x00000400 824*c2c66affSColin Finck #define DIDOI_ASPECTMASK 0x00000F00 825*c2c66affSColin Finck #define DIDOI_GUIDISUSAGE 0x00010000 826*c2c66affSColin Finck 827*c2c66affSColin Finck typedef struct DIPROPHEADER { 828*c2c66affSColin Finck DWORD dwSize; 829*c2c66affSColin Finck DWORD dwHeaderSize; 830*c2c66affSColin Finck DWORD dwObj; 831*c2c66affSColin Finck DWORD dwHow; 832*c2c66affSColin Finck } DIPROPHEADER,*LPDIPROPHEADER; 833*c2c66affSColin Finck typedef const DIPROPHEADER *LPCDIPROPHEADER; 834*c2c66affSColin Finck 835*c2c66affSColin Finck #define DIPH_DEVICE 0 836*c2c66affSColin Finck #define DIPH_BYOFFSET 1 837*c2c66affSColin Finck #define DIPH_BYID 2 838*c2c66affSColin Finck #define DIPH_BYUSAGE 3 839*c2c66affSColin Finck 840*c2c66affSColin Finck #define DIMAKEUSAGEDWORD(UsagePage, Usage) (DWORD)MAKELONG(Usage, UsagePage) 841*c2c66affSColin Finck 842*c2c66affSColin Finck typedef struct DIPROPDWORD { 843*c2c66affSColin Finck DIPROPHEADER diph; 844*c2c66affSColin Finck DWORD dwData; 845*c2c66affSColin Finck } DIPROPDWORD, *LPDIPROPDWORD; 846*c2c66affSColin Finck typedef const DIPROPDWORD *LPCDIPROPDWORD; 847*c2c66affSColin Finck 848*c2c66affSColin Finck typedef struct DIPROPRANGE { 849*c2c66affSColin Finck DIPROPHEADER diph; 850*c2c66affSColin Finck LONG lMin; 851*c2c66affSColin Finck LONG lMax; 852*c2c66affSColin Finck } DIPROPRANGE, *LPDIPROPRANGE; 853*c2c66affSColin Finck typedef const DIPROPRANGE *LPCDIPROPRANGE; 854*c2c66affSColin Finck 855*c2c66affSColin Finck #define DIPROPRANGE_NOMIN ((LONG)0x80000000) 856*c2c66affSColin Finck #define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF) 857*c2c66affSColin Finck 858*c2c66affSColin Finck typedef struct DIPROPCAL { 859*c2c66affSColin Finck DIPROPHEADER diph; 860*c2c66affSColin Finck LONG lMin; 861*c2c66affSColin Finck LONG lCenter; 862*c2c66affSColin Finck LONG lMax; 863*c2c66affSColin Finck } DIPROPCAL, *LPDIPROPCAL; 864*c2c66affSColin Finck typedef const DIPROPCAL *LPCDIPROPCAL; 865*c2c66affSColin Finck 866*c2c66affSColin Finck typedef struct DIPROPGUIDANDPATH { 867*c2c66affSColin Finck DIPROPHEADER diph; 868*c2c66affSColin Finck GUID guidClass; 869*c2c66affSColin Finck WCHAR wszPath[MAX_PATH]; 870*c2c66affSColin Finck } DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH; 871*c2c66affSColin Finck typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH; 872*c2c66affSColin Finck 873*c2c66affSColin Finck typedef struct DIPROPSTRING { 874*c2c66affSColin Finck DIPROPHEADER diph; 875*c2c66affSColin Finck WCHAR wsz[MAX_PATH]; 876*c2c66affSColin Finck } DIPROPSTRING, *LPDIPROPSTRING; 877*c2c66affSColin Finck typedef const DIPROPSTRING *LPCDIPROPSTRING; 878*c2c66affSColin Finck 879*c2c66affSColin Finck /* special property GUIDs */ 880*c2c66affSColin Finck #ifdef __cplusplus 881*c2c66affSColin Finck #define MAKEDIPROP(prop) (*(const GUID *)(prop)) 882*c2c66affSColin Finck #else 883*c2c66affSColin Finck #define MAKEDIPROP(prop) ((REFGUID)(prop)) 884*c2c66affSColin Finck #endif 885*c2c66affSColin Finck #define DIPROP_BUFFERSIZE MAKEDIPROP(1) 886*c2c66affSColin Finck #define DIPROP_AXISMODE MAKEDIPROP(2) 887*c2c66affSColin Finck 888*c2c66affSColin Finck #define DIPROPAXISMODE_ABS 0 889*c2c66affSColin Finck #define DIPROPAXISMODE_REL 1 890*c2c66affSColin Finck 891*c2c66affSColin Finck #define DIPROP_GRANULARITY MAKEDIPROP(3) 892*c2c66affSColin Finck #define DIPROP_RANGE MAKEDIPROP(4) 893*c2c66affSColin Finck #define DIPROP_DEADZONE MAKEDIPROP(5) 894*c2c66affSColin Finck #define DIPROP_SATURATION MAKEDIPROP(6) 895*c2c66affSColin Finck #define DIPROP_FFGAIN MAKEDIPROP(7) 896*c2c66affSColin Finck #define DIPROP_FFLOAD MAKEDIPROP(8) 897*c2c66affSColin Finck #define DIPROP_AUTOCENTER MAKEDIPROP(9) 898*c2c66affSColin Finck 899*c2c66affSColin Finck #define DIPROPAUTOCENTER_OFF 0 900*c2c66affSColin Finck #define DIPROPAUTOCENTER_ON 1 901*c2c66affSColin Finck 902*c2c66affSColin Finck #define DIPROP_CALIBRATIONMODE MAKEDIPROP(10) 903*c2c66affSColin Finck 904*c2c66affSColin Finck #define DIPROPCALIBRATIONMODE_COOKED 0 905*c2c66affSColin Finck #define DIPROPCALIBRATIONMODE_RAW 1 906*c2c66affSColin Finck 907*c2c66affSColin Finck #define DIPROP_CALIBRATION MAKEDIPROP(11) 908*c2c66affSColin Finck #define DIPROP_GUIDANDPATH MAKEDIPROP(12) 909*c2c66affSColin Finck 910*c2c66affSColin Finck #define DIPROP_INSTANCENAME MAKEDIPROP(13) 911*c2c66affSColin Finck #define DIPROP_PRODUCTNAME MAKEDIPROP(14) 912*c2c66affSColin Finck #define DIPROP_JOYSTICKID MAKEDIPROP(15) 913*c2c66affSColin Finck #define DIPROP_KEYNAME MAKEDIPROP(20) 914*c2c66affSColin Finck #define DIPROP_VIDPID MAKEDIPROP(24) 915*c2c66affSColin Finck 916*c2c66affSColin Finck #define DIPROP_KEYNAME MAKEDIPROP(20) 917*c2c66affSColin Finck #define DIPROP_CPOINTS MAKEDIPROP(21) 918*c2c66affSColin Finck #define DIPROP_APPDATA MAKEDIPROP(22) 919*c2c66affSColin Finck #define DIPROP_SCANCODE MAKEDIPROP(23) 920*c2c66affSColin Finck #define DIPROP_VIDPID MAKEDIPROP(24) 921*c2c66affSColin Finck #define DIPROP_USERNAME MAKEDIPROP(25) 922*c2c66affSColin Finck #define DIPROP_TYPENAME MAKEDIPROP(26) 923*c2c66affSColin Finck 924*c2c66affSColin Finck typedef struct DIDEVCAPS_DX3 { 925*c2c66affSColin Finck DWORD dwSize; 926*c2c66affSColin Finck DWORD dwFlags; 927*c2c66affSColin Finck DWORD dwDevType; 928*c2c66affSColin Finck DWORD dwAxes; 929*c2c66affSColin Finck DWORD dwButtons; 930*c2c66affSColin Finck DWORD dwPOVs; 931*c2c66affSColin Finck } DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3; 932*c2c66affSColin Finck 933*c2c66affSColin Finck typedef struct DIDEVCAPS { 934*c2c66affSColin Finck DWORD dwSize; 935*c2c66affSColin Finck DWORD dwFlags; 936*c2c66affSColin Finck DWORD dwDevType; 937*c2c66affSColin Finck DWORD dwAxes; 938*c2c66affSColin Finck DWORD dwButtons; 939*c2c66affSColin Finck DWORD dwPOVs; 940*c2c66affSColin Finck DWORD dwFFSamplePeriod; 941*c2c66affSColin Finck DWORD dwFFMinTimeResolution; 942*c2c66affSColin Finck DWORD dwFirmwareRevision; 943*c2c66affSColin Finck DWORD dwHardwareRevision; 944*c2c66affSColin Finck DWORD dwFFDriverVersion; 945*c2c66affSColin Finck } DIDEVCAPS,*LPDIDEVCAPS; 946*c2c66affSColin Finck 947*c2c66affSColin Finck #define DIDC_ATTACHED 0x00000001 948*c2c66affSColin Finck #define DIDC_POLLEDDEVICE 0x00000002 949*c2c66affSColin Finck #define DIDC_EMULATED 0x00000004 950*c2c66affSColin Finck #define DIDC_POLLEDDATAFORMAT 0x00000008 951*c2c66affSColin Finck #define DIDC_FORCEFEEDBACK 0x00000100 952*c2c66affSColin Finck #define DIDC_FFATTACK 0x00000200 953*c2c66affSColin Finck #define DIDC_FFFADE 0x00000400 954*c2c66affSColin Finck #define DIDC_SATURATION 0x00000800 955*c2c66affSColin Finck #define DIDC_POSNEGCOEFFICIENTS 0x00001000 956*c2c66affSColin Finck #define DIDC_POSNEGSATURATION 0x00002000 957*c2c66affSColin Finck #define DIDC_DEADBAND 0x00004000 958*c2c66affSColin Finck #define DIDC_STARTDELAY 0x00008000 959*c2c66affSColin Finck #define DIDC_ALIAS 0x00010000 960*c2c66affSColin Finck #define DIDC_PHANTOM 0x00020000 961*c2c66affSColin Finck #define DIDC_HIDDEN 0x00040000 962*c2c66affSColin Finck 963*c2c66affSColin Finck 964*c2c66affSColin Finck /* SetCooperativeLevel dwFlags */ 965*c2c66affSColin Finck #define DISCL_EXCLUSIVE 0x00000001 966*c2c66affSColin Finck #define DISCL_NONEXCLUSIVE 0x00000002 967*c2c66affSColin Finck #define DISCL_FOREGROUND 0x00000004 968*c2c66affSColin Finck #define DISCL_BACKGROUND 0x00000008 969*c2c66affSColin Finck #define DISCL_NOWINKEY 0x00000010 970*c2c66affSColin Finck 971*c2c66affSColin Finck /* Device FF flags */ 972*c2c66affSColin Finck #define DISFFC_RESET 0x00000001 973*c2c66affSColin Finck #define DISFFC_STOPALL 0x00000002 974*c2c66affSColin Finck #define DISFFC_PAUSE 0x00000004 975*c2c66affSColin Finck #define DISFFC_CONTINUE 0x00000008 976*c2c66affSColin Finck #define DISFFC_SETACTUATORSON 0x00000010 977*c2c66affSColin Finck #define DISFFC_SETACTUATORSOFF 0x00000020 978*c2c66affSColin Finck 979*c2c66affSColin Finck #define DIGFFS_EMPTY 0x00000001 980*c2c66affSColin Finck #define DIGFFS_STOPPED 0x00000002 981*c2c66affSColin Finck #define DIGFFS_PAUSED 0x00000004 982*c2c66affSColin Finck #define DIGFFS_ACTUATORSON 0x00000010 983*c2c66affSColin Finck #define DIGFFS_ACTUATORSOFF 0x00000020 984*c2c66affSColin Finck #define DIGFFS_POWERON 0x00000040 985*c2c66affSColin Finck #define DIGFFS_POWEROFF 0x00000080 986*c2c66affSColin Finck #define DIGFFS_SAFETYSWITCHON 0x00000100 987*c2c66affSColin Finck #define DIGFFS_SAFETYSWITCHOFF 0x00000200 988*c2c66affSColin Finck #define DIGFFS_USERFFSWITCHON 0x00000400 989*c2c66affSColin Finck #define DIGFFS_USERFFSWITCHOFF 0x00000800 990*c2c66affSColin Finck #define DIGFFS_DEVICELOST 0x80000000 991*c2c66affSColin Finck 992*c2c66affSColin Finck /* Effect flags */ 993*c2c66affSColin Finck #define DIEFT_ALL 0x00000000 994*c2c66affSColin Finck 995*c2c66affSColin Finck #define DIEFT_CONSTANTFORCE 0x00000001 996*c2c66affSColin Finck #define DIEFT_RAMPFORCE 0x00000002 997*c2c66affSColin Finck #define DIEFT_PERIODIC 0x00000003 998*c2c66affSColin Finck #define DIEFT_CONDITION 0x00000004 999*c2c66affSColin Finck #define DIEFT_CUSTOMFORCE 0x00000005 1000*c2c66affSColin Finck #define DIEFT_HARDWARE 0x000000FF 1001*c2c66affSColin Finck #define DIEFT_FFATTACK 0x00000200 1002*c2c66affSColin Finck #define DIEFT_FFFADE 0x00000400 1003*c2c66affSColin Finck #define DIEFT_SATURATION 0x00000800 1004*c2c66affSColin Finck #define DIEFT_POSNEGCOEFFICIENTS 0x00001000 1005*c2c66affSColin Finck #define DIEFT_POSNEGSATURATION 0x00002000 1006*c2c66affSColin Finck #define DIEFT_DEADBAND 0x00004000 1007*c2c66affSColin Finck #define DIEFT_STARTDELAY 0x00008000 1008*c2c66affSColin Finck #define DIEFT_GETTYPE(n) LOBYTE(n) 1009*c2c66affSColin Finck 1010*c2c66affSColin Finck #define DIEFF_OBJECTIDS 0x00000001 1011*c2c66affSColin Finck #define DIEFF_OBJECTOFFSETS 0x00000002 1012*c2c66affSColin Finck #define DIEFF_CARTESIAN 0x00000010 1013*c2c66affSColin Finck #define DIEFF_POLAR 0x00000020 1014*c2c66affSColin Finck #define DIEFF_SPHERICAL 0x00000040 1015*c2c66affSColin Finck 1016*c2c66affSColin Finck #define DIEP_DURATION 0x00000001 1017*c2c66affSColin Finck #define DIEP_SAMPLEPERIOD 0x00000002 1018*c2c66affSColin Finck #define DIEP_GAIN 0x00000004 1019*c2c66affSColin Finck #define DIEP_TRIGGERBUTTON 0x00000008 1020*c2c66affSColin Finck #define DIEP_TRIGGERREPEATINTERVAL 0x00000010 1021*c2c66affSColin Finck #define DIEP_AXES 0x00000020 1022*c2c66affSColin Finck #define DIEP_DIRECTION 0x00000040 1023*c2c66affSColin Finck #define DIEP_ENVELOPE 0x00000080 1024*c2c66affSColin Finck #define DIEP_TYPESPECIFICPARAMS 0x00000100 1025*c2c66affSColin Finck #define DIEP_STARTDELAY 0x00000200 1026*c2c66affSColin Finck #define DIEP_ALLPARAMS_DX5 0x000001FF 1027*c2c66affSColin Finck #define DIEP_ALLPARAMS 0x000003FF 1028*c2c66affSColin Finck #define DIEP_START 0x20000000 1029*c2c66affSColin Finck #define DIEP_NORESTART 0x40000000 1030*c2c66affSColin Finck #define DIEP_NODOWNLOAD 0x80000000 1031*c2c66affSColin Finck #define DIEB_NOTRIGGER 0xFFFFFFFF 1032*c2c66affSColin Finck 1033*c2c66affSColin Finck #define DIES_SOLO 0x00000001 1034*c2c66affSColin Finck #define DIES_NODOWNLOAD 0x80000000 1035*c2c66affSColin Finck 1036*c2c66affSColin Finck #define DIEGES_PLAYING 0x00000001 1037*c2c66affSColin Finck #define DIEGES_EMULATED 0x00000002 1038*c2c66affSColin Finck 1039*c2c66affSColin Finck #define DI_DEGREES 100 1040*c2c66affSColin Finck #define DI_FFNOMINALMAX 10000 1041*c2c66affSColin Finck #define DI_SECONDS 1000000 1042*c2c66affSColin Finck 1043*c2c66affSColin Finck typedef struct DICONSTANTFORCE { 1044*c2c66affSColin Finck LONG lMagnitude; 1045*c2c66affSColin Finck } DICONSTANTFORCE, *LPDICONSTANTFORCE; 1046*c2c66affSColin Finck typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE; 1047*c2c66affSColin Finck 1048*c2c66affSColin Finck typedef struct DIRAMPFORCE { 1049*c2c66affSColin Finck LONG lStart; 1050*c2c66affSColin Finck LONG lEnd; 1051*c2c66affSColin Finck } DIRAMPFORCE, *LPDIRAMPFORCE; 1052*c2c66affSColin Finck typedef const DIRAMPFORCE *LPCDIRAMPFORCE; 1053*c2c66affSColin Finck 1054*c2c66affSColin Finck typedef struct DIPERIODIC { 1055*c2c66affSColin Finck DWORD dwMagnitude; 1056*c2c66affSColin Finck LONG lOffset; 1057*c2c66affSColin Finck DWORD dwPhase; 1058*c2c66affSColin Finck DWORD dwPeriod; 1059*c2c66affSColin Finck } DIPERIODIC, *LPDIPERIODIC; 1060*c2c66affSColin Finck typedef const DIPERIODIC *LPCDIPERIODIC; 1061*c2c66affSColin Finck 1062*c2c66affSColin Finck typedef struct DICONDITION { 1063*c2c66affSColin Finck LONG lOffset; 1064*c2c66affSColin Finck LONG lPositiveCoefficient; 1065*c2c66affSColin Finck LONG lNegativeCoefficient; 1066*c2c66affSColin Finck DWORD dwPositiveSaturation; 1067*c2c66affSColin Finck DWORD dwNegativeSaturation; 1068*c2c66affSColin Finck LONG lDeadBand; 1069*c2c66affSColin Finck } DICONDITION, *LPDICONDITION; 1070*c2c66affSColin Finck typedef const DICONDITION *LPCDICONDITION; 1071*c2c66affSColin Finck 1072*c2c66affSColin Finck typedef struct DICUSTOMFORCE { 1073*c2c66affSColin Finck DWORD cChannels; 1074*c2c66affSColin Finck DWORD dwSamplePeriod; 1075*c2c66affSColin Finck DWORD cSamples; 1076*c2c66affSColin Finck LPLONG rglForceData; 1077*c2c66affSColin Finck } DICUSTOMFORCE, *LPDICUSTOMFORCE; 1078*c2c66affSColin Finck typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE; 1079*c2c66affSColin Finck 1080*c2c66affSColin Finck typedef struct DIENVELOPE { 1081*c2c66affSColin Finck DWORD dwSize; 1082*c2c66affSColin Finck DWORD dwAttackLevel; 1083*c2c66affSColin Finck DWORD dwAttackTime; 1084*c2c66affSColin Finck DWORD dwFadeLevel; 1085*c2c66affSColin Finck DWORD dwFadeTime; 1086*c2c66affSColin Finck } DIENVELOPE, *LPDIENVELOPE; 1087*c2c66affSColin Finck typedef const DIENVELOPE *LPCDIENVELOPE; 1088*c2c66affSColin Finck 1089*c2c66affSColin Finck typedef struct DIEFFECT_DX5 { 1090*c2c66affSColin Finck DWORD dwSize; 1091*c2c66affSColin Finck DWORD dwFlags; 1092*c2c66affSColin Finck DWORD dwDuration; 1093*c2c66affSColin Finck DWORD dwSamplePeriod; 1094*c2c66affSColin Finck DWORD dwGain; 1095*c2c66affSColin Finck DWORD dwTriggerButton; 1096*c2c66affSColin Finck DWORD dwTriggerRepeatInterval; 1097*c2c66affSColin Finck DWORD cAxes; 1098*c2c66affSColin Finck LPDWORD rgdwAxes; 1099*c2c66affSColin Finck LPLONG rglDirection; 1100*c2c66affSColin Finck LPDIENVELOPE lpEnvelope; 1101*c2c66affSColin Finck DWORD cbTypeSpecificParams; 1102*c2c66affSColin Finck LPVOID lpvTypeSpecificParams; 1103*c2c66affSColin Finck } DIEFFECT_DX5, *LPDIEFFECT_DX5; 1104*c2c66affSColin Finck typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5; 1105*c2c66affSColin Finck 1106*c2c66affSColin Finck typedef struct DIEFFECT { 1107*c2c66affSColin Finck DWORD dwSize; 1108*c2c66affSColin Finck DWORD dwFlags; 1109*c2c66affSColin Finck DWORD dwDuration; 1110*c2c66affSColin Finck DWORD dwSamplePeriod; 1111*c2c66affSColin Finck DWORD dwGain; 1112*c2c66affSColin Finck DWORD dwTriggerButton; 1113*c2c66affSColin Finck DWORD dwTriggerRepeatInterval; 1114*c2c66affSColin Finck DWORD cAxes; 1115*c2c66affSColin Finck LPDWORD rgdwAxes; 1116*c2c66affSColin Finck LPLONG rglDirection; 1117*c2c66affSColin Finck LPDIENVELOPE lpEnvelope; 1118*c2c66affSColin Finck DWORD cbTypeSpecificParams; 1119*c2c66affSColin Finck LPVOID lpvTypeSpecificParams; 1120*c2c66affSColin Finck DWORD dwStartDelay; 1121*c2c66affSColin Finck } DIEFFECT, *LPDIEFFECT; 1122*c2c66affSColin Finck typedef const DIEFFECT *LPCDIEFFECT; 1123*c2c66affSColin Finck typedef DIEFFECT DIEFFECT_DX6; 1124*c2c66affSColin Finck typedef LPDIEFFECT LPDIEFFECT_DX6; 1125*c2c66affSColin Finck 1126*c2c66affSColin Finck typedef struct DIEFFECTINFOA { 1127*c2c66affSColin Finck DWORD dwSize; 1128*c2c66affSColin Finck GUID guid; 1129*c2c66affSColin Finck DWORD dwEffType; 1130*c2c66affSColin Finck DWORD dwStaticParams; 1131*c2c66affSColin Finck DWORD dwDynamicParams; 1132*c2c66affSColin Finck CHAR tszName[MAX_PATH]; 1133*c2c66affSColin Finck } DIEFFECTINFOA, *LPDIEFFECTINFOA; 1134*c2c66affSColin Finck typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA; 1135*c2c66affSColin Finck 1136*c2c66affSColin Finck typedef struct DIEFFECTINFOW { 1137*c2c66affSColin Finck DWORD dwSize; 1138*c2c66affSColin Finck GUID guid; 1139*c2c66affSColin Finck DWORD dwEffType; 1140*c2c66affSColin Finck DWORD dwStaticParams; 1141*c2c66affSColin Finck DWORD dwDynamicParams; 1142*c2c66affSColin Finck WCHAR tszName[MAX_PATH]; 1143*c2c66affSColin Finck } DIEFFECTINFOW, *LPDIEFFECTINFOW; 1144*c2c66affSColin Finck typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW; 1145*c2c66affSColin Finck 1146*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DIEFFECTINFO) 1147*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIEFFECTINFO) 1148*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDIEFFECTINFO) 1149*c2c66affSColin Finck 1150*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID); 1151*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID); 1152*c2c66affSColin Finck 1153*c2c66affSColin Finck typedef struct DIEFFESCAPE { 1154*c2c66affSColin Finck DWORD dwSize; 1155*c2c66affSColin Finck DWORD dwCommand; 1156*c2c66affSColin Finck LPVOID lpvInBuffer; 1157*c2c66affSColin Finck DWORD cbInBuffer; 1158*c2c66affSColin Finck LPVOID lpvOutBuffer; 1159*c2c66affSColin Finck DWORD cbOutBuffer; 1160*c2c66affSColin Finck } DIEFFESCAPE, *LPDIEFFESCAPE; 1161*c2c66affSColin Finck 1162*c2c66affSColin Finck typedef struct DIJOYSTATE { 1163*c2c66affSColin Finck LONG lX; 1164*c2c66affSColin Finck LONG lY; 1165*c2c66affSColin Finck LONG lZ; 1166*c2c66affSColin Finck LONG lRx; 1167*c2c66affSColin Finck LONG lRy; 1168*c2c66affSColin Finck LONG lRz; 1169*c2c66affSColin Finck LONG rglSlider[2]; 1170*c2c66affSColin Finck DWORD rgdwPOV[4]; 1171*c2c66affSColin Finck BYTE rgbButtons[32]; 1172*c2c66affSColin Finck } DIJOYSTATE, *LPDIJOYSTATE; 1173*c2c66affSColin Finck 1174*c2c66affSColin Finck typedef struct DIJOYSTATE2 { 1175*c2c66affSColin Finck LONG lX; 1176*c2c66affSColin Finck LONG lY; 1177*c2c66affSColin Finck LONG lZ; 1178*c2c66affSColin Finck LONG lRx; 1179*c2c66affSColin Finck LONG lRy; 1180*c2c66affSColin Finck LONG lRz; 1181*c2c66affSColin Finck LONG rglSlider[2]; 1182*c2c66affSColin Finck DWORD rgdwPOV[4]; 1183*c2c66affSColin Finck BYTE rgbButtons[128]; 1184*c2c66affSColin Finck LONG lVX; /* 'v' as in velocity */ 1185*c2c66affSColin Finck LONG lVY; 1186*c2c66affSColin Finck LONG lVZ; 1187*c2c66affSColin Finck LONG lVRx; 1188*c2c66affSColin Finck LONG lVRy; 1189*c2c66affSColin Finck LONG lVRz; 1190*c2c66affSColin Finck LONG rglVSlider[2]; 1191*c2c66affSColin Finck LONG lAX; /* 'a' as in acceleration */ 1192*c2c66affSColin Finck LONG lAY; 1193*c2c66affSColin Finck LONG lAZ; 1194*c2c66affSColin Finck LONG lARx; 1195*c2c66affSColin Finck LONG lARy; 1196*c2c66affSColin Finck LONG lARz; 1197*c2c66affSColin Finck LONG rglASlider[2]; 1198*c2c66affSColin Finck LONG lFX; /* 'f' as in force */ 1199*c2c66affSColin Finck LONG lFY; 1200*c2c66affSColin Finck LONG lFZ; 1201*c2c66affSColin Finck LONG lFRx; /* 'fr' as in rotational force aka torque */ 1202*c2c66affSColin Finck LONG lFRy; 1203*c2c66affSColin Finck LONG lFRz; 1204*c2c66affSColin Finck LONG rglFSlider[2]; 1205*c2c66affSColin Finck } DIJOYSTATE2, *LPDIJOYSTATE2; 1206*c2c66affSColin Finck 1207*c2c66affSColin Finck #define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX) 1208*c2c66affSColin Finck #define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY) 1209*c2c66affSColin Finck #define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ) 1210*c2c66affSColin Finck #define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx) 1211*c2c66affSColin Finck #define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy) 1212*c2c66affSColin Finck #define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz) 1213*c2c66affSColin Finck #define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \ 1214*c2c66affSColin Finck (n) * sizeof(LONG)) 1215*c2c66affSColin Finck #define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \ 1216*c2c66affSColin Finck (n) * sizeof(DWORD)) 1217*c2c66affSColin Finck #define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n)) 1218*c2c66affSColin Finck #define DIJOFS_BUTTON0 DIJOFS_BUTTON(0) 1219*c2c66affSColin Finck #define DIJOFS_BUTTON1 DIJOFS_BUTTON(1) 1220*c2c66affSColin Finck #define DIJOFS_BUTTON2 DIJOFS_BUTTON(2) 1221*c2c66affSColin Finck #define DIJOFS_BUTTON3 DIJOFS_BUTTON(3) 1222*c2c66affSColin Finck #define DIJOFS_BUTTON4 DIJOFS_BUTTON(4) 1223*c2c66affSColin Finck #define DIJOFS_BUTTON5 DIJOFS_BUTTON(5) 1224*c2c66affSColin Finck #define DIJOFS_BUTTON6 DIJOFS_BUTTON(6) 1225*c2c66affSColin Finck #define DIJOFS_BUTTON7 DIJOFS_BUTTON(7) 1226*c2c66affSColin Finck #define DIJOFS_BUTTON8 DIJOFS_BUTTON(8) 1227*c2c66affSColin Finck #define DIJOFS_BUTTON9 DIJOFS_BUTTON(9) 1228*c2c66affSColin Finck #define DIJOFS_BUTTON10 DIJOFS_BUTTON(10) 1229*c2c66affSColin Finck #define DIJOFS_BUTTON11 DIJOFS_BUTTON(11) 1230*c2c66affSColin Finck #define DIJOFS_BUTTON12 DIJOFS_BUTTON(12) 1231*c2c66affSColin Finck #define DIJOFS_BUTTON13 DIJOFS_BUTTON(13) 1232*c2c66affSColin Finck #define DIJOFS_BUTTON14 DIJOFS_BUTTON(14) 1233*c2c66affSColin Finck #define DIJOFS_BUTTON15 DIJOFS_BUTTON(15) 1234*c2c66affSColin Finck #define DIJOFS_BUTTON16 DIJOFS_BUTTON(16) 1235*c2c66affSColin Finck #define DIJOFS_BUTTON17 DIJOFS_BUTTON(17) 1236*c2c66affSColin Finck #define DIJOFS_BUTTON18 DIJOFS_BUTTON(18) 1237*c2c66affSColin Finck #define DIJOFS_BUTTON19 DIJOFS_BUTTON(19) 1238*c2c66affSColin Finck #define DIJOFS_BUTTON20 DIJOFS_BUTTON(20) 1239*c2c66affSColin Finck #define DIJOFS_BUTTON21 DIJOFS_BUTTON(21) 1240*c2c66affSColin Finck #define DIJOFS_BUTTON22 DIJOFS_BUTTON(22) 1241*c2c66affSColin Finck #define DIJOFS_BUTTON23 DIJOFS_BUTTON(23) 1242*c2c66affSColin Finck #define DIJOFS_BUTTON24 DIJOFS_BUTTON(24) 1243*c2c66affSColin Finck #define DIJOFS_BUTTON25 DIJOFS_BUTTON(25) 1244*c2c66affSColin Finck #define DIJOFS_BUTTON26 DIJOFS_BUTTON(26) 1245*c2c66affSColin Finck #define DIJOFS_BUTTON27 DIJOFS_BUTTON(27) 1246*c2c66affSColin Finck #define DIJOFS_BUTTON28 DIJOFS_BUTTON(28) 1247*c2c66affSColin Finck #define DIJOFS_BUTTON29 DIJOFS_BUTTON(29) 1248*c2c66affSColin Finck #define DIJOFS_BUTTON30 DIJOFS_BUTTON(30) 1249*c2c66affSColin Finck #define DIJOFS_BUTTON31 DIJOFS_BUTTON(31) 1250*c2c66affSColin Finck 1251*c2c66affSColin Finck /* DInput 7 structures, types */ 1252*c2c66affSColin Finck typedef struct DIFILEEFFECT { 1253*c2c66affSColin Finck DWORD dwSize; 1254*c2c66affSColin Finck GUID GuidEffect; 1255*c2c66affSColin Finck LPCDIEFFECT lpDiEffect; 1256*c2c66affSColin Finck CHAR szFriendlyName[MAX_PATH]; 1257*c2c66affSColin Finck } DIFILEEFFECT, *LPDIFILEEFFECT; 1258*c2c66affSColin Finck 1259*c2c66affSColin Finck typedef const DIFILEEFFECT *LPCDIFILEEFFECT; 1260*c2c66affSColin Finck typedef BOOL (CALLBACK *LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID); 1261*c2c66affSColin Finck 1262*c2c66affSColin Finck /* DInput 8 structures and types */ 1263*c2c66affSColin Finck typedef struct _DIACTIONA { 1264*c2c66affSColin Finck UINT_PTR uAppData; 1265*c2c66affSColin Finck DWORD dwSemantic; 1266*c2c66affSColin Finck DWORD dwFlags; 1267*c2c66affSColin Finck union { 1268*c2c66affSColin Finck LPCSTR lptszActionName; 1269*c2c66affSColin Finck UINT uResIdString; 1270*c2c66affSColin Finck } DUMMYUNIONNAME; 1271*c2c66affSColin Finck GUID guidInstance; 1272*c2c66affSColin Finck DWORD dwObjID; 1273*c2c66affSColin Finck DWORD dwHow; 1274*c2c66affSColin Finck } DIACTIONA, *LPDIACTIONA; 1275*c2c66affSColin Finck typedef const DIACTIONA *LPCDIACTIONA; 1276*c2c66affSColin Finck 1277*c2c66affSColin Finck typedef struct _DIACTIONW { 1278*c2c66affSColin Finck UINT_PTR uAppData; 1279*c2c66affSColin Finck DWORD dwSemantic; 1280*c2c66affSColin Finck DWORD dwFlags; 1281*c2c66affSColin Finck union { 1282*c2c66affSColin Finck LPCWSTR lptszActionName; 1283*c2c66affSColin Finck UINT uResIdString; 1284*c2c66affSColin Finck } DUMMYUNIONNAME; 1285*c2c66affSColin Finck GUID guidInstance; 1286*c2c66affSColin Finck DWORD dwObjID; 1287*c2c66affSColin Finck DWORD dwHow; 1288*c2c66affSColin Finck } DIACTIONW, *LPDIACTIONW; 1289*c2c66affSColin Finck typedef const DIACTIONW *LPCDIACTIONW; 1290*c2c66affSColin Finck 1291*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DIACTION) 1292*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIACTION) 1293*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDIACTION) 1294*c2c66affSColin Finck 1295*c2c66affSColin Finck #define DIA_FORCEFEEDBACK 0x00000001 1296*c2c66affSColin Finck #define DIA_APPMAPPED 0x00000002 1297*c2c66affSColin Finck #define DIA_APPNOMAP 0x00000004 1298*c2c66affSColin Finck #define DIA_NORANGE 0x00000008 1299*c2c66affSColin Finck #define DIA_APPFIXED 0x00000010 1300*c2c66affSColin Finck 1301*c2c66affSColin Finck #define DIAH_UNMAPPED 0x00000000 1302*c2c66affSColin Finck #define DIAH_USERCONFIG 0x00000001 1303*c2c66affSColin Finck #define DIAH_APPREQUESTED 0x00000002 1304*c2c66affSColin Finck #define DIAH_HWAPP 0x00000004 1305*c2c66affSColin Finck #define DIAH_HWDEFAULT 0x00000008 1306*c2c66affSColin Finck #define DIAH_DEFAULT 0x00000020 1307*c2c66affSColin Finck #define DIAH_ERROR 0x80000000 1308*c2c66affSColin Finck 1309*c2c66affSColin Finck typedef struct _DIACTIONFORMATA { 1310*c2c66affSColin Finck DWORD dwSize; 1311*c2c66affSColin Finck DWORD dwActionSize; 1312*c2c66affSColin Finck DWORD dwDataSize; 1313*c2c66affSColin Finck DWORD dwNumActions; 1314*c2c66affSColin Finck LPDIACTIONA rgoAction; 1315*c2c66affSColin Finck GUID guidActionMap; 1316*c2c66affSColin Finck DWORD dwGenre; 1317*c2c66affSColin Finck DWORD dwBufferSize; 1318*c2c66affSColin Finck LONG lAxisMin; 1319*c2c66affSColin Finck LONG lAxisMax; 1320*c2c66affSColin Finck HINSTANCE hInstString; 1321*c2c66affSColin Finck FILETIME ftTimeStamp; 1322*c2c66affSColin Finck DWORD dwCRC; 1323*c2c66affSColin Finck CHAR tszActionMap[MAX_PATH]; 1324*c2c66affSColin Finck } DIACTIONFORMATA, *LPDIACTIONFORMATA; 1325*c2c66affSColin Finck typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA; 1326*c2c66affSColin Finck 1327*c2c66affSColin Finck typedef struct _DIACTIONFORMATW { 1328*c2c66affSColin Finck DWORD dwSize; 1329*c2c66affSColin Finck DWORD dwActionSize; 1330*c2c66affSColin Finck DWORD dwDataSize; 1331*c2c66affSColin Finck DWORD dwNumActions; 1332*c2c66affSColin Finck LPDIACTIONW rgoAction; 1333*c2c66affSColin Finck GUID guidActionMap; 1334*c2c66affSColin Finck DWORD dwGenre; 1335*c2c66affSColin Finck DWORD dwBufferSize; 1336*c2c66affSColin Finck LONG lAxisMin; 1337*c2c66affSColin Finck LONG lAxisMax; 1338*c2c66affSColin Finck HINSTANCE hInstString; 1339*c2c66affSColin Finck FILETIME ftTimeStamp; 1340*c2c66affSColin Finck DWORD dwCRC; 1341*c2c66affSColin Finck WCHAR tszActionMap[MAX_PATH]; 1342*c2c66affSColin Finck } DIACTIONFORMATW, *LPDIACTIONFORMATW; 1343*c2c66affSColin Finck typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW; 1344*c2c66affSColin Finck 1345*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DIACTIONFORMAT) 1346*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIACTIONFORMAT) 1347*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDIACTIONFORMAT) 1348*c2c66affSColin Finck 1349*c2c66affSColin Finck #define DIAFTS_NEWDEVICELOW 0xFFFFFFFF 1350*c2c66affSColin Finck #define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF 1351*c2c66affSColin Finck #define DIAFTS_UNUSEDDEVICELOW 0x00000000 1352*c2c66affSColin Finck #define DIAFTS_UNUSEDDEVICEHIGH 0x00000000 1353*c2c66affSColin Finck 1354*c2c66affSColin Finck #define DIDBAM_DEFAULT 0x00000000 1355*c2c66affSColin Finck #define DIDBAM_PRESERVE 0x00000001 1356*c2c66affSColin Finck #define DIDBAM_INITIALIZE 0x00000002 1357*c2c66affSColin Finck #define DIDBAM_HWDEFAULTS 0x00000004 1358*c2c66affSColin Finck 1359*c2c66affSColin Finck #define DIDSAM_DEFAULT 0x00000000 1360*c2c66affSColin Finck #define DIDSAM_NOUSER 0x00000001 1361*c2c66affSColin Finck #define DIDSAM_FORCESAVE 0x00000002 1362*c2c66affSColin Finck 1363*c2c66affSColin Finck #define DICD_DEFAULT 0x00000000 1364*c2c66affSColin Finck #define DICD_EDIT 0x00000001 1365*c2c66affSColin Finck 1366*c2c66affSColin Finck #ifndef D3DCOLOR_DEFINED 1367*c2c66affSColin Finck typedef DWORD D3DCOLOR; 1368*c2c66affSColin Finck #define D3DCOLOR_DEFINED 1369*c2c66affSColin Finck #endif 1370*c2c66affSColin Finck 1371*c2c66affSColin Finck typedef struct _DICOLORSET { 1372*c2c66affSColin Finck DWORD dwSize; 1373*c2c66affSColin Finck D3DCOLOR cTextFore; 1374*c2c66affSColin Finck D3DCOLOR cTextHighlight; 1375*c2c66affSColin Finck D3DCOLOR cCalloutLine; 1376*c2c66affSColin Finck D3DCOLOR cCalloutHighlight; 1377*c2c66affSColin Finck D3DCOLOR cBorder; 1378*c2c66affSColin Finck D3DCOLOR cControlFill; 1379*c2c66affSColin Finck D3DCOLOR cHighlightFill; 1380*c2c66affSColin Finck D3DCOLOR cAreaFill; 1381*c2c66affSColin Finck } DICOLORSET, *LPDICOLORSET; 1382*c2c66affSColin Finck typedef const DICOLORSET *LPCDICOLORSET; 1383*c2c66affSColin Finck 1384*c2c66affSColin Finck typedef struct _DICONFIGUREDEVICESPARAMSA { 1385*c2c66affSColin Finck DWORD dwSize; 1386*c2c66affSColin Finck DWORD dwcUsers; 1387*c2c66affSColin Finck LPSTR lptszUserNames; 1388*c2c66affSColin Finck DWORD dwcFormats; 1389*c2c66affSColin Finck LPDIACTIONFORMATA lprgFormats; 1390*c2c66affSColin Finck HWND hwnd; 1391*c2c66affSColin Finck DICOLORSET dics; 1392*c2c66affSColin Finck LPUNKNOWN lpUnkDDSTarget; 1393*c2c66affSColin Finck } DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA; 1394*c2c66affSColin Finck typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA; 1395*c2c66affSColin Finck 1396*c2c66affSColin Finck typedef struct _DICONFIGUREDEVICESPARAMSW { 1397*c2c66affSColin Finck DWORD dwSize; 1398*c2c66affSColin Finck DWORD dwcUsers; 1399*c2c66affSColin Finck LPWSTR lptszUserNames; 1400*c2c66affSColin Finck DWORD dwcFormats; 1401*c2c66affSColin Finck LPDIACTIONFORMATW lprgFormats; 1402*c2c66affSColin Finck HWND hwnd; 1403*c2c66affSColin Finck DICOLORSET dics; 1404*c2c66affSColin Finck LPUNKNOWN lpUnkDDSTarget; 1405*c2c66affSColin Finck } DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW; 1406*c2c66affSColin Finck typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW; 1407*c2c66affSColin Finck 1408*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DICONFIGUREDEVICESPARAMS) 1409*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDICONFIGUREDEVICESPARAMS) 1410*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDICONFIGUREDEVICESPARAMS) 1411*c2c66affSColin Finck 1412*c2c66affSColin Finck #define DIDIFT_CONFIGURATION 0x00000001 1413*c2c66affSColin Finck #define DIDIFT_OVERLAY 0x00000002 1414*c2c66affSColin Finck 1415*c2c66affSColin Finck #define DIDAL_CENTERED 0x00000000 1416*c2c66affSColin Finck #define DIDAL_LEFTALIGNED 0x00000001 1417*c2c66affSColin Finck #define DIDAL_RIGHTALIGNED 0x00000002 1418*c2c66affSColin Finck #define DIDAL_MIDDLE 0x00000000 1419*c2c66affSColin Finck #define DIDAL_TOPALIGNED 0x00000004 1420*c2c66affSColin Finck #define DIDAL_BOTTOMALIGNED 0x00000008 1421*c2c66affSColin Finck 1422*c2c66affSColin Finck typedef struct _DIDEVICEIMAGEINFOA { 1423*c2c66affSColin Finck CHAR tszImagePath[MAX_PATH]; 1424*c2c66affSColin Finck DWORD dwFlags; 1425*c2c66affSColin Finck DWORD dwViewID; 1426*c2c66affSColin Finck RECT rcOverlay; 1427*c2c66affSColin Finck DWORD dwObjID; 1428*c2c66affSColin Finck DWORD dwcValidPts; 1429*c2c66affSColin Finck POINT rgptCalloutLine[5]; 1430*c2c66affSColin Finck RECT rcCalloutRect; 1431*c2c66affSColin Finck DWORD dwTextAlign; 1432*c2c66affSColin Finck } DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA; 1433*c2c66affSColin Finck typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA; 1434*c2c66affSColin Finck 1435*c2c66affSColin Finck typedef struct _DIDEVICEIMAGEINFOW { 1436*c2c66affSColin Finck WCHAR tszImagePath[MAX_PATH]; 1437*c2c66affSColin Finck DWORD dwFlags; 1438*c2c66affSColin Finck DWORD dwViewID; 1439*c2c66affSColin Finck RECT rcOverlay; 1440*c2c66affSColin Finck DWORD dwObjID; 1441*c2c66affSColin Finck DWORD dwcValidPts; 1442*c2c66affSColin Finck POINT rgptCalloutLine[5]; 1443*c2c66affSColin Finck RECT rcCalloutRect; 1444*c2c66affSColin Finck DWORD dwTextAlign; 1445*c2c66affSColin Finck } DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW; 1446*c2c66affSColin Finck typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW; 1447*c2c66affSColin Finck 1448*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFO) 1449*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFO) 1450*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFO) 1451*c2c66affSColin Finck 1452*c2c66affSColin Finck typedef struct _DIDEVICEIMAGEINFOHEADERA { 1453*c2c66affSColin Finck DWORD dwSize; 1454*c2c66affSColin Finck DWORD dwSizeImageInfo; 1455*c2c66affSColin Finck DWORD dwcViews; 1456*c2c66affSColin Finck DWORD dwcButtons; 1457*c2c66affSColin Finck DWORD dwcAxes; 1458*c2c66affSColin Finck DWORD dwcPOVs; 1459*c2c66affSColin Finck DWORD dwBufferSize; 1460*c2c66affSColin Finck DWORD dwBufferUsed; 1461*c2c66affSColin Finck LPDIDEVICEIMAGEINFOA lprgImageInfoArray; 1462*c2c66affSColin Finck } DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA; 1463*c2c66affSColin Finck typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA; 1464*c2c66affSColin Finck 1465*c2c66affSColin Finck typedef struct _DIDEVICEIMAGEINFOHEADERW { 1466*c2c66affSColin Finck DWORD dwSize; 1467*c2c66affSColin Finck DWORD dwSizeImageInfo; 1468*c2c66affSColin Finck DWORD dwcViews; 1469*c2c66affSColin Finck DWORD dwcButtons; 1470*c2c66affSColin Finck DWORD dwcAxes; 1471*c2c66affSColin Finck DWORD dwcPOVs; 1472*c2c66affSColin Finck DWORD dwBufferSize; 1473*c2c66affSColin Finck DWORD dwBufferUsed; 1474*c2c66affSColin Finck LPDIDEVICEIMAGEINFOW lprgImageInfoArray; 1475*c2c66affSColin Finck } DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW; 1476*c2c66affSColin Finck typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW; 1477*c2c66affSColin Finck 1478*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(DIDEVICEIMAGEINFOHEADER) 1479*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPDIDEVICEIMAGEINFOHEADER) 1480*c2c66affSColin Finck DECL_WINELIB_TYPE_AW(LPCDIDEVICEIMAGEINFOHEADER) 1481*c2c66affSColin Finck 1482*c2c66affSColin Finck 1483*c2c66affSColin Finck /***************************************************************************** 1484*c2c66affSColin Finck * IDirectInputEffect interface 1485*c2c66affSColin Finck */ 1486*c2c66affSColin Finck #define INTERFACE IDirectInputEffect 1487*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputEffect,IUnknown) 1488*c2c66affSColin Finck { 1489*c2c66affSColin Finck /*** IUnknown methods ***/ 1490*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1491*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1492*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 1493*c2c66affSColin Finck /*** IDirectInputEffect methods ***/ 1494*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE, DWORD, REFGUID) PURE; 1495*c2c66affSColin Finck STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE; 1496*c2c66affSColin Finck STDMETHOD(GetParameters)(THIS_ LPDIEFFECT, DWORD) PURE; 1497*c2c66affSColin Finck STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT, DWORD) PURE; 1498*c2c66affSColin Finck STDMETHOD(Start)(THIS_ DWORD, DWORD) PURE; 1499*c2c66affSColin Finck STDMETHOD(Stop)(THIS) PURE; 1500*c2c66affSColin Finck STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE; 1501*c2c66affSColin Finck STDMETHOD(Download)(THIS) PURE; 1502*c2c66affSColin Finck STDMETHOD(Unload)(THIS) PURE; 1503*c2c66affSColin Finck STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE; 1504*c2c66affSColin Finck }; 1505*c2c66affSColin Finck #undef INTERFACE 1506*c2c66affSColin Finck 1507*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 1508*c2c66affSColin Finck /*** IUnknown methods ***/ 1509*c2c66affSColin Finck #define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1510*c2c66affSColin Finck #define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p) 1511*c2c66affSColin Finck #define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p) 1512*c2c66affSColin Finck /*** IDirectInputEffect methods ***/ 1513*c2c66affSColin Finck #define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 1514*c2c66affSColin Finck #define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a) 1515*c2c66affSColin Finck #define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b) 1516*c2c66affSColin Finck #define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b) 1517*c2c66affSColin Finck #define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b) 1518*c2c66affSColin Finck #define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p) 1519*c2c66affSColin Finck #define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a) 1520*c2c66affSColin Finck #define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p) 1521*c2c66affSColin Finck #define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p) 1522*c2c66affSColin Finck #define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a) 1523*c2c66affSColin Finck #else 1524*c2c66affSColin Finck /*** IUnknown methods ***/ 1525*c2c66affSColin Finck #define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1526*c2c66affSColin Finck #define IDirectInputEffect_AddRef(p) (p)->AddRef() 1527*c2c66affSColin Finck #define IDirectInputEffect_Release(p) (p)->Release() 1528*c2c66affSColin Finck /*** IDirectInputEffect methods ***/ 1529*c2c66affSColin Finck #define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 1530*c2c66affSColin Finck #define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a) 1531*c2c66affSColin Finck #define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b) 1532*c2c66affSColin Finck #define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b) 1533*c2c66affSColin Finck #define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b) 1534*c2c66affSColin Finck #define IDirectInputEffect_Stop(p) (p)->Stop() 1535*c2c66affSColin Finck #define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a) 1536*c2c66affSColin Finck #define IDirectInputEffect_Download(p) (p)->Download() 1537*c2c66affSColin Finck #define IDirectInputEffect_Unload(p) (p)->Unload() 1538*c2c66affSColin Finck #define IDirectInputEffect_Escape(p,a) (p)->Escape(a) 1539*c2c66affSColin Finck #endif 1540*c2c66affSColin Finck 1541*c2c66affSColin Finck 1542*c2c66affSColin Finck /***************************************************************************** 1543*c2c66affSColin Finck * IDirectInputDeviceA interface 1544*c2c66affSColin Finck */ 1545*c2c66affSColin Finck #define INTERFACE IDirectInputDeviceA 1546*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputDeviceA,IUnknown) 1547*c2c66affSColin Finck { 1548*c2c66affSColin Finck /*** IUnknown methods ***/ 1549*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1550*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1551*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 1552*c2c66affSColin Finck /*** IDirectInputDeviceA methods ***/ 1553*c2c66affSColin Finck STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1554*c2c66affSColin Finck STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1555*c2c66affSColin Finck STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1556*c2c66affSColin Finck STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1557*c2c66affSColin Finck STDMETHOD(Acquire)(THIS) PURE; 1558*c2c66affSColin Finck STDMETHOD(Unacquire)(THIS) PURE; 1559*c2c66affSColin Finck STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1560*c2c66affSColin Finck STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1561*c2c66affSColin Finck STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1562*c2c66affSColin Finck STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1563*c2c66affSColin Finck STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1564*c2c66affSColin Finck STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1565*c2c66affSColin Finck STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; 1566*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1567*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1568*c2c66affSColin Finck }; 1569*c2c66affSColin Finck #undef INTERFACE 1570*c2c66affSColin Finck 1571*c2c66affSColin Finck /***************************************************************************** 1572*c2c66affSColin Finck * IDirectInputDeviceW interface 1573*c2c66affSColin Finck */ 1574*c2c66affSColin Finck #define INTERFACE IDirectInputDeviceW 1575*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputDeviceW,IUnknown) 1576*c2c66affSColin Finck { 1577*c2c66affSColin Finck /*** IUnknown methods ***/ 1578*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1579*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1580*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 1581*c2c66affSColin Finck /*** IDirectInputDeviceW methods ***/ 1582*c2c66affSColin Finck STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1583*c2c66affSColin Finck STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1584*c2c66affSColin Finck STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1585*c2c66affSColin Finck STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1586*c2c66affSColin Finck STDMETHOD(Acquire)(THIS) PURE; 1587*c2c66affSColin Finck STDMETHOD(Unacquire)(THIS) PURE; 1588*c2c66affSColin Finck STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1589*c2c66affSColin Finck STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1590*c2c66affSColin Finck STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1591*c2c66affSColin Finck STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1592*c2c66affSColin Finck STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1593*c2c66affSColin Finck STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1594*c2c66affSColin Finck STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; 1595*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1596*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1597*c2c66affSColin Finck }; 1598*c2c66affSColin Finck #undef INTERFACE 1599*c2c66affSColin Finck 1600*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 1601*c2c66affSColin Finck /*** IUnknown methods ***/ 1602*c2c66affSColin Finck #define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1603*c2c66affSColin Finck #define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p) 1604*c2c66affSColin Finck #define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p) 1605*c2c66affSColin Finck /*** IDirectInputDevice methods ***/ 1606*c2c66affSColin Finck #define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) 1607*c2c66affSColin Finck #define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) 1608*c2c66affSColin Finck #define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) 1609*c2c66affSColin Finck #define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) 1610*c2c66affSColin Finck #define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p) 1611*c2c66affSColin Finck #define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p) 1612*c2c66affSColin Finck #define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) 1613*c2c66affSColin Finck #define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) 1614*c2c66affSColin Finck #define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) 1615*c2c66affSColin Finck #define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) 1616*c2c66affSColin Finck #define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 1617*c2c66affSColin Finck #define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) 1618*c2c66affSColin Finck #define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) 1619*c2c66affSColin Finck #define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 1620*c2c66affSColin Finck #define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 1621*c2c66affSColin Finck #else 1622*c2c66affSColin Finck /*** IUnknown methods ***/ 1623*c2c66affSColin Finck #define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1624*c2c66affSColin Finck #define IDirectInputDevice_AddRef(p) (p)->AddRef() 1625*c2c66affSColin Finck #define IDirectInputDevice_Release(p) (p)->Release() 1626*c2c66affSColin Finck /*** IDirectInputDevice methods ***/ 1627*c2c66affSColin Finck #define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a) 1628*c2c66affSColin Finck #define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) 1629*c2c66affSColin Finck #define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b) 1630*c2c66affSColin Finck #define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b) 1631*c2c66affSColin Finck #define IDirectInputDevice_Acquire(p) (p)->Acquire() 1632*c2c66affSColin Finck #define IDirectInputDevice_Unacquire(p) (p)->Unacquire() 1633*c2c66affSColin Finck #define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) 1634*c2c66affSColin Finck #define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) 1635*c2c66affSColin Finck #define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a) 1636*c2c66affSColin Finck #define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a) 1637*c2c66affSColin Finck #define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 1638*c2c66affSColin Finck #define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) 1639*c2c66affSColin Finck #define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) 1640*c2c66affSColin Finck #define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 1641*c2c66affSColin Finck #define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 1642*c2c66affSColin Finck #endif 1643*c2c66affSColin Finck 1644*c2c66affSColin Finck 1645*c2c66affSColin Finck /***************************************************************************** 1646*c2c66affSColin Finck * IDirectInputDevice2A interface 1647*c2c66affSColin Finck */ 1648*c2c66affSColin Finck #define INTERFACE IDirectInputDevice2A 1649*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputDevice2A,IDirectInputDeviceA) 1650*c2c66affSColin Finck { 1651*c2c66affSColin Finck /*** IUnknown methods ***/ 1652*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1653*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1654*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 1655*c2c66affSColin Finck /*** IDirectInputDeviceA methods ***/ 1656*c2c66affSColin Finck STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1657*c2c66affSColin Finck STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1658*c2c66affSColin Finck STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1659*c2c66affSColin Finck STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1660*c2c66affSColin Finck STDMETHOD(Acquire)(THIS) PURE; 1661*c2c66affSColin Finck STDMETHOD(Unacquire)(THIS) PURE; 1662*c2c66affSColin Finck STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1663*c2c66affSColin Finck STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1664*c2c66affSColin Finck STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1665*c2c66affSColin Finck STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1666*c2c66affSColin Finck STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1667*c2c66affSColin Finck STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1668*c2c66affSColin Finck STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; 1669*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1670*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1671*c2c66affSColin Finck /*** IDirectInputDevice2A methods ***/ 1672*c2c66affSColin Finck STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1673*c2c66affSColin Finck STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1674*c2c66affSColin Finck STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; 1675*c2c66affSColin Finck STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1676*c2c66affSColin Finck STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1677*c2c66affSColin Finck STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1678*c2c66affSColin Finck STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1679*c2c66affSColin Finck STDMETHOD(Poll)(THIS) PURE; 1680*c2c66affSColin Finck STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1681*c2c66affSColin Finck }; 1682*c2c66affSColin Finck #undef INTERFACE 1683*c2c66affSColin Finck 1684*c2c66affSColin Finck /***************************************************************************** 1685*c2c66affSColin Finck * IDirectInputDevice2W interface 1686*c2c66affSColin Finck */ 1687*c2c66affSColin Finck #define INTERFACE IDirectInputDevice2W 1688*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputDevice2W,IDirectInputDeviceW) 1689*c2c66affSColin Finck { 1690*c2c66affSColin Finck /*** IUnknown methods ***/ 1691*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1692*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1693*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 1694*c2c66affSColin Finck /*** IDirectInputDeviceW methods ***/ 1695*c2c66affSColin Finck STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1696*c2c66affSColin Finck STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1697*c2c66affSColin Finck STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1698*c2c66affSColin Finck STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1699*c2c66affSColin Finck STDMETHOD(Acquire)(THIS) PURE; 1700*c2c66affSColin Finck STDMETHOD(Unacquire)(THIS) PURE; 1701*c2c66affSColin Finck STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1702*c2c66affSColin Finck STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1703*c2c66affSColin Finck STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1704*c2c66affSColin Finck STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1705*c2c66affSColin Finck STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1706*c2c66affSColin Finck STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1707*c2c66affSColin Finck STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; 1708*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1709*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1710*c2c66affSColin Finck /*** IDirectInputDevice2W methods ***/ 1711*c2c66affSColin Finck STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1712*c2c66affSColin Finck STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1713*c2c66affSColin Finck STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; 1714*c2c66affSColin Finck STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1715*c2c66affSColin Finck STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1716*c2c66affSColin Finck STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1717*c2c66affSColin Finck STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1718*c2c66affSColin Finck STDMETHOD(Poll)(THIS) PURE; 1719*c2c66affSColin Finck STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1720*c2c66affSColin Finck }; 1721*c2c66affSColin Finck #undef INTERFACE 1722*c2c66affSColin Finck 1723*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 1724*c2c66affSColin Finck /*** IUnknown methods ***/ 1725*c2c66affSColin Finck #define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1726*c2c66affSColin Finck #define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p) 1727*c2c66affSColin Finck #define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p) 1728*c2c66affSColin Finck /*** IDirectInputDevice methods ***/ 1729*c2c66affSColin Finck #define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) 1730*c2c66affSColin Finck #define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) 1731*c2c66affSColin Finck #define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) 1732*c2c66affSColin Finck #define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) 1733*c2c66affSColin Finck #define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p) 1734*c2c66affSColin Finck #define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p) 1735*c2c66affSColin Finck #define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) 1736*c2c66affSColin Finck #define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) 1737*c2c66affSColin Finck #define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) 1738*c2c66affSColin Finck #define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) 1739*c2c66affSColin Finck #define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 1740*c2c66affSColin Finck #define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) 1741*c2c66affSColin Finck #define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) 1742*c2c66affSColin Finck #define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 1743*c2c66affSColin Finck #define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 1744*c2c66affSColin Finck /*** IDirectInputDevice2 methods ***/ 1745*c2c66affSColin Finck #define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) 1746*c2c66affSColin Finck #define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) 1747*c2c66affSColin Finck #define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) 1748*c2c66affSColin Finck #define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) 1749*c2c66affSColin Finck #define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) 1750*c2c66affSColin Finck #define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) 1751*c2c66affSColin Finck #define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a) 1752*c2c66affSColin Finck #define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p) 1753*c2c66affSColin Finck #define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) 1754*c2c66affSColin Finck #else 1755*c2c66affSColin Finck /*** IUnknown methods ***/ 1756*c2c66affSColin Finck #define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1757*c2c66affSColin Finck #define IDirectInputDevice2_AddRef(p) (p)->AddRef() 1758*c2c66affSColin Finck #define IDirectInputDevice2_Release(p) (p)->Release() 1759*c2c66affSColin Finck /*** IDirectInputDevice methods ***/ 1760*c2c66affSColin Finck #define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a) 1761*c2c66affSColin Finck #define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) 1762*c2c66affSColin Finck #define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b) 1763*c2c66affSColin Finck #define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b) 1764*c2c66affSColin Finck #define IDirectInputDevice2_Acquire(p) (p)->Acquire() 1765*c2c66affSColin Finck #define IDirectInputDevice2_Unacquire(p) (p)->Unacquire() 1766*c2c66affSColin Finck #define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) 1767*c2c66affSColin Finck #define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) 1768*c2c66affSColin Finck #define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a) 1769*c2c66affSColin Finck #define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a) 1770*c2c66affSColin Finck #define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 1771*c2c66affSColin Finck #define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) 1772*c2c66affSColin Finck #define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) 1773*c2c66affSColin Finck #define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 1774*c2c66affSColin Finck #define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 1775*c2c66affSColin Finck /*** IDirectInputDevice2 methods ***/ 1776*c2c66affSColin Finck #define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) 1777*c2c66affSColin Finck #define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) 1778*c2c66affSColin Finck #define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) 1779*c2c66affSColin Finck #define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) 1780*c2c66affSColin Finck #define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) 1781*c2c66affSColin Finck #define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) 1782*c2c66affSColin Finck #define IDirectInputDevice2_Escape(p,a) (p)->Escape(a) 1783*c2c66affSColin Finck #define IDirectInputDevice2_Poll(p) (p)->Poll() 1784*c2c66affSColin Finck #define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) 1785*c2c66affSColin Finck #endif 1786*c2c66affSColin Finck 1787*c2c66affSColin Finck /***************************************************************************** 1788*c2c66affSColin Finck * IDirectInputDevice7A interface 1789*c2c66affSColin Finck */ 1790*c2c66affSColin Finck #define INTERFACE IDirectInputDevice7A 1791*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputDevice7A,IDirectInputDevice2A) 1792*c2c66affSColin Finck { 1793*c2c66affSColin Finck /*** IUnknown methods ***/ 1794*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1795*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1796*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 1797*c2c66affSColin Finck /*** IDirectInputDeviceA methods ***/ 1798*c2c66affSColin Finck STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1799*c2c66affSColin Finck STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1800*c2c66affSColin Finck STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1801*c2c66affSColin Finck STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1802*c2c66affSColin Finck STDMETHOD(Acquire)(THIS) PURE; 1803*c2c66affSColin Finck STDMETHOD(Unacquire)(THIS) PURE; 1804*c2c66affSColin Finck STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1805*c2c66affSColin Finck STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1806*c2c66affSColin Finck STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1807*c2c66affSColin Finck STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1808*c2c66affSColin Finck STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1809*c2c66affSColin Finck STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1810*c2c66affSColin Finck STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; 1811*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1812*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1813*c2c66affSColin Finck /*** IDirectInputDevice2A methods ***/ 1814*c2c66affSColin Finck STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1815*c2c66affSColin Finck STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1816*c2c66affSColin Finck STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; 1817*c2c66affSColin Finck STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1818*c2c66affSColin Finck STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1819*c2c66affSColin Finck STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1820*c2c66affSColin Finck STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1821*c2c66affSColin Finck STDMETHOD(Poll)(THIS) PURE; 1822*c2c66affSColin Finck STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1823*c2c66affSColin Finck /*** IDirectInputDevice7A methods ***/ 1824*c2c66affSColin Finck STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; 1825*c2c66affSColin Finck STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; 1826*c2c66affSColin Finck }; 1827*c2c66affSColin Finck #undef INTERFACE 1828*c2c66affSColin Finck 1829*c2c66affSColin Finck /***************************************************************************** 1830*c2c66affSColin Finck * IDirectInputDevice7W interface 1831*c2c66affSColin Finck */ 1832*c2c66affSColin Finck #define INTERFACE IDirectInputDevice7W 1833*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputDevice7W,IDirectInputDevice2W) 1834*c2c66affSColin Finck { 1835*c2c66affSColin Finck /*** IUnknown methods ***/ 1836*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1837*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1838*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 1839*c2c66affSColin Finck /*** IDirectInputDeviceW methods ***/ 1840*c2c66affSColin Finck STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1841*c2c66affSColin Finck STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1842*c2c66affSColin Finck STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1843*c2c66affSColin Finck STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1844*c2c66affSColin Finck STDMETHOD(Acquire)(THIS) PURE; 1845*c2c66affSColin Finck STDMETHOD(Unacquire)(THIS) PURE; 1846*c2c66affSColin Finck STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1847*c2c66affSColin Finck STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1848*c2c66affSColin Finck STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1849*c2c66affSColin Finck STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1850*c2c66affSColin Finck STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1851*c2c66affSColin Finck STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1852*c2c66affSColin Finck STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; 1853*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1854*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1855*c2c66affSColin Finck /*** IDirectInputDevice2W methods ***/ 1856*c2c66affSColin Finck STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1857*c2c66affSColin Finck STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1858*c2c66affSColin Finck STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; 1859*c2c66affSColin Finck STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1860*c2c66affSColin Finck STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1861*c2c66affSColin Finck STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1862*c2c66affSColin Finck STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1863*c2c66affSColin Finck STDMETHOD(Poll)(THIS) PURE; 1864*c2c66affSColin Finck STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1865*c2c66affSColin Finck /*** IDirectInputDevice7W methods ***/ 1866*c2c66affSColin Finck STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; 1867*c2c66affSColin Finck STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; 1868*c2c66affSColin Finck }; 1869*c2c66affSColin Finck #undef INTERFACE 1870*c2c66affSColin Finck 1871*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 1872*c2c66affSColin Finck /*** IUnknown methods ***/ 1873*c2c66affSColin Finck #define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 1874*c2c66affSColin Finck #define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p) 1875*c2c66affSColin Finck #define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p) 1876*c2c66affSColin Finck /*** IDirectInputDevice methods ***/ 1877*c2c66affSColin Finck #define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) 1878*c2c66affSColin Finck #define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) 1879*c2c66affSColin Finck #define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) 1880*c2c66affSColin Finck #define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) 1881*c2c66affSColin Finck #define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p) 1882*c2c66affSColin Finck #define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p) 1883*c2c66affSColin Finck #define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) 1884*c2c66affSColin Finck #define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) 1885*c2c66affSColin Finck #define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) 1886*c2c66affSColin Finck #define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) 1887*c2c66affSColin Finck #define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 1888*c2c66affSColin Finck #define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) 1889*c2c66affSColin Finck #define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) 1890*c2c66affSColin Finck #define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 1891*c2c66affSColin Finck #define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 1892*c2c66affSColin Finck /*** IDirectInputDevice2 methods ***/ 1893*c2c66affSColin Finck #define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) 1894*c2c66affSColin Finck #define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) 1895*c2c66affSColin Finck #define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) 1896*c2c66affSColin Finck #define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) 1897*c2c66affSColin Finck #define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) 1898*c2c66affSColin Finck #define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) 1899*c2c66affSColin Finck #define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a) 1900*c2c66affSColin Finck #define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p) 1901*c2c66affSColin Finck #define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) 1902*c2c66affSColin Finck /*** IDirectInputDevice7 methods ***/ 1903*c2c66affSColin Finck #define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) 1904*c2c66affSColin Finck #define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) 1905*c2c66affSColin Finck #else 1906*c2c66affSColin Finck /*** IUnknown methods ***/ 1907*c2c66affSColin Finck #define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 1908*c2c66affSColin Finck #define IDirectInputDevice7_AddRef(p) (p)->AddRef() 1909*c2c66affSColin Finck #define IDirectInputDevice7_Release(p) (p)->Release() 1910*c2c66affSColin Finck /*** IDirectInputDevice methods ***/ 1911*c2c66affSColin Finck #define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a) 1912*c2c66affSColin Finck #define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) 1913*c2c66affSColin Finck #define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b) 1914*c2c66affSColin Finck #define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b) 1915*c2c66affSColin Finck #define IDirectInputDevice7_Acquire(p) (p)->Acquire() 1916*c2c66affSColin Finck #define IDirectInputDevice7_Unacquire(p) (p)->Unacquire() 1917*c2c66affSColin Finck #define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) 1918*c2c66affSColin Finck #define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) 1919*c2c66affSColin Finck #define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a) 1920*c2c66affSColin Finck #define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a) 1921*c2c66affSColin Finck #define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 1922*c2c66affSColin Finck #define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) 1923*c2c66affSColin Finck #define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) 1924*c2c66affSColin Finck #define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 1925*c2c66affSColin Finck #define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 1926*c2c66affSColin Finck /*** IDirectInputDevice2 methods ***/ 1927*c2c66affSColin Finck #define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) 1928*c2c66affSColin Finck #define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) 1929*c2c66affSColin Finck #define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) 1930*c2c66affSColin Finck #define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) 1931*c2c66affSColin Finck #define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) 1932*c2c66affSColin Finck #define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) 1933*c2c66affSColin Finck #define IDirectInputDevice7_Escape(p,a) (p)->Escape(a) 1934*c2c66affSColin Finck #define IDirectInputDevice7_Poll(p) (p)->Poll() 1935*c2c66affSColin Finck #define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) 1936*c2c66affSColin Finck /*** IDirectInputDevice7 methods ***/ 1937*c2c66affSColin Finck #define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) 1938*c2c66affSColin Finck #define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) 1939*c2c66affSColin Finck #endif 1940*c2c66affSColin Finck 1941*c2c66affSColin Finck 1942*c2c66affSColin Finck /***************************************************************************** 1943*c2c66affSColin Finck * IDirectInputDevice8A interface 1944*c2c66affSColin Finck */ 1945*c2c66affSColin Finck #define INTERFACE IDirectInputDevice8A 1946*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputDevice8A,IDirectInputDevice7A) 1947*c2c66affSColin Finck { 1948*c2c66affSColin Finck /*** IUnknown methods ***/ 1949*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1950*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1951*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 1952*c2c66affSColin Finck /*** IDirectInputDeviceA methods ***/ 1953*c2c66affSColin Finck STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 1954*c2c66affSColin Finck STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 1955*c2c66affSColin Finck STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 1956*c2c66affSColin Finck STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 1957*c2c66affSColin Finck STDMETHOD(Acquire)(THIS) PURE; 1958*c2c66affSColin Finck STDMETHOD(Unacquire)(THIS) PURE; 1959*c2c66affSColin Finck STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 1960*c2c66affSColin Finck STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 1961*c2c66affSColin Finck STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 1962*c2c66affSColin Finck STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 1963*c2c66affSColin Finck STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 1964*c2c66affSColin Finck STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) PURE; 1965*c2c66affSColin Finck STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA pdidi) PURE; 1966*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 1967*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 1968*c2c66affSColin Finck /*** IDirectInputDevice2A methods ***/ 1969*c2c66affSColin Finck STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 1970*c2c66affSColin Finck STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 1971*c2c66affSColin Finck STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA pdei, REFGUID rguid) PURE; 1972*c2c66affSColin Finck STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 1973*c2c66affSColin Finck STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 1974*c2c66affSColin Finck STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 1975*c2c66affSColin Finck STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 1976*c2c66affSColin Finck STDMETHOD(Poll)(THIS) PURE; 1977*c2c66affSColin Finck STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 1978*c2c66affSColin Finck /*** IDirectInputDevice7A methods ***/ 1979*c2c66affSColin Finck STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; 1980*c2c66affSColin Finck STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; 1981*c2c66affSColin Finck /*** IDirectInputDevice8A methods ***/ 1982*c2c66affSColin Finck STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; 1983*c2c66affSColin Finck STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA lpdiaf, LPCSTR lpszUserName, DWORD dwFlags) PURE; 1984*c2c66affSColin Finck STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA lpdiDevImageInfoHeader) PURE; 1985*c2c66affSColin Finck }; 1986*c2c66affSColin Finck #undef INTERFACE 1987*c2c66affSColin Finck 1988*c2c66affSColin Finck /***************************************************************************** 1989*c2c66affSColin Finck * IDirectInputDevice8W interface 1990*c2c66affSColin Finck */ 1991*c2c66affSColin Finck #define INTERFACE IDirectInputDevice8W 1992*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputDevice8W,IDirectInputDevice7W) 1993*c2c66affSColin Finck { 1994*c2c66affSColin Finck /*** IUnknown methods ***/ 1995*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 1996*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1997*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 1998*c2c66affSColin Finck /*** IDirectInputDeviceW methods ***/ 1999*c2c66affSColin Finck STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS lpDIDevCaps) PURE; 2000*c2c66affSColin Finck STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2001*c2c66affSColin Finck STDMETHOD(GetProperty)(THIS_ REFGUID rguidProp, LPDIPROPHEADER pdiph) PURE; 2002*c2c66affSColin Finck STDMETHOD(SetProperty)(THIS_ REFGUID rguidProp, LPCDIPROPHEADER pdiph) PURE; 2003*c2c66affSColin Finck STDMETHOD(Acquire)(THIS) PURE; 2004*c2c66affSColin Finck STDMETHOD(Unacquire)(THIS) PURE; 2005*c2c66affSColin Finck STDMETHOD(GetDeviceState)(THIS_ DWORD cbData, LPVOID lpvData) PURE; 2006*c2c66affSColin Finck STDMETHOD(GetDeviceData)(THIS_ DWORD cbObjectData, LPDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD dwFlags) PURE; 2007*c2c66affSColin Finck STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT lpdf) PURE; 2008*c2c66affSColin Finck STDMETHOD(SetEventNotification)(THIS_ HANDLE hEvent) PURE; 2009*c2c66affSColin Finck STDMETHOD(SetCooperativeLevel)(THIS_ HWND hwnd, DWORD dwFlags) PURE; 2010*c2c66affSColin Finck STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) PURE; 2011*c2c66affSColin Finck STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW pdidi) PURE; 2012*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2013*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion, REFGUID rguid) PURE; 2014*c2c66affSColin Finck /*** IDirectInputDevice2W methods ***/ 2015*c2c66affSColin Finck STDMETHOD(CreateEffect)(THIS_ REFGUID rguid, LPCDIEFFECT lpeff, LPDIRECTINPUTEFFECT *ppdeff, LPUNKNOWN punkOuter) PURE; 2016*c2c66affSColin Finck STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW lpCallback, LPVOID pvRef, DWORD dwEffType) PURE; 2017*c2c66affSColin Finck STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW pdei, REFGUID rguid) PURE; 2018*c2c66affSColin Finck STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD pdwOut) PURE; 2019*c2c66affSColin Finck STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD dwFlags) PURE; 2020*c2c66affSColin Finck STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback, LPVOID pvRef, DWORD fl) PURE; 2021*c2c66affSColin Finck STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE pesc) PURE; 2022*c2c66affSColin Finck STDMETHOD(Poll)(THIS) PURE; 2023*c2c66affSColin Finck STDMETHOD(SendDeviceData)(THIS_ DWORD cbObjectData, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) PURE; 2024*c2c66affSColin Finck /*** IDirectInputDevice7W methods ***/ 2025*c2c66affSColin Finck STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR lpszFileName,LPDIENUMEFFECTSINFILECALLBACK pec,LPVOID pvRef,DWORD dwFlags) PURE; 2026*c2c66affSColin Finck STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR lpszFileName,DWORD dwEntries,LPDIFILEEFFECT rgDiFileEft,DWORD dwFlags) PURE; 2027*c2c66affSColin Finck /*** IDirectInputDevice8W methods ***/ 2028*c2c66affSColin Finck STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE; 2029*c2c66affSColin Finck STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags) PURE; 2030*c2c66affSColin Finck STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW lpdiDevImageInfoHeader) PURE; 2031*c2c66affSColin Finck }; 2032*c2c66affSColin Finck #undef INTERFACE 2033*c2c66affSColin Finck 2034*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 2035*c2c66affSColin Finck /*** IUnknown methods ***/ 2036*c2c66affSColin Finck #define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2037*c2c66affSColin Finck #define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p) 2038*c2c66affSColin Finck #define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p) 2039*c2c66affSColin Finck /*** IDirectInputDevice methods ***/ 2040*c2c66affSColin Finck #define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a) 2041*c2c66affSColin Finck #define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c) 2042*c2c66affSColin Finck #define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b) 2043*c2c66affSColin Finck #define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b) 2044*c2c66affSColin Finck #define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p) 2045*c2c66affSColin Finck #define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p) 2046*c2c66affSColin Finck #define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b) 2047*c2c66affSColin Finck #define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d) 2048*c2c66affSColin Finck #define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a) 2049*c2c66affSColin Finck #define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a) 2050*c2c66affSColin Finck #define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b) 2051*c2c66affSColin Finck #define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c) 2052*c2c66affSColin Finck #define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a) 2053*c2c66affSColin Finck #define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2054*c2c66affSColin Finck #define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c) 2055*c2c66affSColin Finck /*** IDirectInputDevice2 methods ***/ 2056*c2c66affSColin Finck #define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d) 2057*c2c66affSColin Finck #define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c) 2058*c2c66affSColin Finck #define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b) 2059*c2c66affSColin Finck #define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a) 2060*c2c66affSColin Finck #define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a) 2061*c2c66affSColin Finck #define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c) 2062*c2c66affSColin Finck #define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a) 2063*c2c66affSColin Finck #define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p) 2064*c2c66affSColin Finck #define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d) 2065*c2c66affSColin Finck /*** IDirectInputDevice7 methods ***/ 2066*c2c66affSColin Finck #define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d) 2067*c2c66affSColin Finck #define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d) 2068*c2c66affSColin Finck /*** IDirectInputDevice8 methods ***/ 2069*c2c66affSColin Finck #define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c) 2070*c2c66affSColin Finck #define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c) 2071*c2c66affSColin Finck #define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a) 2072*c2c66affSColin Finck #else 2073*c2c66affSColin Finck /*** IUnknown methods ***/ 2074*c2c66affSColin Finck #define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2075*c2c66affSColin Finck #define IDirectInputDevice8_AddRef(p) (p)->AddRef() 2076*c2c66affSColin Finck #define IDirectInputDevice8_Release(p) (p)->Release() 2077*c2c66affSColin Finck /*** IDirectInputDevice methods ***/ 2078*c2c66affSColin Finck #define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a) 2079*c2c66affSColin Finck #define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c) 2080*c2c66affSColin Finck #define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b) 2081*c2c66affSColin Finck #define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b) 2082*c2c66affSColin Finck #define IDirectInputDevice8_Acquire(p) (p)->Acquire() 2083*c2c66affSColin Finck #define IDirectInputDevice8_Unacquire(p) (p)->Unacquire() 2084*c2c66affSColin Finck #define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b) 2085*c2c66affSColin Finck #define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d) 2086*c2c66affSColin Finck #define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a) 2087*c2c66affSColin Finck #define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a) 2088*c2c66affSColin Finck #define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b) 2089*c2c66affSColin Finck #define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c) 2090*c2c66affSColin Finck #define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a) 2091*c2c66affSColin Finck #define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2092*c2c66affSColin Finck #define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c) 2093*c2c66affSColin Finck /*** IDirectInputDevice2 methods ***/ 2094*c2c66affSColin Finck #define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d) 2095*c2c66affSColin Finck #define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c) 2096*c2c66affSColin Finck #define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b) 2097*c2c66affSColin Finck #define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a) 2098*c2c66affSColin Finck #define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a) 2099*c2c66affSColin Finck #define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c) 2100*c2c66affSColin Finck #define IDirectInputDevice8_Escape(p,a) (p)->Escape(a) 2101*c2c66affSColin Finck #define IDirectInputDevice8_Poll(p) (p)->Poll() 2102*c2c66affSColin Finck #define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d) 2103*c2c66affSColin Finck /*** IDirectInputDevice7 methods ***/ 2104*c2c66affSColin Finck #define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d) 2105*c2c66affSColin Finck #define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d) 2106*c2c66affSColin Finck /*** IDirectInputDevice8 methods ***/ 2107*c2c66affSColin Finck #define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c) 2108*c2c66affSColin Finck #define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c) 2109*c2c66affSColin Finck #define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a) 2110*c2c66affSColin Finck #endif 2111*c2c66affSColin Finck 2112*c2c66affSColin Finck /* "Standard" Mouse report... */ 2113*c2c66affSColin Finck typedef struct DIMOUSESTATE { 2114*c2c66affSColin Finck LONG lX; 2115*c2c66affSColin Finck LONG lY; 2116*c2c66affSColin Finck LONG lZ; 2117*c2c66affSColin Finck BYTE rgbButtons[4]; 2118*c2c66affSColin Finck } DIMOUSESTATE; 2119*c2c66affSColin Finck 2120*c2c66affSColin Finck /* "Standard" Mouse report for DInput 7... */ 2121*c2c66affSColin Finck typedef struct DIMOUSESTATE2 { 2122*c2c66affSColin Finck LONG lX; 2123*c2c66affSColin Finck LONG lY; 2124*c2c66affSColin Finck LONG lZ; 2125*c2c66affSColin Finck BYTE rgbButtons[8]; 2126*c2c66affSColin Finck } DIMOUSESTATE2; 2127*c2c66affSColin Finck 2128*c2c66affSColin Finck #define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX) 2129*c2c66affSColin Finck #define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY) 2130*c2c66affSColin Finck #define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ) 2131*c2c66affSColin Finck #define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0) 2132*c2c66affSColin Finck #define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1) 2133*c2c66affSColin Finck #define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2) 2134*c2c66affSColin Finck #define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3) 2135*c2c66affSColin Finck #define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4) 2136*c2c66affSColin Finck #define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5) 2137*c2c66affSColin Finck #define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6) 2138*c2c66affSColin Finck #define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7) 2139*c2c66affSColin Finck 2140*c2c66affSColin Finck /* New DirectInput8 mouse definitions */ 2141*c2c66affSColin Finck 2142*c2c66affSColin Finck #define DIMOUSE_XAXISAB (0x82000200 | DIMOFS_X) 2143*c2c66affSColin Finck #define DIMOUSE_YAXISAB (0x82000200 | DIMOFS_Y) 2144*c2c66affSColin Finck #define DIMOUSE_XAXIS (0x82000300 | DIMOFS_X) 2145*c2c66affSColin Finck #define DIMOUSE_YAXIS (0x82000300 | DIMOFS_Y) 2146*c2c66affSColin Finck #define DIMOUSE_WHEEL (0x82000300 | DIMOFS_Z) 2147*c2c66affSColin Finck #define DIMOUSE_BUTTON0 (0x82000400 | DIMOFS_BUTTON0) 2148*c2c66affSColin Finck #define DIMOUSE_BUTTON1 (0x82000400 | DIMOFS_BUTTON1) 2149*c2c66affSColin Finck #define DIMOUSE_BUTTON2 (0x82000400 | DIMOFS_BUTTON2) 2150*c2c66affSColin Finck #define DIMOUSE_BUTTON3 (0x82000400 | DIMOFS_BUTTON3) 2151*c2c66affSColin Finck #define DIMOUSE_BUTTON4 (0x82000400 | DIMOFS_BUTTON4) 2152*c2c66affSColin Finck #define DIMOUSE_BUTTON5 (0x82000400 | DIMOFS_BUTTON5) 2153*c2c66affSColin Finck #define DIMOUSE_BUTTON6 (0x82000400 | DIMOFS_BUTTON6) 2154*c2c66affSColin Finck #define DIMOUSE_BUTTON7 (0x82000400 | DIMOFS_BUTTON7) 2155*c2c66affSColin Finck 2156*c2c66affSColin Finck #ifdef __cplusplus 2157*c2c66affSColin Finck extern "C" { 2158*c2c66affSColin Finck #endif 2159*c2c66affSColin Finck extern const DIDATAFORMAT c_dfDIMouse; 2160*c2c66affSColin Finck extern const DIDATAFORMAT c_dfDIMouse2; /* DX 7 */ 2161*c2c66affSColin Finck extern const DIDATAFORMAT c_dfDIKeyboard; 2162*c2c66affSColin Finck extern const DIDATAFORMAT c_dfDIJoystick; 2163*c2c66affSColin Finck extern const DIDATAFORMAT c_dfDIJoystick2; 2164*c2c66affSColin Finck #ifdef __cplusplus 2165*c2c66affSColin Finck }; 2166*c2c66affSColin Finck #endif 2167*c2c66affSColin Finck 2168*c2c66affSColin Finck #define DIAXIS_ANY_X_1 0xFF00C201 2169*c2c66affSColin Finck #define DIAXIS_ANY_X_2 0xFF00C202 2170*c2c66affSColin Finck #define DIAXIS_ANY_Y_1 0xFF014201 2171*c2c66affSColin Finck #define DIAXIS_ANY_Y_2 0xFF014202 2172*c2c66affSColin Finck #define DIAXIS_ANY_Z_1 0xFF01C201 2173*c2c66affSColin Finck #define DIAXIS_ANY_Z_2 0xFF01C202 2174*c2c66affSColin Finck #define DIAXIS_ANY_R_1 0xFF024201 2175*c2c66affSColin Finck #define DIAXIS_ANY_R_2 0xFF024202 2176*c2c66affSColin Finck #define DIAXIS_ANY_U_1 0xFF02C201 2177*c2c66affSColin Finck #define DIAXIS_ANY_U_2 0xFF02C202 2178*c2c66affSColin Finck #define DIAXIS_ANY_V_1 0xFF034201 2179*c2c66affSColin Finck #define DIAXIS_ANY_V_2 0xFF034202 2180*c2c66affSColin Finck #define DIAXIS_ANY_A_1 0xFF03C201 2181*c2c66affSColin Finck #define DIAXIS_ANY_A_2 0xFF03C202 2182*c2c66affSColin Finck #define DIAXIS_ANY_B_1 0xFF044201 2183*c2c66affSColin Finck #define DIAXIS_ANY_B_2 0xFF044202 2184*c2c66affSColin Finck #define DIAXIS_ANY_C_1 0xFF04C201 2185*c2c66affSColin Finck #define DIAXIS_ANY_C_2 0xFF04C202 2186*c2c66affSColin Finck #define DIAXIS_ANY_S_1 0xFF054201 2187*c2c66affSColin Finck #define DIAXIS_ANY_S_2 0xFF054202 2188*c2c66affSColin Finck #define DIAXIS_ANY_1 0xFF004201 2189*c2c66affSColin Finck #define DIAXIS_ANY_2 0xFF004202 2190*c2c66affSColin Finck #define DIAXIS_ANY_3 0xFF004203 2191*c2c66affSColin Finck #define DIAXIS_ANY_4 0xFF004204 2192*c2c66affSColin Finck #define DIPOV_ANY_1 0xFF004601 2193*c2c66affSColin Finck #define DIPOV_ANY_2 0xFF004602 2194*c2c66affSColin Finck #define DIPOV_ANY_3 0xFF004603 2195*c2c66affSColin Finck #define DIPOV_ANY_4 0xFF004604 2196*c2c66affSColin Finck #define DIBUTTON_ANY(instance) (0xFF004400 | (instance)) 2197*c2c66affSColin Finck 2198*c2c66affSColin Finck 2199*c2c66affSColin Finck /***************************************************************************** 2200*c2c66affSColin Finck * IDirectInputA interface 2201*c2c66affSColin Finck */ 2202*c2c66affSColin Finck #define INTERFACE IDirectInputA 2203*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputA,IUnknown) 2204*c2c66affSColin Finck { 2205*c2c66affSColin Finck /*** IUnknown methods ***/ 2206*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2207*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2208*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 2209*c2c66affSColin Finck /*** IDirectInputA methods ***/ 2210*c2c66affSColin Finck STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2211*c2c66affSColin Finck STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2212*c2c66affSColin Finck STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2213*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2214*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2215*c2c66affSColin Finck }; 2216*c2c66affSColin Finck #undef INTERFACE 2217*c2c66affSColin Finck 2218*c2c66affSColin Finck /***************************************************************************** 2219*c2c66affSColin Finck * IDirectInputW interface 2220*c2c66affSColin Finck */ 2221*c2c66affSColin Finck #define INTERFACE IDirectInputW 2222*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInputW,IUnknown) 2223*c2c66affSColin Finck { 2224*c2c66affSColin Finck /*** IUnknown methods ***/ 2225*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2226*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2227*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 2228*c2c66affSColin Finck /*** IDirectInputW methods ***/ 2229*c2c66affSColin Finck STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2230*c2c66affSColin Finck STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2231*c2c66affSColin Finck STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2232*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2233*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2234*c2c66affSColin Finck }; 2235*c2c66affSColin Finck #undef INTERFACE 2236*c2c66affSColin Finck 2237*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 2238*c2c66affSColin Finck /*** IUnknown methods ***/ 2239*c2c66affSColin Finck #define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2240*c2c66affSColin Finck #define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p) 2241*c2c66affSColin Finck #define IDirectInput_Release(p) (p)->lpVtbl->Release(p) 2242*c2c66affSColin Finck /*** IDirectInput methods ***/ 2243*c2c66affSColin Finck #define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) 2244*c2c66affSColin Finck #define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) 2245*c2c66affSColin Finck #define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) 2246*c2c66affSColin Finck #define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2247*c2c66affSColin Finck #define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 2248*c2c66affSColin Finck #else 2249*c2c66affSColin Finck /*** IUnknown methods ***/ 2250*c2c66affSColin Finck #define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2251*c2c66affSColin Finck #define IDirectInput_AddRef(p) (p)->AddRef() 2252*c2c66affSColin Finck #define IDirectInput_Release(p) (p)->Release() 2253*c2c66affSColin Finck /*** IDirectInput methods ***/ 2254*c2c66affSColin Finck #define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) 2255*c2c66affSColin Finck #define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) 2256*c2c66affSColin Finck #define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) 2257*c2c66affSColin Finck #define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2258*c2c66affSColin Finck #define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b) 2259*c2c66affSColin Finck #endif 2260*c2c66affSColin Finck 2261*c2c66affSColin Finck /***************************************************************************** 2262*c2c66affSColin Finck * IDirectInput2A interface 2263*c2c66affSColin Finck */ 2264*c2c66affSColin Finck #define INTERFACE IDirectInput2A 2265*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInput2A,IDirectInputA) 2266*c2c66affSColin Finck { 2267*c2c66affSColin Finck /*** IUnknown methods ***/ 2268*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2269*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2270*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 2271*c2c66affSColin Finck /*** IDirectInputA methods ***/ 2272*c2c66affSColin Finck STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2273*c2c66affSColin Finck STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2274*c2c66affSColin Finck STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2275*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2276*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2277*c2c66affSColin Finck /*** IDirectInput2A methods ***/ 2278*c2c66affSColin Finck STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; 2279*c2c66affSColin Finck }; 2280*c2c66affSColin Finck #undef INTERFACE 2281*c2c66affSColin Finck 2282*c2c66affSColin Finck /***************************************************************************** 2283*c2c66affSColin Finck * IDirectInput2W interface 2284*c2c66affSColin Finck */ 2285*c2c66affSColin Finck #define INTERFACE IDirectInput2W 2286*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInput2W,IDirectInputW) 2287*c2c66affSColin Finck { 2288*c2c66affSColin Finck /*** IUnknown methods ***/ 2289*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2290*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2291*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 2292*c2c66affSColin Finck /*** IDirectInputW methods ***/ 2293*c2c66affSColin Finck STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2294*c2c66affSColin Finck STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2295*c2c66affSColin Finck STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2296*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2297*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2298*c2c66affSColin Finck /*** IDirectInput2W methods ***/ 2299*c2c66affSColin Finck STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; 2300*c2c66affSColin Finck }; 2301*c2c66affSColin Finck #undef INTERFACE 2302*c2c66affSColin Finck 2303*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 2304*c2c66affSColin Finck /*** IUnknown methods ***/ 2305*c2c66affSColin Finck #define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2306*c2c66affSColin Finck #define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p) 2307*c2c66affSColin Finck #define IDirectInput2_Release(p) (p)->lpVtbl->Release(p) 2308*c2c66affSColin Finck /*** IDirectInput methods ***/ 2309*c2c66affSColin Finck #define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) 2310*c2c66affSColin Finck #define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) 2311*c2c66affSColin Finck #define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) 2312*c2c66affSColin Finck #define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2313*c2c66affSColin Finck #define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 2314*c2c66affSColin Finck /*** IDirectInput2 methods ***/ 2315*c2c66affSColin Finck #define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) 2316*c2c66affSColin Finck #else 2317*c2c66affSColin Finck /*** IUnknown methods ***/ 2318*c2c66affSColin Finck #define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2319*c2c66affSColin Finck #define IDirectInput2_AddRef(p) (p)->AddRef() 2320*c2c66affSColin Finck #define IDirectInput2_Release(p) (p)->Release() 2321*c2c66affSColin Finck /*** IDirectInput methods ***/ 2322*c2c66affSColin Finck #define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) 2323*c2c66affSColin Finck #define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) 2324*c2c66affSColin Finck #define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) 2325*c2c66affSColin Finck #define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2326*c2c66affSColin Finck #define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b) 2327*c2c66affSColin Finck /*** IDirectInput2 methods ***/ 2328*c2c66affSColin Finck #define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) 2329*c2c66affSColin Finck #endif 2330*c2c66affSColin Finck 2331*c2c66affSColin Finck /***************************************************************************** 2332*c2c66affSColin Finck * IDirectInput7A interface 2333*c2c66affSColin Finck */ 2334*c2c66affSColin Finck #define INTERFACE IDirectInput7A 2335*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInput7A,IDirectInput2A) 2336*c2c66affSColin Finck { 2337*c2c66affSColin Finck /*** IUnknown methods ***/ 2338*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2339*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2340*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 2341*c2c66affSColin Finck /*** IDirectInputA methods ***/ 2342*c2c66affSColin Finck STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEA *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2343*c2c66affSColin Finck STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2344*c2c66affSColin Finck STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2345*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2346*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2347*c2c66affSColin Finck /*** IDirectInput2A methods ***/ 2348*c2c66affSColin Finck STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; 2349*c2c66affSColin Finck /*** IDirectInput7A methods ***/ 2350*c2c66affSColin Finck STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE; 2351*c2c66affSColin Finck }; 2352*c2c66affSColin Finck #undef INTERFACE 2353*c2c66affSColin Finck 2354*c2c66affSColin Finck /***************************************************************************** 2355*c2c66affSColin Finck * IDirectInput7W interface 2356*c2c66affSColin Finck */ 2357*c2c66affSColin Finck #define INTERFACE IDirectInput7W 2358*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInput7W,IDirectInput2W) 2359*c2c66affSColin Finck { 2360*c2c66affSColin Finck /*** IUnknown methods ***/ 2361*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2362*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2363*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 2364*c2c66affSColin Finck /*** IDirectInputW methods ***/ 2365*c2c66affSColin Finck STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICEW *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2366*c2c66affSColin Finck STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2367*c2c66affSColin Finck STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2368*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2369*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2370*c2c66affSColin Finck /*** IDirectInput2W methods ***/ 2371*c2c66affSColin Finck STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; 2372*c2c66affSColin Finck /*** IDirectInput7W methods ***/ 2373*c2c66affSColin Finck STDMETHOD(CreateDeviceEx)(THIS_ REFGUID rguid, REFIID riid, LPVOID *pvOut, LPUNKNOWN lpUnknownOuter) PURE; 2374*c2c66affSColin Finck }; 2375*c2c66affSColin Finck #undef INTERFACE 2376*c2c66affSColin Finck 2377*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 2378*c2c66affSColin Finck /*** IUnknown methods ***/ 2379*c2c66affSColin Finck #define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2380*c2c66affSColin Finck #define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p) 2381*c2c66affSColin Finck #define IDirectInput7_Release(p) (p)->lpVtbl->Release(p) 2382*c2c66affSColin Finck /*** IDirectInput methods ***/ 2383*c2c66affSColin Finck #define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) 2384*c2c66affSColin Finck #define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) 2385*c2c66affSColin Finck #define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) 2386*c2c66affSColin Finck #define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2387*c2c66affSColin Finck #define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 2388*c2c66affSColin Finck /*** IDirectInput2 methods ***/ 2389*c2c66affSColin Finck #define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) 2390*c2c66affSColin Finck /*** IDirectInput7 methods ***/ 2391*c2c66affSColin Finck #define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d) 2392*c2c66affSColin Finck #else 2393*c2c66affSColin Finck /*** IUnknown methods ***/ 2394*c2c66affSColin Finck #define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2395*c2c66affSColin Finck #define IDirectInput7_AddRef(p) (p)->AddRef() 2396*c2c66affSColin Finck #define IDirectInput7_Release(p) (p)->Release() 2397*c2c66affSColin Finck /*** IDirectInput methods ***/ 2398*c2c66affSColin Finck #define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) 2399*c2c66affSColin Finck #define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) 2400*c2c66affSColin Finck #define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) 2401*c2c66affSColin Finck #define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2402*c2c66affSColin Finck #define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b) 2403*c2c66affSColin Finck /*** IDirectInput2 methods ***/ 2404*c2c66affSColin Finck #define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) 2405*c2c66affSColin Finck /*** IDirectInput7 methods ***/ 2406*c2c66affSColin Finck #define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d) 2407*c2c66affSColin Finck #endif 2408*c2c66affSColin Finck 2409*c2c66affSColin Finck 2410*c2c66affSColin Finck /***************************************************************************** 2411*c2c66affSColin Finck * IDirectInput8A interface 2412*c2c66affSColin Finck */ 2413*c2c66affSColin Finck #define INTERFACE IDirectInput8A 2414*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInput8A,IUnknown) 2415*c2c66affSColin Finck { 2416*c2c66affSColin Finck /*** IUnknown methods ***/ 2417*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2418*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2419*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 2420*c2c66affSColin Finck /*** IDirectInput8A methods ***/ 2421*c2c66affSColin Finck STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8A *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2422*c2c66affSColin Finck STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2423*c2c66affSColin Finck STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2424*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2425*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2426*c2c66affSColin Finck STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) PURE; 2427*c2c66affSColin Finck STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR ptszUserName, LPDIACTIONFORMATA lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBA lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2428*c2c66affSColin Finck STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSA lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE; 2429*c2c66affSColin Finck }; 2430*c2c66affSColin Finck #undef INTERFACE 2431*c2c66affSColin Finck 2432*c2c66affSColin Finck /***************************************************************************** 2433*c2c66affSColin Finck * IDirectInput8W interface 2434*c2c66affSColin Finck */ 2435*c2c66affSColin Finck #define INTERFACE IDirectInput8W 2436*c2c66affSColin Finck DECLARE_INTERFACE_(IDirectInput8W,IUnknown) 2437*c2c66affSColin Finck { 2438*c2c66affSColin Finck /*** IUnknown methods ***/ 2439*c2c66affSColin Finck STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; 2440*c2c66affSColin Finck STDMETHOD_(ULONG,AddRef)(THIS) PURE; 2441*c2c66affSColin Finck STDMETHOD_(ULONG,Release)(THIS) PURE; 2442*c2c66affSColin Finck /*** IDirectInput8W methods ***/ 2443*c2c66affSColin Finck STDMETHOD(CreateDevice)(THIS_ REFGUID rguid, LPDIRECTINPUTDEVICE8W *lplpDirectInputDevice, LPUNKNOWN pUnkOuter) PURE; 2444*c2c66affSColin Finck STDMETHOD(EnumDevices)(THIS_ DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2445*c2c66affSColin Finck STDMETHOD(GetDeviceStatus)(THIS_ REFGUID rguidInstance) PURE; 2446*c2c66affSColin Finck STDMETHOD(RunControlPanel)(THIS_ HWND hwndOwner, DWORD dwFlags) PURE; 2447*c2c66affSColin Finck STDMETHOD(Initialize)(THIS_ HINSTANCE hinst, DWORD dwVersion) PURE; 2448*c2c66affSColin Finck STDMETHOD(FindDevice)(THIS_ REFGUID rguid, LPCWSTR pszName, LPGUID pguidInstance) PURE; 2449*c2c66affSColin Finck STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR ptszUserName, LPDIACTIONFORMATW lpdiActionFormat, LPDIENUMDEVICESBYSEMANTICSCBW lpCallback, LPVOID pvRef, DWORD dwFlags) PURE; 2450*c2c66affSColin Finck STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK lpdiCallback, LPDICONFIGUREDEVICESPARAMSW lpdiCDParams, DWORD dwFlags, LPVOID pvRefData) PURE; 2451*c2c66affSColin Finck }; 2452*c2c66affSColin Finck #undef INTERFACE 2453*c2c66affSColin Finck 2454*c2c66affSColin Finck #if !defined(__cplusplus) || defined(CINTERFACE) 2455*c2c66affSColin Finck /*** IUnknown methods ***/ 2456*c2c66affSColin Finck #define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) 2457*c2c66affSColin Finck #define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p) 2458*c2c66affSColin Finck #define IDirectInput8_Release(p) (p)->lpVtbl->Release(p) 2459*c2c66affSColin Finck /*** IDirectInput8 methods ***/ 2460*c2c66affSColin Finck #define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c) 2461*c2c66affSColin Finck #define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d) 2462*c2c66affSColin Finck #define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a) 2463*c2c66affSColin Finck #define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b) 2464*c2c66affSColin Finck #define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b) 2465*c2c66affSColin Finck #define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c) 2466*c2c66affSColin Finck #define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e) 2467*c2c66affSColin Finck #define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d) 2468*c2c66affSColin Finck #else 2469*c2c66affSColin Finck /*** IUnknown methods ***/ 2470*c2c66affSColin Finck #define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b) 2471*c2c66affSColin Finck #define IDirectInput8_AddRef(p) (p)->AddRef() 2472*c2c66affSColin Finck #define IDirectInput8_Release(p) (p)->Release() 2473*c2c66affSColin Finck /*** IDirectInput8 methods ***/ 2474*c2c66affSColin Finck #define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c) 2475*c2c66affSColin Finck #define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d) 2476*c2c66affSColin Finck #define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a) 2477*c2c66affSColin Finck #define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b) 2478*c2c66affSColin Finck #define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b) 2479*c2c66affSColin Finck #define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c) 2480*c2c66affSColin Finck #define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e) 2481*c2c66affSColin Finck #define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d) 2482*c2c66affSColin Finck #endif 2483*c2c66affSColin Finck 2484*c2c66affSColin Finck 2485*c2c66affSColin Finck /* Export functions */ 2486*c2c66affSColin Finck 2487*c2c66affSColin Finck #ifdef __cplusplus 2488*c2c66affSColin Finck extern "C" { 2489*c2c66affSColin Finck #endif 2490*c2c66affSColin Finck 2491*c2c66affSColin Finck HRESULT WINAPI DirectInput8Create(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); 2492*c2c66affSColin Finck 2493*c2c66affSColin Finck HRESULT WINAPI DirectInputCreateA(HINSTANCE,DWORD,LPDIRECTINPUTA *,LPUNKNOWN); 2494*c2c66affSColin Finck HRESULT WINAPI DirectInputCreateW(HINSTANCE,DWORD,LPDIRECTINPUTW *,LPUNKNOWN); 2495*c2c66affSColin Finck #define DirectInputCreate WINELIB_NAME_AW(DirectInputCreate) 2496*c2c66affSColin Finck 2497*c2c66affSColin Finck HRESULT WINAPI DirectInputCreateEx(HINSTANCE,DWORD,REFIID,LPVOID *,LPUNKNOWN); 2498*c2c66affSColin Finck 2499*c2c66affSColin Finck #ifdef __cplusplus 2500*c2c66affSColin Finck }; 2501*c2c66affSColin Finck #endif 2502*c2c66affSColin Finck 2503*c2c66affSColin Finck #endif /* __DINPUT_INCLUDED__ */ 2504