2 * Copyright (C) the Wine project
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef __DINPUTD_INCLUDED__
20 #define __DINPUTD_INCLUDED__
22 #define COM_NO_WINDOWS_H
25 #ifndef DIRECTINPUT_VERSION
26 #define DIRECTINPUT_VERSION 0x0800
29 DEFINE_GUID(IID_IDirectInputJoyConfig8
, 0xEB0D7DFA,0x1990,0x4F27,0xB4,0xD6,0xED,0xF2,0xEE,0xC4,0xA4,0x4C);
31 typedef struct IDirectInputJoyConfig8
*LPDIRECTINPUTJOYCONFIG8
;
34 typedef BOOL (CALLBACK
*LPDIJOYTYPECALLBACK
)(LPCWSTR
, LPVOID
);
36 #define MAX_JOYSTRING 256
37 #ifndef MAX_JOYSTICKOEMVXDNAME
38 #define MAX_JOYSTICKOEMVXDNAME 260
41 #define JOY_POV_NUMDIRS 4
42 #define JOY_POVVAL_FORWARD 0
43 #define JOY_POVVAL_BACKWARD 1
44 #define JOY_POVVAL_LEFT 2
45 #define JOY_POVVAL_RIGHT 3
47 #define DIERR_NOMOREITEMS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NO_MORE_ITEMS)
49 typedef struct joypos_tag
59 typedef struct joyrange_tag
64 } JOYRANGE
, *LPJOYRANGE
;
66 typedef struct joyreguservalues_tag
71 } JOYREGUSERVALUES
, *LPJOYREGUSERVALUES
;
73 typedef struct joyreghwsettings_tag
77 } JOYREGHWSETTINGS
, *LPJOYHWSETTINGS
;
79 typedef struct joyreghwvalues_tag
82 DWORD dwPOVValues
[JOY_POV_NUMDIRS
];
84 } JOYREGHWVALUES
, *LPJOYREGHWVALUES
;
86 typedef struct joyreghwconfig_tag
89 DWORD dwUsageSettings
;
93 } JOYREGHWCONFIG
, *LPJOYREGHWCONFIG
;
95 typedef struct DIJOYTYPEINFO_DX5
100 WCHAR wszDisplayName
[MAX_JOYSTRING
];
101 WCHAR wszCallout
[MAX_JOYSTICKOEMVXDNAME
];
102 } DIJOYTYPEINFO_DX5
, *LPDIJOYTYPEINFO_DX5
;
103 typedef const DIJOYTYPEINFO_DX5
*LPCDIJOYTYPEINFO_DX5
;
105 typedef struct DIJOYTYPEINFO_DX6
108 JOYREGHWSETTINGS hws
;
110 WCHAR wszDisplayName
[MAX_JOYSTRING
];
111 WCHAR wszCallout
[MAX_JOYSTICKOEMVXDNAME
];
112 WCHAR wszHardwareId
[MAX_JOYSTRING
];
114 } DIJOYTYPEINFO_DX6
, *LPDIJOYTYPEINFO_DX6
;
115 typedef const DIJOYTYPEINFO_DX6
*LPCDIJOYTYPEINFO_DX6
;
117 typedef struct DIJOYTYPEINFO
120 JOYREGHWSETTINGS hws
;
122 WCHAR wszDisplayName
[MAX_JOYSTRING
];
123 WCHAR wszCallout
[MAX_JOYSTICKOEMVXDNAME
];
124 WCHAR wszHardwareId
[MAX_JOYSTRING
];
127 WCHAR wszMapFile
[MAX_JOYSTRING
];
128 } DIJOYTYPEINFO
, *LPDIJOYTYPEINFO
;
129 typedef const DIJOYTYPEINFO
*LPCDIJOYTYPEINFO
;
130 #define DIJC_GUIDINSTANCE 0x00000001
131 #define DIJC_REGHWCONFIGTYPE 0x00000002
132 #define DIJC_GAIN 0x00000004
133 #define DIJC_CALLOUT 0x00000008
134 #define DIJC_WDMGAMEPORT 0x00000010
136 typedef struct DIJOYCONFIG_DX5
142 WCHAR wszType
[MAX_JOYSTRING
];
143 WCHAR wszCallout
[MAX_JOYSTRING
];
144 } DIJOYCONFIG_DX5
, *LPDIJOYCONFIG_DX5
;
145 typedef const DIJOYCONFIG_DX5
*LPCDIJOYCONFIG_DX5
;
147 typedef struct DIJOYCONFIG
153 WCHAR wszType
[MAX_JOYSTRING
];
154 WCHAR wszCallout
[MAX_JOYSTRING
];
156 } DIJOYCONFIG
, *LPDIJOYCONFIG
;
157 typedef const DIJOYCONFIG
*LPCDIJOYCONFIG
;
159 typedef struct DIJOYUSERVALUES
162 JOYREGUSERVALUES ruv
;
163 WCHAR wszGlobalDriver
[MAX_JOYSTRING
];
164 WCHAR wszGameportEmulator
[MAX_JOYSTRING
];
165 } DIJOYUSERVALUES
, *LPDIJOYUSERVALUES
;
166 typedef const DIJOYUSERVALUES
*LPCDIJOYUSERVALUES
;
169 /*****************************************************************************
170 * IDirectInputJoyConfig8 interface
172 #define INTERFACE IDirectInputJoyConfig8
173 DECLARE_INTERFACE_(IDirectInputJoyConfig8
, IUnknown
)
175 /*** IUnknown methods ***/
176 STDMETHOD_(HRESULT
,QueryInterface
)(THIS_ REFIID riid
, void** ppvObject
) PURE
;
177 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
178 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
179 /*** IDirectInputJoyConfig8 methods ***/
180 STDMETHOD(Acquire
)(THIS
) PURE
;
181 STDMETHOD(Unacquire
)(THIS
) PURE
;
182 STDMETHOD(SetCooperativeLevel
)(THIS_ HWND
, DWORD
) PURE
;
183 STDMETHOD(SendNotify
)(THIS
) PURE
;
184 STDMETHOD(EnumTypes
)(THIS_ LPDIJOYTYPECALLBACK
, LPVOID
) PURE
;
185 STDMETHOD(GetTypeInfo
)(THIS_ LPCWSTR
, LPDIJOYTYPEINFO
, DWORD
) PURE
;
186 STDMETHOD(SetTypeInfo
)(THIS_ LPCWSTR
, LPCDIJOYTYPEINFO
, DWORD
, LPWSTR
) PURE
;
187 STDMETHOD(DeleteType
)(THIS_ LPCWSTR
) PURE
;
188 STDMETHOD(GetConfig
)(THIS_ UINT
, LPDIJOYCONFIG
, DWORD
) PURE
;
189 STDMETHOD(SetConfig
)(THIS_ UINT
, LPCDIJOYCONFIG
, DWORD
) PURE
;
190 STDMETHOD(DeleteConfig
)(THIS_ UINT
) PURE
;
191 STDMETHOD(GetUserValues
)(THIS_ LPDIJOYUSERVALUES
, DWORD
) PURE
;
192 STDMETHOD(SetUserValues
)(THIS_ LPCDIJOYUSERVALUES
, DWORD
) PURE
;
193 STDMETHOD(AddNewHardware
)(THIS_ HWND
, REFGUID
) PURE
;
194 STDMETHOD(OpenTypeKey
)(THIS_ LPCWSTR
, DWORD
, PHKEY
) PURE
;
195 STDMETHOD(OpenAppStatusKey
)(THIS_ PHKEY
) PURE
;
199 #if !defined(__cplusplus) || defined(CINTERFACE)
200 /*** IUnknown methods ***/
201 #define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
202 #define IDirectInputJoyConfig8_AddRef(p) (p)->lpVtbl->AddRef(p)
203 #define IDirectInputJoyConfig8_Release(p) (p)->lpVtbl->Release(p)
204 /*** IDirectInputJoyConfig8 methods ***/
205 #define IDirectInputJoyConfig8_Acquire(p) (p)->lpVtbl->Acquire(p)
206 #define IDirectInputJoyConfig8_Unacquire(p) (p)->lpVtbl->Unacquire(p)
207 #define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
208 #define IDirectInputJoyConfig8_SendNotify(p) (p)->lpVtbl->SendNotify(p)
209 #define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->lpVtbl->EnumTypes(p,a,b)
210 #define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c)
211 #define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->lpVtbl->SetTypeInfo(p,a,b,c,d)
212 #define IDirectInputJoyConfig8_DeleteType(p,a) (p)->lpVtbl->DeleteType(p,a)
213 #define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->lpVtbl->GetConfig(p,a,b,c)
214 #define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->lpVtbl->SetConfig(p,a,b,c)
215 #define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->lpVtbl->DeleteConfig(p,a)
216 #define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->lpVtbl->GetUserValues(p,a,b)
217 #define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->lpVtbl->SetUserValues(p,a,b)
218 #define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->lpVtbl->AddNewHardware(p,a,b)
219 #define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->lpVtbl->OpenTypeKey(p,a,b,c)
220 #define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->lpVtbl->OpenAppStatusKey(p,a)
222 /*** IUnknown methods ***/
223 #define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
224 #define IDirectInputJoyConfig8_AddRef(p) (p)->AddRef()
225 #define IDirectInputJoyConfig8_Release(p) (p)->Release()
226 /*** IDirectInputJoyConfig8 methods ***/
227 #define IDirectInputJoyConfig8_Acquire(p) (p)->Acquire()
228 #define IDirectInputJoyConfig8_Unacquire(p) (p)->Unacquire()
229 #define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
230 #define IDirectInputJoyConfig8_SendNotify(p) (p)->SendNotify()
231 #define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->EnumTypes(a,b)
232 #define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->GetTypeInfo(a,b,c)
233 #define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->SetTypeInfo(a,b,c,d)
234 #define IDirectInputJoyConfig8_DeleteType(p,a) (p)->DeleteType(a)
235 #define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->GetConfig(a,b,c)
236 #define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->SetConfig(a,b,c)
237 #define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->DeleteConfig(a)
238 #define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->GetUserValues(a,b)
239 #define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->SetUserValues(a,b)
240 #define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->AddNewHardware(a,b)
241 #define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->OpenTypeKey(a,b,c)
242 #define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->OpenAppStatusKey(a)
245 #endif /* __DINPUTD_INCLUDED__ */