dinputd.h revision 930b5f872e89407f445d4000d4e4aaecaa6a0998
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste/*
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste * Copyright (C) the Wine project
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major *
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * This library is free software; you can redistribute it and/or
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * modify it under the terms of the GNU Lesser General Public
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * License as published by the Free Software Foundation; either
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * version 2.1 of the License, or (at your option) any later version.
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major *
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * This library is distributed in the hope that it will be useful,
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * but WITHOUT ANY WARRANTY; without even the implied warranty of
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * Lesser General Public License for more details.
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major *
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * You should have received a copy of the GNU Lesser General Public
f0b8f6dd844f8752946b865bdd44175863b15812Peter Major * License along with this library; if not, write to the Free Software
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
7bf512aea50c834dc9c3ef5a0a228059fcc753a5jenkins */
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste/*
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
7c0e808d02c2c2e2008cf8ccdaee6400f5834387Joe Bandenburg * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste * a choice of LGPL license versions is made available with the language indicating
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste * that LGPLv2 or any later version may be used, or where a choice of which version
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste * of the LGPL is applied is otherwise unspecified.
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste */
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#ifndef __DINPUTD_INCLUDED__
15f60c5ba586de69e94c6045e9bf91103e924020James Phillpotts#define __DINPUTD_INCLUDED__
15f60c5ba586de69e94c6045e9bf91103e924020James Phillpotts
15f60c5ba586de69e94c6045e9bf91103e924020James Phillpotts#define COM_NO_WINDOWS_H
15f60c5ba586de69e94c6045e9bf91103e924020James Phillpotts#include <objbase.h>
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#ifndef DIRECTINPUT_VERSION
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#define DIRECTINPUT_VERSION 0x0800
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#endif
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
7cbae22b7560eefcf086863923459880aa87f014Jaco JoosteDEFINE_GUID(IID_IDirectInputJoyConfig8, 0xEB0D7DFA,0x1990,0x4F27,0xB4,0xD6,0xED,0xF2,0xEE,0xC4,0xA4,0x4C);
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
7cbae22b7560eefcf086863923459880aa87f014Jaco Joostetypedef struct IDirectInputJoyConfig8 *LPDIRECTINPUTJOYCONFIG8;
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Joostetypedef BOOL (CALLBACK *LPDIJOYTYPECALLBACK)(LPCWSTR, LPVOID);
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste#define MAX_JOYSTRING 256
95ac3084c619fd042f83410e5436ec3f1c3da190Brian Bailey#ifndef MAX_JOYSTICKOEMVXDNAME
95ac3084c619fd042f83410e5436ec3f1c3da190Brian Bailey#define MAX_JOYSTICKOEMVXDNAME 260
95ac3084c619fd042f83410e5436ec3f1c3da190Brian Bailey#endif
95ac3084c619fd042f83410e5436ec3f1c3da190Brian Bailey
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste#define JOY_POV_NUMDIRS 4
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste#define JOY_POVVAL_FORWARD 0
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste#define JOY_POVVAL_BACKWARD 1
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste#define JOY_POVVAL_LEFT 2
155c05bbac47cd2c35bc51c930935fddcbcfd604James Darley#define JOY_POVVAL_RIGHT 3
155c05bbac47cd2c35bc51c930935fddcbcfd604James Darley
155c05bbac47cd2c35bc51c930935fddcbcfd604James Darley#define DIERR_NOMOREITEMS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NO_MORE_ITEMS)
155c05bbac47cd2c35bc51c930935fddcbcfd604James Darley
c1294b91b94412bc057d660950ed0d3b3091bd38Jaco Joostetypedef struct joypos_tag
c1294b91b94412bc057d660950ed0d3b3091bd38Jaco Jooste{
c1294b91b94412bc057d660950ed0d3b3091bd38Jaco Jooste DWORD dwX;
c1294b91b94412bc057d660950ed0d3b3091bd38Jaco Jooste DWORD dwY;
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste DWORD dwZ;
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste DWORD dwR;
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste DWORD dwU;
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste DWORD dwV;
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste} JOYPOS, *LPJOYPOS;
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Joostetypedef struct joyrange_tag
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste{
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste JOYPOS jpMin;
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste JOYPOS jpMax;
c423fd5d4f121413c5e72c134412b6ce5daa0dd9Jaco Jooste JOYPOS jpCenter;
c1294b91b94412bc057d660950ed0d3b3091bd38Jaco Jooste} JOYRANGE, *LPJOYRANGE;
c1294b91b94412bc057d660950ed0d3b3091bd38Jaco Jooste
c1294b91b94412bc057d660950ed0d3b3091bd38Jaco Joostetypedef struct joyreguservalues_tag
c1294b91b94412bc057d660950ed0d3b3091bd38Jaco Jooste{
c1294b91b94412bc057d660950ed0d3b3091bd38Jaco Jooste DWORD dwTimeOut;
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste JOYRANGE jrvRanges;
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste JOYPOS jpDeadZone;
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste} JOYREGUSERVALUES, *LPJOYREGUSERVALUES;
typedef struct joyreghwsettings_tag
{
DWORD dwFlags;
DWORD dwNumButtons;
} JOYREGHWSETTINGS, *LPJOYHWSETTINGS;
typedef struct joyreghwvalues_tag
{
JOYRANGE jrvHardware;
DWORD dwPOVValues[JOY_POV_NUMDIRS];
DWORD dwCalFlags;
} JOYREGHWVALUES, *LPJOYREGHWVALUES;
typedef struct joyreghwconfig_tag
{
JOYREGHWSETTINGS hws;
DWORD dwUsageSettings;
JOYREGHWVALUES hwv;
DWORD dwType;
DWORD dwReserved;
} JOYREGHWCONFIG, *LPJOYREGHWCONFIG;
typedef struct DIJOYTYPEINFO_DX5
{
DWORD dwSize;
JOYREGHWSETTINGS hws;
CLSID clsidConfig;
WCHAR wszDisplayName[MAX_JOYSTRING];
WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME];
} DIJOYTYPEINFO_DX5, *LPDIJOYTYPEINFO_DX5;
typedef const DIJOYTYPEINFO_DX5 *LPCDIJOYTYPEINFO_DX5;
typedef struct DIJOYTYPEINFO_DX6
{
DWORD dwSize;
JOYREGHWSETTINGS hws;
CLSID clsidConfig;
WCHAR wszDisplayName[MAX_JOYSTRING];
WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME];
WCHAR wszHardwareId[MAX_JOYSTRING];
DWORD dwFlags1;
} DIJOYTYPEINFO_DX6, *LPDIJOYTYPEINFO_DX6;
typedef const DIJOYTYPEINFO_DX6 *LPCDIJOYTYPEINFO_DX6;
typedef struct DIJOYTYPEINFO
{
DWORD dwSize;
JOYREGHWSETTINGS hws;
CLSID clsidConfig;
WCHAR wszDisplayName[MAX_JOYSTRING];
WCHAR wszCallout[MAX_JOYSTICKOEMVXDNAME];
WCHAR wszHardwareId[MAX_JOYSTRING];
DWORD dwFlags1;
DWORD dwFlags2;
WCHAR wszMapFile[MAX_JOYSTRING];
} DIJOYTYPEINFO, *LPDIJOYTYPEINFO;
typedef const DIJOYTYPEINFO *LPCDIJOYTYPEINFO;
#define DIJC_GUIDINSTANCE 0x00000001
#define DIJC_REGHWCONFIGTYPE 0x00000002
#define DIJC_GAIN 0x00000004
#define DIJC_CALLOUT 0x00000008
#define DIJC_WDMGAMEPORT 0x00000010
typedef struct DIJOYCONFIG_DX5
{
DWORD dwSize;
GUID guidInstance;
JOYREGHWCONFIG hwc;
DWORD dwGain;
WCHAR wszType[MAX_JOYSTRING];
WCHAR wszCallout[MAX_JOYSTRING];
} DIJOYCONFIG_DX5, *LPDIJOYCONFIG_DX5;
typedef const DIJOYCONFIG_DX5 *LPCDIJOYCONFIG_DX5;
typedef struct DIJOYCONFIG
{
DWORD dwSize;
GUID guidInstance;
JOYREGHWCONFIG hwc;
DWORD dwGain;
WCHAR wszType[MAX_JOYSTRING];
WCHAR wszCallout[MAX_JOYSTRING];
GUID guidGameport;
} DIJOYCONFIG, *LPDIJOYCONFIG;
typedef const DIJOYCONFIG *LPCDIJOYCONFIG;
typedef struct DIJOYUSERVALUES
{
DWORD dwSize;
JOYREGUSERVALUES ruv;
WCHAR wszGlobalDriver[MAX_JOYSTRING];
WCHAR wszGameportEmulator[MAX_JOYSTRING];
} DIJOYUSERVALUES, *LPDIJOYUSERVALUES;
typedef const DIJOYUSERVALUES *LPCDIJOYUSERVALUES;
/*****************************************************************************
* IDirectInputJoyConfig8 interface
*/
#define INTERFACE IDirectInputJoyConfig8
DECLARE_INTERFACE_(IDirectInputJoyConfig8, IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectInputJoyConfig8 methods ***/
STDMETHOD(Acquire)(THIS) PURE;
STDMETHOD(Unacquire)(THIS) PURE;
STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
STDMETHOD(SendNotify)(THIS) PURE;
STDMETHOD(EnumTypes)(THIS_ LPDIJOYTYPECALLBACK, LPVOID) PURE;
STDMETHOD(GetTypeInfo)(THIS_ LPCWSTR, LPDIJOYTYPEINFO, DWORD) PURE;
STDMETHOD(SetTypeInfo)(THIS_ LPCWSTR, LPCDIJOYTYPEINFO, DWORD, LPWSTR) PURE;
STDMETHOD(DeleteType)(THIS_ LPCWSTR) PURE;
STDMETHOD(GetConfig)(THIS_ UINT, LPDIJOYCONFIG, DWORD) PURE;
STDMETHOD(SetConfig)(THIS_ UINT, LPCDIJOYCONFIG, DWORD) PURE;
STDMETHOD(DeleteConfig)(THIS_ UINT) PURE;
STDMETHOD(GetUserValues)(THIS_ LPDIJOYUSERVALUES, DWORD) PURE;
STDMETHOD(SetUserValues)(THIS_ LPCDIJOYUSERVALUES, DWORD) PURE;
STDMETHOD(AddNewHardware)(THIS_ HWND, REFGUID) PURE;
STDMETHOD(OpenTypeKey)(THIS_ LPCWSTR, DWORD, PHKEY) PURE;
STDMETHOD(OpenAppStatusKey)(THIS_ PHKEY) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectInputJoyConfig8_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectInputJoyConfig8_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectInputJoyConfig8 methods ***/
#define IDirectInputJoyConfig8_Acquire(p) (p)->lpVtbl->Acquire(p)
#define IDirectInputJoyConfig8_Unacquire(p) (p)->lpVtbl->Unacquire(p)
#define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
#define IDirectInputJoyConfig8_SendNotify(p) (p)->lpVtbl->SendNotify(p)
#define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->lpVtbl->EnumTypes(p,a,b)
#define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c)
#define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->lpVtbl->SetTypeInfo(p,a,b,c,d)
#define IDirectInputJoyConfig8_DeleteType(p,a) (p)->lpVtbl->DeleteType(p,a)
#define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->lpVtbl->GetConfig(p,a,b,c)
#define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->lpVtbl->SetConfig(p,a,b,c)
#define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->lpVtbl->DeleteConfig(p,a)
#define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->lpVtbl->GetUserValues(p,a,b)
#define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->lpVtbl->SetUserValues(p,a,b)
#define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->lpVtbl->AddNewHardware(p,a,b)
#define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->lpVtbl->OpenTypeKey(p,a,b,c)
#define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->lpVtbl->OpenAppStatusKey(p,a)
#else
/*** IUnknown methods ***/
#define IDirectInputJoyConfig8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirectInputJoyConfig8_AddRef(p) (p)->AddRef()
#define IDirectInputJoyConfig8_Release(p) (p)->Release()
/*** IDirectInputJoyConfig8 methods ***/
#define IDirectInputJoyConfig8_Acquire(p) (p)->Acquire()
#define IDirectInputJoyConfig8_Unacquire(p) (p)->Unacquire()
#define IDirectInputJoyConfig8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
#define IDirectInputJoyConfig8_SendNotify(p) (p)->SendNotify()
#define IDirectInputJoyConfig8_EnumTypes(p,a,b) (p)->EnumTypes(a,b)
#define IDirectInputJoyConfig8_GetTypeInfo(p,a,b,c) (p)->GetTypeInfo(a,b,c)
#define IDirectInputJoyConfig8_SetTypeInfo(p,a,b,c,d) (p)->SetTypeInfo(a,b,c,d)
#define IDirectInputJoyConfig8_DeleteType(p,a) (p)->DeleteType(a)
#define IDirectInputJoyConfig8_GetConfig(p,a,b,c) (p)->GetConfig(a,b,c)
#define IDirectInputJoyConfig8_SetConfig(p,a,b,c) (p)->SetConfig(a,b,c)
#define IDirectInputJoyConfig8_DeleteConfig(p,a) (p)->DeleteConfig(a)
#define IDirectInputJoyConfig8_GetUserValues(p,a,b) (p)->GetUserValues(a,b)
#define IDirectInputJoyConfig8_SetUserValues(p,a,b) (p)->SetUserValues(a,b)
#define IDirectInputJoyConfig8_AddNewHardware(p,a,b) (p)->AddNewHardware(a,b)
#define IDirectInputJoyConfig8_OpenTypeKey(p,a,b,c) (p)->OpenTypeKey(a,b,c)
#define IDirectInputJoyConfig8_OpenAppStatusKey(p,a) (p)->OpenAppStatusKey(a)
#endif
#endif /* __DINPUTD_INCLUDED__ */