This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/directx/dinput.h

4062 lines
177 KiB
C

/*
* dinput.h DirectInput interfaces
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#ifndef __DINPUT_INCLUDED__
#define __DINPUT_INCLUDED__
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#define COM_NO_WINDOWS_H
#include <objbase.h>
#ifdef __cplusplus
extern "C" {
#endif
/* DirectInput version number */
#define DIRECTINPUT_HEADER_VERSION 0x0800
#ifndef DIRECTINPUT_VERSION
#define DIRECTINPUT_VERSION DIRECTINPUT_HEADER_VERSION
#endif
/* Forward declarations */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef interface IDirectInputEffect IDirectInputEffect;
#endif
#if (DIRECTINPUT_VERSION >= 0x0800)
typedef interface IDirectInputDevice8A IDirectInputDevice8A;
typedef interface IDirectInputDevice8W IDirectInputDevice8W;
#endif
/* Direct3D color data type */
#if (DIRECTINPUT_VERSION >= 0x0700)
#ifndef D3DCOLOR_DEFINED
#define D3DCOLOR_DEFINED
typedef DWORD D3DCOLOR;
#endif
#endif
/* DirectInput effect types */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIEFT_ALL 0x00000000L
#define DIEFT_CONSTANTFORCE 0x00000001L
#define DIEFT_RAMPFORCE 0x00000002L
#define DIEFT_PERIODIC 0x00000003L
#define DIEFT_CONDITION 0x00000004L
#define DIEFT_CUSTOMFORCE 0x00000005L
#define DIEFT_HARDWARE 0x000000FFL
#define DIEFT_FFATTACK 0x00000200L
#define DIEFT_FFFADE 0x00000400L
#define DIEFT_SATURATION 0x00000800L
#define DIEFT_POSNEGCOEFFICIENTS 0x00001000L
#define DIEFT_POSNEGSATURATION 0x00002000L
#define DIEFT_DEADBAND 0x00004000L
#define DIEFT_STARTDELAY 0x00008000L
#define DIEFT_GETTYPE( x ) LOBYTE( x )
#endif
/* DirectInput units */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DI_DEGREES 100
#define DI_FFNOMINALMAX 10000
#define DI_SECONDS 1000000
#endif
/* DirectInput effect flags */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIEFF_OBJECTIDS 0x00000001L
#define DIEFF_OBJECTOFFSETS 0x00000002L
#define DIEFF_CARTESIAN 0x00000010L
#define DIEFF_POLAR 0x00000020L
#define DIEFF_SPHERICAL 0x00000040L
#endif
/* DirectInput effect parameters */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIEP_DURATION 0x00000001L
#define DIEP_SAMPLEPERIOD 0x00000002L
#define DIEP_GAIN 0x00000004L
#define DIEP_TRIGGERBUTTON 0x00000008L
#define DIEP_TRIGGERREPEATINTERVAL 0x00000010L
#define DIEP_AXES 0x00000020L
#define DIEP_DIRECTION 0x00000040L
#define DIEP_ENVELOPE 0x00000080L
#define DIEP_TYPESPECIFICPARAMS 0x00000100L
#if (DIRECTINPUT_VERSION >= 0x0600)
#define DIEP_STARTDELAY 0x00000200L
#define DIEP_ALLPARAMS_DX5 0x000001FFL
#define DIEP_ALLPARAMS 0x000003FFL
#else
#define DIEP_ALLPARAMS 0x000001FFL
#endif
#define DIEP_START 0x20000000L
#define DIEP_NORESTART 0x40000000L
#define DIEP_NODOWNLOAD 0x80000000L
#endif
/* DirectInput effect trigger button special value */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIEB_NOTRIGGER 0xFFFFFFFFL
#endif
/* DirectInput effect start modes */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIES_SOLO 0x00000001L
#define DIES_NODOWNLOAD 0x80000000L
#endif
/* DirectInput effect status flags */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIEGES_PLAYING 0x00000001L
#define DIEGES_EMULATED 0x00000002L
#endif
/* DirectInput device types */
#if (DIRECTINPUT_VERSION <= 0x0700)
#define DIDEVTYPE_DEVICE 1
#define DIDEVTYPE_MOUSE 2
#define DIDEVTYPE_KEYBOARD 3
#define DIDEVTYPE_JOYSTICK 4
#else
#define DI8DEVCLASS_ALL 0
#define DI8DEVCLASS_DEVICE 1
#define DI8DEVCLASS_POINTER 2
#define DI8DEVCLASS_KEYBOARD 3
#define DI8DEVCLASS_GAMECTRL 4
#define DI8DEVTYPE_DEVICE 0x11
#define DI8DEVTYPE_MOUSE 0x12
#define DI8DEVTYPE_KEYBOARD 0x13
#define DI8DEVTYPE_JOYSTICK 0x14
#define DI8DEVTYPE_GAMEPAD 0x15
#define DI8DEVTYPE_DRIVING 0x16
#define DI8DEVTYPE_FLIGHT 0x17
#define DI8DEVTYPE_1STPERSON 0x18
#define DI8DEVTYPE_DEVICECTRL 0x19
#define DI8DEVTYPE_SCREENPOINTER 0x1A
#define DI8DEVTYPE_REMOTE 0x1B
#define DI8DEVTYPE_SUPPLEMENTAL 0x1C
#endif
#define DIDEVTYPE_HID 0x00010000L
/* DirectInput mouse device types */
#if (DIRECTINPUT_VERSION <= 0x0700)
#define DIDEVTYPEMOUSE_UNKNOWN 1
#define DIDEVTYPEMOUSE_TRADITIONAL 2
#define DIDEVTYPEMOUSE_FINGERSTICK 3
#define DIDEVTYPEMOUSE_TOUCHPAD 4
#define DIDEVTYPEMOUSE_TRACKBALL 5
#else
#define DI8DEVTYPEMOUSE_UNKNOWN 1
#define DI8DEVTYPEMOUSE_TRADITIONAL 2
#define DI8DEVTYPEMOUSE_FINGERSTICK 3
#define DI8DEVTYPEMOUSE_TOUCHPAD 4
#define DI8DEVTYPEMOUSE_TRACKBALL 5
#define DI8DEVTYPEMOUSE_ABSOLUTE 6
#endif
/* DirectInput keyboard device types */
#if (DIRECTINPUT_VERSION <= 0x0700)
#define DIDEVTYPEKEYBOARD_UNKNOWN 0
#define DIDEVTYPEKEYBOARD_PCXT 1
#define DIDEVTYPEKEYBOARD_OLIVETTI 2
#define DIDEVTYPEKEYBOARD_PCAT 3
#define DIDEVTYPEKEYBOARD_PCENH 4
#define DIDEVTYPEKEYBOARD_NOKIA1050 5
#define DIDEVTYPEKEYBOARD_NOKIA9140 6
#define DIDEVTYPEKEYBOARD_NEC98 7
#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8
#define DIDEVTYPEKEYBOARD_NEC98106 9
#define DIDEVTYPEKEYBOARD_JAPAN106 10
#define DIDEVTYPEKEYBOARD_JAPANAX 11
#define DIDEVTYPEKEYBOARD_J3100 12
#else
#define DI8DEVTYPEKEYBOARD_UNKNOWN 0
#define DI8DEVTYPEKEYBOARD_PCXT 1
#define DI8DEVTYPEKEYBOARD_OLIVETTI 2
#define DI8DEVTYPEKEYBOARD_PCAT 3
#define DI8DEVTYPEKEYBOARD_PCENH 4
#define DI8DEVTYPEKEYBOARD_NOKIA1050 5
#define DI8DEVTYPEKEYBOARD_NOIKA9140 6
#define DI8DEVTYPEKEYBOARD_NEC98 7
#define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8
#define DI8DEVTYPEKEYBOARD_NEC98106 9
#define DI8DEVTYPEKEYBOARD_JAPAN106 10
#define DI8DEVTYPEKEYBOARD_JAPANAX 11
#define DI8DEVTYPEKEYBOARD_J3100 12
#endif
/* DirectInput joystick device types */
#if (DIRECTINPUT_VERSION <= 0x0700)
#define DIDEVTYPEJOYSTICK_UNKNOWN 1
#define DIDEVTYPEJOYSTICK_TRADITIONAL 2
#define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3
#define DIDEVTYPEJOYSTICK_GAMEPAD 4
#define DIDEVTYPEJOYSTICK_RUDDER 5
#define DIDEVTYPEJOYSTICK_WHEEL 6
#define DIDEVTYPEJOYSTICK_HEADTRACKER 7
#else
#define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1
#define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
#define DI8DEVTYPEJOYSTICK_STANDARD 2
#define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
#define DI8DEVTYPEGAMEPAD_STANDARD 2
#define DI8DEVTYPEGAMEPAD_TILT 3
#define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
#define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2
#define DI8DEVTYPEDRIVING_DUALPEDALS 3
#define DI8DEVTYPEDRIVING_THREEPEDALS 4
#define DI8DEVTYPEDRIVING_HANDHELD 5
#define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
#define DI8DEVTYPEFLIGHT_STICK 2
#define DI8DEVTYPEFLIGHT_YOKE 3
#define DI8DEVTYPEFLIGHT_RC 4
#define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
#define DI8DEVTYPE1STPERSON_UNKNOWN 2
#define DI8DEVTYPE1STPERSON_SIXDOF 3
#define DI8DEVTYPE1STPERSON_SHOOTER 4
#define DI8DEVTYPESCREENPTR_UNKNOWN 2
#define DI8DEVTYPESCREENPTR_LIGHTGUN 3
#define DI8DEVTYPESCREENPTR_LIGHTPEN 4
#define DI8DEVTYPESCREENPTR_TOUCH 5
#define DI8DEVTYPEREMOTE_UNKNOWN 2
#define DI8DEVTYPEDEVICECTRL_UNKNOWN 2
#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3
#define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4
#define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2
#define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3
#define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4
#define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5
#define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6
#define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7
#define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8
#define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9
#define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10
#define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11
#define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12
#define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13
#endif
/* Macros to manipulate DirectInput device types */
#define GET_DIDEVICE_TYPE( x ) LOBYTE( x )
#define GET_DIDEVICE_SUBTYPE( x ) HIBYTE( x )
/* DirectInput device capability flags */
#define DIDC_ATTACHED 0x00000001L
#define DIDC_POLLEDDEVICE 0x00000002L
#define DIDC_EMULATED 0x00000004L
#define DIDC_POLLEDDATAFORMAT 0x00000008L
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIDC_FORCEFEEDBACK 0x00000100L
#define DIDC_FFATTACK 0x00000200L
#define DIDC_FFFADE 0x00000400L
#define DIDC_SATURATION 0x00000800L
#define DIDC_POSNEGCOEFFICIENTS 0x00001000L
#define DIDC_POSNEGSATURATION 0x00002000L
#define DIDC_DEADBAND 0x00004000L
#endif
#define DIDC_STARTDELAY 0x00008000L
#if (DIRECTINPUT_VERSION >= 0x050A)
#define DIDC_ALIAS 0x00010000L
#define DIDC_PHANTOM 0x00020000L
#endif
#if (DIRECTINPUT_VERSION >= 0x0800)
#define DIDC_HIDDEN 0x00040000L
#endif
/* DirectInput device object type flags */
#define DIDFT_ALL 0x00000000L
#define DIDFT_RELAXIS 0x00000001L
#define DIDFT_ABSAXIS 0x00000002L
#define DIDFT_AXIS 0x00000003L
#define DIDFT_PSHBUTTON 0x00000004L
#define DIDFT_TGLBUTTON 0x00000008L
#define DIDFT_BUTTON 0x0000000CL
#define DIDFT_POV 0x00000010L
#define DIDFT_COLLECTION 0x00000040L
#define DIDFT_NODATA 0x00000080L
#define DIDFT_ANYINSTANCE 0x00FFFF00L
#define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE
#define DIDFT_FFACTUATOR 0x01000000L
#define DIDFT_FFEFFECTTRIGGER 0x02000000L
#if (DIRECTINPUT_VERSION >= 0x050A)
#define DIDFT_OUTPUT 0x10000000L
#define DIDFT_VENDORDEFINED 0x04000000L
#define DIDFT_ALIAS 0x08000000L
#endif
#ifndef DIDFT_OPTIONAL
#define DIDFT_OPTIONAL 0x80000000L
#endif
#define DIDFT_NOCOLLECTION 0x00FFFF00L
/* Macros to manipulate DirectInput device object type flags */
#define DIDFT_MAKEINSTANCE( x ) ((WORD)(x) << 8)
#define DIDFT_GETTYPE( x ) LOBYTE( x )
#define DIDFT_GETINSTANCE( x ) LOWORD( (x) >> 8 )
#define DIDFT_ENUMCOLLECTION( x ) ((WORD)(x) << 8)
/* DirectInput data format flags */
#define DIDF_ABSAXIS 0x00000001L
#define DIDF_RELAXIS 0x00000002L
/* DirectInput action flags */
#if (DIRECTINPUT_VERSION > 0x0700)
#define DIA_FORCEFEEDBACK 0x00000001L
#define DIA_APPMAPPED 0x00000002L
#define DIA_APPNOMAP 0x00000004L
#define DIA_NORANGE 0x00000008L
#define DIA_APPFIXED 0x00000010L
#endif
/* DirectInput action how flags */
#if (DIRECTINPUT_VERSION > 0x0700)
#define DIAH_UNMAPPED 0x00000000L
#define DIAH_USERCONFIG 0x00000001L
#define DIAH_APPREQUESTED 0x00000002L
#define DIAH_HWAPP 0x00000004L
#define DIAH_HWDEFAULT 0x00000008L
#define DIAH_DEFAULT 0x00000020L
#define DIAH_ERROR 0x80000000L
#endif
/* DirectInput action format timestamp special values */
#if (DIRECTINPUT_VERSION > 0x0700)
#define DIAFTS_NEWDEVICELOW 0xFFFFFFFFL
#define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFFL
#define DIAFTS_UNUSEDDEVICELOW 0x00000000L
#define DIAFTS_UNUSEDDEVICEHIGH 0x00000000L
#endif
/* IDirectInputDevice8::BuildActionMap() flags */
#if (DIRECTINPUT_VERSION > 0x0700)
#define DIDBAM_DEFAULT 0x00000000L
#define DIDBAM_PRESERVE 0x00000001L
#define DIDBAM_INITIALIZE 0x00000002L
#define DIDBAM_HWDEFAULTS 0x00000004L
#endif
/* IDirectInputDevice8::SetActionMap() flags */
#if (DIRECTINPUT_VERSION > 0x0700)
#define DIDSAM_DEFAULT 0x00000000L
#define DIDSAM_NOUSER 0x00000001L
#define DIDSAM_FORCESAVE 0x00000002L
#endif
/* IDirectInput8::ConfigureDevices() flags */
#if (DIRECTINPUT_VERSION > 0x0700)
#define DICD_DEFAULT 0x00000000L
#define DICD_EDIT 0x00000001L
#endif
/* DirectInput device image information flags */
#if (DIRECTINPUT_VERSION > 0x0700)
#define DIDIFT_CONFIGURATION 0x00000001L
#define DIDIFT_OVERLAY 0x00000002L
#endif
/* DirectInput device image information alignment flags */
#if (DIRECTINPUT_VERSION > 0x0700)
#define DIDAL_CENTERED 0x00000000L
#define DIDAL_LEFTALIGNED 0x00000001L
#define DIDAL_RIGHTALIGNED 0x00000002L
#define DIDAL_MIDDLE 0x00000000L
#define DIDAL_TOPALIGNED 0x00000004L
#define DIDAL_BOTTOMALIGNED 0x00000008L
#endif
/* DirectInput device object instance flags */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIDOI_FFACTUATOR 0x00000001L
#define DIDOI_FFEFFECTTRIGGER 0x00000002L
#define DIDOI_POLLED 0x00008000L
#define DIDOI_ASPECTPOSITION 0x00000100L
#define DIDOI_ASPECTVELOCITY 0x00000200L
#define DIDOI_ASPECTACCEL 0x00000300L
#define DIDOI_ASPECTFORCE 0x00000400L
#define DIDOI_ASPECTMASK 0x00000F00L
#endif
#if (DIRECTINPUT_VERSION >= 0x050A)
#define DIDOI_GUIDISUSAGE 0x00010000L
#endif
/* DirectInput property header how constants */
#define DIPH_DEVICE 0
#define DIPH_BYOFFSET 1
#define DIPH_BYID 2
#if (DIRECTINPUT_VERSION >= 0x050A)
#define DIPH_BYUSAGE 3
#endif
/* Macro to make a DirectInput usage DWORD */
#if (DIRECTINPUT_VERSION >= 0x050A)
#define DIMAKEUSAGEDWORD( p1, p2 ) (DWORD)MAKELONG( p1, p2 )
#endif
/* DirectInput property range special values */
#define DIPROPRANGE_NOMIN 0x80000000L
#define DIPROPRANGE_NOMAX 0x7FFFFFFFL
/* Maximum number of calibration points */
#if (DIRECTINPUT_VERSION >= 0x0800)
#define MAXCPOINTSNUM 8
#endif
/* Macro to make DirectInput properties */
#ifdef __cplusplus
#define MAKEDIPROP( x ) (*(const GUID *)(x))
#else
#define MAKEDIPROP( x ) ((REFGUID)(x))
#endif
/* DirectInput properties */
#define DIPROP_BUFFERSIZE MAKEDIPROP( 1 )
#define DIPROP_AXISMODE MAKEDIPROP( 2 )
#define DIPROP_GRANULARITY MAKEDIPROP( 3 )
#define DIPROP_RANGE MAKEDIPROP( 4 )
#define DIPROP_DEADZONE MAKEDIPROP( 5 )
#define DIPROP_SATURATION MAKEDIPROP( 6 )
#define DIPROP_FFGAIN MAKEDIPROP( 7 )
#define DIPROP_FFLOAD MAKEDIPROP( 8 )
#define DIPROP_AUTOCENTER MAKEDIPROP( 9 )
#define DIPROP_CALIBRATIONMODE MAKEDIPROP( 10 )
#if (DIRECTINPUT_VERSION >= 0x050A)
#define DIPROP_CALIBRATION MAKEDIPROP( 11 )
#define DIPROP_GUIDANDPATH MAKEDIPROP( 12 )
#define DIPROP_INSTANCENAME MAKEDIPROP( 13 )
#define DIPROP_PRODUCTNAME MAKEDIPROP( 14 )
#endif
#if (DIRECTINPUT_VERSION >= 0x05B2)
#define DIPROP_JOYSTICKID MAKEDIPROP( 15 )
#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP( 16 )
#endif
#if (DIRECTINPUT_VERSION >= 0x0700)
#define DIPROP_PHYSICALRANGE MAKEDIPROP( 18 )
#define DIPROP_LOGICALRANGE MAKEDIPROP( 19 )
#endif
#if (DIRECTINPUT_VERSION >= 0x0800)
#define DIPROP_KEYNAME MAKEDIPROP( 20 )
#define DIPROP_CPOINTS MAKEDIPROP( 21 )
#define DIPROP_APPDATA MAKEDIPROP( 22 )
#define DIPROP_SCANCODE MAKEDIPROP( 23 )
#define DIPROP_VIDPID MAKEDIPROP( 24 )
#define DIPROP_USERNAME MAKEDIPROP( 25 )
#define DIPROP_TYPENAME MAKEDIPROP( 26 )
#endif
/* DirectInput axis mode property values */
#define DIPROPAXISMODE_ABS 0
#define DIPROPAXISMODE_REL 1
/* DirectInput autocenter property values */
#define DIPROPAUTOCENTER_OFF 0
#define DIPROPAUTOCENTER_ON 1
/* DirectInput calibration mode property values */
#define DIPROPCALIBRATIONMODE_COOKED 0
#define DIPROPCALIBRATIONMODE_RAW 1
/* IDirectInputDevice8::GetDeviceData() flags */
#define DIGDD_PEEK 0x00000001L
/* Macro to compare DirectInput sequences */
#define DISEQUENCE_COMPARE( p1, p2, p3 ) ((int)((p1) - (p3)) p2 0)
/* IDirectInputDevice::SetCooperativeLevel() flags */
#define DISCL_EXCLUSIVE 0x00000001L
#define DISCL_NONEXCLUSIVE 0x00000002L
#define DISCL_FOREGROUND 0x00000004L
#define DISCL_BACKGROUND 0x00000008L
#define DISCL_NOWINKEY 0x00000010L
/* IDirectInputDevice2::SendForceFeedbackCommand() flags */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DISFFC_RESET 0x00000001L
#define DISFFC_STOPALL 0x00000002L
#define DISFFC_PAUSE 0x00000004L
#define DISFFC_CONTINUE 0x00000008L
#define DISFFC_SETACTUATORSON 0x00000010L
#define DISFFC_SETACUTATORSOFF 0x00000020L
#endif
/* IDirectInputDevice2::GetForceFeedbackState() flags */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIGFFS_EMPTY 0x00000001L
#define DIGFFS_STOPPED 0x00000002L
#define DIGFFS_PAUSED 0x00000004L
#define DIGFFS_ACTUATORSON 0x00000010L
#define DIGFFS_ACTUATORSOFF 0x00000020L
#define DIGFFS_POWERON 0x00000040L
#define DIGFFS_POWEROFF 0x00000080L
#define DIGFFS_SAFETYSWITCHON 0x00000100L
#define DIGFFS_SAFETYSWITCHOFF 0x00000200L
#define DIGFFS_USERFFSWITCHON 0x00000400L
#define DIGFFS_USERFFSWITCHOFF 0x00000800L
#define DIGFFS_DEVICELOST 0x80000000L
#endif
/* IDirectInputDevice2::SendDeviceData() flags */
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DISDD_CONTINUE 0x00000001L
#endif
/* DirectInput effect flags */
#if (DIRECTINPUT_VERSION >= 0x0700)
#define DIFEF_DEFAULT 0x00000000L
#define DIFEF_INCLUDENONSTANDARD 0x00000001L
#define DIFEF_MODIFYIFNEEDED 0x00000010L
#endif
/* DirectInput keyboard scan codes */
#define DIK_ESCAPE 0x01
#define DIK_1 0x02
#define DIK_2 0x03
#define DIK_3 0x04
#define DIK_4 0x05
#define DIK_5 0x06
#define DIK_6 0x07
#define DIK_7 0x08
#define DIK_8 0x09
#define DIK_9 0x0A
#define DIK_0 0x0B
#define DIK_MINUS 0x0C
#define DIK_EQUALS 0x0D
#define DIK_BACK 0x0E
#define DIK_TAB 0x0F
#define DIK_Q 0x10
#define DIK_W 0x11
#define DIK_E 0x12
#define DIK_R 0x13
#define DIK_T 0x14
#define DIK_Y 0x15
#define DIK_U 0x16
#define DIK_I 0x17
#define DIK_O 0x18
#define DIK_P 0x19
#define DIK_LBRACKET 0x1A
#define DIK_RBRACKET 0x1B
#define DIK_RETURN 0x1C
#define DIK_LCONTROL 0x1D
#define DIK_A 0x1E
#define DIK_S 0x1F
#define DIK_D 0x20
#define DIK_F 0x21
#define DIK_G 0x22
#define DIK_H 0x23
#define DIK_J 0x24
#define DIK_K 0x25
#define DIK_L 0x26
#define DIK_SEMICOLON 0x27
#define DIK_APOSTROPHE 0x28
#define DIK_GRAVE 0x29
#define DIK_LSHIFT 0x2A
#define DIK_BACKSLASH 0x2B
#define DIK_Z 0x2C
#define DIK_X 0x2D
#define DIK_C 0x2E
#define DIK_V 0x2F
#define DIK_B 0x30
#define DIK_N 0x31
#define DIK_M 0x32
#define DIK_COMMA 0x33
#define DIK_PERIOD 0x34
#define DIK_SLASH 0x35
#define DIK_RSHIFT 0x36
#define DIK_MULTIPLY 0x37
#define DIK_LMENU 0x38
#define DIK_SPACE 0x39
#define DIK_CAPITAL 0x3A
#define DIK_F1 0x3B
#define DIK_F2 0x3C
#define DIK_F3 0x3D
#define DIK_F4 0x3E
#define DIK_F5 0x3F
#define DIK_F6 0x40
#define DIK_F7 0x41
#define DIK_F8 0x42
#define DIK_F9 0x43
#define DIK_F10 0x44
#define DIK_NUMLOCK 0x45
#define DIK_SCROLL 0x46
#define DIK_NUMPAD7 0x47
#define DIK_NUMPAD8 0x48
#define DIK_NUMPAD9 0x49
#define DIK_SUBTRACT 0x4A
#define DIK_NUMPAD4 0x4B
#define DIK_NUMPAD5 0x4C
#define DIK_NUMPAD6 0x4D
#define DIK_ADD 0x4E
#define DIK_NUMPAD1 0x4F
#define DIK_NUMPAD2 0x50
#define DIK_NUMPAD3 0x51
#define DIK_NUMPAD0 0x52
#define DIK_DECIMAL 0x53
#define DIK_OEM_102 0x56
#define DIK_F11 0x57
#define DIK_F12 0x58
#define DIK_F13 0x64
#define DIK_F14 0x65
#define DIK_F15 0x66
#define DIK_KANA 0x70
#define DIK_ABNT_C1 0x73
#define DIK_CONVERT 0x79
#define DIK_NOCONVERT 0x7B
#define DIK_YEN 0x7D
#define DIK_ABNT_C2 0x7E
#define DIK_NUMPADEQUALS 0x8D
#define DIK_PREVTRACK 0x90
#define DIK_AT 0x91
#define DIK_COLON 0x92
#define DIK_UNDERLINE 0x93
#define DIK_KANJI 0x94
#define DIK_STOP 0x95
#define DIK_AX 0x96
#define DIK_UNLABELED 0x97
#define DIK_NEXTTRACK 0x99
#define DIK_NUMPADENTER 0x9C
#define DIK_RCONTROL 0x9D
#define DIK_MUTE 0xA0
#define DIK_CALCULATOR 0xA1
#define DIK_PLAYPAUSE 0xA2
#define DIK_MEDIASTOP 0xA4
#define DIK_VOLUMEDOWN 0xAE
#define DIK_VOLUMEUP 0xB0
#define DIK_WEBHOME 0xB2
#define DIK_NUMPADCOMMA 0xB3
#define DIK_DIVIDE 0xB5
#define DIK_SYSRQ 0xB7
#define DIK_RMENU 0xB8
#define DIK_PAUSE 0xC5
#define DIK_HOME 0xC7
#define DIK_UP 0xC8
#define DIK_PRIOR 0xC9
#define DIK_LEFT 0xCB
#define DIK_RIGHT 0xCD
#define DIK_END 0xCF
#define DIK_DOWN 0xD0
#define DIK_NEXT 0xD1
#define DIK_INSERT 0xD2
#define DIK_DELETE 0xD3
#define DIK_LWIN 0xDB
#define DIK_RWIN 0xDC
#define DIK_APPS 0xDD
#define DIK_POWER 0xDE
#define DIK_SLEEP 0xDF
#define DIK_WAKE 0xE3
#define DIK_WEBSEARCH 0xE5
#define DIK_WEBFAVORITES 0xE6
#define DIK_WEBREFRESH 0xE7
#define DIK_WEBSTOP 0xE8
#define DIK_WEBFORWARD 0xE9
#define DIK_WEBBACK 0xEA
#define DIK_MYCOMPUTER 0xEB
#define DIK_MAIL 0xEC
#define DIK_MEDIASELECT 0xED
#define DIK_BACKSPACE DIK_BACK
#define DIK_NUMPADSTAR DIK_MULTIPLY
#define DIK_LALT DIK_LMENU
#define DIK_CAPSLOCK DIK_CAPITAL
#define DIK_NUMPADMINUS DIK_SUBTRACT
#define DIK_NUMPADPLUS DIK_ADD
#define DIK_NUMPADPERIOD DIK_DECIMAL
#define DIK_NUMPADSLASH DIK_DIVIDE
#define DIK_RALT DIK_RMENU
#define DIK_UPARROW DIK_UP
#define DIK_PGUP DIK_PRIOR
#define DIK_LEFTARROW DIK_LEFT
#define DIK_RIGHTARROW DIK_RIGHT
#define DIK_DOWNARROW DIK_DOWN
#define DIK_PGDN DIK_NEXT
#define DIK_CIRCUMFLEX DIK_PREVTRACK
/* DirectInput enumeration constants */
#define DIENUM_STOP 0
#define DIENUM_CONTINUE 1
/* DirectInput device enumeration flags */
#define DIEDFL_ALLDEVICES 0x00000000L
#define DIEDFL_ATTACHEDONLY 0x00000001L
#if (DIRECTINPUT_VERSION >= 0x0500)
#define DIEDFL_FORCEFEEDBACK 0x00000100L
#endif
#if (DIRECTINPUT_VERSION >= 0x050A)
#define DIEDFL_INCLUDEALIASES 0x00010000L
#define DIEDFL_INCLUDEPHANTOMS 0x00020000L
#endif
#if (DIRECTINPUT_VERSION >= 0x0800)
#define DIEDFL_INCLUDEHIDDEN 0x00040000L
#endif
/* DirectInput device enumeration by semantics flags */
#if (DIRECTINPUT_VERSION >= 0x0800)
#define DIEDBS_MAPPEDPRI1 0x00000001L
#define DIEDBS_MAPPEDPRI2 0x00000002L
#define DIEDBS_RECENTDEVICE 0x00000010L
#define DIEDBS_NEWDEVICE 0x00000020L
#define DIEDBSFL_ATTACHEDONLY 0x00000000L
#define DIEDBSFL_THISUSER 0x00000010L
#define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK
#define DIEDBSFL_AVAILABLEDEVICES 0x00001000L
#define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000L
#define DIEDBSFL_NONGAMINGDEVICES 0x00004000L
#define DIEDBSFL_VALID 0x00007110L
#endif
/* DirectInput return codes */
#define DI_OK S_OK
#define DI_NOTATTACHED S_FALSE
#define DI_BUFFEROVERFLOW S_FALSE
#define DI_PROPNOEFFECT S_FALSE
#define DI_NOEFFECT S_FALSE
#define DI_POLLEDDEVICE 0x00000002L
#define DI_DOWNLOADSKIPPED 0x00000003L
#define DI_EFFECTRESTARTED 0x00000004L
#define DI_TRUNCATED 0x00000008L
#define DI_SETTINGSNOTSAVED 0x0000000BL
#define DI_TRUNCATEDANDRESTARTED 0x0000000CL
#define DI_WRITEPROTECT 0x00000013L
#define DIERR_OLDDIRECTINPUTVERSION \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION )
#define DIERR_BETADIRECTINPUTVERSION \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP )
#define DIERR_BADDRIVERVER \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL )
#define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG
#define DIERR_NOTFOUND \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND )
#define DIERR_OBJECTNOTFOUND \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND )
#define DIERR_INVALIDPARAM E_INVALIDARG
#define DIERR_NOINTERFACE E_NOINTERFACE
#define DIERR_GENERIC E_FAIL
#define DIERR_OUTOFMEMORY E_OUTOFMEMORY
#define DIERR_UNSUPPORTED E_NOTIMPL
#define DIERR_NOTINITIALIZED \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY )
#define DIERR_ALREADYINITIALIZED \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED )
#define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION
#define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED
#define DIERR_INPUTLOST \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT )
#define DIERR_ACQUIRED \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY )
#define DIERR_NOTACQUIRED \
MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS )
#define DIERR_READONLY E_ACCESSDENIED
#define DIERR_HANDLEEXISTS E_ACCESSDENIED
#define DIERR_INSUFFICIENTPRIVS 0x80040200L
#define DIERR_DEVICEFULL 0x80040201L
#define DIERR_MOREDATA 0x80040202L
#define DIERR_NOTDOWNLOADED 0x80040203L
#define DIERR_HASEFFECTS 0x80040204L
#define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L
#define DIERR_INCOMPLETEEFFECT 0x80040206L
#define DIERR_NOTBUFFERED 0x80040207L
#define DIERR_EFFECTPLAYING 0x80040208L
#define DIERR_UNPLUGGED 0x80040209L
#define DIERR_REPORTFULL 0x8004020AL
#define DIERR_MAPFILEFAIL 0x8004020BL
/* DirectInput keyboard mapping constants */
#define DIKEYBOARD_ESCAPE 0x81000401L
#define DIKEYBOARD_1 0x81000402L
#define DIKEYBOARD_2 0x81000403L
#define DIKEYBOARD_3 0x81000404L
#define DIKEYBOARD_4 0x81000405L
#define DIKEYBOARD_5 0x81000406L
#define DIKEYBOARD_6 0x81000407L
#define DIKEYBOARD_7 0x81000408L
#define DIKEYBOARD_8 0x81000409L
#define DIKEYBOARD_9 0x8100040AL
#define DIKEYBOARD_0 0x8100040BL
#define DIKEYBOARD_MINUS 0x8100040CL
#define DIKEYBOARD_EQUALS 0x8100040DL
#define DIKEYBOARD_BACK 0x8100040EL
#define DIKEYBOARD_TAB 0x8100040FL
#define DIKEYBOARD_Q 0x81000410L
#define DIKEYBOARD_W 0x81000411L
#define DIKEYBOARD_E 0x81000412L
#define DIKEYBOARD_R 0x81000413L
#define DIKEYBOARD_T 0x81000414L
#define DIKEYBOARD_Y 0x81000415L
#define DIKEYBOARD_U 0x81000416L
#define DIKEYBOARD_I 0x81000417L
#define DIKEYBOARD_O 0x81000418L
#define DIKEYBOARD_P 0x81000419L
#define DIKEYBOARD_LBRACKET 0x8100041AL
#define DIKEYBOARD_RBRACKET 0x8100041BL
#define DIKEYBOARD_RETURN 0x8100041CL
#define DIKEYBOARD_LCONTROL 0x8100041DL
#define DIKEYBOARD_A 0x8100041EL
#define DIKEYBOARD_S 0x8100041FL
#define DIKEYBOARD_D 0x81000420L
#define DIKEYBOARD_F 0x81000421L
#define DIKEYBOARD_G 0x81000422L
#define DIKEYBOARD_H 0x81000423L
#define DIKEYBOARD_J 0x81000424L
#define DIKEYBOARD_K 0x81000425L
#define DIKEYBOARD_L 0x81000426L
#define DIKEYBOARD_SEMICOLON 0x81000427L
#define DIKEYBOARD_APOSTROPHE 0x81000428L
#define DIKEYBOARD_GRAVE 0x81000429L
#define DIKEYBOARD_LSHIFT 0x8100042AL
#define DIKEYBOARD_BACKSLASH 0x8100042BL
#define DIKEYBOARD_Z 0x8100042CL
#define DIKEYBOARD_X 0x8100042DL
#define DIKEYBOARD_C 0x8100042EL
#define DIKEYBOARD_V 0x8100042FL
#define DIKEYBOARD_B 0x81000430L
#define DIKEYBOARD_N 0x81000431L
#define DIKEYBOARD_M 0x81000432L
#define DIKEYBOARD_COMMA 0x81000433L
#define DIKEYBOARD_PERIOD 0x81000434L
#define DIKEYBOARD_SLASH 0x81000435L
#define DIKEYBOARD_RSHIFT 0x81000436L
#define DIKEYBOARD_MULTIPLY 0x81000437L
#define DIKEYBOARD_LMENU 0x81000438L
#define DIKEYBOARD_SPACE 0x81000439L
#define DIKEYBOARD_CAPITAL 0x8100043AL
#define DIKEYBOARD_F1 0x8100043BL
#define DIKEYBOARD_F2 0x8100043CL
#define DIKEYBOARD_F3 0x8100043DL
#define DIKEYBOARD_F4 0x8100043EL
#define DIKEYBOARD_F5 0x8100043FL
#define DIKEYBOARD_F6 0x81000440L
#define DIKEYBOARD_F7 0x81000441L
#define DIKEYBOARD_F8 0x81000442L
#define DIKEYBOARD_F9 0x81000443L
#define DIKEYBOARD_F10 0x81000444L
#define DIKEYBOARD_NUMLOCK 0x81000445L
#define DIKEYBOARD_SCROLL 0x81000446L
#define DIKEYBOARD_NUMPAD7 0x81000447L
#define DIKEYBOARD_NUMPAD8 0x81000448L
#define DIKEYBOARD_NUMPAD9 0x81000449L
#define DIKEYBOARD_SUBTRACT 0x8100044AL
#define DIKEYBOARD_NUMPAD4 0x8100044BL
#define DIKEYBOARD_NUMPAD5 0x8100044CL
#define DIKEYBOARD_NUMPAD6 0x8100044DL
#define DIKEYBOARD_ADD 0x8100044EL
#define DIKEYBOARD_NUMPAD1 0x8100044FL
#define DIKEYBOARD_NUMPAD2 0x81000450L
#define DIKEYBOARD_NUMPAD3 0x81000451L
#define DIKEYBOARD_NUMPAD0 0x81000452L
#define DIKEYBOARD_DECIMAL 0x81000453L
#define DIKEYBOARD_OEM_102 0x81000456L
#define DIKEYBOARD_F11 0x81000457L
#define DIKEYBOARD_F12 0x81000458L
#define DIKEYBOARD_F13 0x81000464L
#define DIKEYBOARD_F14 0x81000465L
#define DIKEYBOARD_F15 0x81000466L
#define DIKEYBOARD_KANA 0x81000470L
#define DIKEYBOARD_ABNT_C1 0x81000473L
#define DIKEYBOARD_CONVERT 0x81000479L
#define DIKEYBOARD_NOCONVERT 0x8100047BL
#define DIKEYBOARD_YEN 0x8100047DL
#define DIKEYBOARD_ABNT_C2 0x8100047EL
#define DIKEYBOARD_NUMPADEQUALS 0x8100048DL
#define DIKEYBOARD_PREVTRACK 0x81000490L
#define DIKEYBOARD_AT 0x81000491L
#define DIKEYBOARD_COLON 0x81000492L
#define DIKEYBOARD_UNDERLINE 0x81000493L
#define DIKEYBOARD_KANJI 0x81000494L
#define DIKEYBOARD_STOP 0x81000495L
#define DIKEYBOARD_AX 0x81000496L
#define DIKEYBOARD_UNLABELED 0x81000497L
#define DIKEYBOARD_NEXTTRACK 0x81000499L
#define DIKEYBOARD_NUMPADENTER 0x8100049CL
#define DIKEYBOARD_RCONTROL 0x8100049DL
#define DIKEYBOARD_MUTE 0x810004A0L
#define DIKEYBOARD_CALCULATOR 0x810004A1L
#define DIKEYBOARD_PLAYPAUSE 0x810004A2L
#define DIKEYBOARD_MEDIASTOP 0x810004A4L
#define DIKEYBOARD_VOLUMEDOWN 0x810004AEL
#define DIKEYBOARD_VOLUMEUP 0x810004B0L
#define DIKEYBOARD_WEBHOME 0x810004B2L
#define DIKEYBOARD_NUMPADCOMMA 0x810004B3L
#define DIKEYBOARD_DIVIDE 0x810004B5L
#define DIKEYBOARD_SYSRQ 0x810004B7L
#define DIKEYBOARD_RMENU 0x810004B8L
#define DIKEYBOARD_PAUSE 0x810004C5L
#define DIKEYBOARD_HOME 0x810004C7L
#define DIKEYBOARD_UP 0x810004C8L
#define DIKEYBOARD_PRIOR 0x810004C9L
#define DIKEYBOARD_LEFT 0x810004CBL
#define DIKEYBOARD_RIGHT 0x810004CDL
#define DIKEYBOARD_END 0x810004CFL
#define DIKEYBOARD_DOWN 0x810004D0L
#define DIKEYBOARD_NEXT 0x810004D1L
#define DIKEYBOARD_INSERT 0x810004D2L
#define DIKEYBOARD_DELETE 0x810004D3L
#define DIKEYBOARD_LWIN 0x810004DBL
#define DIKEYBOARD_RWIN 0x810004DCL
#define DIKEYBOARD_APPS 0x810004DDL
#define DIKEYBOARD_POWER 0x810004DEL
#define DIKEYBOARD_SLEEP 0x810004DFL
#define DIKEYBOARD_WAKE 0x810004E3L
#define DIKEYBOARD_WEBSEARCH 0x810004E5L
#define DIKEYBOARD_WEBFAVORITES 0x810004E6L
#define DIKEYBOARD_WEBREFRESH 0x810004E7L
#define DIKEYBOARD_WEBSTOP 0x810004E8L
#define DIKEYBOARD_WEBFORWARD 0x810004E9L
#define DIKEYBOARD_WEBBACK 0x810004EAL
#define DIKEYBOARD_MYCOMPUTER 0x810004EBL
#define DIKEYBOARD_MAIL 0x810004ECL
#define DIKEYBOARD_MEDIASELECT 0x810004EDL
/* DirectInput mouse mapping constants */
#define DIMOUSE_XAXISAB (0x82000200L | DIMOFS_X)
#define DIMOUSE_YAXISAB (0x82000200L | DIMOFS_Y)
#define DIMOUSE_XAXIS (0x82000300L | DIMOFS_X)
#define DIMOUSE_YAXIS (0x82000300L | DIMOFS_Y)
#define DIMOUSE_WHEEL (0x82000300L | DIMOFS_Z)
#define DIMOUSE_BUTTON0 (0x82000400L | DIMOFS_BUTTON0)
#define DIMOUSE_BUTTON1 (0x82000400L | DIMOFS_BUTTON1)
#define DIMOUSE_BUTTON2 (0x82000400L | DIMOFS_BUTTON2)
#define DIMOUSE_BUTTON3 (0x82000400L | DIMOFS_BUTTON3)
#define DIMOUSE_BUTTON4 (0x82000400L | DIMOFS_BUTTON4)
#define DIMOUSE_BUTTON5 (0x82000400L | DIMOFS_BUTTON5)
#define DIMOUSE_BUTTON6 (0x82000400L | DIMOFS_BUTTON6)
#define DIMOUSE_BUTTON7 (0x82000400L | DIMOFS_BUTTON7)
/* DirectInput voice mapping constants */
#define DIVOICE_CHANNEL1 0x83000401L
#define DIVOICE_CHANNEL2 0x83000402L
#define DIVOICE_CHANNEL3 0x83000403L
#define DIVOICE_CHANNEL4 0x83000404L
#define DIVOICE_CHANNEL5 0x83000405L
#define DIVOICE_CHANNEL6 0x83000406L
#define DIVOICE_CHANNEL7 0x83000407L
#define DIVOICE_CHANNEL8 0x83000408L
#define DIVOICE_TEAM 0x83000409L
#define DIVOICE_ALL 0x8300040AL
#define DIVOICE_RECORDMUTE 0x8300040BL
#define DIVOICE_PLAYBACKMUTE 0x8300040CL
#define DIVOICE_TRANSMIT 0x8300040DL
#define DIVOICE_VOICECOMMAND 0x83000410L
/* DirectInput genre and control constants */
#define DIVIRTUAL_DRIVING_RACE 0x01000000L
#define DIAXIS_DRIVINGR_STEER 0x01008A01L
#define DIAXIS_DRIVINGR_ACCELERATE 0x01039202L
#define DIAXIS_DRIVINGR_BRAKE 0x01041203L
#define DIBUTTON_DRIVINGR_SHIFTUP 0x01000C01L
#define DIBUTTON_DRIVINGR_SHIFTDOWN 0x01000C02L
#define DIBUTTON_DRIVINGR_VIEW 0x01001C03L
#define DIBUTTON_DRIVINGR_MENU 0x010004FDL
#define DIAXIS_DRIVINGR_ACCEL_AND_BRAKE 0x01014A04L
#define DIHATSWITCH_DRIVINGR_GLANCE 0x01004601L
#define DIBUTTON_DRIVINGR_BRAKE 0x01004C04L
#define DIBUTTON_DRIVINGR_DASHBOARD 0x01004405L
#define DIBUTTON_DRIVINGR_AIDS 0x01004406L
#define DIBUTTON_DRIVINGR_MAP 0x01004407L
#define DIBUTTON_DRIVINGR_BOOST 0x01004408L
#define DIBUTTON_DRIVINGR_PIT 0x01004409L
#define DIBUTTON_DRIVINGR_ACCELERATE_LINK 0x0103D4E0L
#define DIBUTTON_DRIVINGR_STEER_LEFT_LINK 0x0100CCE4L
#define DIBUTTON_DRIVINGR_STEER_RIGHT_LINK 0x0100CCECL
#define DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK 0x0107C4E4L
#define DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK 0x0107C4ECL
#define DIBUTTON_DRIVINGR_DEVICE 0x010044FEL
#define DIBUTTON_DRIVINGR_PAUSE 0x010044FCL
#define DIVIRTUAL_DRIVING_COMBAT 0x02000000L
#define DIAXIS_DRIVINGC_STEER 0x02008A01L
#define DIAXIS_DRIVINGC_ACCELERATE 0x02039202L
#define DIAXIS_DRIVINGC_BRAKE 0x02041203L
#define DIBUTTON_DRIVINGC_FIRE 0x02000C01L
#define DIBUTTON_DRIVINGC_WEAPONS 0x02000C02L
#define DIBUTTON_DRIVINGC_TARGET 0x02000C03L
#define DIBUTTON_DRIVINGC_MENU 0x000002FDL
#define DIAXIS_DRIVINGC_ACCEL_AND_BRAKE 0x02014A04L
#define DIHATSWITCH_DRIVINGC_GLANCE 0x02004601L
#define DIBUTTON_DRIVINGC_SHIFTUP 0x02004C04L
#define DIBUTTON_DRIVINGC_SHIFTDOWN 0x02004C05L
#define DIBUTTON_DRIVINGC_DASHBOARD 0x02004406L
#define DIBUTTON_DRIVINGC_AIDS 0x02004407L
#define DIBUTTON_DRIVINGC_BRAKE 0x02004C08L
#define DIBUTTON_DRIVINGC_FIRESECONDARY 0x02004C09L
#define DIBUTTON_DRIVINGC_ACCELERATE_LINK 0x0203D4E0L
#define DIBUTTON_DRIVINGC_STEER_LEFT_LINK 0x0200CCE4L
#define DIBUTTON_DRIVINGC_STEER_RIGHT_LINK 0x0200CCECL
#define DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK 0x0207C4E4L
#define DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK 0x0207C4ECL
#define DIBUTTON_DRIVINGC_DEVICE 0x020044FEL
#define DIBUTTON_DRIVINGC_PAUSE 0x020044FCL
#define DIVIRTUAL_DRIVING_TANK 0x03000000L
#define DIAXIS_DRIVINGT_STEER 0x03008A01L
#define DIAXIS_DRIVINGT_BARREL 0x03010202L
#define DIAXIS_DRIVINGT_ACCELERATE 0x03039203L
#define DIAXIS_DRIVINGT_ROTATE 0x03020204L
#define DIBUTTON_DRIVINGT_FIRE 0x03000C01L
#define DIBUTTON_DRIVINGT_WEAPONS 0x03000C02L
#define DIBUTTON_DRIVINGT_TARGET 0x03000C03L
#define DIBUTTON_DRIVINGT_MENU 0x030004FDL
#define DIHATSWITCH_DRIVINGT_GLANCE 0x03004601L
#define DIAXIS_DRIVINGT_BRAKE 0x03045205L
#define DIAXIS_DRIVINGT_ACCEL_AND_BRAKE 0x03014A06L
#define DIBUTTON_DRIVINGT_VIEW 0x03005C04L
#define DIBUTTON_DRIVINGT_DASHBOARD 0x03005C05L
#define DIBUTTON_DRIVINGT_BRAKE 0x03004C06L
#define DIBUTTON_DRIVINGT_FIRESECONDARY 0x03004C07L
#define DIBUTTON_DRIVINGT_ACCELERATE_LINK 0x0303D4E0L
#define DIBUTTON_DRIVINGT_STEER_LEFT_LINK 0x0300CCE4L
#define DIBUTTON_DRIVINGT_STEER_RIGHT_LINK 0x0300CCECL
#define DIBUTTON_DRIVINGT_BARREL_UP_LINK 0x030144E0L
#define DIBUTTON_DRIVINGT_BARREL_DOWN_LINK 0x030144E8L
#define DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK 0x030244E4L
#define DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK 0x030244ECL
#define DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK 0x0307C4E4L
#define DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK 0x0307C4ECL
#define DIBUTTON_DRIVINGT_DEVICE 0x030044FEL
#define DIBUTTON_DRIVINGT_PAUSE 0x030044FCL
#define DIVIRTUAL_FLYING_CIVILIAN 0x04000000L
#define DIAXIS_FLYINGC_BANK 0x04008A01L
#define DIAXIS_FLYINGC_PITCH 0x04010A02L
#define DIAXIS_FLYINGC_THROTTLE 0x04039203L
#define DIBUTTON_FLYINGC_VIEW 0x04002401L
#define DIBUTTON_FLYINGC_DISPLAY 0x04002402L
#define DIBUTTON_FLYINGC_GEAR 0x04002C03L
#define DIBUTTON_FLYINGC_MENU 0x040004FDL
#define DIHATSWITCH_FLYINGC_GLANCE 0x04004601L
#define DIAXIS_FLYINGC_BRAKE 0x04046A04L
#define DIAXIS_FLYINGC_RUDDER 0x04025205L
#define DIAXIS_FLYINGC_FLAPS 0x04055A06L
#define DIBUTTON_FLYINGC_FLAPSUP 0x04006404L
#define DIBUTTON_FLYINGC_FLAPSDOWN 0x04006405L
#define DIBUTTON_FLYINGC_BRAKE_LINK 0x04046CE0L
#define DIBUTTON_FLYINGC_FASTER_LINK 0x0403D4E0L
#define DIBUTTON_FLYINGC_SLOWER_LINK 0x0403D4E8L
#define DIBUTTON_FLYINGC_GLANCE_LEFT_LINK 0x0407C4E4L
#define DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK 0x0407C4ECL
#define DIBUTTON_FLYINGC_GLANCE_UP_LINK 0x0407C4E0L
#define DIBUTTON_FLYINGC_GLANCE_DOWN_LINK 0x0407C4E8L
#define DIBUTTON_FLYINGC_DEVICE 0x040044FEL
#define DIBUTTON_FLYINGC_PAUSE 0x040044FCL
#define DIVIRTUAL_FLYING_MILITARY 0x05000000L
#define DIAXIS_FLYINGM_BANK 0x05008A01L
#define DIAXIS_FLYINGM_PITCH 0x05010A02L
#define DIAXIS_FLYINGM_THROTTLE 0x05039203L
#define DIBUTTON_FLYINGM_FIRE 0x05000C01L
#define DIBUTTON_FLYINGM_WEAPONS 0x05000C02L
#define DIBUTTON_FLYINGM_TARGET 0x05000C03L
#define DIBUTTON_FLYINGM_MENU 0x050004FDL
#define DIHATSWITCH_FLYINGM_GLANCE 0x05004601L
#define DIBUTTON_FLYINGM_COUNTER 0x05005C04L
#define DIAXIS_FLYINGM_RUDDER 0x05024A04L
#define DIAXIS_FLYINGM_BRAKE 0x05046205L
#define DIBUTTON_FLYINGM_VIEW 0x05006405L
#define DIBUTTON_FLYINGM_DISPLAY 0x05006406L
#define DIAXIS_FLYINGM_FLAPS 0x05055206L
#define DIBUTTON_FLYINGM_FLAPSUP 0x05005407L
#define DIBUTTON_FLYINGM_FLAPSDOWN 0x05005408L
#define DIBUTTON_FLYINGM_FIRESECONDARY 0x05004C09L
#define DIBUTTON_FLYINGM_GEAR 0x0500640AL
#define DIBUTTON_FLYINGM_BRAKE_LINK 0x050464E0L
#define DIBUTTON_FLYINGM_FASTER_LINK 0x0503D4E0L
#define DIBUTTON_FLYINGM_SLOWER_LINK 0x0503D4E8L
#define DIBUTTON_FLYINGM_GLANCE_LEFT_LINK 0x0507C4E4L
#define DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK 0x0507C4ECL
#define DIBUTTON_FLYINGM_GLANCE_UP_LINK 0x0507C4E0L
#define DIBUTTON_FLYINGM_GLANCE_DOWN_LINK 0x0507C4E8L
#define DIBUTTON_FLYINGM_DEVICE 0x050044FEL
#define DIBUTTON_FLYINGM_PAUSE 0x050044FCL
#define DIVIRTUAL_FLYING_HELICOPTER 0x06000000L
#define DIAXIS_FLYINGH_BANK 0x06008A01L
#define DIAXIS_FLYINGH_PITCH 0x06010A02L
#define DIAXIS_FLYINGH_COLLECTIVE 0x06018A03L
#define DIBUTTON_FLYINGH_FIRE 0x06001401L
#define DIBUTTON_FLYINGH_WEAPONS 0x06001402L
#define DIBUTTON_FLYINGH_TARGET 0x06001403L
#define DIBUTTON_FLYINGH_MENU 0x060004FDL
#define DIHATSWITCH_FLYINGH_GLANCE 0x06004601L
#define DIAXIS_FLYINGH_TORQUE 0x06025A04L
#define DIAXIS_FLYINGH_THROTTLE 0x0603DA05L
#define DIBUTTON_FLYINGH_COUNTER 0x06005404L
#define DIBUTTON_FLYINGH_VIEW 0x06006405L
#define DIBUTTON_FLYINGH_GEAR 0x06006406L
#define DIBUTTON_FLYINGH_FIRESECONDARY 0x06004C07L
#define DIBUTTON_FLYINGH_FASTER_LINK 0x0603DCE0L
#define DIBUTTON_FLYINGH_SLOWER_LINK 0x0603DCE8L
#define DIBUTTON_FLYINGH_GLANCE_LEFT_LINK 0x0607C4E4L
#define DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK 0x0607C4ECL
#define DIBUTTON_FLYINGH_GLANCE_UP_LINK 0x0607C4E0L
#define DIBUTTON_FLYINGH_GLANCE_DOWN_LINK 0x0607C4E8L
#define DIBUTTON_FLYINGH_DEVICE 0x060044FEL
#define DIBUTTON_FLYINGH_PAUSE 0x060044FCL
#define DIVIRTUAL_SPACESIM 0x07000000L
#define DIAXIS_SPACESIM_LATERAL 0x07008201L
#define DIAXIS_SPACESIM_MOVE 0x07010202L
#define DIAXIS_SPACESIM_THROTTLE 0x07038203L
#define DIBUTTON_SPACESIM_FIRE 0x07000401L
#define DIBUTTON_SPACESIM_WEAPONS 0x07000402L
#define DIBUTTON_SPACESIM_TARGET 0x07000403L
#define DIBUTTON_SPACESIM_MENU 0x070004FDL
#define DIHATSWITCH_SPACESIM_GLANCE 0x07004601L
#define DIAXIS_SPACESIM_CLIMB 0x0701C204L
#define DIAXIS_SPACESIM_ROTATE 0x07024205L
#define DIBUTTON_SPACESIM_VIEW 0x07004404L
#define DIBUTTON_SPACESIM_DISPLAY 0x07004405L
#define DIBUTTON_SPACESIM_RAISE 0x07004406L
#define DIBUTTON_SPACESIM_LOWER 0x07004407L
#define DIBUTTON_SPACESIM_GEAR 0x07004408L
#define DIBUTTON_SPACESIM_FIRESECONDARY 0x07004409L
#define DIBUTTON_SPACESIM_LEFT_LINK 0x0700C4E4L
#define DIBUTTON_SPACESIM_RIGHT_LINK 0x0700C4ECL
#define DIBUTTON_SPACESIM_FORWARD_LINK 0x070144E0L
#define DIBUTTON_SPACESIM_BACKWARD_LINK 0x070144E8L
#define DIBUTTON_SPACESIM_FASTER_LINK 0x0703C4E0L
#define DIBUTTON_SPACESIM_SLOWER_LINK 0x0703C4E8L
#define DIBUTTON_SPACESIM_TURN_LEFT_LINK 0x070244E4L
#define DIBUTTON_SPACESIM_TURN_RIGHT_LINK 0x070244ECL
#define DIBUTTON_SPACESIM_GLANCE_LEFT_LINK 0x0707C4E4L
#define DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK 0x0707C4ECL
#define DIBUTTON_SPACESIM_GLANCE_UP_LINK 0x0707C4E0L
#define DIBUTTON_SPACESIM_GLANCE_DOWN_LINK 0x0707C4E8L
#define DIBUTTON_SPACESIM_DEVICE 0x070044FEL
#define DIBUTTON_SPACESIM_PAUSE 0x070044FCL
#define DIVIRTUAL_FIGHTING_HAND2HAND 0x08000000L
#define DIAXIS_FIGHTINGH_LATERAL 0x08008201L
#define DIAXIS_FIGHTINGH_MOVE 0x08010202L
#define DIBUTTON_FIGHTINGH_PUNCH 0x08000401L
#define DIBUTTON_FIGHTINGH_KICK 0x08000402L
#define DIBUTTON_FIGHTINGH_BLOCK 0x08000403L
#define DIBUTTON_FIGHTINGH_CROUCH 0x08000404L
#define DIBUTTON_FIGHTINGH_JUMP 0x08000405L
#define DIBUTTON_FIGHTINGH_SPECIAL1 0x08000406L
#define DIBUTTON_FIGHTINGH_SPECIAL2 0x08000407L
#define DIBUTTON_FIGHTINGH_MENU 0x080004FDL
#define DIBUTTON_FIGHTINGH_SELECT 0x08004408L
#define DIHATSWITCH_FIGHTINGH_SLIDE 0x08004601L
#define DIBUTTON_FIGHTINGH_DISPLAY 0x08004409L
#define DIAXIS_FIGHTINGH_ROTATE 0x08024203L
#define DIBUTTON_FIGHTINGH_DODGE 0x0800440AL
#define DIBUTTON_FIGHTINGH_LEFT_LINK 0x0800C4E4L
#define DIBUTTON_FIGHTINGH_RIGHT_LINK 0x0800C4ECL
#define DIBUTTON_FIGHTINGH_FORWARD_LINK 0x080144E0L
#define DIBUTTON_FIGHTINGH_BACKWARD_LINK 0x080114E8L
#define DIBUTTON_FIGHTINGH_DEVICE 0x080044FEL
#define DIBUTTON_FIGHTINGH_PAUSE 0x080044FCL
#define DIVIRTUAL_FIGHTING_FPS 0x09000000L
#define DIAXIS_FPS_ROTATE 0x09008201L
#define DIAXIS_FPS_MOVE 0x09010202L
#define DIBUTTON_FPS_FIRE 0x09000401L
#define DIBUTTON_FPS_WEAPONS 0x09000402L
#define DIBUTTON_FPS_APPLY 0x09000403L
#define DIBUTTON_FPS_SELECT 0x09000404L
#define DIBUTTON_FPS_CROUCH 0x09000405L
#define DIBUTTON_FPS_JUMP 0x09000406L
#define DIAXIS_FPS_LOOKUPDOWN 0x09018203L
#define DIBUTTON_FPS_STRAFE 0x09000407L
#define DIBUTTON_FPS_MENU 0x900004FDL
#define DIHATSWITCH_FPS_GLANCE 0x09004601L
#define DIBUTTON_FPS_DISPLAY 0x09004408L
#define DIAXIS_FPS_SIDESTEP 0x09024204L
#define DIBUTTON_FPS_DODGE 0x09004409L
#define DIBUTTON_FPS_GLANCEL 0x0900440AL
#define DIBUTTON_FPS_GLANCER 0x0900440BL
#define DIBUTTON_FPS_FIRESECONDARY 0x0900440CL
#define DIBUTTON_FPS_ROTATE_LEFT_LINK 0x0900C4E4L
#define DIBUTTON_FPS_ROTATE_RIGHT_LINK 0x0900C4ECL
#define DIBUTTON_FPS_FORWARD_LINK 0x090144E0L
#define DIBUTTON_FPS_BACKWARD_LINK 0x090144E8L
#define DIBUTTON_FPS_GLANCE_UP_LINK 0x0901C4E0L
#define DIBUTTON_FPS_GLANCE_DOWN_LINK 0x0901C4E8L
#define DIBUTTON_FPS_STEP_LEFT_LINK 0x090244E4L
#define DIBUTTON_FPS_STEP_RIGHT_LINK 0x090244ECL
#define DIBUTTON_FPS_DEVICE 0x090044FEL
#define DIBUTTON_FPS_PAUSE 0x090044FCL
#define DIVIRTUAL_FIGHTING_THIRDPERSON 0x0A000000L
#define DIAXIS_TPS_TURN 0x0A020201L
#define DIAXIS_TPS_MOVE 0x0A010202L
#define DIBUTTON_TPS_RUN 0x0A000401L
#define DIBUTTON_TPS_ACTION 0x0A000402L
#define DIBUTTON_TPS_SELECT 0x0A000403L
#define DIBUTTON_TPS_USE 0x0A000404L
#define DIBUTTON_TPS_JUMP 0x0A000405L
#define DIBUTTON_TPS_MENU 0x0A0004FDL
#define DIHATSWITCH_TPS_GLANCE 0x0A004601L
#define DIBUTTON_TPS_VIEW 0x0A004406L
#define DIBUTTON_TPS_STEPLEFT 0x0A004407L
#define DIBUTTON_TPS_STEPRIGHT 0x0A004408L
#define DIAXIS_TPS_STEP 0x0A00C203L
#define DIBUTTON_TPS_DODGE 0x0A004409L
#define DIBUTTON_TPS_INVENTORY 0x0A00440AL
#define DIBUTTON_TPS_TURN_LEFT_LINK 0x0A0244E4L
#define DIBUTTON_TPS_TURN_RIGHT_LINK 0x0A0244ECL
#define DIBUTTON_TPS_FORWARD_LINK 0x0A0144E0L
#define DIBUTTON_TPS_BACKWARD_LINK 0x0A0144E8L
#define DIBUTTON_TPS_GLANCE_UP_LINK 0x0A07C4E0L
#define DIBUTTON_TPS_GLANCE_DOWN_LINK 0x0A07C4E8L
#define DIBUTTON_TPS_GLANCE_LEFT_LINK 0x0A07C4E4L
#define DIBUTTON_TPS_GLANCE_RIGHT_LINK 0x0A07C4ECL
#define DIBUTTON_TPS_DEVICE 0x0A0044FEL
#define DIBUTTON_TPS_PAUSE 0x0A0044FCL
#define DIVIRTUAL_STRATEGY_ROLEPLAYING 0x0B000000L
#define DIAXIS_STRATEGYR_LATERAL 0x0B008201L
#define DIAXIS_STRATEGYR_MOVE 0x0B010202L
#define DIBUTTON_STRATEGYR_GET 0x0B000401L
#define DIBUTTON_STRATEGYR_APPLY 0x0B000402L
#define DIBUTTON_STRATEGYR_SELECT 0x0B000403L
#define DIBUTTON_STRATEGYR_ATTACK 0x0B000404L
#define DIBUTTON_STRATEGYR_CAST 0x0B000405L
#define DIBUTTON_STRATEGYR_CROUCH 0x0B000406L
#define DIBUTTON_STRATEGYR_JUMP 0x0B000407L
#define DIBUTTON_STRATEGYR_MENU 0x0B0004FDL
#define DIHATSWITCH_STRATEGYR_GLANCE 0x0B004601L
#define DIBUTTON_STRATEGYR_MAP 0x0B004408L
#define DIBUTTON_STRATEGYR_DISPLAY 0x0B004409L
#define DIAXIS_STRATEGYR_ROTATE 0x0B024203L
#define DIBUTTON_STRATEGYR_LEFT_LINK 0x0B00C4E4L
#define DIBUTTON_STRATEGYR_RIGHT_LINK 0x0B00C4ECL
#define DIBUTTON_STRATEGYR_FORWARD_LINK 0x0B0144E0L
#define DIBUTTON_STRATEGYR_BACK_LINK 0x0B0144E8L
#define DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK 0x0B0244E4L
#define DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK 0x0B0244ECL
#define DIBUTTON_STRATEGYR_DEVICE 0x0B0044FEL
#define DIBUTTON_STRATEGYR_PAUSE 0x0B0044FCL
#define DIVIRTUAL_STRATEGY_TURN 0x0C000000L
#define DIAXIS_STRATEGYT_LATERAL 0x0C008201L
#define DIAXIS_STRATEGYT_MOVE 0x0C010202L
#define DIBUTTON_STRATEGYT_SELECT 0x0C000401L
#define DIBUTTON_STRATEGYT_INSTRUCT 0x0C000402L
#define DIBUTTON_STRATEGYT_APPLY 0x0C000403L
#define DIBUTTON_STRATEGYT_TEAM 0x0C000404L
#define DIBUTTON_STRATEGYT_TURN 0x0C000405L
#define DIBUTTON_STRATEGYT_MENU 0x0C0004FDL
#define DIBUTTON_STRATEGYT_ZOOM 0x0C004406L
#define DIBUTTON_STRATEGYT_MAP 0x0C004407L
#define DIBUTTON_STRATEGYT_DISPLAY 0x0C004408L
#define DIBUTTON_STRATEGYT_LEFT_LINK 0x0C00C4E4L
#define DIBUTTON_STRATEGYT_RIGHT_LINK 0x0C00C4ECL
#define DIBUTTON_STRATEGYT_FORWARD_LINK 0x0C0144E0L
#define DIBUTTON_STRATEGYT_BACK_LINK 0x0C0144E8L
#define DIBUTTON_STRATEGYT_DEVICE 0x0C0044FEL
#define DIBUTTON_STRATEGYT_PAUSE 0x0C0044FCL
#define DIVIRTUAL_SPORTS_HUNTING 0x0D000000L
#define DIAXIS_HUNTING_LATERAL 0x0D008201L
#define DIAXIS_HUNTING_MOVE 0x0D010202L
#define DIBUTTON_HUNTING_FIRE 0x0D000401L
#define DIBUTTON_HUNTING_AIM 0x0D000402L
#define DIBUTTON_HUNTING_WEAPON 0x0D000403L
#define DIBUTTON_HUNTING_BINOCULAR 0x0D000404L
#define DIBUTTON_HUNTING_CALL 0x0D000405L
#define DIBUTTON_HUNTING_MAP 0x0D000406L
#define DIBUTTON_HUNTING_SPECIAL 0x0D000407L
#define DIBUTTON_HUNTING_MENU 0x0D0004FDL
#define DIHATSWITCH_HUNTING_GLANCE 0x0D004601L
#define DIBUTTON_HUNTING_DISPLAY 0x0D004408L
#define DIAXIS_HUNTING_ROTATE 0x0D024203L
#define DIBUTTON_HUNTING_CROUCH 0x0D004409L
#define DIBUTTON_HUNTING_JUMP 0x0D00440AL
#define DIBUTTON_HUNTING_FIRESECONDARY 0x0D00440BL
#define DIBUTTON_HUNTING_LEFT_LINK 0x0D00C4E4L
#define DIBUTTON_HUNTING_RIGHT_LINK 0x0D00C4ECL
#define DIBUTTON_HUNTING_FORWARD_LINK 0x0D0144E0L
#define DIBUTTON_HUNTING_BACK_LINK 0x0D0144E8L
#define DIBUTTON_HUNTING_ROTATE_LEFT_LINK 0x0D0244E4L
#define DIBUTTON_HUNTING_ROTATE_RIGHT_LINK 0x0D0244ECL
#define DIBUTTON_HUNTING_DEVICE 0x0D0044FEL
#define DIBUTTON_HUNTING_PAUSE 0x0D0044FCL
#define DIVIRTUAL_SPORTS_FISHING 0x0E000000L
#define DIAXIS_FISHING_LATERAL 0x0E008201L
#define DIAXIS_FISHING_MOVE 0x0E010202L
#define DIBUTTON_FISHING_CAST 0x0E000401L
#define DIBUTTON_FISHING_TYPE 0x0E000402L
#define DIBUTTON_FISHING_BINOCULAR 0x0E000403L
#define DIBUTTON_FISHING_BAIT 0x0E000404L
#define DIBUTTON_FISHING_MAP 0x0E000405L
#define DIBUTTON_FISHING_MENU 0x0E0004FDL
#define DIHATSWITCH_FISHING_GLANCE 0x0E004601L
#define DIBUTTON_FISHING_DISPLAY 0x0E004406L
#define DIAXIS_FISHING_ROTATE 0x0E024203L
#define DIBUTTON_FISHING_CROUCH 0x0E004407L
#define DIBUTTON_FISHING_JUMP 0x0E004408L
#define DIBUTTON_FISHING_LEFT_LINK 0x0E00C4E4L
#define DIBUTTON_FISHING_RIGHT_LINK 0x0E00C4ECL
#define DIBUTTON_FISHING_FORWARD_LINK 0x0E0144E0L
#define DIBUTTON_FISHING_BACK_LINK 0x0E0144E8L
#define DIBUTTON_FISHING_ROTATE_LEFT_LINK 0x0E0244E4L
#define DIBUTTON_FISHING_ROTATE_RIGHT_LINK 0x0E0244ECL
#define DIBUTTON_FISHING_DEVICE 0x0E0044FEL
#define DIBUTTON_FISHING_PAUSE 0x0E0044FCL
#define DIVIRTUAL_SPORTS_BASEBALL_BAT 0x0F000000L
#define DIAXIS_BASEBALLB_LATERAL 0x0F008201L
#define DIAXIS_BASEBALLB_MOVE 0x0F010202L
#define DIBUTTON_BASEBALLB_SELECT 0x0F000401L
#define DIBUTTON_BASEBALLB_NORMAL 0x0F000402L
#define DIBUTTON_BASEBALLB_POWER 0x0F000403L
#define DIBUTTON_BASEBALLB_BUNT 0x0F000404L
#define DIBUTTON_BASEBALLB_STEAL 0x0F000405L
#define DIBUTTON_BASEBALLB_BURST 0x0F000406L
#define DIBUTTON_BASEBALLB_SLIDE 0x0F000407L
#define DIBUTTON_BASEBALLB_CONTACT 0x0F000408L
#define DIBUTTON_BASEBALLB_MENU 0x0F0004FDL
#define DIBUTTON_BASEBALLB_NOSTEAL 0x0F004409L
#define DIBUTTON_BASEBALLB_BOX 0x0F00440AL
#define DIBUTTON_BASEBALLB_LEFT_LINK 0x0F00C4E4L
#define DIBUTTON_BASEBALLB_RIGHT_LINK 0x0F00C4ECL
#define DIBUTTON_BASEBALLB_FORWARD_LINK 0x0F0144E0L
#define DIBUTTON_BASEBALLB_BACK_LINK 0x0F0144E8L
#define DIBUTTON_BASEBALLB_DEVICE 0x0F0044FEL
#define DIBUTTON_BASEBALLB_PAUSE 0x0F0044FCL
#define DIVIRTUAL_SPORTS_BASEBALL_PITCH 0x10000000L
#define DIAXIS_BASEBALLP_LATERAL 0x10008201L
#define DIAXIS_BASEBALLP_MOVE 0x10010202L
#define DIBUTTON_BASEBALLP_SELECT 0x10000401L
#define DIBUTTON_BASEBALLP_PITCH 0x10000402L
#define DIBUTTON_BASEBALLP_BASE 0x10000403L
#define DIBUTTON_BASEBALLP_THROW 0x10000404L
#define DIBUTTON_BASEBALLP_FAKE 0x10000405L
#define DIBUTTON_BASEBALLP_MENU 0x100004FDL
#define DIBUTTON_BASEBALLP_WALK 0x10004406L
#define DIBUTTON_BASEBALLP_LOOK 0x10004407L
#define DIBUTTON_BASEBALLP_LEFT_LINK 0x1000C4E4L
#define DIBUTTON_BASEBALLP_RIGHT_LINK 0x1000C4ECL
#define DIBUTTON_BASEBALLP_FORWARD_LINK 0x100144E0L
#define DIBUTTON_BASEBALLP_BACK_LINK 0x100144E8L
#define DIBUTTON_BASEBALLP_DEVICE 0x100044FEL
#define DIBUTTON_BASEBALLP_PAUSE 0x100044FCL
#define DIVIRTUAL_SPORTS_BASEBALL_FIELD 0x11000000L
#define DIAXIS_BASEBALLF_LATERAL 0x11008201L
#define DIAXIS_BASEBALLF_MOVE 0x11010202L
#define DIBUTTON_BASEBALLF_NEAREST 0x11000401L
#define DIBUTTON_BASEBALLF_THROW1 0x11000402L
#define DIBUTTON_BASEBALLF_THROW2 0x11000403L
#define DIBUTTON_BASEBALLF_BURST 0x11000404L
#define DIBUTTON_BASEBALLF_JUMP 0x11000405L
#define DIBUTTON_BASEBALLF_DIVE 0x11000406L
#define DIBUTTON_BASEBALLF_MENU 0x110004FDL
#define DIBUTTON_BASEBALLF_SHIFTIN 0x11004407L
#define DIBUTTON_BASEBALLF_SHIFTOUT 0x11004408L
#define DIBUTTON_BASEBALLF_AIM_LEFT_LINK 0x1100C4E4L
#define DIBUTTON_BASEBALLF_AIM_RIGHT_LINK 0x1100C4ECL
#define DIBUTTON_BASEBALLF_FORWARD_LINK 0x110144E0L
#define DIBUTTON_BASEBALLF_BACK_LINK 0x110144E8L
#define DIBUTTON_BASEBALLF_DEVICE 0x110044FEL
#define DIBUTTON_BASEBALLF_PAUSE 0x110044FCL
#define DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE 0x12000000L
#define DIAXIS_BBALLO_LATERAL 0x12008201L
#define DIAXIS_BBALLO_MOVE 0x12010202L
#define DIBUTTON_BBALLO_SHOOT 0x12000401L
#define DIBUTTON_BBALLO_DUNK 0x12000402L
#define DIBUTTON_BBALLO_PASS 0x12000403L
#define DIBUTTON_BBALLO_FAKE 0x12000404L
#define DIBUTTON_BBALLO_SPECIAL 0x12000405L
#define DIBUTTON_BBALLO_PLAYER 0x12000406L
#define DIBUTTON_BBALLO_BURST 0x12000407L
#define DIBUTTON_BBALLO_CALL 0x12000408L
#define DIBUTTON_BBALLO_MENU 0x120004FDL
#define DIHATSWITCH_BBALLO_GLANCE 0x12004601L
#define DIBUTTON_BBALLO_SCREEN 0x12004409L
#define DIBUTTON_BBALLO_PLAY 0x1200440AL
#define DIBUTTON_BBALLO_JAB 0x1200440BL
#define DIBUTTON_BBALLO_POST 0x1200440CL
#define DIBUTTON_BBALLO_TIMEOUT 0x1200440DL
#define DIBUTTON_BBALLO_SUBSTITUTE 0x1200440EL
#define DIBUTTON_BBALLO_LEFT_LINK 0x1200C4E4L
#define DIBUTTON_BBALLO_RIGHT_LINK 0x1200C4ECL
#define DIBUTTON_BBALLO_FORWARD_LINK 0x120144E0L
#define DIBUTTON_BBALLO_BACK_LINK 0x120144E8L
#define DIBUTTON_BBALLO_DEVICE 0x120044FEL
#define DIBUTTON_BBALLO_PAUSE 0x120044FCL
#define DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE 0x13000000L
#define DIAXIS_BBALLD_LATERAL 0x13008201L
#define DIAXIS_BBALLD_MOVE 0x13010202L
#define DIBUTTON_BBALLD_JUMP 0x13000401L
#define DIBUTTON_BBALLD_STEAL 0x13000402L
#define DIBUTTON_BBALLD_FAKE 0x13000403L
#define DIBUTTON_BBALLD_SPECIAL 0x13000404L
#define DIBUTTON_BBALLD_PLAYER 0x13000405L
#define DIBUTTON_BBALLD_BURST 0x13000406L
#define DIBUTTON_BBALLD_PLAY 0x13000407L
#define DIBUTTON_BBALLD_MENU 0x130004FDL
#define DIHATSWITCH_BBALLD_GLANCE 0x13004601L
#define DIBUTTON_BBALLD_TIMEOUT 0x13004408L
#define DIBUTTON_BBALLD_SUBSTITUTE 0x13004409L
#define DIBUTTON_BBALLD_LEFT_LINK 0x1300C4E4L
#define DIBUTTON_BBALLD_RIGHT_LINK 0x1300C4ECL
#define DIBUTTON_BBALLD_FORWARD_LINK 0x130144E0L
#define DIBUTTON_BBALLD_BACK_LINK 0x130144E8L
#define DIBUTTON_BBALLD_DEVICE 0x130044FEL
#define DIBUTTON_BBALLD_PAUSE 0x130044FCL
#define DIVIRTUAL_SPORTS_FOOTBALL_FIELD 0x14000000L
#define DIBUTTON_FOOTBALLP_PLAY 0x14000401L
#define DIBUTTON_FOOTBALLP_SELECT 0x14000402L
#define DIBUTTON_FOOTBALLP_HELP 0x14000403L
#define DIBUTTON_FOOTBALLP_MENU 0x140004FDL
#define DIBUTTON_FOOTBALLP_DEVICE 0x140044FEL
#define DIBUTTON_FOOTBALLP_PAUSE 0x140044FCL
#define DIVIRTUAL_SPORTS_FOOTBALL_QBCK 0x15000000L
#define DIAXIS_FOOTBALLQ_LATERAL 0x15008201L
#define DIAXIS_FOOTBALLQ_MOVE 0x15010202L
#define DIBUTTON_FOOTBALLQ_SELECT 0x15000401L
#define DIBUTTON_FOOTBALLQ_SNAP 0x15000402L
#define DIBUTTON_FOOTBALLQ_JUMP 0x15000403L
#define DIBUTTON_FOOTBALLQ_SLIDE 0x15000404L
#define DIBUTTON_FOOTBALLQ_PASS 0x15000405L
#define DIBUTTON_FOOTBALLQ_FAKE 0x15000406L
#define DIBUTTON_FOOTBALLQ_MENU 0x150004FDL
#define DIBUTTON_FOOTBALLQ_FAKESNAP 0x15004407L
#define DIBUTTON_FOOTBALLQ_MOTION 0x15004408L
#define DIBUTTON_FOOTBALLQ_AUDIBLE 0x15004409L
#define DIBUTTON_FOOTBALLQ_LEFT_LINK 0x1500C4E4L
#define DIBUTTON_FOOTBALLQ_RIGHT_LINK 0x1500C4ECL
#define DIBUTTON_FOOTBALLQ_FORWARD_LINK 0x150144E0L
#define DIBUTTON_FOOTBALLQ_BACK_LINK 0x150144E8L
#define DIBUTTON_FOOTBALLQ_DEVICE 0x150044FEL
#define DIBUTTON_FOOTBALLQ_PAUSE 0x150044FCL
#define DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE 0x16000000L
#define DIAXIS_FOOTBALLO_LATERAL 0x16008201L
#define DIAXIS_FOOTBALLO_MOVE 0x16010202L
#define DIBUTTON_FOOTBALLO_JUMP 0x16000401L
#define DIBUTTON_FOOTBALLO_LEFTARM 0x16000402L
#define DIBUTTON_FOOTBALLO_RIGHTARM 0x16000403L
#define DIBUTTON_FOOTBALLO_THROW 0x16000404L
#define DIBUTTON_FOOTBALLO_SPIN 0x16000405L
#define DIBUTTON_FOOTBALLO_MENU 0x160004FDL
#define DIBUTTON_FOOTBALLO_JUKE 0x16004406L
#define DIBUTTON_FOOTBALLO_SHOULDER 0x16004407L
#define DIBUTTON_FOOTBALLO_TURBO 0x16004408L
#define DIBUTTON_FOOTBALLO_DIVE 0x16004409L
#define DIBUTTON_FOOTBALLO_ZOOM 0x1600440AL
#define DIBUTTON_FOOTBALLO_SUBSTITUTE 0x1600440BL
#define DIBUTTON_FOOTBALLO_LEFT_LINK 0x1600C4E4L
#define DIBUTTON_FOOTBALLO_RIGHT_LINK 0x1600C4ECL
#define DIBUTTON_FOOTBALLO_FORWARD_LINK 0x160144E0L
#define DIBUTTON_FOOTBALLO_BACK_LINK 0x160144E8L
#define DIBUTTON_FOOTBALLO_DEVICE 0x160044FEL
#define DIBUTTON_FOOTBALLO_PAUSE 0x160044FCL
#define DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE 0x17000000L
#define DIAXIS_FOOTBALLD_LATERAL 0x17008201L
#define DIAXIS_FOOTBALLD_MOVE 0x17010202L
#define DIBUTTON_FOOTBALLD_PLAY 0x17000401L
#define DIBUTTON_FOOTBALLD_SELECT 0x17000402L
#define DIBUTTON_FOOTBALLD_JUMP 0x17000403L
#define DIBUTTON_FOOTBALLD_TACKLE 0x17000404L
#define DIBUTTON_FOOTBALLD_FAKE 0x17000405L
#define DIBUTTON_FOOTBALLD_SUPERTACKLE 0x17000406L
#define DIBUTTON_FOOTBALLD_MENU 0x170004FDL
#define DIBUTTON_FOOTBALLD_SPIN 0x17004407L
#define DIBUTTON_FOOTBALLD_SWIM 0x17004408L
#define DIBUTTON_FOOTBALLD_BULLRUSH 0x17004409L
#define DIBUTTON_FOOTBALLD_RIP 0x1700440AL
#define DIBUTTON_FOOTBALLD_AUDIBLE 0x1700440BL
#define DIBUTTON_FOOTBALLD_ZOOM 0x1700440CL
#define DIBUTTON_FOOTBALLD_SUBSTITUTE 0x1700440DL
#define DIBUTTON_FOOTBALLD_LEFT_LINK 0x1700C4E4L
#define DIBUTTON_FOOTBALLD_RIGHT_LINK 0x1700C4ECL
#define DIBUTTON_FOOTBALLD_FORWARD_LINK 0x170144E0L
#define DIBUTTON_FOOTBALLD_BACK_LINK 0x170144F8L
#define DIBUTTON_FOOTBALLD_DEVICE 0x170044FEL
#define DIBUTTON_FOOTBALLD_PAUSE 0x170044FCL
#define DIVIRTUAL_SPORTS_GOLF 0x18000000L
#define DIAXIS_GOLF_LATERAL 0x18008201L
#define DIAXIS_GOLF_MOVE 0x18010202L
#define DIBUTTON_GOLF_SWING 0x18000401L
#define DIBUTTON_GOLF_SELECT 0x18000402L
#define DIBUTTON_GOLF_UP 0x18000403L
#define DIBUTTON_GOLF_DOWN 0x18000404L
#define DIBUTTON_GOLF_TERRAIN 0x18000405L
#define DIBUTTON_GOLF_FLYBY 0x18000406L
#define DIBUTTON_GOLF_MENU 0x180004FDL
#define DIHATSWITCH_GOLF_SCROLL 0x18004601L
#define DIBUTTON_GOLF_ZOOM 0x18004407L
#define DIBUTTON_GOLF_TIMEOUT 0x18004408L
#define DIBUTTON_GOLF_SUBSTITUTE 0x18004409L
#define DIBUTTON_GOLF_LEFT_LINK 0x1800C4E4L
#define DIBUTTON_GOLF_RIGHT_LINK 0x1800C4ECL
#define DIBUTTON_GOLF_FORWARD_LINK 0x180144E0L
#define DIBUTTON_GOLF_BACK_LINK 0x180144E8L
#define DIBUTTON_GOLF_DEVICE 0x180044FEL
#define DIBUTTON_GOLF_PAUSE 0x180044FCL
#define DIVIRTUAL_SPORTS_HOCKEY_OFFENSE 0x19000000L
#define DIAXIS_HOCKEYO_LATERAL 0x19008201L
#define DIAXIS_HOCKEYO_MOVE 0x19010202L
#define DIBUTTON_HOCKEYO_SHOOT 0x19000401L
#define DIBUTTON_HOCKEYO_PASS 0x19000402L
#define DIBUTTON_HOCKEYO_BURST 0x19000403L
#define DIBUTTON_HOCKEYO_SPECIAL 0x19000404L
#define DIBUTTON_HOCKEYO_FAKE 0x19000405L
#define DIBUTTON_HOCKEYO_MENU 0x190004FDL
#define DIHATSWITCH_HOCKEYO_SCROLL 0x19004601L
#define DIBUTTON_HOCKEYO_ZOOM 0x19004406L
#define DIBUTTON_HOCKEYO_STRATEGY 0x19004407L
#define DIBUTTON_HOCKEYO_TIMEOUT 0x19004408L
#define DIBUTTON_HOCKEYO_SUBSTITUTE 0x19004409L
#define DIBUTTON_HOCKEYO_LEFT_LINK 0x1900C4E4L
#define DIBUTTON_HOCKEYO_RIGHT_LINK 0x1900C4ECL
#define DIBUTTON_HOCKEYO_FORWARD_LINK 0x190144E0L
#define DIBUTTON_HOCKEYO_BACK_LINK 0x190144E8L
#define DIBUTTON_HOCKEYO_DEVICE 0x190044FEL
#define DIBUTTON_HOCKEYO_PAUSE 0x190044FCL
#define DIVIRTUAL_SPORTS_HOCKEY_DEFENSE 0x1A000000L
#define DIAXIS_HOCKEYD_LATERAL 0x1A008201L
#define DIAXIS_HOCKEYD_MOVE 0x1A010202L
#define DIBUTTON_HOCKEYD_PLAYER 0x1A000401L
#define DIBUTTON_HOCKEYD_STEAL 0x1A000402L
#define DIBUTTON_HOCKEYD_BURST 0x1A000403L
#define DIBUTTON_HOCKEYD_BLOCK 0x1A000404L
#define DIBUTTON_HOCKEYD_FAKE 0x1A000405L
#define DIBUTTON_HOCKEYD_MENU 0x1A0004FDL
#define DIHATSWITCH_HOCKEYD_SCROLL 0x1A004601L
#define DIBUTTON_HOCKEYD_ZOOM 0x1A004406L
#define DIBUTTON_HOCKEYD_STRATEGY 0x1A004407L
#define DIBUTTON_HOCKEYD_TIMEOUT 0x1A004408L
#define DIBUTTON_HOCKEYD_SUBSTITUTE 0x1A004409L
#define DIBUTTON_HOCKEYD_LEFT_LINK 0x1A00C4E4L
#define DIBUTTON_HOCKEYD_RIGHT_LINK 0x1A00C4ECL
#define DIBUTTON_HOCKEYD_FORWARD_LINK 0x1A0144E0L
#define DIBUTTON_HOCKEYD_BACK_LINK 0x1A0144E8L
#define DIBUTTON_HOCKEYD_DEVICE 0x1A0044FEL
#define DIBUTTON_HOCKEYD_PAUSE 0x1A0044FCL
#define DIVIRTUAL_SPORTS_HOCKEY_GOALIE 0x1B000000L
#define DIAXIS_HOCKEYG_LATERAL 0x1B008201L
#define DIAXIS_HOCKEYG_MOVE 0x1B010202L
#define DIBUTTON_HOCKEYG_PASS 0x1B000401L
#define DIBUTTON_HOCKEYG_POKE 0x1B000402L
#define DIBUTTON_HOCKEYG_STEAL 0x1B000403L
#define DIBUTTON_HOCKEYG_BLOCK 0x1B000404L
#define DIBUTTON_HOCKEYG_MENU 0x1B0004FDL
#define DIHATSWITCH_HOCKEYG_SCROLL 0x1B004601L
#define DIBUTTON_HOCKEYG_ZOOM 0x1B004405L
#define DIBUTTON_HOCKEYG_STRATEGY 0x1B004406L
#define DIBUTTON_HOCKEYG_TIMEOUT 0x1B004407L
#define DIBUTTON_HOCKEYG_SUBSTITUTE 0x1B004408L
#define DIBUTTON_HOCKEYG_LEFT_LINK 0x1B00C4E4L
#define DIBUTTON_HOCKEYG_RIGHT_LINK 0x1B00C4ECL
#define DIBUTTON_HOCKEYG_FORWARD_LINK 0x1B0144E0L
#define DIBUTTON_HOCKEYG_BACK_LINK 0x1B0144E8L
#define DIBUTTON_HOCKEYG_DEVICE 0x1B0044FEL
#define DIBUTTON_HOCKEYG_PAUSE 0x1B0044FCL
#define DIVIRTUAL_SPORTS_BIKING_MOUNTAIN 0x1C000000L
#define DIAXIS_BIKINGM_TURN 0x1C008201L
#define DIAXIS_BIKINGM_PEDAL 0x1C010202L
#define DIBUTTON_BIKINGM_JUMP 0x1C000401L
#define DIBUTTON_BIKINGM_CAMERA 0x1C000402L
#define DIBUTTON_BIKINGM_SPECIAL1 0x1C000403L
#define DIBUTTON_BIKINGM_SELECT 0x1C000404L
#define DIBUTTON_BIKINGM_SPECIAL2 0x1C000405L
#define DIBUTTON_BIKINGM_MENU 0x1C0004FDL
#define DIHATSWITCH_BIKINGM_SCROLL 0x1C004601L
#define DIBUTTON_BIKINGM_ZOOM 0x1C004406L
#define DIAXIS_BIKINGM_BRAKE 0x1C044203L
#define DIBUTTON_BIKINGM_LEFT_LINK 0x1C00C4E4L
#define DIBUTTON_BIKINGM_RIGHT_LINK 0x1C00C4ECL
#define DIBUTTON_BIKINGM_FASTER_LINK 0x1C0144E0L
#define DIBUTTON_BIKINGM_SLOWER_LINK 0x1C0144E8L
#define DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK 0x1C0444E8L
#define DIBUTTON_BIKINGM_DEVICE 0x1C0044FEL
#define DIBUTTON_BIKINGM_PAUSE 0x1C0044FCL
#define DIVIRTUAL_SPORTS_SKIING 0x1D000000L
#define DIAXIS_SKIING_TURN 0x1D008201L
#define DIAXIS_SKIING_SPEED 0x1D010202L
#define DIBUTTON_SKIING_JUMP 0x1D000401L
#define DIBUTTON_SKIING_CROUCH 0x1D000402L
#define DIBUTTON_SKIING_CAMERA 0x1D000403L
#define DIBUTTON_SKIING_SPECIAL1 0x1D000404L
#define DIBUTTON_SKIING_SELECT 0x1D000405L
#define DIBUTTON_SKIING_SPECIAL2 0x1D000406L
#define DIBUTTON_SKIING_MENU 0x1D0004FDL
#define DIHATSWITCH_SKIING_GLANCE 0x1D004601L
#define DIBUTTON_SKIING_ZOOM 0x1D004407L
#define DIBUTTON_SKIING_LEFT_LINK 0x1D00C4E4L
#define DIBUTTON_SKIING_RIGHT_LINK 0x1D00C4ECL
#define DIBUTTON_SKIING_FASTER_LINK 0x1D0144E0L
#define DIBUTTON_SKIING_SLOWER_LINK 0x1D0144E8L
#define DIBUTTON_SKIING_DEVICE 0x1D0044FEL
#define DIBUTTON_SKIING_PAUSE 0x1D0044FCL
#define DIVIRTUAL_SPORTS_SOCCER_OFFENSE 0x1E000000L
#define DIAXIS_SOCCERO_LATERAL 0x1E008201L
#define DIAXIS_SOCCERO_MOVE 0x1E010202L
#define DIAXIS_SOCCERO_BEND 0x1E010203L
#define DIBUTTON_SOCCERO_SHOOT 0x1E000401L
#define DIBUTTON_SOCCERO_PASS 0x1E000402L
#define DIBUTTON_SOCCERO_FAKE 0x1E000403L
#define DIBUTTON_SOCCERO_PLAYER 0x1E000404L
#define DIBUTTON_SOCCERO_SPECIAL1 0x1E000405L
#define DIBUTTON_SOCCERO_SELECT 0x1E000406L
#define DIBUTTON_SOCCERO_MENU 0x1E0004FDL
#define DIHATSWITCH_SOCCERO_GLANCE 0x1E004601L
#define DIBUTTON_SOCCERO_SUBSTITUTE 0x1E004407L
#define DIBUTTON_SOCCERO_SHOOTLOW 0x1E004408L
#define DIBUTTON_SOCCERO_SHOOTHIGH 0x1E004409L
#define DIBUTTON_SOCCERO_PASSTHRU 0x1E00440AL
#define DIBUTTON_SOCCERO_SPRINT 0x1E00440BL
#define DIBUTTON_SOCCERO_CONTROL 0x1E00440CL
#define DIBUTTON_SOCCERO_HEAD 0x1E00440DL
#define DIBUTTON_SOCCERO_LEFT_LINK 0x1E00C4E4L
#define DIBUTTON_SOCCERO_RIGHT_LINK 0x1E00C4ECL
#define DIBUTTON_SOCCERO_FORWARD_LINK 0x1E0144E0L
#define DIBUTTON_SOCCERO_BACK_LINK 0x1E0144E8L
#define DIBUTTON_SOCCERO_DEVICE 0x1E0044FEL
#define DIBUTTON_SOCCERO_PAUSE 0x1E0044FCL
#define DIVIRTUAL_SPORTS_SOCCER_DEFENSE 0x1F000000L
#define DIAXIS_SOCCERD_LATERAL 0x1F008201L
#define DIAXIS_SOCCERD_MOVE 0x1F010202L
#define DIBUTTON_SOCCERD_BLOCK 0x1F000401L
#define DIBUTTON_SOCCERD_STEAL 0x1F000402L
#define DIBUTTON_SOCCERD_FAKE 0x1F000403L
#define DIBUTTON_SOCCERD_PLAYER 0x1F000404L
#define DIBUTTON_SOCCERD_SPECIAL 0x1F000405L
#define DIBUTTON_SOCCERD_SELECT 0x1F000406L
#define DIBUTTON_SOCCERD_SLIDE 0x1F000407L
#define DIBUTTON_SOCCERD_MENU 0x1F0004FDL
#define DIHATSWITCH_SOCCERD_GLANCE 0x1F004601L
#define DIBUTTON_SOCCERD_FOUL 0x1F004408L
#define DIBUTTON_SOCCERD_HEAD 0x1F004409L
#define DIBUTTON_SOCCERD_CLEAR 0x1F00440AL
#define DIBUTTON_SOCCERD_GOALIECHARGE 0x1F00440BL
#define DIBUTTON_SOCCERD_SUBSTITUTE 0x1F00440CL
#define DIBUTTON_SOCCERD_LEFT_LINK 0x1F00C4E4L
#define DIBUTTON_SOCCERD_RIGHT_LINK 0x1F00C4ECL
#define DIBUTTON_SOCCERD_FORWARD_LINK 0x1F0144E0L
#define DIBUTTON_SOCCERD_BACK_LINK 0x1F0144E8L
#define DIBUTTON_SOCCERD_DEVICE 0x1F0044FEL
#define DIBUTTON_SOCCERD_PAUSE 0x1F0044FCL
#define DIVIRTUAL_SPORTS_RACQUET 0x20000000L
#define DIAXIS_RACQUET_LATERAL 0x20008201L
#define DIAXIS_RACQUET_MOVE 0x20010202L
#define DIBUTTON_RACQUET_SWING 0x20000401L
#define DIBUTTON_RACQUET_BACKSWING 0x20000402L
#define DIBUTTON_RACQUET_SMASH 0x20000403L
#define DIBUTTON_RACQUET_SPECIAL 0x20000404L
#define DIBUTTON_RACQUET_SELECT 0x20000405L
#define DIBUTTON_RACQUET_MENU 0x200004FDL
#define DIHATSWITCH_RACQUET_GLANCE 0x20004601L
#define DIBUTTON_RACQUET_TIMEOUT 0x20004406L
#define DIBUTTON_RACQUET_SUBSTITUTE 0x20004407L
#define DIBUTTON_RACQUET_LEFT_LINK 0x2000C4E4L
#define DIBUTTON_RACQUET_RIGHT_LINK 0x2000C4ECL
#define DIBUTTON_RACQUET_FORWARD_LINK 0x200144E0L
#define DIBUTTON_RACQUET_BACK_LINK 0x200144E8L
#define DIBUTTON_RACQUET_DEVICE 0x200044FEL
#define DIBUTTON_RACQUET_PAUSE 0x200044FCL
#define DIVIRTUAL_ARCADE_SIDE2SIDE 0x21000000L
#define DIAXIS_ARCADES_LATERAL 0x21008201L
#define DIAXIS_ARCADES_MOVE 0x21010202L
#define DIBUTTON_ARCADES_THROW 0x21000401L
#define DIBUTTON_ARCADES_CARRY 0x21000402L
#define DIBUTTON_ARCADES_ATTACK 0x21000403L
#define DIBUTTON_ARCADES_SPECIAL 0x21000404L
#define DIBUTTON_ARCADES_SELECT 0x21000405L
#define DIBUTTON_ARCADES_MENU 0x210004FDL
#define DIHATSWITCH_ARCADES_VIEW 0x21004601L
#define DIBUTTON_ARCADES_LEFT_LINK 0x2100C4E4L
#define DIBUTTON_ARCADES_RIGHT_LINK 0x2100C4ECL
#define DIBUTTON_ARCADES_FORWARD_LINK 0x210144E0L
#define DIBUTTON_ARCADES_BACK_LINK 0x210144E8L
#define DIBUTTON_ARCADES_VIEW_UP_LINK 0x2107C4E0L
#define DIBUTTON_ARCADES_VIEW_DOWN_LINK 0x2107C4E8L
#define DIBUTTON_ARCADES_VIEW_LEFT_LINK 0x2107C4E4L
#define DIBUTTON_ARCADES_VIEW_RIGHT_LINK 0x2107C4ECL
#define DIBUTTON_ARCADES_DEVICE 0x210044FEL
#define DIBUTTON_ARCADES_PAUSE 0x210044FCL
#define DIVIRTUAL_ARCADE_PLATFORM 0x22000000L
#define DIAXIS_ARCADEP_LATERAL 0x22008201L
#define DIAXIS_ARCADEP_MOVE 0x22010202L
#define DIBUTTON_ARCADEP_JUMP 0x22000401L
#define DIBUTTON_ARCADEP_FIRE 0x22000402L
#define DIBUTTON_ARCADEP_CROUCH 0x22000403L
#define DIBUTTON_ARCADEP_SPECIAL 0x22000404L
#define DIBUTTON_ARCADEP_SELECT 0x22000405L
#define DIBUTTON_ARCADEP_MENU 0x220004FDL
#define DIHATSWITCH_ARCADEP_VIEW 0x22004601L
#define DIBUTTON_ARCADEP_FIRESECONDARY 0x22004406L
#define DIBUTTON_ARCADEP_LEFT_LINK 0x2200C4E4L
#define DIBUTTON_ARCADEP_RIGHT_LINK 0x2200C4ECL
#define DIBUTTON_ARCADEP_FORWARD_LINK 0x220144E0L
#define DIBUTTON_ARCADEP_BACK_LINK 0x220144E8L
#define DIBUTTON_ARCADEP_VIEW_UP_LINK 0x2207C4E0L
#define DIBUTTON_ARCADEP_VIEW_DOWN_LINK 0x2207C4E8L
#define DIBUTTON_ARCADEP_VIEW_LEFT_LINK 0x2207C4E4L
#define DIBUTTON_ARCADEP_VIEW_RIGHT_LINK 0x2207C4ECL
#define DIBUTTON_ARCADEP_DEVICE 0x220044FEL
#define DIBUTTON_ARCADEP_PAUSE 0x220044FCL
#define DIVIRTUAL_CAD_2DCONTROL 0x23000000L
#define DIAXIS_2DCONTROL_LATERAL 0x23008201L
#define DIAXIS_2DCONTROL_MOVE 0x23010202L
#define DIAXIS_2DCONTROL_INOUT 0x23010203L
#define DIBUTTON_2DCONTROL_SELECT 0x23000401L
#define DIBUTTON_2DCONTROL_SPECIAL1 0x23000402L
#define DIBUTTON_2DCONTROL_SPECIAL 0x23000403L
#define DIBUTTON_2DCONTROL_SPECIAL2 0x23000404L
#define DIBUTTON_2DCONTROL_MENU 0x230004FDL
#define DIHATSWITCH_2DCONTROL_HATSWITCH 0x23004601L
#define DIAXIS_2DCONTROL_ROTATEZ 0x23024204L
#define DIBUTTON_2DCONTROL_DISPLAY 0x23004405L
#define DIBUTTON_2DCONTROL_DEVICE 0x230044FEL
#define DIBUTTON_2DCONTROL_PAUSE 0x230044FCL
#define DIVIRTUAL_CAD_3DCONTROL 0x24000000L
#define DIAXIS_3DCONTROL_LATERAL 0x24008201L
#define DIAXIS_3DCONTROL_MOVE 0x24010202L
#define DIAXIS_3DCONTROL_INOUT 0x24018203L
#define DIBUTTON_3DCONTROL_SELECT 0x24000401L
#define DIBUTTON_3DCONTROL_SPECIAL1 0x24000402L
#define DIBUTTON_3DCONTROL_SPECIAL 0x24000403L
#define DIBUTTON_3DCONTROL_SPECIAL2 0x24000404L
#define DIBUTTON_3DCONTROL_MENU 0x240004FDL
#define DIHATSWITCH_3DCONTROL_HATSWITCH 0x24004601L
#define DIAXIS_3DCONTROL_ROTATEX 0x24034204L
#define DIAXIS_3DCONTROL_ROTATEY 0x2402C205L
#define DIAXIS_3DCONTROL_ROTATEZ 0x24024206L
#define DIBUTTON_3DCONTROL_DISPLAY 0x24004405L
#define DIBUTTON_3DCONTROL_DEVICE 0x240044FEL
#define DIBUTTON_3DCONTROL_PAUSE 0x240044FCL
#define DIVIRTUAL_CAD_FLYBY 0x25000000L
#define DIAXIS_CADF_LATERAL 0x25008201L
#define DIAXIS_CADF_MOVE 0x25010202L
#define DIAXIS_CADF_INOUT 0x25018203L
#define DIBUTTON_CADF_SELECT 0x25000401L
#define DIBUTTON_CADF_SPECIAL1 0x25000402L
#define DIBUTTON_CADF_SPECIAL 0x25000403L
#define DIBUTTON_CADF_SPECIAL2 0x25000404L
#define DIBUTTON_CADF_MENU 0x250004FDL
#define DIHATSWITCH_CADF_HATSWITCH 0x25004601L
#define DIAXIS_CADF_ROTATEX 0x25034204L
#define DIAXIS_CADF_ROTATEY 0x2502C205L
#define DIAXIS_CADF_ROTATEZ 0x25024206L
#define DIBUTTON_CADF_DISPLAY 0x25004405L
#define DIBUTTON_CADF_DEVICE 0x250044FEL
#define DIBUTTON_CADF_PAUSE 0x250044FCL
#define DIVIRTUAL_CAD_MODEL 0x26000000L
#define DIAXIS_CADM_LATERAL 0x26008201L
#define DIAXIS_CADM_MOVE 0x26010202L
#define DIAXIS_CADM_INOUT 0x26010203L
#define DIBUTTON_CADM_SELECT 0x26000401L
#define DIBUTTON_CADM_SPECIAL1 0x26000402L
#define DIBUTTON_CADM_SPECIAL 0x26000403L
#define DIBUTTON_CADM_SPECIAL2 0x26000404L
#define DIBUTTON_CADM_MENU 0x260004FDL
#define DIHATSWITCH_CADM_HATSWITCH 0x26004601L
#define DIAXIS_CADM_ROTATEX 0x26034204L
#define DIAXIS_CADM_ROTATEY 0x2602C205L
#define DIAXIS_CADM_ROTATEZ 0x26024206L
#define DIBUTTON_CADM_DISPLAY 0x26004405L
#define DIBUTTON_CADM_DEVICE 0x260044FEL
#define DIBUTTON_CADM_PAUSE 0x260044FCL
#define DIVIRTUAL_REMOTE_CONTROL 0x27000000L
#define DIAXIS_REMOTE_SLIDER 0x27050201L
#define DIBUTTON_REMOTE_MUTE 0x27000401L
#define DIBUTTON_REMOTE_SELECT 0x27000402L
#define DIBUTTON_REMOTE_PLAY 0x27002403L
#define DIBUTTON_REMOTE_CUE 0x27002404L
#define DIBUTTON_REMOTE_REVIEW 0x27002405L
#define DIBUTTON_REMOTE_CHANGE 0x27002406L
#define DIBUTTON_REMOTE_RECORD 0x27002407L
#define DIBUTTON_REMOTE_MENU 0x270004FDL
#define DIAXIS_REMOTE_SLIDER2 0x27054202L
#define DIBUTTON_REMOTE_TV 0x27005C08L
#define DIBUTTON_REMOTE_CABLE 0x27005C09L
#define DIBUTTON_REMOTE_CD 0x27005C0AL
#define DIBUTTON_REMOTE_VCR 0x27005C0BL
#define DIBUTTON_REMOTE_TUNER 0x27005C0CL
#define DIBUTTON_REMOTE_DVD 0x27005C0DL
#define DIBUTTON_REMOTE_ADJUST 0x27005C0EL
#define DIBUTTON_REMOTE_DIGIT0 0x2700540FL
#define DIBUTTON_REMOTE_DIGIT1 0x27005410L
#define DIBUTTON_REMOTE_DIGIT2 0x27005411L
#define DIBUTTON_REMOTE_DIGIT3 0x27005412L
#define DIBUTTON_REMOTE_DIGIT4 0x27005413L
#define DIBUTTON_REMOTE_DIGIT5 0x27005414L
#define DIBUTTON_REMOTE_DIGIT6 0x27005415L
#define DIBUTTON_REMOTE_DIGIT7 0x27005416L
#define DIBUTTON_REMOTE_DIGIT8 0x27005417L
#define DIBUTTON_REMOTE_DIGIT9 0x27005418L
#define DIBUTTON_REMOTE_DEVICE 0x270044FEL
#define DIBUTTON_REMOTE_PAUSE 0x270044FCL
#define DIVIRTUAL_BROWSER_CONTROL 0x28000000L
#define DIAXIS_BROWSER_LATERAL 0x28008201L
#define DIAXIS_BROWSER_MOVE 0x28010202L
#define DIBUTTON_BROWSER_SELECT 0x28000401L
#define DIAXIS_BROWSER_VIEW 0x28018203L
#define DIBUTTON_BROWSER_REFRESH 0x28000402L
#define DIBUTTON_BROWSER_MENU 0x280004FDL
#define DIBUTTON_BROWSER_SEARCH 0x28004403L
#define DIBUTTON_BROWSER_STOP 0x28004404L
#define DIBUTTON_BROWSER_HOME 0x28004405L
#define DIBUTTON_BROWSER_FAVORITES 0x28004406L
#define DIBUTTON_BROWSER_NEXT 0x28004407L
#define DIBUTTON_BROWSER_PREVIOUS 0x28004408L
#define DIBUTTON_BROWSER_HISTORY 0x28004409L
#define DIBUTTON_BROWSER_PRINT 0x2800440AL
#define DIBUTTON_BROWSER_DEVICE 0x280044FEL
#define DIBUTTON_BROWSER_PAUSE 0x280044FCL
#define DIVIRTUAL_DRIVING_MECHA 0x29000000L
#define DIAXIS_MECHA_STEER 0x29008201L
#define DIAXIS_MECHA_TORSO 0x29010202L
#define DIAXIS_MECHA_ROTATE 0x29020203L
#define DIAXIS_MECHA_THROTTLE 0x29038204L
#define DIBUTTON_MECHA_FIRE 0x29000401L
#define DIBUTTON_MECHA_WEAPONS 0x29000402L
#define DIBUTTON_MECHA_TARGET 0x29000403L
#define DIBUTTON_MECHA_REVERSE 0x29000404L
#define DIBUTTON_MECHA_ZOOM 0x29000405L
#define DIBUTTON_MECHA_JUMP 0x29000406L
#define DIBUTTON_MECHA_MENU 0x290004FDL
#define DIBUTTON_MECHA_CENTER 0x29004407L
#define DIHATSWITCH_MECHA_GLANCE 0x29004601L
#define DIBUTTON_MECHA_VIEW 0x29004408L
#define DIBUTTON_MECHA_FIRESECONDARY 0x29004409L
#define DIBUTTON_MECHA_LEFT_LINK 0x2900C4E4L
#define DIBUTTON_MECHA_RIGHT_LINK 0x2900C4ECL
#define DIBUTTON_MECHA_FORWARD_LINK 0x290144E0L
#define DIBUTTON_MECHA_BACK_LINK 0x290144E8L
#define DIBUTTON_MECHA_ROTATE_LEFT_LINK 0x290244E4L
#define DIBUTTON_MECHA_ROTATE_RIGHT_LINK 0x290244ECL
#define DIBUTTON_MECHA_FASTER_LINK 0x2903C4E0L
#define DIBUTTON_MECHA_SLOWER_LINK 0x2903C4E8L
#define DIBUTTON_MECHA_DEVICE 0x290044FEL
#define DIBUTTON_MECHA_PAUSE 0x290044FCL
#define DIAXIS_ANY_X_1 0xFF00C201L
#define DIAXIS_ANY_X_2 0xFF00C202L
#define DIAXIS_ANY_Y_1 0xFF014201L
#define DIAXIS_ANY_Y_2 0xFF014202L
#define DIAXIS_ANY_Z_1 0xFF01C201L
#define DIAXIS_ANY_Z_2 0xFF01C202L
#define DIAXIS_ANY_R_1 0xFF024201L
#define DIAXIS_ANY_R_2 0xFF024202L
#define DIAXIS_ANY_U_1 0xFF02C201L
#define DIAXIS_ANY_U_2 0xFF02C202L
#define DIAXIS_ANY_V_1 0xFF034201L
#define DIAXIS_ANY_V_2 0xFF034202L
#define DIAXIS_ANY_A_1 0xFF03C201L
#define DIAXIS_ANY_A_2 0xFF03C202L
#define DIAXIS_ANY_B_1 0xFF044201L
#define DIAXIS_ANY_B_2 0xFF044202L
#define DIAXIS_ANY_C_1 0xFF04C201L
#define DIAXIS_ANY_C_2 0xFF04C202L
#define DIAXIS_ANY_S_1 0xFF054201L
#define DIAXIS_ANY_S_2 0xFF054202L
#define DIAXIS_ANY_1 0xFF004201L
#define DIAXIS_ANY_2 0xFF004202L
#define DIAXIS_ANY_3 0xFF004203L
#define DIAXIS_ANY_4 0xFF004204L
#define DIPOV_ANY_1 0xFF004601L
#define DIPOV_ANY_2 0xFF004602L
#define DIPOV_ANY_3 0xFF004603L
#define DIPOV_ANY_4 0xFF004604L
#define DIBUTTON_ANY( x ) (0xFF004400L | (x))
/* DirectInput constant force effect */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DICONSTANTFORCE {
LONG lMagnitude;
} DICONSTANTFORCE;
typedef DICONSTANTFORCE *LPDICONSTANTFORCE;
typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;
#endif
/* DirectInput ramp force effect */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIRAMPFORCE {
LONG lStart;
LONG lEnd;
} DIRAMPFORCE;
typedef DIRAMPFORCE *LPDIRAMPFORCE;
typedef const DIRAMPFORCE *LPCDIRAMPFORCE;
#endif
/* DirectInput periodic effect */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIPERIODIC {
DWORD dwMagnitude;
LONG lOffset;
DWORD dwPhase;
DWORD dwPeriod;
} DIPERIODIC;
typedef DIPERIODIC *LPDIPERIODIC;
typedef const DIPERIODIC *LPCDIPERIODIC;
#endif
/* DirectInput condition effect */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DICONDITION {
LONG lOffset;
LONG lPositiveCoefficient;
LONG lNegativeCoefficient;
DWORD dwPositiveSaturation;
DWORD dwNegativeSaturation;
LONG lDeadBand;
} DICONDITION;
typedef DICONDITION *LPDICONDITION;
typedef const DICONDITION *LPCDICONDITION;
#endif
/* DirectInput custom force effect */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DICUSTOMFORCE {
DWORD cChannels;
DWORD dwSamplePeriod;
DWORD cSamples;
LPLONG rglForceData;
} DICUSTOMFORCE;
typedef DICUSTOMFORCE *LPDICUSTOMFORCE;
typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;
#endif
/* DirectInput envelope */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIENVELOPE {
DWORD dwSize;
DWORD dwAttackLevel;
DWORD dwAttackTime;
DWORD dwFadeLevel;
DWORD dwFadeTime;
} DIENVELOPE;
typedef DIENVELOPE *LPDIENVELOPE;
typedef const DIENVELOPE *LPCDIENVELOPE;
#endif
/* DirectInput effect for DirectX 5 compatibility */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIEFFECT_DX5 {
DWORD dwSize;
DWORD dwFlags;
DWORD dwDuration;
DWORD dwSamplePeriod;
DWORD dwGain;
DWORD dwTriggerButton;
DWORD dwTriggerRepeatInterval;
DWORD cAxes;
LPDWORD rgdwAxes;
LPLONG rglDirection;
LPDIENVELOPE lpEnvelope;
DWORD cbTypeSpecificParams;
LPVOID lpvTypeSpecificParams;
} DIEFFECT_DX5;
typedef DIEFFECT_DX5 *LPDIEFFECT_DX5;
typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5;
#endif
/* DirectInput effect */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIEFFECT {
DWORD dwSize;
DWORD dwFlags;
DWORD dwDuration;
DWORD dwSamplePeriod;
DWORD dwGain;
DWORD dwTriggerButton;
DWORD dwTriggerRepeatInterval;
DWORD cAxes;
LPDWORD rgdwAxes;
LPLONG rglDirection;
LPDIENVELOPE lpEnvelope;
DWORD cbTypeSpecificParams;
LPVOID lpvTypeSpecificParams;
#if (DIRECTINPUT_VERSION >= 0x0600)
DWORD dwStartDelay;
#endif
} DIEFFECT;
typedef DIEFFECT *LPDIEFFECT;
typedef DIEFFECT DIEFFECT_DX6;
typedef LPDIEFFECT LPDIEFFECT_DX6;
typedef const DIEFFECT *LPCDIEFFECT;
#endif
/* DirectInput file effect */
#if (DIRECTINPUT_VERSION >= 0x0700)
typedef struct DIFILEEFFECT {
DWORD dwSize;
GUID GuidEffect;
LPCDIEFFECT lpDiEffect;
CHAR szFriendlyName[MAX_PATH];
} DIFILEEFFECT;
typedef DIFILEEFFECT *LPDIFILEEFFECT;
typedef const DIFILEEFFECT *LPCDIFILEEFFECT;
#endif
/* DirectInput effect enumeration callback */
#if (DIRECTINPUT_VERSION >= 0x0700)
typedef BOOL (PASCAL *LPDIENUMEFFECTSINFILECALLBACK)( LPCDIFILEEFFECT, LPVOID );
#endif
/* DirectInput effect escape */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIEFFESCAPE {
DWORD dwSize;
DWORD dwCommand;
LPVOID lpvInBuffer;
DWORD cbInBuffer;
LPVOID lpvOutBuffer;
DWORD cbOutBuffer;
} DIEFFESCAPE;
typedef DIEFFESCAPE *LPDIEFFESCAPE;
#endif
/* DirectInput device capabilities for DirectX 3 compatibility */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIDEVCAPS_DX3 {
DWORD dwSize;
DWORD dwFlags;
DWORD dwDevType;
DWORD dwAxes;
DWORD dwButtons;
DWORD dwPOVs;
} DIDEVCAPS_DX3;
typedef DIDEVCAPS_DX3 *LPDIDEVCAPS_DX3;
#endif
/* DirectInput device capabilities */
typedef struct DIDEVCAPS {
DWORD dwSize;
DWORD dwFlags;
DWORD dwDevType;
DWORD dwAxes;
DWORD dwButtons;
DWORD dwPOVs;
#if (DIRECTINPUT_VERSION >= 0x0500)
DWORD dwFFSamplePeriod;
DWORD dwFFMinTimeResolution;
DWORD dwFirmwareRevision;
DWORD dwHardwareRevision;
DWORD dwFFDriverRevision;
#endif
} DIDEVCAPS;
typedef DIDEVCAPS *LPDIDEVCAPS;
/* DirectInput object data format */
typedef struct _DIOBJECTDATAFORMAT {
const GUID *pguid;
DWORD dwOfs;
DWORD dwType;
DWORD dwFlags;
} DIOBJECTDATAFORMAT;
typedef DIOBJECTDATAFORMAT *LPDIOBJECTDATAFORMAT;
typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;
/* DirectInput data format */
typedef struct _DIDATAFORMAT {
DWORD dwSize;
DWORD dwObjSize;
DWORD dwFlags;
DWORD dwDataSize;
DWORD dwNumObjs;
LPDIOBJECTDATAFORMAT rgodf;
} DIDATAFORMAT;
typedef DIDATAFORMAT *LPDIDATAFORMAT;
typedef const DIDATAFORMAT *LPCDIDATAFORMAT;
/* DirectInput action */
#if (DIRECTINPUT_VERSION > 0x0700)
typedef struct _DIACTIONA {
UINT_PTR uAppData;
DWORD dwSemantic;
DWORD dwFlags;
union {
LPCSTR lptszActionName;
UINT uResIdString;
};
GUID guidInstance;
DWORD dwObjID;
DWORD dwHow;
} DIACTIONA;
typedef DIACTIONA *LPDIACTIONA;
typedef const DIACTIONA *LPCDIACTIONA;
typedef struct _DIACTIONW {
UINT_PTR uAppData;
DWORD dwSemantic;
DWORD dwFlags;
union {
LPCWSTR lptszActionName;
UINT uResIdString;
};
GUID guidInstance;
DWORD dwObjID;
DWORD dwHow;
} DIACTIONW;
typedef DIACTIONW *LPDIACTIONW;
typedef const DIACTIONW *LPCDIACTIONW;
#ifdef UNICODE
typedef DIACTIONW DIACTION;
typedef LPDIACTIONW LPDIACTION;
typedef LPCDIACTIONW LPCDIACTION;
#else
typedef DIACTIONA DIACTION;
typedef LPDIACTIONA LPDIACTION;
typedef LPCDIACTIONA LPCDIACTION;
#endif
#endif
/* DirectInput action format */
#if (DIRECTINPUT_VERSION > 0x0700)
typedef struct _DIACTIONFORMATA {
DWORD dwSize;
DWORD dwActionSize;
DWORD dwDataSize;
DWORD dwNumActions;
LPDIACTIONA rgoAction;
GUID guidActionMap;
DWORD dwGenre;
DWORD dwBufferSize;
LONG lAxisMin;
LONG lAxisMax;
HINSTANCE hInstString;
FILETIME ftTimeStamp;
DWORD dwCRC;
CHAR tszActionMap[MAX_PATH];
} DIACTIONFORMATA;
typedef DIACTIONFORMATA *LPDIACTIONFORMATA;
typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA;
typedef struct _DIACTIONFORMATW {
DWORD dwSize;
DWORD dwActionSize;
DWORD dwDataSize;
DWORD dwNumActions;
LPDIACTIONW rgoAction;
GUID guidActionMap;
DWORD dwGenre;
DWORD dwBufferSize;
LONG lAxisMin;
LONG lAxisMax;
HINSTANCE hInstString;
FILETIME ftTimeStamp;
DWORD dwCRC;
WCHAR tszActionMap[MAX_PATH];
} DIACTIONFORMATW;
typedef DIACTIONFORMATW *LPDIACTIONFORMATW;
typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW;
#ifdef UNICODE
typedef DIACTIONFORMATW DIACTIONFORMAT;
typedef LPDIACTIONFORMATW LPDIACTIONFORMAT;
typedef LPCDIACTIONFORMATW LPCDIACTIONFORMAT;
#else
typedef DIACTIONFORMATA DIACTIONFORMAT;
typedef LPDIACTIONFORMATA LPDIACTIONFORMAT;
typedef LPCDIACTIONFORMATA LPCDIACTIONFORMAT;
#endif
#endif
/* DirectInput color set */
#if (DIRECTINPUT_VERSION > 0x0700)
typedef struct _DICOLORSET {
DWORD dwSize;
D3DCOLOR cTextFore;
D3DCOLOR cTextHighlight;
D3DCOLOR cCalloutLine;
D3DCOLOR cCalloutHighlight;
D3DCOLOR cBorder;
D3DCOLOR cControlFill;
D3DCOLOR cHighlightFill;
D3DCOLOR cAreaFill;
} DICOLORSET;
typedef DICOLORSET *LPDICOLORSET;
typedef const DICOLORSET *LPCDICOLORSET;
#endif
/* DirectInput configure devices parameters */
#if (DIRECTINPUT_VERSION > 0x0700)
typedef struct _DICONFIGUREDEVICESPARAMSA {
DWORD dwSize;
DWORD dwcUsers;
LPSTR lptszUserNames;
DWORD dwcFormats;
LPDIACTIONFORMATA lprgFormats;
HWND hwnd;
DICOLORSET dics;
IUnknown *lpUnkDDSTarget;
} DICONFIGUREDEVICESPARAMSA;
typedef DICONFIGUREDEVICESPARAMSA *LPDICONFIGUREDEVICESPARAMSA;
typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA;
typedef struct _DICONFIGUREDEVICESPARAMW {
DWORD dwSize;
DWORD dwcUsers;
LPWSTR lptszUserNames;
DWORD dwcFormats;
LPDIACTIONFORMATW lprgFormats;
HWND hwnd;
DICOLORSET dics;
IUnknown *lpUnkDDSTarget;
} DICONFIGUREDEVICESPARAMSW;
typedef DICONFIGUREDEVICESPARAMSW *LPDICONFIGUREDEVICESPARAMSW;
typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW;
#ifdef UNICODE
typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS;
typedef LPDICONFIGUREDEVICESPARAMSW LPDICONFIGUREDEVICESPARAMS;
typedef LPCDICONFIGUREDEVICESPARAMSW LPCDICONFIGUREDEVICESPARAMS;
#else
typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS;
typedef LPDICONFIGUREDEVICESPARAMSA LPDICONFIGUREDEVICESPARAMS;
typedef LPCDICONFIGUREDEVICESPARAMSA LPCDICONFIGUREDEVICESPARAMS;
#endif
#endif
/* DirectInput device image information */
#if (DIRECTINPUT_VERSION > 0x0700)
typedef struct _DIDEVICEIMAGEINFOA {
CHAR tszImagePath[MAX_PATH];
DWORD dwFlags;
DWORD dwViewID;
RECT rcOverlay;
DWORD dwObjID;
DWORD dwcValidPts;
POINT rgptCalloutLine[5];
RECT rcCalloutRect;
DWORD dwTextAlign;
} DIDEVICEIMAGEINFOA;
typedef DIDEVICEIMAGEINFOA *LPDIDEVICEIMAGEINFOA;
typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA;
typedef struct _DIDEVICEIMAGEINFOW {
WCHAR tszImagePath[MAX_PATH];
DWORD dwFlags;
DWORD dwViewID;
RECT rcOverlay;
DWORD dwObjID;
DWORD dwcValidPts;
POINT rgptCalloutLine[5];
RECT rcCalloutRect;
DWORD dwTextAlign;
} DIDEVICEIMAGEINFOW;
typedef DIDEVICEIMAGEINFOW *LPDIDEVICEIMAGEINFOW;
typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW;
#ifdef UNICODE
typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO;
typedef LPDIDEVICEIMAGEINFOW LPDIDEVICEIMAGEINFO;
typedef LPCDIDEVICEIMAGEINFOW LPCDIDEVICEIMAGEINFO;
#else
typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO;
typedef LPDIDEVICEIMAGEINFOA LPDIDEVICEIMAGEINFO;
typedef LPCDIDEVICEIMAGEINFOA LPCDIDEVICEIMAGEINFO;
#endif
#endif
/* DirectInput device image information header */
#if (DIRECTINPUT_VERSION > 0x0700)
typedef struct _DIDEVICEIMAGEINFOHEADERA {
DWORD dwSize;
DWORD dwSizeImageInfo;
DWORD dwcViews;
DWORD dwcButtons;
DWORD dwcAxes;
DWORD dwcPOVs;
DWORD dwBufferSize;
DWORD dwBufferUsed;
LPDIDEVICEIMAGEINFOA lprgImageInfoArray;
} DIDEVICEIMAGEINFOHEADERA;
typedef DIDEVICEIMAGEINFOHEADERA *LPDIDEVICEIMAGEINFOHEADERA;
typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA;
typedef struct _DIDEVICEIMAGEINFOHEADERW {
DWORD dwSize;
DWORD dwSizeImageInfo;
DWORD dwcViews;
DWORD dwcButtons;
DWORD dwcAxes;
DWORD dwcPOVs;
DWORD dwBufferSize;
DWORD dwBufferUsed;
LPDIDEVICEIMAGEINFOW lprgImageInfoArray;
} DIDEVICEIMAGEINFOHEADERW;
typedef DIDEVICEIMAGEINFOHEADERW *LPDIDEVICEIMAGEINFOHEADERW;
typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW;
#ifdef UNICODE
typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER;
typedef LPDIDEVICEIMAGEINFOHEADERW LPDIDEVICEIMAGEINFOHEADER;
typedef LPCDIDEVICEIMAGEINFOHEADERW LPCDIDEVICEIMAGEINFOHEADER;
#else
typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER;
typedef LPDIDEVICEIMAGEINFOHEADERA LPDIDEVICEIMAGEINFOHEADER;
typedef LPCDIDEVICEIMAGEINFOHEADERA LPCDIDEVICEIMAGEINFOHEADER;
#endif
#endif
/* DirectInput device object instance for DirectX 3 compatibility */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
DWORD dwSize;
GUID guidType;
DWORD dwOfs;
DWORD dwType;
DWORD dwFlags;
CHAR tszName[MAX_PATH];
} DIDEVICEOBJECTINSTANCE_DX3A;
typedef DIDEVICEOBJECTINSTANCE_DX3A *LPDIDEVICEOBJECTINSTANCE_DX3A;
typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;
typedef struct DIDEVICEOBJECTINSTANCE_DX3W {
DWORD dwSize;
GUID guidType;
DWORD dwOfs;
DWORD dwType;
DWORD dwFlags;
WCHAR tszName[MAX_PATH];
} DIDEVICEOBJECTINSTANCE_DX3W;
typedef DIDEVICEOBJECTINSTANCE_DX3W *LPDIDEVICEOBJECTINSTANCE_DX3W;
typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;
#ifdef UNICODE
typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3;
typedef LPDIDEVICEOBJECTINSTACE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3;
typedef LPCDIDEVICEOBJECTINSTANCE_DX3W LPCDIDEVICEOBJECTINSTANCE_DX3;
#else
typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3;
typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3;
typedef LPCDIDEVICEOBJECTINSTANCE_DX3A LPCDIDEVICEOBJECTINSTANCE_DX3;
#endif
#endif
/* DirectInput device object instance */
typedef struct DIDEVICEOBJECTINSTANCEA {
DWORD dwSize;
GUID guidType;
DWORD dwOfs;
DWORD dwType;
DWORD dwFlags;
CHAR tszName[MAX_PATH];
#if (DIRECTINPUT_VERSION >= 0x0500)
DWORD dwFFMaxForce;
DWORD dwFFForceResolution;
WORD wCollectionNumber;
WORD wDesignatorIndex;
WORD wUsagePage;
WORD wUsage;
DWORD dwDimension;
WORD wExponent;
WORD wReportId;
#endif
} DIDEVICEOBJECTINSTANCEA;
typedef DIDEVICEOBJECTINSTANCEA *LPDIDEVICEOBJECTINSTANCEA;
typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;
typedef struct DIDEVICEOBJECTINSTANCEW {
DWORD dwSize;
GUID guidType;
DWORD dwOfs;
DWORD dwType;
DWORD dwFlags;
WCHAR tszName[MAX_PATH];
#if (DIRECTINPUT_VERSION >= 0x0500)
DWORD dwFFMaxForce;
DWORD dwFFForceResolution;
WORD wCollectionNumber;
WORD wDesignatorIndex;
WORD wUsagePage;
WORD wUsage;
DWORD dwDimension;
WORD wExponent;
WORD wReportId;
#endif
} DIDEVICEOBJECTINSTANCEW;
typedef DIDEVICEOBJECTINSTANCEW *LPDIDEVICEOBJECTINSTANCEW;
typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;
#ifdef UNICODE
typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE;
typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE;
typedef LPCDIDEVICEOBJECTINSTANCEW LPCDIDEVICEOBJECTINSTANCE;
#else
typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE;
typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE;
typedef LPCDIDEVICEOBJECTINSTANCEA LPCDIDEVICEOBJECTINSTANCE;
#endif
/* DirectInput device object enumeration callback */
typedef BOOL (PASCAL *LPDIENUMDEVICEOBJECTSCALLBACKA)( LPCDIDEVICEOBJECTINSTANCEA, LPVOID );
typedef BOOL (PASCAL *LPDIENUMDEVICEOBJECTSCALLBACKW)( LPCDIDEVICEOBJECTINSTANCEW, LPVOID );
#ifdef UNICODE
#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKW
#else
#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKA
#endif
/* DirectInput property header */
typedef struct DIPROPHEADER {
DWORD dwSize;
DWORD dwHeaderSize;
DWORD dwObj;
DWORD dwHow;
} DIPROPHEADER;
typedef DIPROPHEADER *LPDIPROPHEADER;
typedef const DIPROPHEADER *LPCDIPROPHEADER;
/* DirectInput property DWORD */
typedef struct DIPROPDWORD {
DIPROPHEADER diph;
DWORD dwData;
} DIPROPDWORD;
typedef DIPROPDWORD *LPDIPROPDWORD;
typedef const DIPROPDWORD *LPCDIPROPDWORD;
/* DirectInput property pointer */
#if (DIRECTINPUT_VERSION >= 0x0800)
typedef struct DIPROPPOINTER {
DIPROPHEADER diph;
UINT_PTR uData;
} DIPROPPOINTER;
typedef DIPROPPOINTER *LPDIPROPPOINTER;
typedef const DIPROPPOINTER *LPCDIPROPPOINTER;
#endif
/* DirectInput property range */
typedef struct DIPROPRANGE {
DIPROPHEADER diph;
LONG lMin;
LONG lMax;
} DIPROPRANGE;
typedef DIPROPRANGE *LPDIPROPRANGE;
typedef const DIPROPRANGE *LPCDIPROPRANGE;
/* DirectInput property calibration */
#if (DIRECTINPUT_VERSION >= 0x050A)
typedef struct DIPROPCAL {
DIPROPHEADER diph;
LONG lMin;
LONG lCenter;
LONG lMax;
} DIPROPCAL;
typedef DIPROPCAL *LPDIPROPCAL;
typedef const DIPROPCAL *LPCDIPROPCAL;
#endif
/* DirectInput property calibration point-of-view */
#if (DIRECTINPUT_VERSION >= 0x050A)
typedef struct DIPROPCALPOV {
DIPROPHEADER diph;
LONG lMin[5];
LONG lMax[5];
} DIPROPCALPOV;
typedef DIPROPCALPOV *LPDIPROPCALPOV;
typedef const DIPROPCALPOV *LPCDIPROPCALPOV;
#endif
/* DirectInput property GUID and path */
#if (DIRECTINPUT_VERSION >= 0x050A)
typedef struct DIPROPGUIDANDPATH {
DIPROPHEADER diph;
GUID guidClass;
WCHAR wszPath[MAX_PATH];
} DIPROPGUIDANDPATH;
typedef DIPROPGUIDANDPATH *LPDIPROPGUIDANDPATH;
typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH;
#endif
/* DirectInput property string */
#if (DIRECTINPUT_VERSION >= 0x050A)
typedef struct DIPROPSTRING {
DIPROPHEADER diph;
WCHAR wsz[MAX_PATH];
} DIPROPSTRING;
typedef DIPROPSTRING *LPDIPROPSTRING;
typedef const DIPROPSTRING *LPCDIPROPSTRING;
#endif
/* Calibration point */
#if (DIRECTINPUT_VERSION >= 0x0800)
typedef struct _CPOINT {
LONG lP;
DWORD dwLog;
} CPOINT;
typedef CPOINT *PCPOINT;
#endif
/* DirectInput property calibration points */
#if (DIRECTINPUT_VERSION >= 0x0800)
typedef struct DIPROPCPOINTS {
DIPROPHEADER diph;
DWORD dwCPointsNum;
CPOINT cp[MAXCPOINTSNUM];
} DIPROPCPOINTS;
typedef DIPROPCPOINTS *LPDIPROPCPOINTS;
typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS;
#endif
/* DirectInput device object data for DirectX 3 compatibility */
typedef struct DIDEVICEOBJECTDATA_DX3 {
DWORD dwOfs;
DWORD dwData;
DWORD dwTimeStamp;
DWORD dwSequence;
} DIDEVICEOBJECTDATA_DX3;
typedef DIDEVICEOBJECTDATA_DX3 *LPDIDEVICEOBJECTDATA_DX3;
typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX3;
/* DirectInput device object data */
typedef struct DIDEVICEOBJECTDATA {
DWORD dwOfs;
DWORD dwData;
DWORD dwTimeStamp;
DWORD dwSequence;
#if (DIRECTINPUT_VERSION >= 0x0800)
UINT_PTR uAppData;
#endif
} DIDEVICEOBJECTDATA;
typedef DIDEVICEOBJECTDATA *LPDIDEVICEOBJECTDATA;
typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;
/* DirectInput device instance for DirectX 3 compatibility */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIDEVICEINSTANCE_DX3A {
DWORD dwSize;
GUID guidInstance;
GUID guidProduct;
DWORD dwDevType;
CHAR tszInstanceName[MAX_PATH];
CHAR tszProductName[MAX_PATH];
} DIDEVICEINSTANCE_DX3A;
typedef DIDEVICEINSTANCE_DX3A *LPDIDEVICEINSTANCE_DX3A;
typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;
typedef struct DIDEVICEINSTANCE_DX3W {
DWORD dwSize;
GUID guidInstance;
GUID guidProduct;
DWORD dwDevType;
WCHAR tszInstanceName[MAX_PATH];
WCHAR tszProductName[MAX_PATH];
} DIDEVICEINSTANCE_DX3W;
typedef DIDEVICEINSTANCE_DX3W *LPDIDEVICEINSTANCE_DX3W;
typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;
#ifdef UNICODE
typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3;
typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3;
typedef LPCDIDEVICEINSTANCE_DX3W LPCDIDEVICEINSTANCE_DX3;
#else
typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3;
typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3;
typedef LPCDIDEVICEINSTANCE_DX3A LPCDIDEVICEINSTANCE_DX3;
#endif
#endif
/* DirectInput device instance */
typedef struct DIDEVICEINSTANCEA {
DWORD dwSize;
GUID guidInstance;
GUID guidProduct;
DWORD dwDevType;
CHAR tszInstanceName[MAX_PATH];
CHAR tszProductName[MAX_PATH];
#if (DIRECTINPUT_VERSION >= 0x0500)
GUID guidFFDriver;
WORD wUsagePage;
WORD wUsage;
#endif
} DIDEVICEINSTANCEA;
typedef DIDEVICEINSTANCEA *LPDIDEVICEINSTANCEA;
typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;
typedef struct DIDEVICEINSTANCEW {
DWORD dwSize;
GUID guidInstance;
GUID guidProduct;
DWORD dwDevType;
WCHAR tszInstanceName[MAX_PATH];
WCHAR tszProductName[MAX_PATH];
#if (DIRECTINPUT_VERSION >= 0x0500)
GUID guidFFDriver;
WORD wUsagePage;
WORD wUsage;
#endif
} DIDEVICEINSTANCEW;
typedef DIDEVICEINSTANCEW *LPDIDEVICEINSTANCEW;
typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;
#ifdef UNICODE
typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE;
typedef LPCDIDEVICEINSTANCEW LPCDIDEVICEINSTANCE;
#else
typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE;
typedef LPCDIDEVICEINSTANCEA LPCDIDEVICEINSTANCE;
#endif
/* DirectInput effect information */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef struct DIEFFECTINFOA {
DWORD dwSize;
GUID guid;
DWORD dwEffType;
DWORD dwStaticParams;
DWORD dwDynamicParams;
CHAR tszName[MAX_PATH];
} DIEFFECTINFOA;
typedef DIEFFECTINFOA *LPDIEFFECTINFOA;
typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;
typedef struct DIEFFECTINFOW {
DWORD dwSize;
GUID guid;
DWORD dwEffType;
DWORD dwStaticParams;
DWORD dwDynamicParams;
WCHAR tszName[MAX_PATH];
} DIEFFECTINFOW;
typedef DIEFFECTINFOW *LPDIEFFECTINFOW;
typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;
#ifdef UNICODE
typedef DIEFFECTINFOW DIEFFECTINFO;
typedef LPDIEFFECTINFOW LPDIEFFECTINFO;
typedef LPCDIEFFECTINFOW LPCDIEFFECTINFO;
#else
typedef DIEFFECTINFOA DIEFFECTINFO;
typedef LPDIEFFECTINFOA LPDIEFFECTINFO;
typedef LPCDIEFFECTINFOA LPCDIEFFECTINFO;
#endif
#endif
/* DirectInput effect enumeration callbacks */
#if (DIRECTINPUT_VERSION >= 0x0500)
typedef BOOL (PASCAL *LPDIENUMEFFECTSCALLBACKA)( LPCDIEFFECTINFOA, LPVOID );
typedef BOOL (PASCAL *LPDIENUMEFFECTSCALLBACKW)( LPCDIEFFECTINFOW, LPVOID );
typedef BOOL (PASCAL *LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)( IDirectInputEffect *, LPVOID );
#ifdef UNICODE
#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKW
#else
#define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKA
#endif
#endif
/* DirectInput mouse state */
typedef struct _DIMOUSESTATE {
LONG lX;
LONG lY;
LONG lZ;
BYTE rgbButtons[4];
} DIMOUSESTATE;
typedef DIMOUSESTATE *LPDIMOUSESTATE;
/* DirectInput mouse state (version 2) */
#if (DIRECTINPUT_VERSION >= 0x0700)
typedef struct _DIMOUSESTATE2 {
LONG lX;
LONG lY;
LONG lZ;
BYTE rgbButtons[8];
} DIMOUSESTATE2;
typedef DIMOUSESTATE2 *LPDIMOUSESTATE2;
#endif
/* DirectInput mouse state field offsets */
#define DIMOFS_X FIELD_OFFSET( DIMOUSESTATE, lX )
#define DIMOFS_Y FIELD_OFFSET( DIMOUSESTATE, lY )
#define DIMOFS_Z FIELD_OFFSET( DIMOUSESTATE, lZ )
#define DIMOFS_BUTTON0 (FIELD_OFFSET( DIMOUSESTATE, rgbButtons ) + 0)
#define DIMOFS_BUTTON1 (FIELD_OFFSET( DIMOUSESTATE, rgbButtons ) + 1)
#define DIMOFS_BUTTON2 (FIELD_OFFSET( DIMOUSESTATE, rgbButtons ) + 2)
#define DIMOFS_BUTTON3 (FIELD_OFFSET( DIMOUSESTATE, rgbButtons ) + 3)
#if (DIRECTINPUT_VERSION >= 0x0700)
#define DIMOFS_BUTTON4 (FIELD_OFFSET( DIMOUSESTATE2, rgbButtons ) + 4)
#define DIMOFS_BUTTON5 (FIELD_OFFSET( DIMOUSESTATE2, rgbButtons ) + 5)
#define DIMOFS_BUTTON6 (FIELD_OFFSET( DIMOUSESTATE2, rgbButtons ) + 6)
#define DIMOFS_BUTTON7 (FIELD_OFFSET( DIMOUSESTATE2, rgbButtons ) + 7)
#endif
/* DirectInput joystick state */
typedef struct DIJOYSTATE {
LONG lX;
LONG lY;
LONG lZ;
LONG lRx;
LONG lRy;
LONG lRz;
LONG rglSlider[2];
DWORD rgdwPOV[4];
BYTE rgbButtons[32];
} DIJOYSTATE;
typedef DIJOYSTATE *LPDIJOYSTATE;
/* DirectInput joystick state (version 2) */
typedef struct DIJOYSTATE2 {
LONG lX;
LONG lY;
LONG lZ;
LONG lRx;
LONG lRy;
LONG lRz;
LONG rglSlider[2];
DWORD rgdwPOV[4];
BYTE rgbButtons[128];
LONG lVX;
LONG lVY;
LONG lVZ;
LONG lVRx;
LONG lVRy;
LONG lVRz;
LONG rglVSlider[2];
LONG lAX;
LONG lAY;
LONG lAZ;
LONG lARx;
LONG lARy;
LONG lARz;
LONG rglASlider[2];
LONG lFX;
LONG lFY;
LONG lFZ;
LONG lFRx;
LONG lFRy;
LONG lFRz;
LONG rglFSlider[2];
} DIJOYSTATE2;
typedef DIJOYSTATE2 *LPDIJOYSTATE2;
/* DirectInput joystick state field offsets */
#define DIJOFS_X FIELD_OFFSET( DIJOYSTATE, lX )
#define DIJOFS_Y FIELD_OFFSET( DIJOYSTATE, lY )
#define DIJOFS_Z FIELD_OFFSET( DIJOYSTATE, lZ )
#define DIJOFS_RX FIELD_OFFSET( DIJOYSTATE, lRx )
#define DIJOFS_RY FIELD_OFFSET( DIJOYSTATE, lRy )
#define DIJOFS_RZ FIELD_OFFSET( DIJOYSTATE, lRz )
#define DIJOFS_SLIDER( x ) (FIELD_OFFSET( DIJOYSTATE, rglSlider ) + (x) * sizeof( LONG ))
#define DIJOFS_POV( x ) (FIELD_OFFSET( DIJOYSTATE, rgdwPOV ) + (x) * sizeof( DWORD ))
#define DIJOFS_BUTTON( x ) (FIELD_OFFSET( DIJOYSTATE, rgbButtons ) + (x))
#define DIJOFS_BUTTON0 DIJOFS_BUTTON( 0 )
#define DIJOFS_BUTTON1 DIJOFS_BUTTON( 1 )
#define DIJOFS_BUTTON2 DIJOFS_BUTTON( 2 )
#define DIJOFS_BUTTON3 DIJOFS_BUTTON( 3 )
#define DIJOFS_BUTTON4 DIJOFS_BUTTON( 4 )
#define DIJOFS_BUTTON5 DIJOFS_BUTTON( 5 )
#define DIJOFS_BUTTON6 DIJOFS_BUTTON( 6 )
#define DIJOFS_BUTTON7 DIJOFS_BUTTON( 7 )
#define DIJOFS_BUTTON8 DIJOFS_BUTTON( 8 )
#define DIJOFS_BUTTON9 DIJOFS_BUTTON( 9 )
#define DIJOFS_BUTTON10 DIJOFS_BUTTON( 10 )
#define DIJOFS_BUTTON11 DIJOFS_BUTTON( 11 )
#define DIJOFS_BUTTON12 DIJOFS_BUTTON( 12 )
#define DIJOFS_BUTTON13 DIJOFS_BUTTON( 13 )
#define DIJOFS_BUTTON14 DIJOFS_BUTTON( 14 )
#define DIJOFS_BUTTON15 DIJOFS_BUTTON( 15 )
#define DIJOFS_BUTTON16 DIJOFS_BUTTON( 16 )
#define DIJOFS_BUTTON17 DIJOFS_BUTTON( 17 )
#define DIJOFS_BUTTON18 DIJOFS_BUTTON( 18 )
#define DIJOFS_BUTTON19 DIJOFS_BUTTON( 19 )
#define DIJOFS_BUTTON20 DIJOFS_BUTTON( 20 )
#define DIJOFS_BUTTON21 DIJOFS_BUTTON( 21 )
#define DIJOFS_BUTTON22 DIJOFS_BUTTON( 22 )
#define DIJOFS_BUTTON23 DIJOFS_BUTTON( 23 )
#define DIJOFS_BUTTON24 DIJOFS_BUTTON( 24 )
#define DIJOFS_BUTTON25 DIJOFS_BUTTON( 25 )
#define DIJOFS_BUTTON26 DIJOFS_BUTTON( 26 )
#define DIJOFS_BUTTON27 DIJOFS_BUTTON( 27 )
#define DIJOFS_BUTTON28 DIJOFS_BUTTON( 28 )
#define DIJOFS_BUTTON29 DIJOFS_BUTTON( 29 )
#define DIJOFS_BUTTON30 DIJOFS_BUTTON( 30 )
#define DIJOFS_BUTTON31 DIJOFS_BUTTON( 31 )
/* DirectInput device callbacks */
typedef BOOL (PASCAL *LPDIENUMDEVICESCALLBACKA)( LPCDIDEVICEINSTANCEA, LPVOID );
typedef BOOL (PASCAL *LPDIENUMDEVICESCALLBACKW)( LPCDIDEVICEINSTANCEW, LPVOID );
typedef BOOL (PASCAL *LPDICONFIGUREDEVICESCALLBACK)( IUnknown *, LPVOID );
typedef BOOL (PASCAL *LPDIENUMDEVICESBYSEMANTICSCBA)( LPCDIDEVICEINSTANCEA, IDirectInputDevice8A *, DWORD, DWORD, LPVOID );
typedef BOOL (PASCAL *LPDIENUMDEVICESBYSEMANTICSCBW)( LPCDIDEVICEINSTANCEW, IDirectInputDevice8W *, DWORD, DWORD, LPVOID );
#ifdef UNICODE
#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKW
#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBW
#else
#define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKA
#define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBA
#endif
/* GUIDs */
EXTERN_C const CLSID CLSID_DirectInput;
EXTERN_C const CLSID CLSID_DirectInputDevice;
EXTERN_C const CLSID CLSID_DirectInput8;
EXTERN_C const CLSID CLSID_DirectInputDevice8;
EXTERN_C const IID IID_IDirectInputA;
EXTERN_C const IID IID_IDirectInputW;
EXTERN_C const IID IID_IDirectInput2A;
EXTERN_C const IID IID_IDirectInput2W;
EXTERN_C const IID IID_IDirectInput7A;
EXTERN_C const IID IID_IDirectInput7W;
EXTERN_C const IID IID_IDirectInput8A;
EXTERN_C const IID IID_IDirectInput8W;
EXTERN_C const IID IID_IDirectInputDeviceA;
EXTERN_C const IID IID_IDirectInputDeviceW;
EXTERN_C const IID IID_IDirectInputDevice2A;
EXTERN_C const IID IID_IDirectInputDevice2W;
EXTERN_C const IID IID_IDirectInputDevice7A;
EXTERN_C const IID IID_IDirectInputDevice7W;
EXTERN_C const IID IID_IDirectInputDevice8A;
EXTERN_C const IID IID_IDirectInputDevice8W;
EXTERN_C const IID IID_IDirectInputEffect;
EXTERN_C const GUID GUID_XAxis;
EXTERN_C const GUID GUID_YAxis;
EXTERN_C const GUID GUID_ZAxis;
EXTERN_C const GUID GUID_RxAxis;
EXTERN_C const GUID GUID_RyAxis;
EXTERN_C const GUID GUID_RzAxis;
EXTERN_C const GUID GUID_Slider;
EXTERN_C const GUID GUID_Button;
EXTERN_C const GUID GUID_Key;
EXTERN_C const GUID GUID_POV;
EXTERN_C const GUID GUID_Unknown;
EXTERN_C const GUID GUID_SysMouse;
EXTERN_C const GUID GUID_SysKeyboard;
EXTERN_C const GUID GUID_Joystick;
EXTERN_C const GUID GUID_SysMouseEm;
EXTERN_C const GUID GUID_SysMouseEm2;
EXTERN_C const GUID GUID_SysKeyboardEm;
EXTERN_C const GUID GUID_SysKeyboardEm2;
EXTERN_C const GUID GUID_ConstantForce;
EXTERN_C const GUID GUID_RampForce;
EXTERN_C const GUID GUID_Square;
EXTERN_C const GUID GUID_Sine;
EXTERN_C const GUID GUID_Triangle;
EXTERN_C const GUID GUID_SawtoothUp;
EXTERN_C const GUID GUID_SawtoothDown;
EXTERN_C const GUID GUID_Spring;
EXTERN_C const GUID GUID_Damper;
EXTERN_C const GUID GUID_Inertia;
EXTERN_C const GUID GUID_Friction;
EXTERN_C const GUID GUID_CustomForce;
#ifdef UNICODE
#define IID_IDirectInputDevice IID_IDirectInputDeviceW
#define IID_IDirectInputDevice2 IID_IDirectInputDevice2W
#define IID_IDirectInputDevice7 IID_IDirectInputDevice7W
#define IID_IDirectInputDevice8 IID_IDirectInputDevice8W
#define IID_IDirectInput IID_IDirectInputW
#define IID_IDirectInput2 IID_IDirectInput2W
#define IID_IDirectInput7 IID_IDirectInput7W
#define IID_IDirectInput8 IID_IDirectInput8W
#else
#define IID_IDirectInputDevice IID_IDirectInputDeviceA
#define IID_IDirectInputDevice2 IID_IDirectInputDevice2A
#define IID_IDirectInputDevice7 IID_IDirectInputDevice7A
#define IID_IDirectInputDevice8 IID_IDirectInputDevice8A
#define IID_IDirectInput IID_IDirectInputA
#define IID_IDirectInput2 IID_IDirectInput2A
#define IID_IDirectInput7 IID_IDirectInput7A
#define IID_IDirectInput8 IID_IDirectInput8A
#endif
/* IDirectInputEffect interface */
#if (DIRECTINPUT_VERSION >= 0x0500)
#undef INTERFACE
#define INTERFACE IDirectInputEffect
DECLARE_INTERFACE_( IDirectInputEffect, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputEffect methods */
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD, REFGUID ) PURE;
STDMETHOD( GetEffectGuid )( THIS_ LPGUID ) PURE;
STDMETHOD( GetParameters )( THIS_ LPDIEFFECT, DWORD ) PURE;
STDMETHOD( SetParameters )( THIS_ LPCDIEFFECT, DWORD ) PURE;
STDMETHOD( Start )( THIS_ DWORD, DWORD ) PURE;
STDMETHOD( Stop )( THIS ) PURE;
STDMETHOD( GetEffectStatus )( THIS_ LPDWORD ) PURE;
STDMETHOD( Download )( THIS ) PURE;
STDMETHOD( Unload )( THIS ) PURE;
STDMETHOD( Escape )( THIS_ LPDIEFFESCAPE ) PURE;
};
typedef IDirectInputEffect *LPDIRECTINPUTEFFECT;
#endif
/* IDirectInputDevice interface */
#undef INTERFACE
#define INTERFACE IDirectInputDeviceA
DECLARE_INTERFACE_( IDirectInputDeviceA, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputDeviceA methods */
STDMETHOD( GetCapabilities )( THIS_ LPDIDEVCAPS ) PURE;
STDMETHOD( EnumObjects )( THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetProperty )( THIS_ REFGUID, LPDIPROPHEADER ) PURE;
STDMETHOD( SetProperty )( THIS_ REFGUID, LPCDIPROPHEADER ) PURE;
STDMETHOD( Acquire )( THIS ) PURE;
STDMETHOD( Unacquire )( THIS ) PURE;
STDMETHOD( GetDeviceState )( THIS_ DWORD, LPVOID ) PURE;
STDMETHOD( GetDeviceData )( THIS_ DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( SetDataFormat )( THIS_ LPCDIDATAFORMAT ) PURE;
STDMETHOD( SetEventNotification )( THIS_ HANDLE ) PURE;
STDMETHOD( SetCooperativeLevel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( GetObjectInfo )( THIS_ LPDIDEVICEOBJECTINSTANCEA, DWORD, DWORD ) PURE;
STDMETHOD( GetDeviceInfo )( THIS_ LPDIDEVICEINSTANCEA ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD, REFGUID ) PURE;
};
typedef IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;
#undef INTERFACE
#define INTERFACE IDirectInputDeviceW
DECLARE_INTERFACE_( IDirectInputDeviceW, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputDeviceW methods */
STDMETHOD( GetCapabilities )( THIS_ LPDIDEVCAPS ) PURE;
STDMETHOD( EnumObjects )( THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetProperty )( THIS_ REFGUID, LPDIPROPHEADER ) PURE;
STDMETHOD( SetProperty )( THIS_ REFGUID, LPCDIPROPHEADER ) PURE;
STDMETHOD( Acquire )( THIS ) PURE;
STDMETHOD( Unacquire )( THIS ) PURE;
STDMETHOD( GetDeviceState )( THIS_ DWORD, LPVOID ) PURE;
STDMETHOD( GetDeviceData )( THIS_ DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( SetDataFormat )( THIS_ LPCDIDATAFORMAT ) PURE;
STDMETHOD( SetEventNotification )( THIS_ HANDLE ) PURE;
STDMETHOD( SetCooperativeLevel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( GetObjectInfo )( THIS_ LPDIDEVICEOBJECTINSTANCEW, DWORD, DWORD ) PURE;
STDMETHOD( GetDeviceInfo )( THIS_ LPDIDEVICEINSTANCEW ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD, REFGUID ) PURE;
};
typedef IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;
#ifdef UNICODE
#define IDirectInputDevice IDirectInputDeviceW
#define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl
#else
#define IDirectInputDevice IDirectInputDeviceA
#define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl
#endif
typedef IDirectInputDevice *LPDIRECTINPUTDEVICE;
/* IDirectInputDevice2 interface */
#if (DIRECTINPUT_VERSION >= 0x0500)
#undef INTERFACE
#define INTERFACE IDirectInputDevice2A
DECLARE_INTERFACE_( IDirectInputDevice2A, IDirectInputDeviceA ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputDeviceA methods */
STDMETHOD( GetCapabilities )( THIS_ LPDIDEVCAPS ) PURE;
STDMETHOD( EnumObjects )( THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetProperty )( THIS_ REFGUID, LPDIPROPHEADER ) PURE;
STDMETHOD( SetProperty )( THIS_ REFGUID, LPCDIPROPHEADER ) PURE;
STDMETHOD( Acquire )( THIS ) PURE;
STDMETHOD( Unacquire )( THIS ) PURE;
STDMETHOD( GetDeviceState )( THIS_ DWORD, LPVOID ) PURE;
STDMETHOD( GetDeviceData )( THIS_ DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( SetDataFormat )( THIS_ LPCDIDATAFORMAT ) PURE;
STDMETHOD( SetEventNotification )( THIS_ HANDLE ) PURE;
STDMETHOD( SetCooperativeLevel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( GetObjectInfo )( THIS_ LPDIDEVICEOBJECTINSTANCEA, DWORD, DWORD ) PURE;
STDMETHOD( GetDeviceInfo )( THIS_ LPDIDEVICEINSTANCEA ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD, REFGUID ) PURE;
/* IDirectInputDevice2A methods */
STDMETHOD( CreateEffect )( THIS_ REFGUID, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN ) PURE;
STDMETHOD( EnumEffects )( THIS_ LPDIENUMEFFECTSCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetEffectInfo )( THIS_ LPDIEFFECTINFOA, REFGUID ) PURE;
STDMETHOD( GetForceFeedbackState )( THIS_ LPDWORD ) PURE;
STDMETHOD( SendForceFeedbackCommand )( THIS_ DWORD ) PURE;
STDMETHOD( EnumCreatedEffectObjects )( THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( Escape )( THIS_ LPDIEFFESCAPE ) PURE;
STDMETHOD( Poll )( THIS ) PURE;
STDMETHOD( SendDeviceData )( THIS_ DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
};
typedef IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;
#undef INTERFACE
#define INTERFACE IDirectInputDevice2W
DECLARE_INTERFACE_( IDirectInputDevice2W, IDirectInputDeviceW ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputDeviceW methods */
STDMETHOD( GetCapabilities )( THIS_ LPDIDEVCAPS ) PURE;
STDMETHOD( EnumObjects )( THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetProperty )( THIS_ REFGUID, LPDIPROPHEADER ) PURE;
STDMETHOD( SetProperty )( THIS_ REFGUID, LPCDIPROPHEADER ) PURE;
STDMETHOD( Acquire )( THIS ) PURE;
STDMETHOD( Unacquire )( THIS ) PURE;
STDMETHOD( GetDeviceState )( THIS_ DWORD, LPVOID ) PURE;
STDMETHOD( GetDeviceData )( THIS_ DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( SetDataFormat )( THIS_ LPCDIDATAFORMAT ) PURE;
STDMETHOD( SetEventNotification )( THIS_ HANDLE ) PURE;
STDMETHOD( SetCooperativeLevel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( GetObjectInfo )( THIS_ LPDIDEVICEOBJECTINSTANCEW, DWORD, DWORD ) PURE;
STDMETHOD( GetDeviceInfo )( THIS_ LPDIDEVICEINSTANCEW ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD, REFGUID ) PURE;
/* IDirectInputDevice2W methods */
STDMETHOD( CreateEffect )( THIS_ REFGUID, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN ) PURE;
STDMETHOD( EnumEffects )( THIS_ LPDIENUMEFFECTSCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetEffectInfo )( THIS_ LPDIEFFECTINFOW, REFGUID ) PURE;
STDMETHOD( GetForceFeedbackState )( THIS_ LPDWORD ) PURE;
STDMETHOD( SendForceFeedbackCommand )( THIS_ DWORD ) PURE;
STDMETHOD( EnumCreatedEffectObjects )( THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( Escape )( THIS_ LPDIEFFESCAPE ) PURE;
STDMETHOD( Poll )( THIS ) PURE;
STDMETHOD( SendDeviceData )( THIS_ DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
};
typedef IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;
#ifdef UNICODE
#define IDirectInputDevice2 IDirectInputDevice2W
#define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl
#else
#define IDirectInputDevice2 IDirectInputDevice2A
#define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl
#endif
typedef IDirectInputDevice2 *LPDIRECTINPUTDEVICE2;
#endif
/* IDirectInputDevice7 interface */
#if (DIRECTINPUT_VERSION >= 0x0700)
#undef INTERFACE
#define INTERFACE IDirectInputDevice7A
DECLARE_INTERFACE_( IDirectInputDevice7A, IDirectInputDevice2A ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputDeviceA methods */
STDMETHOD( GetCapabilities )( THIS_ LPDIDEVCAPS ) PURE;
STDMETHOD( EnumObjects )( THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetProperty )( THIS_ REFGUID, LPDIPROPHEADER ) PURE;
STDMETHOD( SetProperty )( THIS_ REFGUID, LPCDIPROPHEADER ) PURE;
STDMETHOD( Acquire )( THIS ) PURE;
STDMETHOD( Unacquire )( THIS ) PURE;
STDMETHOD( GetDeviceState )( THIS_ DWORD, LPVOID ) PURE;
STDMETHOD( GetDeviceData )( THIS_ DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( SetDataFormat )( THIS_ LPCDIDATAFORMAT ) PURE;
STDMETHOD( SetEventNotification )( THIS_ HANDLE ) PURE;
STDMETHOD( SetCooperativeLevel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( GetObjectInfo )( THIS_ LPDIDEVICEOBJECTINSTANCEA, DWORD, DWORD ) PURE;
STDMETHOD( GetDeviceInfo )( THIS_ LPDIDEVICEINSTANCEA ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD, REFGUID ) PURE;
/* IDirectInputDevice2A methods */
STDMETHOD( CreateEffect )( THIS_ REFGUID, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN ) PURE;
STDMETHOD( EnumEffects )( THIS_ LPDIENUMEFFECTSCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetEffectInfo )( THIS_ LPDIEFFECTINFOA, REFGUID ) PURE;
STDMETHOD( GetForceFeedbackState )( THIS_ LPDWORD ) PURE;
STDMETHOD( SendForceFeedbackCommand )( THIS_ DWORD ) PURE;
STDMETHOD( EnumCreatedEffectObjects )( THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( Escape )( THIS_ LPDIEFFESCAPE ) PURE;
STDMETHOD( Poll )( THIS ) PURE;
STDMETHOD( SendDeviceData )( THIS_ DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
/* IDirectInputDevice7A methods */
STDMETHOD( EnumEffectsInFile )( THIS_ LPCSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( WriteEffectToFile )( THIS_ LPCSTR, DWORD, LPDIFILEEFFECT, DWORD ) PURE;
};
typedef IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A;
#undef INTERFACE
#define INTERFACE IDirectInputDevice7W
DECLARE_INTERFACE_( IDirectInputDevice7W, IDirectInputDevice2W ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputDeviceW methods */
STDMETHOD( GetCapabilities )( THIS_ LPDIDEVCAPS ) PURE;
STDMETHOD( EnumObjects )( THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetProperty )( THIS_ REFGUID, LPDIPROPHEADER ) PURE;
STDMETHOD( SetProperty )( THIS_ REFGUID, LPCDIPROPHEADER ) PURE;
STDMETHOD( Acquire )( THIS ) PURE;
STDMETHOD( Unacquire )( THIS ) PURE;
STDMETHOD( GetDeviceState )( THIS_ DWORD, LPVOID ) PURE;
STDMETHOD( GetDeviceData )( THIS_ DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( SetDataFormat )( THIS_ LPCDIDATAFORMAT ) PURE;
STDMETHOD( SetEventNotification )( THIS_ HANDLE ) PURE;
STDMETHOD( SetCooperativeLevel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( GetObjectInfo )( THIS_ LPDIDEVICEOBJECTINSTANCEW, DWORD, DWORD ) PURE;
STDMETHOD( GetDeviceInfo )( THIS_ LPDIDEVICEINSTANCEW ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD, REFGUID ) PURE;
/* IDirectInputDevice2W methods */
STDMETHOD( CreateEffect )( THIS_ REFGUID, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN ) PURE;
STDMETHOD( EnumEffects )( THIS_ LPDIENUMEFFECTSCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetEffectInfo )( THIS_ LPDIEFFECTINFOW, REFGUID ) PURE;
STDMETHOD( GetForceFeedbackState )( THIS_ LPDWORD ) PURE;
STDMETHOD( SendForceFeedbackCommand )( THIS_ DWORD ) PURE;
STDMETHOD( EnumCreatedEffectObjects )( THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( Escape )( THIS_ LPDIEFFESCAPE ) PURE;
STDMETHOD( Poll )( THIS ) PURE;
STDMETHOD( SendDeviceData )( THIS_ DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
/* IDirectInputDevice7W methods */
STDMETHOD( EnumEffectsInFile )( THIS_ LPCWSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( WriteEffectToFile )( THIS_ LPCWSTR, DWORD, LPDIFILEEFFECT, DWORD ) PURE;
};
typedef IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W;
#ifdef UNICODE
#define IDirectInputDevice7 IDirectInputDevice7W
#define IDirectInputDevice7Vtbl IDirectInputDevice7WVtbl
#else
#define IDirectInputDevice7 IDirectInputDevice7A
#define IDirectInputDevice7Vtbl IDirectInputDevice7AVtbl
#endif
typedef IDirectInputDevice7 *LPDIRECTINPUTDEVICE7;
#endif
/* IDirectInputDevice8 interface */
#if (DIRECTINPUT_VERSION >= 0x0800)
#undef INTERFACE
#define INTERFACE IDirectInputDevice8A
DECLARE_INTERFACE_( IDirectInputDevice8A, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputDevice8A methods */
STDMETHOD( GetCapabilities )( THIS_ LPDIDEVCAPS ) PURE;
STDMETHOD( EnumObjects )( THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetProperty )( THIS_ REFGUID, LPDIPROPHEADER ) PURE;
STDMETHOD( SetProperty )( THIS_ REFGUID, LPCDIPROPHEADER ) PURE;
STDMETHOD( Acquire )( THIS ) PURE;
STDMETHOD( Unacquire )( THIS ) PURE;
STDMETHOD( GetDeviceState )( THIS_ DWORD, LPVOID ) PURE;
STDMETHOD( GetDeviceData )( THIS_ DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( SetDataFormat )( THIS_ LPCDIDATAFORMAT ) PURE;
STDMETHOD( SetEventNotification )( THIS_ HANDLE ) PURE;
STDMETHOD( SetCooperativeLevel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( GetObjectInfo )( THIS_ LPDIDEVICEOBJECTINSTANCEA, DWORD, DWORD ) PURE;
STDMETHOD( GetDeviceInfo )( THIS_ LPDIDEVICEINSTANCEA ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD, REFGUID ) PURE;
STDMETHOD( CreateEffect )( THIS_ REFGUID, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN ) PURE;
STDMETHOD( EnumEffects )( THIS_ LPDIENUMEFFECTSCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetEffectInfo )( THIS_ LPDIEFFECTINFOA, REFGUID ) PURE;
STDMETHOD( GetForceFeedbackState )( THIS_ LPDWORD ) PURE;
STDMETHOD( SendForceFeedbackCommand )( THIS_ DWORD ) PURE;
STDMETHOD( EnumCreatedEffectObjects )( THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( Escape )( THIS_ LPDIEFFESCAPE ) PURE;
STDMETHOD( Poll )( THIS ) PURE;
STDMETHOD( SendDeviceData )( THIS_ DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( EnumEffectsInFile )( THIS_ LPCSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( WriteEffectToFile )( THIS_ LPCSTR, DWORD, LPDIFILEEFFECT, DWORD ) PURE;
STDMETHOD( BuildActionMap )( THIS_ LPDIACTIONFORMATA, LPCSTR, DWORD ) PURE;
STDMETHOD( SetActionMap )( THIS_ LPDIACTIONFORMATA, LPCSTR, DWORD ) PURE;
STDMETHOD( GetImageInfo )( THIS_ LPDIDEVICEIMAGEINFOHEADERA ) PURE;
};
typedef IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A;
#undef INTERFACE
#define INTERFACE IDirectInputDevice8W
DECLARE_INTERFACE_( IDirectInputDevice8W, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputDevice8W methods */
STDMETHOD( GetCapabilities )( THIS_ LPDIDEVCAPS ) PURE;
STDMETHOD( EnumObjects )( THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetProperty )( THIS_ REFGUID, LPDIPROPHEADER ) PURE;
STDMETHOD( SetProperty )( THIS_ REFGUID, LPCDIPROPHEADER ) PURE;
STDMETHOD( Acquire )( THIS ) PURE;
STDMETHOD( Unacquire )( THIS ) PURE;
STDMETHOD( GetDeviceState )( THIS_ DWORD, LPVOID ) PURE;
STDMETHOD( GetDeviceData )( THIS_ DWORD, LPDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( SetDataFormat )( THIS_ LPCDIDATAFORMAT ) PURE;
STDMETHOD( SetEventNotification )( THIS_ HANDLE ) PURE;
STDMETHOD( SetCooperativeLevel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( GetObjectInfo )( THIS_ LPDIDEVICEOBJECTINSTANCEW, DWORD, DWORD ) PURE;
STDMETHOD( GetDeviceInfo )( THIS_ LPDIDEVICEINSTANCEW ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD, REFGUID ) PURE;
STDMETHOD( CreateEffect )( THIS_ REFGUID, LPCDIEFFECT, LPDIRECTINPUTEFFECT *, LPUNKNOWN ) PURE;
STDMETHOD( EnumEffects )( THIS_ LPDIENUMEFFECTSCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetEffectInfo )( THIS_ LPDIEFFECTINFOW, REFGUID ) PURE;
STDMETHOD( GetForceFeedbackState )( THIS_ LPDWORD ) PURE;
STDMETHOD( SendForceFeedbackCommand )( THIS_ DWORD ) PURE;
STDMETHOD( EnumCreatedEffectObjects )( THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( Escape )( THIS_ LPDIEFFESCAPE ) PURE;
STDMETHOD( Poll )( THIS ) PURE;
STDMETHOD( SendDeviceData )( THIS_ DWORD, LPCDIDEVICEOBJECTDATA, LPDWORD, DWORD ) PURE;
STDMETHOD( EnumEffectsInFile )( THIS_ LPCWSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD ) PURE;
STDMETHOD( WriteEffectToFile )( THIS_ LPCWSTR, DWORD, LPDIFILEEFFECT, DWORD ) PURE;
STDMETHOD( BuildActionMap )( THIS_ LPDIACTIONFORMATW, LPCWSTR, DWORD ) PURE;
STDMETHOD( SetActionMap )( THIS_ LPDIACTIONFORMATW, LPCWSTR, DWORD ) PURE;
STDMETHOD( GetImageInfo )( THIS_ LPDIDEVICEIMAGEINFOHEADERW ) PURE;
};
typedef IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W;
#ifdef UNICODE
#define IDirectInputDevice8 IDirectInputDevice8W
#define IDirectInputDevice8Vtbl IDirectInputDevice8WVtbl
#else
#define IDirectInputDevice8 IDirectInputDevice8A
#define IDirectInputDevice8Vtbl IDirectInputDevice8AVtbl
#endif
typedef IDirectInputDevice8 *LPDIRECTINPUTDEVICE8;
#endif
/* IDirectInput interface */
#undef INTERFACE
#define INTERFACE IDirectInputA
DECLARE_INTERFACE_( IDirectInputA, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputW methods */
STDMETHOD( CreateDevice )( THIS_ REFGUID, LPDIRECTINPUTDEVICEA *, LPUNKNOWN ) PURE;
STDMETHOD( EnumDevices )( THIS_ DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetDeviceStatus )( THIS_ REFGUID ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD ) PURE;
};
typedef IDirectInputA *LPDIRECTINPUTA;
#undef INTERFACE
#define INTERFACE IDirectInputW
DECLARE_INTERFACE_( IDirectInputW, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputW methods */
STDMETHOD( CreateDevice )( THIS_ REFGUID, LPDIRECTINPUTDEVICEW *, LPUNKNOWN ) PURE;
STDMETHOD( EnumDevices )( THIS_ DWORD, LPDIENUMDEVICESCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetDeviceStatus )( THIS_ REFGUID ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD ) PURE;
};
typedef IDirectInputW *LPDIRECTINPUTW;
#ifdef UNICODE
#define IDirectInput IDirectInputW
#define IDirectInputVtbl IDirectInputWVtbl
#else
#define IDirectInput IDirectInputA
#define IDirectInputVtbl IDirectInputAVtbl
#endif
/* IDirectInput2 interface */
#undef INTERFACE
#define INTERFACE IDirectInput2A
DECLARE_INTERFACE_( IDirectInput2A, IDirectInputA ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputA methods */
STDMETHOD( CreateDevice )( THIS_ REFGUID, LPDIRECTINPUTDEVICEA *, LPUNKNOWN ) PURE;
STDMETHOD( EnumDevices )( THIS_ DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetDeviceStatus )( THIS_ REFGUID ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD ) PURE;
/* IDirectInput2A methods */
STDMETHOD( FindDevice )( THIS_ REFGUID, LPCSTR, LPGUID ) PURE;
};
typedef IDirectInput2A *LPDIRECTINPUT2A;
#undef INTERFACE
#define INTERFACE IDirectInput2W
DECLARE_INTERFACE_( IDirectInput2W, IDirectInputW ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputW methods */
STDMETHOD( CreateDevice )( THIS_ REFGUID, LPDIRECTINPUTDEVICEW *, LPUNKNOWN ) PURE;
STDMETHOD( EnumDevices )( THIS_ DWORD, LPDIENUMDEVICESCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetDeviceStatus )( THIS_ REFGUID ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD ) PURE;
/* IDirectInput2W methods */
STDMETHOD( FindDevice )( THIS_ REFGUID, LPCWSTR, LPGUID ) PURE;
};
typedef IDirectInput2W *LPDIRECTINPUT2W;
#ifdef UNICODE
#define IDirectInput2 IDirectInput2W
#define IDirectInput2Vtbl IDirectInput2WVtbl
#else
#define IDirectInput2 IDirectInput2A
#define IDirectInput2Vtbl IDirectInput2AVtbl
#endif
typedef IDirectInput2 *LPDIRECTINPUT2;
/* IDirectInput7 interface */
#undef INTERFACE
#define INTERFACE IDirectInput7A
DECLARE_INTERFACE_( IDirectInput7A, IDirectInput2A ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputA methods */
STDMETHOD( CreateDevice )( THIS_ REFGUID, LPDIRECTINPUTDEVICEA *, LPUNKNOWN ) PURE;
STDMETHOD( EnumDevices )( THIS_ DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetDeviceStatus )( THIS_ REFGUID ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD ) PURE;
/* IDirectInput2A methods */
STDMETHOD( FindDevice )( THIS_ REFGUID, LPCSTR, LPGUID ) PURE;
/* IDirectInput7A methods */
STDMETHOD( CreateDeviceEx )( THIS_ REFGUID, REFIID, LPVOID *, LPUNKNOWN ) PURE;
};
typedef IDirectInput7A *LPDIRECTINPUT7A;
#undef INTERFACE
#define INTERFACE IDirectInput7W
DECLARE_INTERFACE_( IDirectInput7W, IDirectInput2W ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInputW methods */
STDMETHOD( CreateDevice )( THIS_ REFGUID, LPDIRECTINPUTDEVICEW *, LPUNKNOWN ) PURE;
STDMETHOD( EnumDevices )( THIS_ DWORD, LPDIENUMDEVICESCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetDeviceStatus )( THIS_ REFGUID ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD ) PURE;
/* IDirectInput2W methods */
STDMETHOD( FindDevice )( THIS_ REFGUID, LPCWSTR, LPGUID ) PURE;
/* IDirectInput7W methods */
STDMETHOD( CreateDeviceEx )( THIS_ REFGUID, REFIID, LPVOID *, LPUNKNOWN ) PURE;
};
typedef IDirectInput7W *LPDIRECTINPUT7W;
#ifdef UNICODE
#define IDirectInput7 IDirectInput7W
#define IDirectInput7Vtbl IDirectInput7WVtbl
#else
#define IDirectInput7 IDirectInput7A
#define IDirectInput7Vtbl IDirectInput7AVtbl
#endif
typedef IDirectInput7 *LPDIRECTINPUT7;
/* IDirectInput8 interface */
#if (DIRECTINPUT_VERSION >= 0x0800)
#undef INTERFACE
#define INTERFACE IDirectInput8A
DECLARE_INTERFACE_( IDirectInput8A, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInput8A methods */
STDMETHOD( CreateDevice )( THIS_ REFGUID, LPDIRECTINPUTDEVICE8A *, LPUNKNOWN ) PURE;
STDMETHOD( EnumDevices )( THIS_ DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD ) PURE;
STDMETHOD( GetDeviceStatus )( THIS_ REFGUID ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD ) PURE;
STDMETHOD( FindDevice )( THIS_ REFGUID, LPCSTR, LPGUID ) PURE;
STDMETHOD( EnumDevicesBySemantics )( THIS_ LPCSTR, LPDIACTIONFORMATA, LPDIENUMDEVICESBYSEMANTICSCBA, LPVOID, DWORD ) PURE;
STDMETHOD( ConfigureDevices )( THIS_ LPDICONFIGUREDEVICESCALLBACK, LPDICONFIGUREDEVICESPARAMSA, DWORD, LPVOID ) PURE;
};
typedef IDirectInput8A *LPDIRECTINPUT8A;
#undef INTERFACE
#define INTERFACE IDirectInput8W
DECLARE_INTERFACE_( IDirectInput8W, IUnknown ) {
/* IUnknown methods */
STDMETHOD( QueryInterface )( THIS_ REFIID, void ** ) PURE;
STDMETHOD_( ULONG, AddRef )( THIS ) PURE;
STDMETHOD_( ULONG, Release )( THIS ) PURE;
/* IDirectInput8W methods */
STDMETHOD( CreateDevice )( THIS_ REFGUID, LPDIRECTINPUTDEVICE8W *, LPUNKNOWN ) PURE;
STDMETHOD( EnumDevices )( THIS_ DWORD, LPDIENUMDEVICESCALLBACKW, LPVOID, DWORD ) PURE;
STDMETHOD( GetDeviceStatus )( THIS_ REFGUID ) PURE;
STDMETHOD( RunControlPanel )( THIS_ HWND, DWORD ) PURE;
STDMETHOD( Initialize )( THIS_ HINSTANCE, DWORD ) PURE;
STDMETHOD( FindDevice )( THIS_ REFGUID, LPCWSTR, LPGUID ) PURE;
STDMETHOD( EnumDevicesBySemantics )( THIS_ LPCWSTR, LPDIACTIONFORMATW, LPDIENUMDEVICESBYSEMANTICSCBW, LPVOID, DWORD ) PURE;
STDMETHOD( ConfigureDevices )( THIS_ LPDICONFIGUREDEVICESCALLBACK, LPDICONFIGUREDEVICESPARAMSW, DWORD, LPVOID ) PURE;
};
typedef IDirectInput8W *LPDIRECTINPUT8W;
#ifdef UNICODE
#define IDirectInput8 IDirectInput8W
#define IDirectInput8Vtbl IDirectInput8WVtbl
#else
#define IDirectInput8 IDirectInput8A
#define IDirectInput8Vtbl IDirectInput8AVtbl
#endif
typedef IDirectInput8 *LPDIRECTINPUT8;
#endif
/* C/C++ object macros */
#if !defined( __cplusplus ) || defined( CINTERFACE )
#if (DIRECTINPUT_VERSION >= 0x0500)
#define IDirectInputEffect_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IDirectInputEffect_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IDirectInputEffect_Release( x ) \
(x)->lpVtbl->Release( x )
#define IDirectInputEffect_Initialize( x, p1, p2, p3 ) \
(x)->lpVtbl->Initialize( x, p1, p2, p3 )
#define IDirectInputEffect_GetEffectGuid( x, p ) \
(x)->lpVtbl->GetEffectGuid( x, p )
#define IDirectInputEffect_GetParameters( x, p1, p2 ) \
(x)->lpVtbl->GetParameters( x, p1, p2 )
#define IDirectInputEffect_SetParameters( x, p1, p2 ) \
(x)->lpVtbl->SetParameters( x, p1, p2 )
#define IDirectInputEffect_Start( x, p1, p2 ) \
(x)->lpVtbl->Start( x, p1, p2 )
#define IDirectInputEffect_Stop( x ) \
(x)->lpVtbl->Stop( x )
#define IDirectInputEffect_GetEffectStatus( x, p ) \
(x)->lpVtbl->GetEffectStatus( x, p )
#define IDirectInputEffect_Download( x ) \
(x)->lpVtbl->Download( x )
#define IDirectInputEffect_Unload( x ) \
(x)->lpVtbl->Unload( x )
#define IDirectInputEffect_Escape( x, p ) \
(x)->lpVtbl->Escape( x, p )
#endif
#define IDirectInputDevice_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IDirectInputDevice_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IDirectInputDevice_Release( x ) \
(x)->lpVtbl->Release( x )
#define IDirectInputDevice_GetCapabilities( x, p ) \
(x)->lpVtbl->GetCapabilities( x, p )
#define IDirectInputDevice_EnumObjects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumObjects( x, p1, p2, p3 )
#define IDirectInputDevice_GetProperty( x, p1, p2 ) \
(x)->lpVtbl->GetProperty( x, p1, p2 )
#define IDirectInputDevice_SetProperty( x, p1, p2 ) \
(x)->lpVtbl->SetProperty( x, p1, p2 )
#define IDirectInputDevice_Acquire( x ) \
(x)->lpVtbl->Acquire( x )
#define IDirectInputDevice_Unacquire( x ) \
(x)->lpVtbl->Unacquire( x )
#define IDirectInputDevice_GetDeviceState( x, p1, p2 ) \
(x)->lpVtbl->GetDeviceState( x, p1, p2 )
#define IDirectInputDevice_GetDeviceData( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->GetDeviceData( x, p1, p2, p3, p4 )
#define IDirectInputDevice_SetDataFormat( x, p ) \
(x)->lpVtbl->SetDataFormat( x, p )
#define IDirectInputDevice_SetEventNotification( x, p ) \
(x)->lpVtbl->SetEventNotification( x, p )
#define IDirectInputDevice_SetCooperativeLevel( x, p1, p2 ) \
(x)->lpVtbl->SetCooperativeLevel( x, p1, p2 )
#define IDirectInputDevice_GetObjectInfo( x, p1, p2, p3 ) \
(x)->lpVtbl->GetObjectInfo( x, p1, p2, p3 )
#define IDirectInputDevice_GetDeviceInfo( x, p ) \
(x)->lpVtbl->GetDeviceInfo( x, p )
#define IDirectInputDevice_RunControlPanel( x, p1, p2 ) \
(x)->lpVtbl->RunControlPanel( x, p1, p2 )
#define IDirectInputDevice_Initialize( x, p1, p2, p3 ) \
(x)->lpVtbl->Initialize( x, p1, p2, p3 )
#if (DIRECTINPUT_VERSION >= 0x0500)
#define IDirectInputDevice2_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IDirectInputDevice2_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IDirectInputDevice2_Release( x ) \
(x)->lpVtbl->Release( x )
#define IDirectInputDevice2_GetCapabilities( x, p ) \
(x)->lpVtbl->GetCapabilities( x, p )
#define IDirectInputDevice2_EnumObjects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumObjects( x, p1, p2, p3 )
#define IDirectInputDevice2_GetProperty( x, p1, p2 ) \
(x)->lpVtbl->GetProperty( x, p1, p2 )
#define IDirectInputDevice2_SetProperty( x, p1, p2 ) \
(x)->lpVtbl->SetProperty( x, p1, p2 )
#define IDirectInputDevice2_Acquire( x ) \
(x)->lpVtbl->Acquire( x )
#define IDirectInputDevice2_Unacquire( x ) \
(x)->lpVtbl->Unacquire( x )
#define IDirectInputDevice2_GetDeviceState( x, p1, p2 ) \
(x)->lpVtbl->GetDeviceState( x, p1, p2 )
#define IDirectInputDevice2_GetDeviceData( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->GetDeviceData( x, p1, p2, p3, p4 )
#define IDirectInputDevice2_SetDataFormat( x, p ) \
(x)->lpVtbl->SetDataFormat( x, p )
#define IDirectInputDevice2_SetEventNotification( x, p ) \
(x)->lpVtbl->SetEventNotification( x, p )
#define IDirectInputDevice2_SetCooperativeLevel( x, p1, p2 ) \
(x)->lpVtbl->SetCooperativeLevel( x, p1, p2 )
#define IDirectInputDevice2_GetObjectInfo( x, p1, p2, p3 ) \
(x)->lpVtbl->GetObjectInfo( x, p1, p2, p3 )
#define IDirectInputDevice2_GetDeviceInfo( x, p ) \
(x)->lpVtbl->GetDeviceInfo( x, p )
#define IDirectInputDevice2_RunControlPanel( x, p1, p2 ) \
(x)->lpVtbl->RunControlPanel( x, p1, p2 )
#define IDirectInputDevice2_Initialize( x, p1, p2, p3 ) \
(x)->lpVtbl->Initialize( x, p1, p2, p3 )
#define IDirectInputDevice2_CreateEffect( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->CreateEffect( x, p1, p2, p3, p4 )
#define IDirectInputDevice2_EnumEffects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumEffects( x, p1, p2, p3 )
#define IDirectInputDevice2_GetEffectInfo( x, p1, p2 ) \
(x)->lpVtbl->GetEffectInfo( x, p1, p2 )
#define IDirectInputDevice2_GetForceFeedbackState( x, p ) \
(x)->lpVtbl->GetForceFeedbackState( x, p )
#define IDirectInputDevice2_SendForceFeedbackCommand( x, p ) \
(x)->lpVtbl->SendForceFeedbackCommand( x, p )
#define IDirectInputDevice2_EnumCreatedEffectObjects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumCreatedEffectObjects( x, p1, p2, p3 )
#define IDirectInputDevice2_Escape( x, p ) \
(x)->lpVtbl->Escape( x, p )
#define IDirectInputDevice2_Poll( x ) \
(x)->lpVtbl->Poll( x )
#define IDirectInputDevice2_SendDeviceData( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->SendDeviceData( x, p1, p2, p3, p4 )
#endif
#if (DIRECTINPUT_VERSION >= 0x0700)
#define IDirectInputDevice7_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IDirectInputDevice7_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IDirectInputDevice7_Release( x ) \
(x)->lpVtbl->Release( x )
#define IDirectInputDevice7_GetCapabilities( x, p ) \
(x)->lpVtbl->GetCapabilities( x, p )
#define IDirectInputDevice7_EnumObjects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumObjects( x, p1, p2, p3 )
#define IDirectInputDevice7_GetProperty( x, p1, p2 ) \
(x)->lpVtbl->GetProperty( x, p1, p2 )
#define IDirectInputDevice7_SetProperty( x, p1, p2 ) \
(x)->lpVtbl->SetProperty( x, p1, p2 )
#define IDirectInputDevice7_Acquire( x ) \
(x)->lpVtbl->Acquire( x )
#define IDirectInputDevice7_Unacquire( x ) \
(x)->lpVtbl->Unacquire( x )
#define IDirectInputDevice7_GetDeviceState( x, p1, p2 ) \
(x)->lpVtbl->GetDeviceState( x, p1, p2 )
#define IDirectInputDevice7_GetDeviceData( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->GetDeviceData( x, p1, p2, p3, p4 )
#define IDirectInputDevice7_SetDataFormat( x, p ) \
(x)->lpVtbl->SetDataFormat( x, p )
#define IDirectInputDevice7_SetEventNotification( x, p ) \
(x)->lpVtbl->SetEventNotification( x, p )
#define IDirectInputDevice7_SetCooperativeLevel( x, p1, p2 ) \
(x)->lpVtbl->SetCooperativeLevel( x, p1, p2 )
#define IDirectInputDevice7_GetObjectInfo( x, p1, p2, p3 ) \
(x)->lpVtbl->GetObjectInfo( x, p1, p2, p3 )
#define IDirectInputDevice7_GetDeviceInfo( x, p ) \
(x)->lpVtbl->GetDeviceInfo( x, p )
#define IDirectInputDevice7_RunControlPanel( x, p1, p2 ) \
(x)->lpVtbl->RunControlPanel( x, p1, p2 )
#define IDirectInputDevice7_Initialize( x, p1, p2, p3 ) \
(x)->lpVtbl->Initialize( x, p1, p2, p3 )
#define IDirectInputDevice7_CreateEffect( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->CreateEffect( x, p1, p2, p3, p4 )
#define IDirectInputDevice7_EnumEffects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumEffects( x, p1, p2, p3 )
#define IDirectInputDevice7_GetEffectInfo( x, p1, p2 ) \
(x)->lpVtbl->GetEffectInfo( x, p1, p2 )
#define IDirectInputDevice7_GetForceFeedbackState( x, p ) \
(x)->lpVtbl->GetForceFeedbackState( x, p )
#define IDirectInputDevice7_SendForceFeedbackCommand( x, p ) \
(x)->lpVtbl->SendForceFeedbackCommand( x, p )
#define IDirectInputDevice7_EnumCreatedEffectObjects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumCreatedEffectObjects( x, p1, p2, p3 )
#define IDirectInputDevice7_Escape( x, p ) \
(x)->lpVtbl->Escape( x, p )
#define IDirectInputDevice7_Poll( x ) \
(x)->lpVtbl->Poll( x )
#define IDirectInputDevice7_SendDeviceData( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->SendDeviceData( x, p1, p2, p3, p4 )
#define IDirectInputDevice7_EnumEffectsInFile( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->EnumEffectsInFile( x, p1, p2, p3, p4 )
#define IDirectInputDevice7_WriteEffectToFile( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->WriteEffectToFile( x, p1, p2, p3, p4 )
#endif
#if (DIRECTINPUT_VERSION >= 0x0800)
#define IDirectInputDevice8_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IDirectInputDevice8_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IDirectInputDevice8_Release( x ) \
(x)->lpVtbl->Release( x )
#define IDirectInputDevice8_GetCapabilities( x, p ) \
(x)->lpVtbl->GetCapabilities( x, p )
#define IDirectInputDevice8_EnumObjects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumObjects( x, p1, p2, p3 )
#define IDirectInputDevice8_GetProperty( x, p1, p2 ) \
(x)->lpVtbl->GetProperty( x, p1, p2 )
#define IDirectInputDevice8_SetProperty( x, p1, p2 ) \
(x)->lpVtbl->SetProperty( x, p1, p2 )
#define IDirectInputDevice8_Acquire( x ) \
(x)->lpVtbl->Acquire( x )
#define IDirectInputDevice8_Unacquire( x ) \
(x)->lpVtbl->Unacquire( x )
#define IDirectInputDevice8_GetDeviceState( x, p1, p2 ) \
(x)->lpVtbl->GetDeviceState( x, p1, p2 )
#define IDirectInputDevice8_GetDeviceData( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->GetDeviceData( x, p1, p2, p3, p4 )
#define IDirectInputDevice8_SetDataFormat( x, p ) \
(x)->lpVtbl->SetDataFormat( x, p )
#define IDirectInputDevice8_SetEventNotification( x, p ) \
(x)->lpVtbl->SetEventNotification( x, p )
#define IDirectInputDevice8_SetCooperativeLevel( x, p1, p2 ) \
(x)->lpVtbl->SetCooperativeLevel( x, p1, p2 )
#define IDirectInputDevice8_GetObjectInfo( x, p1, p2, p3 ) \
(x)->lpVtbl->GetObjectInfo( x, p1, p2, p3 )
#define IDirectInputDevice8_GetDeviceInfo( x, p ) \
(x)->lpVtbl->GetDeviceInfo( x, p )
#define IDirectInputDevice8_RunControlPanel( x, p1, p2 ) \
(x)->lpVtbl->RunControlPanel( x, p1, p2 )
#define IDirectInputDevice8_Initialize( x, p1, p2, p3 ) \
(x)->lpVtbl->Initialize( x, p1, p2, p3 )
#define IDirectInputDevice8_CreateEffect( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->CreateEffect( x, p1, p2, p3, p4 )
#define IDirectInputDevice8_EnumEffects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumEffects( x, p1, p2, p3 )
#define IDirectInputDevice8_GetEffectInfo( x, p1, p2 ) \
(x)->lpVtbl->GetEffectInfo( x, p1, p2 )
#define IDirectInputDevice8_GetForceFeedbackState( x, p ) \
(x)->lpVtbl->GetForceFeedbackState( x, p )
#define IDirectInputDevice8_SendForceFeedbackCommand( x, p ) \
(x)->lpVtbl->SendForceFeedbackCommand( x, p )
#define IDirectInputDevice8_EnumCreatedEffectObjects( x, p1, p2, p3 ) \
(x)->lpVtbl->EnumCreatedEffectObjects( x, p1, p2, p3 )
#define IDirectInputDevice8_Escape( x, p ) \
(x)->lpVtbl->Escape( x, p )
#define IDirectInputDevice8_Poll( x ) \
(x)->lpVtbl->Poll( x )
#define IDirectInputDevice8_SendDeviceData( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->SendDeviceData( x, p1, p2, p3, p4 )
#define IDirectInputDevice8_EnumEffectsInFile( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->EnumEffectsInFile( x, p1, p2, p3, p4 )
#define IDirectInputDevice8_WriteEffectToFile( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->WriteEffectToFile( x, p1, p2, p3, p4 )
#define IDirectInputDevice8_BuildActionMap( x, p1, p2, p3 ) \
(x)->lpVtbl->BuildActionMap( x, p1, p2, p3 )
#define IDirectInputDevice8_SetActionMap( x, p1, p2, p3 ) \
(x)->lpVtbl->SetActionMap( x, p1, p2, p3 )
#define IDirectInputDevice8_GetImageInfo( x, p ) \
(x)->lpVtbl->GetImageInfo( x, p )
#endif
#define IDirectInput_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IDirectInput_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IDirectInput_Release( x ) \
(x)->lpVtbl->Release( x )
#define IDirectInput_CreateDevice( x, p1, p2, p3 ) \
(x)->lpVtbl->CreateDevice( x, p1, p2, p3 )
#define IDirectInput_EnumDevices( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->EnumDevices( x, p1, p2, p3, p4 )
#define IDirectInput_GetDeviceStatus( x, p ) \
(x)->lpVtbl->GetDeviceStatus( x, p )
#define IDirectInput_RunControlPanel( x, p1, p2 ) \
(x)->lpVtbl->RunControlPanel( x, p1, p2 )
#define IDirectInput_Initialize( x, p1, p2 ) \
(x)->lpVtbl->Initialize( x, p1, p2 )
#define IDirectInput2_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IDirectInput2_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IDirectInput2_Release( x ) \
(x)->lpVtbl->Release( x )
#define IDirectInput2_CreateDevice( x, p1, p2, p3 ) \
(x)->lpVtbl->CreateDevice( x, p1, p2, p3 )
#define IDirectInput2_EnumDevices( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->EnumDevices( x, p1, p2, p3, p4 )
#define IDirectInput2_GetDeviceStatus( x, p ) \
(x)->lpVtbl->GetDeviceStatus( x, p )
#define IDirectInput2_RunControlPanel( x, p1, p2 ) \
(x)->lpVtbl->RunControlPanel( x, p1, p2 )
#define IDirectInput2_Initialize( x, p1, p2 ) \
(x)->lpVtbl->Initialize( x, p1, p2 )
#define IDirectInput2_FindDevice( x, p1, p2, p3 ) \
(x)->lpVtbl->FindDevice( x, p1, p2, p3 )
#define IDirectInput7_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IDirectInput7_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IDirectInput7_Release( x ) \
(x)->lpVtbl->Release( x )
#define IDirectInput7_CreateDevice( x, p1, p2, p3 ) \
(x)->lpVtbl->CreateDevice( x, p1, p2, p3 )
#define IDirectInput7_EnumDevices( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->EnumDevices( x, p1, p2, p3, p4 )
#define IDirectInput7_GetDeviceStatus( x, p ) \
(x)->lpVtbl->GetDeviceStatus( x, p )
#define IDirectInput7_RunControlPanel( x, p1, p2 ) \
(x)->lpVtbl->RunControlPanel( x, p1, p2 )
#define IDirectInput7_Initialize( x, p1, p2 ) \
(x)->lpVtbl->Initialize( x, p1, p2 )
#define IDirectInput7_FindDevice( x, p1, p2, p3 ) \
(x)->lpVtbl->FindDevice( x, p1, p2, p3 )
#define IDirectInput7_CreateDeviceEx( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->CreateDeviceEx( x, p1, p2, p3, p4 )
#if (DIRECTINPUT_VERSION >= 0x0800)
#define IDirectInput8_QueryInterface( x, p1, p2 ) \
(x)->lpVtbl->QueryInterface( x, p1, p2 )
#define IDirectInput8_AddRef( x ) \
(x)->lpVtbl->AddRef( x )
#define IDirectInput8_Release( x ) \
(x)->lpVtbl->Release( x )
#define IDirectInput8_CreateDevice( x, p1, p2, p3 ) \
(x)->lpVtbl->CreateDevice( x, p1, p2, p3 )
#define IDirectInput8_EnumDevices( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->EnumDevices( x, p1, p2, p3, p4 )
#define IDirectInput8_GetDeviceStatus( x, p ) \
(x)->lpVtbl->GetDeviceStatus( x, p )
#define IDirectInput8_RunControlPanel( x, p1, p2 ) \
(x)->lpVtbl->RunControlPanel( x, p1, p2 )
#define IDirectInput8_Initialize( x, p1, p2 ) \
(x)->lpVtbl->Initialize( x, p1, p2 )
#define IDirectInput8_FindDevice( x, p1, p2, p3 ) \
(x)->lpVtbl->FindDevice( x, p1, p2, p3 )
#define IDirectInput8_EnumDevicesBySemantics( x, p1, p2, p3, p4, p5 ) \
(x)->lpVtbl->EnumDevicesBySemantics( x, p1, p2, p3, p4, p5 )
#define IDirectInput8_ConfigureDevices( x, p1, p2, p3, p4 ) \
(x)->lpVtbl->ConfigureDevices( x, p1, p2, p3, p4 )
#endif
#else
#if (DIRECTINPUT_VERSION >= 0x0500)
#define IDirectInputEffect_QueryInterface( x, p1, p2 ) \
(x)->QueryInterface( p1, p2 )
#define IDirectInputEffect_AddRef( x ) \
(x)->AddRef()
#define IDirectInputEffect_Release( x ) \
(x)->Release()
#define IDirectInputEffect_Initialize( x, p1, p2, p3 ) \
(x)->Initialize( p1, p2, p3 )
#define IDirectInputEffect_GetEffectGuid( x, p ) \
(x)->GetEffectGuid( p )
#define IDirectInputEffect_GetParameters( x, p1, p2 ) \
(x)->GetParameters( p1, p2 )
#define IDirectInputEffect_SetParameters( x, p1, p2 ) \
(x)->SetParameters( p1, p2 )
#define IDirectInputEffect_Start( x, p1, p2 ) \
(x)->Start( p1, p2 )
#define IDirectInputEffect_Stop( x ) \
(x)->Stop()
#define IDirectInputEffect_GetEffectStatus( x, p ) \
(x)->GetEffectStatus( p )
#define IDirectInputEffect_Download( x ) \
(x)->Download()
#define IDirectInputEffect_Unload( x ) \
(x)->Unload()
#define IDirectInputEffect_Escape( x, p ) \
(x)->Escape( p )
#endif
#define IDirectInputDevice_QueryInterface( x, p1, p2 ) \
(x)->QueryInterface( p1, p2 )
#define IDirectInputDevice_AddRef( x ) \
(x)->AddRef()
#define IDirectInputDevice_Release( x ) \
(x)->Release()
#define IDirectInputDevice_GetCapabilities( x, p ) \
(x)->GetCapabilities( p )
#define IDirectInputDevice_EnumObjects( x, p1, p2, p3 ) \
(x)->EnumObjects( p1, p2, p3 )
#define IDirectInputDevice_GetProperty( x, p1, p2 ) \
(x)->GetProperty( p1, p2 )
#define IDirectInputDevice_SetProperty( x, p1, p2 ) \
(x)->SetProperty( p1, p2 )
#define IDirectInputDevice_Acquire( x ) \
(x)->Acquire()
#define IDirectInputDevice_Unacquire( x ) \
(x)->Unacquire()
#define IDirectInputDevice_GetDeviceState( x, p1, p2 ) \
(x)->GetDeviceState( p1, p2 )
#define IDirectInputDevice_GetDeviceData( x, p1, p2, p3, p4 ) \
(x)->GetDeviceData( p1, p2, p3, p4 )
#define IDirectInputDevice_SetDataFormat( x, p ) \
(x)->SetDataFormat( p )
#define IDirectInputDevice_SetEventNotification( x, p ) \
(x)->SetEventNotification( p )
#define IDirectInputDevice_SetCooperativeLevel( x, p1, p2 ) \
(x)->SetCooperativeLevel( p1, p2 )
#define IDirectInputDevice_GetObjectInfo( x, p1, p2, p3 ) \
(x)->GetObjectInfo( p1, p2, p3 )
#define IDirectInputDevice_GetDeviceInfo( x, p ) \
(x)->GetDeviceInfo( p )
#define IDirectInputDevice_RunControlPanel( x, p1, p2 ) \
(x)->RunControlPanel( p1, p2 )
#define IDirectInputDevice_Initialize( x, p1, p2, p3 ) \
(x)->Initialize( p1, p2, p3 )
#if (DIRECTINPUT_VERSION >= 0x0500)
#define IDirectInputDevice2_QueryInterface( x, p1, p2 ) \
(x)->QueryInterface( p1, p2 )
#define IDirectInputDevice2_AddRef( x ) \
(x)->AddRef()
#define IDirectInputDevice2_Release( x ) \
(x)->Release()
#define IDirectInputDevice2_GetCapabilities( x, p ) \
(x)->GetCapabilities( p )
#define IDirectInputDevice2_EnumObjects( x, p1, p2, p3 ) \
(x)->EnumObjects( p1, p2, p3 )
#define IDirectInputDevice2_GetProperty( x, p1, p2 ) \
(x)->GetProperty( p1, p2 )
#define IDirectInputDevice2_SetProperty( x, p1, p2 ) \
(x)->SetProperty( p1, p2 )
#define IDirectInputDevice2_Acquire( x ) \
(x)->Acquire()
#define IDirectInputDevice2_Unacquire( x ) \
(x)->Unacquire()
#define IDirectInputDevice2_GetDeviceState( x, p1, p2 ) \
(x)->GetDeviceState( p1, p2 )
#define IDirectInputDevice2_GetDeviceData( x, p1, p2, p3, p4 ) \
(x)->GetDeviceData( p1, p2, p3, p4 )
#define IDirectInputDevice2_SetDataFormat( x, p ) \
(x)->SetDataFormat( p )
#define IDirectInputDevice2_SetEventNotification( x, p ) \
(x)->SetEventNotification( p )
#define IDirectInputDevice2_SetCooperativeLevel( x, p1, p2 ) \
(x)->SetCooperativeLevel( p1, p2 )
#define IDirectInputDevice2_GetObjectInfo( x, p1, p2, p3 ) \
(x)->GetObjectInfo( p1, p2, p3 )
#define IDirectInputDevice2_GetDeviceInfo( x, p ) \
(x)->GetDeviceInfo( p )
#define IDirectInputDevice2_RunControlPanel( x, p1, p2 ) \
(x)->RunControlPanel( p1, p2 )
#define IDirectInputDevice2_Initialize( x, p1, p2, p3 ) \
(x)->Initialize( p1, p2, p3 )
#define IDirectInputDevice2_CreateEffect( x, p1, p2, p3, p4 ) \
(x)->CreateEffect( p1, p2, p3, p4 )
#define IDirectInputDevice2_EnumEffects( x, p1, p2, p3 ) \
(x)->EnumEffects( p1, p2, p3 )
#define IDirectInputDevice2_GetEffectInfo( x, p1, p2 ) \
(x)->GetEffectInfo( p1, p2 )
#define IDirectInputDevice2_GetForceFeedbackState( x, p ) \
(x)->GetForceFeedbackState( p )
#define IDirectInputDevice2_SendForceFeedbackCommand( x, p ) \
(x)->SendForceFeedbackCommand( p )
#define IDirectInputDevice2_EnumCreatedEffectObjects( x, p1, p2, p3 ) \
(x)->EnumCreatedEffectObjects( p1, p2, p3 )
#define IDirectInputDevice2_Escape( x, p ) \
(x)->Escape( p )
#define IDirectInputDevice2_Poll( x ) \
(x)->Poll()
#define IDirectInputDevice2_SendDeviceData( x, p1, p2, p3, p4 ) \
(x)->SendDeviceData( p1, p2, p3, p4 )
#endif
#if (DIRECTINPUT_VERSION >= 0x0500)
#define IDirectInputDevice7_QueryInterface( x, p1, p2 ) \
(x)->QueryInterface( p1, p2 )
#define IDirectInputDevice7_AddRef( x ) \
(x)->AddRef()
#define IDirectInputDevice7_Release( x ) \
(x)->Release()
#define IDirectInputDevice7_GetCapabilities( x, p ) \
(x)->GetCapabilities( p )
#define IDirectInputDevice7_EnumObjects( x, p1, p2, p3 ) \
(x)->EnumObjects( p1, p2, p3 )
#define IDirectInputDevice7_GetProperty( x, p1, p2 ) \
(x)->GetProperty( p1, p2 )
#define IDirectInputDevice7_SetProperty( x, p1, p2 ) \
(x)->SetProperty( p1, p2 )
#define IDirectInputDevice7_Acquire( x ) \
(x)->Acquire()
#define IDirectInputDevice7_Unacquire( x ) \
(x)->Unacquire()
#define IDirectInputDevice7_GetDeviceState( x, p1, p2 ) \
(x)->GetDeviceState( p1, p2 )
#define IDirectInputDevice7_GetDeviceData( x, p1, p2, p3, p4 ) \
(x)->GetDeviceData( p1, p2, p3, p4 )
#define IDirectInputDevice7_SetDataFormat( x, p ) \
(x)->SetDataFormat( p )
#define IDirectInputDevice7_SetEventNotification( x, p ) \
(x)->SetEventNotification( p )
#define IDirectInputDevice7_SetCooperativeLevel( x, p1, p2 ) \
(x)->SetCooperativeLevel( p1, p2 )
#define IDirectInputDevice7_GetObjectInfo( x, p1, p2, p3 ) \
(x)->GetObjectInfo( p1, p2, p3 )
#define IDirectInputDevice7_GetDeviceInfo( x, p ) \
(x)->GetDeviceInfo( p )
#define IDirectInputDevice7_RunControlPanel( x, p1, p2 ) \
(x)->RunControlPanel( p1, p2 )
#define IDirectInputDevice7_Initialize( x, p1, p2, p3 ) \
(x)->Initialize( p1, p2, p3 )
#define IDirectInputDevice7_CreateEffect( x, p1, p2, p3, p4 ) \
(x)->CreateEffect( p1, p2, p3, p4 )
#define IDirectInputDevice7_EnumEffects( x, p1, p2, p3 ) \
(x)->EnumEffects( p1, p2, p3 )
#define IDirectInputDevice7_GetEffectInfo( x, p1, p2 ) \
(x)->GetEffectInfo( p1, p2 )
#define IDirectInputDevice7_GetForceFeedbackState( x, p ) \
(x)->GetForceFeedbackState( p )
#define IDirectInputDevice7_SendForceFeedbackCommand( x, p ) \
(x)->SendForceFeedbackCommand( p )
#define IDirectInputDevice7_EnumCreatedEffectObjects( x, p1, p2, p3 ) \
(x)->EnumCreatedEffectObjects( p1, p2, p3 )
#define IDirectInputDevice7_Escape( x, p ) \
(x)->Escape( p )
#define IDirectInputDevice7_Poll( x ) \
(x)->Poll()
#define IDirectInputDevice7_SendDeviceData( x, p1, p2, p3, p4 ) \
(x)->SendDeviceData( p1, p2, p3, p4 )
#define IDirectInputDevice7_EnumEffectsInFile( x, p1, p2, p3, p4 ) \
(x)->EnumEffectsInFile( p1, p2, p3, p4 )
#define IDirectInputDevice7_WriteEffectToFile( x, p1, p2, p3, p4 ) \
(x)->WriteEffectToFile( p1, p2, p3, p4 )
#endif
#if (DIRECTINPUT_VERSION >= 0x0800)
#define IDirectInputDevice8_QueryInterface( x, p1, p2 ) \
(x)->QueryInterface( p1, p2 )
#define IDirectInputDevice8_AddRef( x ) \
(x)->AddRef()
#define IDirectInputDevice8_Release( x ) \
(x)->Release()
#define IDirectInputDevice8_GetCapabilities( x, p ) \
(x)->GetCapabilities( p )
#define IDirectInputDevice8_EnumObjects( x, p1, p2, p3 ) \
(x)->EnumObjects( p1, p2, p3 )
#define IDirectInputDevice8_GetProperty( x, p1, p2 ) \
(x)->GetProperty( p1, p2 )
#define IDirectInputDevice8_SetProperty( x, p1, p2 ) \
(x)->SetProperty( p1, p2 )
#define IDirectInputDevice8_Acquire( x ) \
(x)->Acquire()
#define IDirectInputDevice8_Unacquire( x ) \
(x)->Unacquire()
#define IDirectInputDevice8_GetDeviceState( x, p1, p2 ) \
(x)->GetDeviceState( p1, p2 )
#define IDirectInputDevice8_GetDeviceData( x, p1, p2, p3, p4 ) \
(x)->GetDeviceData( p1, p2, p3, p4 )
#define IDirectInputDevice8_SetDataFormat( x, p ) \
(x)->SetDataFormat( p )
#define IDirectInputDevice8_SetEventNotification( x, p ) \
(x)->SetEventNotification( p )
#define IDirectInputDevice8_SetCooperativeLevel( x, p1, p2 ) \
(x)->SetCooperativeLevel( p1, p2 )
#define IDirectInputDevice8_GetObjectInfo( x, p1, p2, p3 ) \
(x)->GetObjectInfo( p1, p2, p3 )
#define IDirectInputDevice8_GetDeviceInfo( x, p ) \
(x)->GetDeviceInfo( p )
#define IDirectInputDevice8_RunControlPanel( x, p1, p2 ) \
(x)->RunControlPanel( p1, p2 )
#define IDirectInputDevice8_Initialize( x, p1, p2, p3 ) \
(x)->Initialize( p1, p2, p3 )
#define IDirectInputDevice8_CreateEffect( x, p1, p2, p3, p4 ) \
(x)->CreateEffect( p1, p2, p3, p4 )
#define IDirectInputDevice8_EnumEffects( x, p1, p2, p3 ) \
(x)->EnumEffects( p1, p2, p3 )
#define IDirectInputDevice8_GetEffectInfo( x, p1, p2 ) \
(x)->GetEffectInfo( p1, p2 )
#define IDirectInputDevice8_GetForceFeedbackState( x, p ) \
(x)->GetForceFeedbackState( p )
#define IDirectInputDevice8_SendForceFeedbackCommand( x, p ) \
(x)->SendForceFeedbackCommand( p )
#define IDirectInputDevice8_EnumCreatedEffectObjects( x, p1, p2, p3 ) \
(x)->EnumCreatedEffectObjects( p1, p2, p3 )
#define IDirectInputDevice8_Escape( x, p ) \
(x)->Escape( p )
#define IDirectInputDevice8_Poll( x ) \
(x)->Poll()
#define IDirectInputDevice8_SendDeviceData( x, p1, p2, p3, p4 ) \
(x)->SendDeviceData( p1, p2, p3, p4 )
#define IDirectInputDevice8_EnumEffectsInFile( x, p1, p2, p3, p4 ) \
(x)->EnumEffectsInFile( p1, p2, p3, p4 )
#define IDirectInputDevice8_WriteEffectToFile( x, p1, p2, p3, p4 ) \
(x)->WriteEffectToFile( p1, p2, p3, p4 )
#define IDirectInputDevice8_BuildActionMap( x, p1, p2, p3 ) \
(x)->BuildActionMap( p1, p2, p3 )
#define IDirectInputDevice8_SetActionMap( x, p1, p2, p3 ) \
(x)->SetActionMap( p1, p2, p3 )
#define IDirectInputDevice8_GetImageInfo( x, p ) \
(x)->GetImageInfo( p )
#endif
#define IDirectInput_QueryInterface( x, p1, p2 ) \
(x)->QueryInterface( p1, p2 )
#define IDirectInput_AddRef( x ) \
(x)->AddRef()
#define IDirectInput_Release( x ) \
(x)->Release()
#define IDirectInput_CreateDevice( x, p1, p2, p3 ) \
(x)->CreateDevice( p1, p2, p3 )
#define IDirectInput_EnumDevices( x, p1, p2, p3, p4 ) \
(x)->EnumDevices( p1, p2, p3, p4 )
#define IDirectInput_GetDeviceStatus( x, p ) \
(x)->GetDeviceStatus( p )
#define IDirectInput_RunControlPanel( x, p1, p2 ) \
(x)->RunControlPanel( p1, p2 )
#define IDirectInput_Initialize( x, p1, p2 ) \
(x)->Initialize( p1, p2 )
#define IDirectInput2_QueryInterface( x, p1, p2 ) \
(x)->QueryInterface( p1, p2 )
#define IDirectInput2_AddRef( x ) \
(x)->AddRef()
#define IDirectInput2_Release( x ) \
(x)->Release()
#define IDirectInput2_CreateDevice( x, p1, p2, p3 ) \
(x)->CreateDevice( p1, p2, p3 )
#define IDirectInput2_EnumDevices( x, p1, p2, p3, p4 ) \
(x)->EnumDevices( p1, p2, p3, p4 )
#define IDirectInput2_GetDeviceStatus( x, p ) \
(x)->GetDeviceStatus( p )
#define IDirectInput2_RunControlPanel( x, p1, p2 ) \
(x)->RunControlPanel( p1, p2 )
#define IDirectInput2_Initialize( x, p1, p2 ) \
(x)->Initialize( p1, p2 )
#define IDirectInput2_FindDevice( x, p1, p2, p3 ) \
(x)->FindDevice( p1, p2, p3 )
#define IDirectInput7_QueryInterface( x, p1, p2 ) \
(x)->QueryInterface( p1, p2 )
#define IDirectInput7_AddRef( x ) \
(x)->AddRef()
#define IDirectInput7_Release( x ) \
(x)->Release()
#define IDirectInput7_CreateDevice( x, p1, p2, p3 ) \
(x)->CreateDevice( p1, p2, p3 )
#define IDirectInput7_EnumDevices( x, p1, p2, p3, p4 ) \
(x)->EnumDevices( p1, p2, p3, p4 )
#define IDirectInput7_GetDeviceStatus( x, p ) \
(x)->GetDeviceStatus( p )
#define IDirectInput7_RunControlPanel( x, p1, p2 ) \
(x)->RunControlPanel( p1, p2 )
#define IDirectInput7_Initialize( x, p1, p2 ) \
(x)->Initialize( p1, p2 )
#define IDirectInput7_FindDevice( x, p1, p2, p3 ) \
(x)->FindDevice( p1, p2, p3 )
#define IDirectInput7_CreateDeviceEx( x, p1, p2, p3, p4 ) \
(x)->CreateDeviceEx( p1, p2, p3, p4 )
#if (DIRECTINPUT_VERSION >= 0x0800)
#define IDirectInput8_QueryInterface( x, p1, p2 ) \
(x)->QueryInterface( p1, p2 )
#define IDirectInput8_AddRef( x ) \
(x)->AddRef()
#define IDirectInput8_Release( x ) \
(x)->Release()
#define IDirectInput8_CreateDevice( x, p1, p2, p3 ) \
(x)->CreateDevice( p1, p2, p3 )
#define IDirectInput8_EnumDevices( x, p1, p2, p3, p4 ) \
(x)->EnumDevices( p1, p2, p3, p4 )
#define IDirectInput8_GetDeviceStatus( x, p ) \
(x)->GetDeviceStatus( p )
#define IDirectInput8_RunControlPanel( x, p1, p2 ) \
(x)->RunControlPanel( p1, p2 )
#define IDirectInput8_Initialize( x, p1, p2 ) \
(x)->Initialize( p1, p2 )
#define IDirectInput8_FindDevice( x, p1, p2, p3 ) \
(x)->FindDevice( p1, p2, p3 )
#define IDirectInput8_EnumDevicesBySemantics( x, p1, p2, p3, p4, p5 ) \
(x)->EnumDevicesBySemantics( p1, p2, p3, p4, p5 )
#define IDirectInput8_ConfigureDevices( x, p1, p2, p3, p4 ) \
(x)->ConfigureDevices( p1, p2, p3, p4 )
#endif
#endif
/* Global variables in DINPUT.LIB and DINPUT8.LIB */
extern const DIDATAFORMAT c_dfDIMouse;
extern const DIDATAFORMAT c_dfDIKeyboard;
#if (DIRECTINPUT_VERSION >= 0x0500)
extern const DIDATAFORMAT c_dfDIJoystick;
extern const DIDATAFORMAT c_dfDIJoystick2;
#endif
#if (DIRECTINPUT_VERSION >= 0x0700)
extern const DIDATAFORMAT c_dfDIMouse2;
#endif
/* Functions in DINPUT.DLL */
extern HRESULT WINAPI DirectInputCreateA( HINSTANCE, DWORD, LPDIRECTINPUTA *, LPUNKNOWN );
extern HRESULT WINAPI DirectInputCreateEx( HINSTANCE, DWORD, REFIID, LPVOID *, LPUNKNOWN );
extern HRESULT WINAPI DirectInputCreateW( HINSTANCE, DWORD, LPDIRECTINPUTW *, LPUNKNOWN );
/* Functions in DINPUT8.DLL */
#if (DIRECTINPUT_VERSION > 0x0700)
extern HRESULT WINAPI DirectInput8Create( HINSTANCE, DWORD, REFIID, LPVOID *, LPUNKNOWN );
#endif
/* Map generic function names to the appropriate ANSI or Unicode version. */
#ifdef UNICODE
#define DirectInputCreate DirectInputCreateW
#else
#define DirectInputCreate DirectInputCreateA
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* __DINPUT_INCLUDED__ */