' ########################################################################################
' Microsoft Windows
' File: dinput.inc
' Contents: DirectInput include file
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_dinput_PBI)
#DEFINE PBX_dinput_PBI
%EQUATE `DINPUT_INC = 1
#INCLUDE ONCE "Core/Windows.inc"
#INCLUDE ONCE "Legacy/System/ObjBase.inc"
%EQUATE `DIRECTINPUT_HEADER_VERSION = &H0800
%EQUATE `DIRECTINPUT_VERSION = %DIRECTINPUT_HEADER_VERSION
'/****************************************************************************
' *
' * Class IDs
' *
' ****************************************************************************/
$CLSID_DirectInput = GUID$("{25E609E0-B259-11CF-BFC7-444553540000}")
$CLSID_DirectInputDevice = GUID$("{25E609E1-B259-11CF-BFC7-444553540000}")
$CLSID_DirectInput8 = GUID$("{25E609E4-B259-11CF-BFC7-444553540000}")
$CLSID_DirectInputDevice8 = GUID$("{25E609E5-B259-11CF-BFC7-444553540000}")
'/****************************************************************************
' *
' * Interfaces
' *
' ****************************************************************************/
$IID_IDirectInput = GUID$("{89521360-AA8A-11CF-BFC7-444553540000}")
$IID_IDirectInputA = GUID$("{89521360-AA8A-11CF-BFC7-444553540000}")
$IID_IDirectInputW = GUID$("{89521361-AA8A-11CF-BFC7-444553540000}")
$IID_IDirectInput2 = GUID$("{5944E662-AA8A-11CF-BFC7-444553540000}")
$IID_IDirectInput2A = GUID$("{5944E662-AA8A-11CF-BFC7-444553540000}")
$IID_IDirectInput2W = GUID$("{5944E663-AA8A-11CF-BFC7-444553540000}")
$IID_IDirectInput7 = GUID$("{9A4CB684-236D-11D3-8E9D-00C04F6844AE}")
$IID_IDirectInput7A = GUID$("{9A4CB684-236D-11D3-8E9D-00C04F6844AE}")
$IID_IDirectInput7W = GUID$("{9A4CB685-236D-11D3-8E9D-00C04F6844AE}")
$IID_IDirectInput8 = GUID$("{BF798030-483A-4DA2-AA99-5D64ED369700}")
$IID_IDirectInput8A = GUID$("{BF798030-483A-4DA2-AA99-5D64ED369700}")
$IID_IDirectInput8W = GUID$("{BF798031-483A-4DA2-AA99-5D64ED369700}")
$IID_IDirectInputDevice = GUID$("{5944E680-C92E-11CF-BFC7-444553540000}")
$IID_IDirectInputDeviceA = GUID$("{5944E680-C92E-11CF-BFC7-444553540000}")
$IID_IDirectInputDeviceW = GUID$("{5944E681-C92E-11CF-BFC7-444553540000}")
$IID_IDirectInputDevice2 = GUID$("{5944E682-C92E-11CF-BFC7-444553540000}")
$IID_IDirectInputDevice2A = GUID$("{5944E682-C92E-11CF-BFC7-444553540000}")
$IID_IDirectInputDevice2W = GUID$("{5944E683-C92E-11CF-BFC7-444553540000}")
$IID_IDirectInputDevice7 = GUID$("{57D7C6BC-2356-11D3-8E9D-00C04F6844AE}")
$IID_IDirectInputDevice7A = GUID$("{57D7C6BC-2356-11D3-8E9D-00C04F6844AE}")
$IID_IDirectInputDevice7W = GUID$("{57D7C6BD-2356-11D3-8E9D-00C04F6844AE}")
$IID_IDirectInputDevice8 = GUID$("{54D41080-DC15-4833-A41B-748F73A38179}")
$IID_IDirectInputDevice8A = GUID$("{54D41080-DC15-4833-A41B-748F73A38179}")
$IID_IDirectInputDevice8W = GUID$("{54D41081-DC15-4833-A41B-748F73A38179}")
$IID_IDirectInputEffect = GUID$("{E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}")
'/****************************************************************************
' *
' * Predefined object types
' *
' ****************************************************************************/
$GUID_XAxis = GUID$("{A36D02E0-C9F3-11CF-BFC7-444553540000}")
$GUID_YAxis = GUID$("{A36D02E1-C9F3-11CF-BFC7-444553540000}")
$GUID_ZAxis = GUID$("{A36D02E2-C9F3-11CF-BFC7-444553540000}")
$GUID_RxAxis = GUID$("{A36D02F4-C9F3-11CF-BFC7-444553540000}")
$GUID_RyAxis = GUID$("{A36D02F5-C9F3-11CF-BFC7-444553540000}")
$GUID_RzAxis = GUID$("{A36D02E3-C9F3-11CF-BFC7-444553540000}")
$GUID_Slider = GUID$("{A36D02E4-C9F3-11CF-BFC7-444553540000}")
$GUID_Button = GUID$("{A36D02F0-C9F3-11CF-BFC7-444553540000}")
$GUID_Key = GUID$("{55728220-D33C-11CF-BFC7-444553540000}")
$GUID_POV = GUID$("{A36D02F2-C9F3-11CF-BFC7-444553540000}")
$GUID_Unknown = GUID$("{A36D02F3-C9F3-11CF-BFC7-444553540000}")
'/****************************************************************************
' *
' * Predefined product GUIDs
' *
' ****************************************************************************/
$GUID_SysMouse = GUID$("{6F1D2B60-D5A0-11CF-BFC7-444553540000}")
$GUID_SysKeyboard = GUID$("{6F1D2B61-D5A0-11CF-BFC7-444553540000}")
$GUID_Joystick = GUID$("{6F1D2B70-D5A0-11CF-BFC7-444553540000}")
$GUID_SysMouseEm = GUID$("{6F1D2B80-D5A0-11CF-BFC7-444553540000}")
$GUID_SysMouseEm2 = GUID$("{6F1D2B81-D5A0-11CF-BFC7-444553540000}")
$GUID_SysKeyboardEm = GUID$("{6F1D2B82-D5A0-11CF-BFC7-444553540000}")
$GUID_SysKeyboardEm2 = GUID$("{6F1D2B83-D5A0-11CF-BFC7-444553540000}")
'/****************************************************************************
' *
' * Predefined force feedback effects
' *
' ****************************************************************************/
$GUID_ConstantForce = GUID$("{13541C20-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_RampForce = GUID$("{13541C21-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_Square = GUID$("{13541C22-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_Sine = GUID$("{13541C23-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_Triangle = GUID$("{13541C24-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_SawtoothUp = GUID$("{13541C25-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_SawtoothDown = GUID$("{13541C26-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_Spring = GUID$("{13541C27-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_Damper = GUID$("{13541C28-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_Inertia = GUID$("{13541C29-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_Friction = GUID$("{13541C2A-8E33-11D0-9AD0-00A0C9A06E35}")
$GUID_CustomForce = GUID$("{13541C2B-8E33-11D0-9AD0-00A0C9A06E35}")
'/****************************************************************************
' *
' * Interfaces and Structures...
' *
' ****************************************************************************/
'/****************************************************************************
' *
' * IDirectInputEffect
' *
' ****************************************************************************/
%EQUATE `DIEFT_ALL = &H00000000
%EQUATE `DIEFT_CONSTANTFORCE = &H00000001
%EQUATE `DIEFT_RAMPFORCE = &H00000002
%EQUATE `DIEFT_PERIODIC = &H00000003
%EQUATE `DIEFT_CONDITION = &H00000004
%EQUATE `DIEFT_CUSTOMFORCE = &H00000005
%EQUATE `DIEFT_HARDWARE = &H000000FF
%EQUATE `DIEFT_FFATTACK = &H00000200
%EQUATE `DIEFT_FFFADE = &H00000400
%EQUATE `DIEFT_SATURATION = &H00000800
%EQUATE `DIEFT_POSNEGCOEFFICIENTS = &H00001000
%EQUATE `DIEFT_POSNEGSATURATION = &H00002000
%EQUATE `DIEFT_DEADBAND = &H00004000
%EQUATE `DIEFT_STARTDELAY = &H00008000
'#define DIEFT_GETTYPE(n) LOBYTE(n)
MACRO DIEFT_GETTYPE(n) = LO(BYTE, n)
%EQUATE `DI_DEGREES = 100
%EQUATE `DI_FFNOMINALMAX = 10000
%EQUATE `DI_SECONDS = 1000000
' // Size = 4 bytes
TYPE DICONSTANTFORCE DWORD
 lMagnitude AS LONG
END TYPE
' // Size = 8 bytes
TYPE DIRAMPFORCE DWORD
 lStart AS LONG
 lEnd AS LONG
END TYPE
' // Size = 16 bytes
TYPE DIPERIODIC DWORD
 dwMagnitude AS DWORD
 lOffset AS LONG
 dwPhase AS DWORD
 dwPeriod AS DWORD
END TYPE
' // Size = 24 bytes
TYPE DICONDITION DWORD
 lOffset AS LONG
 lPositiveCoefficient AS LONG
 lNegativeCoefficient AS LONG
 dwPositiveSaturation AS DWORD
 dwNegativeSaturation AS DWORD
 lDeadBand AS LONG
END TYPE
' // Size = 16 bytes
TYPE DICUSTOMFORCE DWORD
 cChannels AS DWORD
 dwSamplePeriod AS DWORD
 cSamples AS DWORD
 rglForceData AS LONG PTR
END TYPE
' // Size = 20 bytes
TYPE DIENVELOPE DWORD
 dwSize AS DWORD ' DWORD /* sizeof(DIENVELOPE) */
 dwAttackLevel AS DWORD
 dwAttackTime AS DWORD ' DWORD /* Microseconds */
 dwFadeLevel AS DWORD
 dwFadeTime AS DWORD ' DWORD /* Microseconds */
END TYPE
'/* This structure is defined for DirectX 5.0 compatibility */
' // Size = 52 bytes
TYPE DIEFFECT_DX5 DWORD
 dwSize AS DWORD ' DWORD /* sizeof(DIEFFECT) */
 dwFlags AS DWORD ' DWORD /* DIEFF_* */
 dwDuration AS DWORD ' DWORD /* Microseconds */
 dwSamplePeriod AS DWORD ' DWORD /* Microseconds */
 dwGain AS DWORD
 dwTriggerButton AS DWORD ' DWORD /* or DIEB_NOTRIGGER */
 dwTriggerRepeatInterval AS DWORD ' DWORD /* Microseconds */
 cAxes AS DWORD ' DWORD /* Number of axes */
 rgdwAxes AS DWORD PTR ' LPDWORD /* Array of axes */
 rglDirection AS LONG PTR ' LPLONG /* Array of directions */
 lpEnvelope AS DWORD ' LPDIENVELOPE /* Optional */
 cbTypeSpecificParams AS DWORD ' DWORD /* Size of params */
 lpvTypeSpecificParams AS DWORD ' LPVOID /* Pointer to params */
END TYPE
' // Size = 56 bytes
TYPE DIEFFECT_DX6 DWORD
 dwSize AS DWORD ' DWORD /* sizeof(DIEFFECT) */
 dwFlags AS DWORD ' DWORD /* DIEFF_* */
 dwDuration AS DWORD ' DWORD /* Microseconds */
 dwSamplePeriod AS DWORD ' DWORD /* Microseconds */
 dwGain AS DWORD
 dwTriggerButton AS DWORD ' DWORD /* or DIEB_NOTRIGGER */
 dwTriggerRepeatInterval AS DWORD ' DWORD /* Microseconds */
 cAxes AS DWORD ' DWORD /* Number of axes */
 rgdwAxes AS DWORD PTR ' LPDWORD /* Array of axes */
 rglDirection AS LONG PTR ' LPLONG /* Array of directions */
 lpEnvelope AS DWORD ' LPDIENVELOPE /* Optional */
 cbTypeSpecificParams AS DWORD ' DWORD /* Size of params */
 lpvTypeSpecificParams AS DWORD ' DWORD /* Pointer to params */
'#if(DIRECTINPUT_VERSION >= 0x0600)
 dwStartDelay AS DWORD ' DWORD /* Microseconds */
'#endif /* DIRECTINPUT_VERSION >= 0x0600 */
END TYPE
MACRO DIEFFECT = DIEFFECT_DX6
' // Size = 284 bytes
TYPE DIFILEEFFECT DWORD
 dwSize AS DWORD
 GuidEffect AS GUID ' GUID
 lpDiEffect AS DWORD
 szFriendlyName AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
END TYPE
%EQUATE `DIEFF_OBJECTIDS = &H00000001
%EQUATE `DIEFF_OBJECTOFFSETS = &H00000002
%EQUATE `DIEFF_CARTESIAN = &H00000010
%EQUATE `DIEFF_POLAR = &H00000020
%EQUATE `DIEFF_SPHERICAL = &H00000040
%EQUATE `DIEP_DURATION = &H00000001
%EQUATE `DIEP_SAMPLEPERIOD = &H00000002
%EQUATE `DIEP_GAIN = &H00000004
%EQUATE `DIEP_TRIGGERBUTTON = &H00000008
%EQUATE `DIEP_TRIGGERREPEATINTERVAL = &H00000010
%EQUATE `DIEP_AXES = &H00000020
%EQUATE `DIEP_DIRECTION = &H00000040
%EQUATE `DIEP_ENVELOPE = &H00000080
%EQUATE `DIEP_TYPESPECIFICPARAMS = &H00000100
%EQUATE `DIEP_STARTDELAY = &H00000200
%EQUATE `DIEP_ALLPARAMS_DX5 = &H000001FF
%EQUATE `DIEP_ALLPARAMS = &H000003FF
'%DIEP_ALLPARAMS = &H000001FF ' // DirectInput < 6.0
%EQUATE `DIEP_START = &H20000000
%EQUATE `DIEP_NORESTART = &H40000000
%EQUATE `DIEP_NODOWNLOAD = &H80000000
%EQUATE `DIEB_NOTRIGGER = &HFFFFFFFF
%EQUATE `DIES_SOLO = &H00000001
%EQUATE `DIES_NODOWNLOAD = &H80000000
%EQUATE `DIEGES_PLAYING = &H00000001
%EQUATE `DIEGES_EMULATED = &H00000002
' // Size = 24 bytes
TYPE DIEFFESCAPE DWORD
 dwSize AS DWORD
 dwCommand AS DWORD
 lpvInBuffer AS DWORD
 cbInBuffer AS DWORD
 lpvOutBuffer AS DWORD
 cbOutBuffer AS DWORD
END TYPE
' ########################################################################################
' IDirectInputEffect interface
' IID = E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35
' Inherited interface = IUnknown
' ########################################################################################
INTERFACE IDirectInputEffect $IID_IDirectInputEffect
 INHERIT IUnknown
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 12
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD GetEffectGuid ( ' VTable offset = 16
 BYREF pguid AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD GetParameters ( ' VTable offset = 20
 BYREF pguid AS DIEFFECT
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetParameters ( ' VTable offset = 24
 BYREF pguid AS DIEFFECT
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Start ( ' VTable offset = 28
 BYVAL dwIterations AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Stop ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetEffectStatus ( ' VTable offset = 36
 BYREF pdwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Download ( ' VTable offset = 40
 ) AS LONG
 ' =====================================================================================
 METHOD Unload ( ' VTable offset = 44
 ) AS LONG
 ' =====================================================================================
 METHOD Escape ( ' VTable offset = 48
 BYREF pesc AS DIEFFESCAPE
 ) AS LONG
 ' =====================================================================================
END INTERFACE
'/****************************************************************************
' *
' * IDirectInputDevice
' *
' ****************************************************************************/
%EQUATE `DIDEVTYPE_DEVICE = 1
%EQUATE `DIDEVTYPE_MOUSE = 2
%EQUATE `DIDEVTYPE_KEYBOARD = 3
%EQUATE `DIDEVTYPE_JOYSTICK = 4
%EQUATE `DI8DEVCLASS_ALL = 0
%EQUATE `DI8DEVCLASS_DEVICE = 1
%EQUATE `DI8DEVCLASS_POINTER = 2
%EQUATE `DI8DEVCLASS_KEYBOARD = 3
%EQUATE `DI8DEVCLASS_GAMECTRL = 4
%EQUATE `DI8DEVTYPE_DEVICE = &H11
%EQUATE `DI8DEVTYPE_MOUSE = &H12
%EQUATE `DI8DEVTYPE_KEYBOARD = &H13
%EQUATE `DI8DEVTYPE_JOYSTICK = &H14
%EQUATE `DI8DEVTYPE_GAMEPAD = &H15
%EQUATE `DI8DEVTYPE_DRIVING = &H16
%EQUATE `DI8DEVTYPE_FLIGHT = &H17
%EQUATE `DI8DEVTYPE_1STPERSON = &H18
%EQUATE `DI8DEVTYPE_DEVICECTRL = &H19
%EQUATE `DI8DEVTYPE_SCREENPOINTER = &H1A
%EQUATE `DI8DEVTYPE_REMOTE = &H1B
%EQUATE `DI8DEVTYPE_SUPPLEMENTAL = &H1C
%EQUATE `DIDEVTYPE_HID = &H00010000
%EQUATE `DIDEVTYPEMOUSE_UNKNOWN = 1
%EQUATE `DIDEVTYPEMOUSE_TRADITIONAL = 2
%EQUATE `DIDEVTYPEMOUSE_FINGERSTICK = 3
%EQUATE `DIDEVTYPEMOUSE_TOUCHPAD = 4
%EQUATE `DIDEVTYPEMOUSE_TRACKBALL = 5
%EQUATE `DIDEVTYPEKEYBOARD_UNKNOWN = 0
%EQUATE `DIDEVTYPEKEYBOARD_PCXT = 1
%EQUATE `DIDEVTYPEKEYBOARD_OLIVETTI = 2
%EQUATE `DIDEVTYPEKEYBOARD_PCAT = 3
%EQUATE `DIDEVTYPEKEYBOARD_PCENH = 4
%EQUATE `DIDEVTYPEKEYBOARD_NOKIA1050 = 5
%EQUATE `DIDEVTYPEKEYBOARD_NOKIA9140 = 6
%EQUATE `DIDEVTYPEKEYBOARD_NEC98 = 7
%EQUATE `DIDEVTYPEKEYBOARD_NEC98LAPTOP = 8
%EQUATE `DIDEVTYPEKEYBOARD_NEC98106 = 9
%EQUATE `DIDEVTYPEKEYBOARD_JAPAN106 = 10
%EQUATE `DIDEVTYPEKEYBOARD_JAPANAX = 11
%EQUATE `DIDEVTYPEKEYBOARD_J3100 = 12
%EQUATE `DIDEVTYPEJOYSTICK_UNKNOWN = 1
%EQUATE `DIDEVTYPEJOYSTICK_TRADITIONAL = 2
%EQUATE `DIDEVTYPEJOYSTICK_FLIGHTSTICK = 3
%EQUATE `DIDEVTYPEJOYSTICK_GAMEPAD = 4
%EQUATE `DIDEVTYPEJOYSTICK_RUDDER = 5
%EQUATE `DIDEVTYPEJOYSTICK_WHEEL = 6
%EQUATE `DIDEVTYPEJOYSTICK_HEADTRACKER = 7
%EQUATE `DI8DEVTYPEMOUSE_UNKNOWN = 1
%EQUATE `DI8DEVTYPEMOUSE_TRADITIONAL = 2
%EQUATE `DI8DEVTYPEMOUSE_FINGERSTICK = 3
%EQUATE `DI8DEVTYPEMOUSE_TOUCHPAD = 4
%EQUATE `DI8DEVTYPEMOUSE_TRACKBALL = 5
%EQUATE `DI8DEVTYPEMOUSE_ABSOLUTE = 6
%EQUATE `DI8DEVTYPEKEYBOARD_UNKNOWN = 0
%EQUATE `DI8DEVTYPEKEYBOARD_PCXT = 1
%EQUATE `DI8DEVTYPEKEYBOARD_OLIVETTI = 2
%EQUATE `DI8DEVTYPEKEYBOARD_PCAT = 3
%EQUATE `DI8DEVTYPEKEYBOARD_PCENH = 4
%EQUATE `DI8DEVTYPEKEYBOARD_NOKIA1050 = 5
%EQUATE `DI8DEVTYPEKEYBOARD_NOKIA9140 = 6
%EQUATE `DI8DEVTYPEKEYBOARD_NEC98 = 7
%EQUATE `DI8DEVTYPEKEYBOARD_NEC98LAPTOP = 8
%EQUATE `DI8DEVTYPEKEYBOARD_NEC98106 = 9
%EQUATE `DI8DEVTYPEKEYBOARD_JAPAN106 = 10
%EQUATE `DI8DEVTYPEKEYBOARD_JAPANAX = 11
%EQUATE `DI8DEVTYPEKEYBOARD_J3100 = 12
%EQUATE `DI8DEVTYPE_LIMITEDGAMESUBTYPE = 1
%EQUATE `DI8DEVTYPEJOYSTICK_LIMITED = %DI8DEVTYPE_LIMITEDGAMESUBTYPE
%EQUATE `DI8DEVTYPEJOYSTICK_STANDARD = 2
%EQUATE `DI8DEVTYPEGAMEPAD_LIMITED = %DI8DEVTYPE_LIMITEDGAMESUBTYPE
%EQUATE `DI8DEVTYPEGAMEPAD_STANDARD = 2
%EQUATE `DI8DEVTYPEGAMEPAD_TILT = 3
%EQUATE `DI8DEVTYPEDRIVING_LIMITED = %DI8DEVTYPE_LIMITEDGAMESUBTYPE
%EQUATE `DI8DEVTYPEDRIVING_COMBINEDPEDALS = 2
%EQUATE `DI8DEVTYPEDRIVING_DUALPEDALS = 3
%EQUATE `DI8DEVTYPEDRIVING_THREEPEDALS = 4
%EQUATE `DI8DEVTYPEDRIVING_HANDHELD = 5
%EQUATE `DI8DEVTYPEFLIGHT_LIMITED = %DI8DEVTYPE_LIMITEDGAMESUBTYPE
%EQUATE `DI8DEVTYPEFLIGHT_STICK = 2
%EQUATE `DI8DEVTYPEFLIGHT_YOKE = 3
%EQUATE `DI8DEVTYPEFLIGHT_RC = 4
%EQUATE `DI8DEVTYPE1STPERSON_LIMITED = %DI8DEVTYPE_LIMITEDGAMESUBTYPE
%EQUATE `DI8DEVTYPE1STPERSON_UNKNOWN = 2
%EQUATE `DI8DEVTYPE1STPERSON_SIXDOF = 3
%EQUATE `DI8DEVTYPE1STPERSON_SHOOTER = 4
%EQUATE `DI8DEVTYPESCREENPTR_UNKNOWN = 2
%EQUATE `DI8DEVTYPESCREENPTR_LIGHTGUN = 3
%EQUATE `DI8DEVTYPESCREENPTR_LIGHTPEN = 4
%EQUATE `DI8DEVTYPESCREENPTR_TOUCH = 5
%EQUATE `DI8DEVTYPEREMOTE_UNKNOWN = 2
%EQUATE `DI8DEVTYPEDEVICECTRL_UNKNOWN = 2
%EQUATE `DI8DEVTYPEDEVICECTRL_COMMSSELECTION = 3
%EQUATE `DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED = 4
%EQUATE `DI8DEVTYPESUPPLEMENTAL_UNKNOWN = 2
%EQUATE `DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER = 3
%EQUATE `DI8DEVTYPESUPPLEMENTAL_HEADTRACKER = 4
%EQUATE `DI8DEVTYPESUPPLEMENTAL_HANDTRACKER = 5
%EQUATE `DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE = 6
%EQUATE `DI8DEVTYPESUPPLEMENTAL_SHIFTER = 7
%EQUATE `DI8DEVTYPESUPPLEMENTAL_THROTTLE = 8
%EQUATE `DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE = 9
%EQUATE `DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS = 10
%EQUATE `DI8DEVTYPESUPPLEMENTAL_DUALPEDALS = 11
%EQUATE `DI8DEVTYPESUPPLEMENTAL_THREEPEDALS = 12
%EQUATE `DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS = 13
'#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType)
'#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)
MACRO GET_DIDEVICE_TYPE(dwDevType) = LO(BYTE, dwDevType)
MACRO GET_DIDEVICE_SUBTYPE(dwDevType) = HI(BYTE, dwDevType)
'/* This structure is defined for DirectX 3.0 compatibility */
' // Size = 24 bytes
TYPE DIDEVCAPS_DX3 DWORD
 dwSize AS DWORD
 dwFlags AS DWORD
 dwDevType AS DWORD
 dwAxes AS DWORD
 dwButtons AS DWORD
 dwPOVs AS DWORD
END TYPE
' // Size = 44 bytes
TYPE DIDEVCAPS DWORD
 dwSize AS DWORD
 dwFlags AS DWORD
 dwDevType AS DWORD
 dwAxes AS DWORD
 dwButtons AS DWORD
 dwPOVs AS DWORD
'#if(DIRECTINPUT_VERSION >= 0x0500)
 dwFFSamplePeriod AS DWORD
 dwFFMinTimeResolution AS DWORD
 dwFirmwareRevision AS DWORD
 dwHardwareRevision AS DWORD
 dwFFDriverVersion AS DWORD
'#endif /* DIRECTINPUT_VERSION >= 0x0500 */
END TYPE
%EQUATE `DIDC_ATTACHED = &H00000001
%EQUATE `DIDC_POLLEDDEVICE = &H00000002
%EQUATE `DIDC_EMULATED = &H00000004
%EQUATE `DIDC_POLLEDDATAFORMAT = &H00000008
%EQUATE `DIDC_FORCEFEEDBACK = &H00000100
%EQUATE `DIDC_FFATTACK = &H00000200
%EQUATE `DIDC_FFFADE = &H00000400
%EQUATE `DIDC_SATURATION = &H00000800
%EQUATE `DIDC_POSNEGCOEFFICIENTS = &H00001000
%EQUATE `DIDC_POSNEGSATURATION = &H00002000
%EQUATE `DIDC_DEADBAND = &H00004000
%EQUATE `DIDC_STARTDELAY = &H00008000
%EQUATE `DIDC_ALIAS = &H00010000
%EQUATE `DIDC_PHANTOM = &H00020000
%EQUATE `DIDC_HIDDEN = &H00040000
%EQUATE `DIDFT_ALL = &H00000000
%EQUATE `DIDFT_RELAXIS = &H00000001
%EQUATE `DIDFT_ABSAXIS = &H00000002
%EQUATE `DIDFT_AXIS = &H00000003
%EQUATE `DIDFT_PSHBUTTON = &H00000004
%EQUATE `DIDFT_TGLBUTTON = &H00000008
%EQUATE `DIDFT_BUTTON = &H0000000C
%EQUATE `DIDFT_POV = &H00000010
%EQUATE `DIDFT_COLLECTION = &H00000040
%EQUATE `DIDFT_NODATA = &H00000080
%EQUATE `DIDFT_ANYINSTANCE = &H00FFFF00
%EQUATE `DIDFT_INSTANCEMASK = %DIDFT_ANYINSTANCE
'%DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8)
FUNCTION DIDFT_MAKEINSTANCE (BYVAL n AS WORD) AS WORD
 SHIFT LEFT n, 8
 FUNCTION = n
END FUNCTION
'%DIDFT_GETTYPE(n) LOBYTE(n)
MACRO DIDFT_GETTYPE(n) = LO(BYTE, n)
'%DIDFT_GETINSTANCE(n) LOWORD((n) >> 8)
FUNCTION DIDFT_GETINSTANCE (BYVAL n AS WORD) AS WORD
 SHIFT RIGHT n, 8
 FUNCTION = n
END FUNCTION
%EQUATE `DIDFT_FFACTUATOR = &H01000000
%EQUATE `DIDFT_FFEFFECTTRIGGER = &H02000000
%EQUATE `DIDFT_OUTPUT = &H10000000
%EQUATE `DIDFT_VENDORDEFINED = &H04000000
%EQUATE `DIDFT_ALIAS = &H08000000
%EQUATE `DIDFT_OPTIONAL = &H80000000 ' // Not included in Windows 7 Sdk
'%DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)
FUNCTION DIDFT_ENUMCOLLECTION (BYVAL n AS WORD) AS WORD
 SHIFT LEFT n, 8
 FUNCTION = n
END FUNCTION
%EQUATE `DIDFT_NOCOLLECTION = &H00FFFF00
' // Size = 16 bytes
TYPE DIOBJECTDATAFORMAT DWORD
 pguid AS GUID PTR ' const GUID *
 dwOfs AS DWORD
 dwType AS DWORD
 dwFlags AS DWORD
END TYPE
' // Size = 24 bytes
TYPE DIDATAFORMAT DWORD
 dwSize AS DWORD
 dwObjSize AS DWORD
 dwFlags AS DWORD
 dwDataSize AS DWORD
 dwNumObjs AS DWORD
 rgodf AS DIOBJECTDATAFORMAT PTR ' LPDIOBJECTDATAFORMAT // Array of DIOBJECTDATAFORMAT structures
END TYPE
%EQUATE `DIDF_ABSAXIS = &H00000001
%EQUATE `DIDF_RELAXIS = &H00000002
'#ifdef __cplusplus
'extern "C" {
'#endif
'extern const DIDATAFORMAT c_dfDIMouse;
'#if(DIRECTINPUT_VERSION >= 0x0700)
'extern const DIDATAFORMAT c_dfDIMouse2;
'#endif /* DIRECTINPUT_VERSION >= 0x0700 */
'extern const DIDATAFORMAT c_dfDIKeyboard;
'#if(DIRECTINPUT_VERSION >= 0x0500)
'extern const DIDATAFORMAT c_dfDIJoystick;
'extern const DIDATAFORMAT c_dfDIJoystick2;
'#endif /* DIRECTINPUT_VERSION >= 0x0500 */
'#ifdef __cplusplus
'};
'#endif
' // Size = 4 bytes
UNION DIACTIONA_UNION DWORD
 lptszActionName AS ASCIIZ PTR
 uResIdString AS DWORD ' UINT
END UNION
' // Size = 40 bytes
TYPE DIACTIONA DWORD
 uAppData AS DWORD PTR ' UINT_PTR
 dwSemantic AS DWORD
 dwFlags AS DWORD
 DIACTIONA_UNION
 guidInstance AS GUID ' GUID
 dwObjID AS DWORD
 dwHow AS DWORD
END TYPE
' // Size = 4 bytes
UNION DIACTIONW_UNION DWORD
 lptszActionName AS WSTRINGZ PTR
 uResIdString AS DWORD ' UINT
END UNION
' // Size = 40 bytes
TYPE DIACTIONW
 uAppData AS DWORD PTR ' UINT_PTR
 dwSemantic AS DWORD
 dwFlags AS DWORD
 DIACTIONW_UNION
 guidInstance AS GUID ' GUID
 dwObjID AS DWORD
 dwHow AS DWORD
END TYPE
#IF %DEF(%UNICODE)
 MACRO DIACTION = DIACTIONW
#ELSE
 MACRO DIACTION = DIACTIONA
#ENDIF
%EQUATE `DIA_FORCEFEEDBACK = &H00000001
%EQUATE `DIA_APPMAPPED = &H00000002
%EQUATE `DIA_APPNOMAP = &H00000004
%EQUATE `DIA_NORANGE = &H00000008
%EQUATE `DIA_APPFIXED = &H00000010
%EQUATE `DIAH_UNMAPPED = &H00000000
%EQUATE `DIAH_USERCONFIG = &H00000001
%EQUATE `DIAH_APPREQUESTED = &H00000002
%EQUATE `DIAH_HWAPP = &H00000004
%EQUATE `DIAH_HWDEFAULT = &H00000008
%EQUATE `DIAH_DEFAULT = &H00000020
%EQUATE `DIAH_ERROR = &H80000000
' // Size = 328 bytes
TYPE DIACTIONFORMATA DWORD
 dwSize AS DWORD
 dwActionSize AS DWORD
 dwDataSize AS DWORD
 dwNumActions AS DWORD
 rgoAction AS DIACTIONA PTR ' LPDIACTIONA // Array of DIACTIONA structures
 guidActionMap AS GUID ' GUID
 dwGenre AS DWORD
 dwBufferSize AS DWORD
 lAxisMin AS LONG
 lAxisMax AS LONG
 hInstString AS DWORD ' HINSTANCE
 ftTimeStamp AS FILETIME ' FILETIME
 dwCRC AS DWORD
 tszActionMap AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
END TYPE
' // Size = 588 bytes
TYPE DIACTIONFORMATW DWORD
 dwSize AS DWORD
 dwActionSize AS DWORD
 dwDataSize AS DWORD
 dwNumActions AS DWORD
 rgoAction AS DIACTIONW PTR ' LPDIACTIONW // Array of DIACTIONW structures
 guidActionMap AS GUID ' GUID
 dwGenre AS DWORD
 dwBufferSize AS DWORD
 lAxisMin AS LONG
 lAxisMax AS LONG
 hInstString AS DWORD ' HISNTANCE
 ftTimeStamp AS FILETIME ' FILETIME
 dwCRC AS DWORD
 tszActionMap AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
END TYPE
#IF %DEF(%UNICODE)
 MACRO DIACTIONFORMAT = DIACTIONFORMATW
#ELSE
 MACRO DIACTIONFORMAT = DIACTIONFORMATA
#ENDIF
%EQUATE `DIAFTS_NEWDEVICELOW = &HFFFFFFFF
%EQUATE `DIAFTS_NEWDEVICEHIGH = &HFFFFFFFF
%EQUATE `DIAFTS_UNUSEDDEVICELOW = &H00000000
%EQUATE `DIAFTS_UNUSEDDEVICEHIGH = &H00000000
%EQUATE `DIDBAM_DEFAULT = &H00000000
%EQUATE `DIDBAM_PRESERVE = &H00000001
%EQUATE `DIDBAM_INITIALIZE = &H00000002
%EQUATE `DIDBAM_HWDEFAULTS = &H00000004
%EQUATE `DIDSAM_DEFAULT = &H00000000
%EQUATE `DIDSAM_NOUSER = &H00000001
%EQUATE `DIDSAM_FORCESAVE = &H00000002
%EQUATE `DICD_DEFAULT = &H00000000
%EQUATE `DICD_EDIT = &H00000001
'/*
' * The following definition is normally defined in d3dtypes.h
' */
'#ifndef D3DCOLOR_DEFINED
'typedef DWORD D3DCOLOR;
'#define D3DCOLOR_DEFINED
'#endif
' // Size = 36 bytes
TYPE DICOLORSET DWORD
 dwSize AS DWORD
 cTextFore AS DWORD ' D3DCOLOR
 cTextHighlight AS DWORD ' D3DCOLOR
 cCalloutLine AS DWORD ' D3DCOLOR
 cCalloutHighlight AS DWORD ' D3DCOLOR
 cBorder AS DWORD ' D3DCOLOR
 cControlFill AS DWORD ' D3DCOLOR
 cHighlightFill AS DWORD ' D3DCOLOR
 cAreaFill AS DWORD ' D3DCOLOR
END TYPE
' // Size = 64 bytes
TYPE DICONFIGUREDEVICESPARAMSA DWORD
 dwSize AS DWORD
 dwcUsers AS DWORD
 lptszUserNames AS ASCIIZ PTR
 dwcFormats AS DWORD
 lprgFormats AS DIACTIONFORMATA PTR
 hwnd AS DWORD
 dics AS DICOLORSET ' DICOLORSET
 lpUnkDDSTarget AS DWORD PTR ' IUnknown FAR *
END TYPE
' // Size = 64 bytes
TYPE DICONFIGUREDEVICESPARAMSW DWORD
 dwSize AS DWORD
 dwcUsers AS DWORD
 lptszUserNames AS WSTRINGZ PTR
 dwcFormats AS DWORD
 lprgFormats AS DIACTIONFORMATW PTR
 hwnd AS DWORD
 dics AS DICOLORSET ' DICOLORSET
 lpUnkDDSTarget AS DWORD PTR ' IUnknown FAR *
END TYPE
#IF %DEF(%UNICODE)
 MACRO DICONFIGUREDEVICESPARAMS = DICONFIGUREDEVICESPARAMSW
#ELSE
 MACRO DICONFIGUREDEVICESPARAMS = DICONFIGUREDEVICESPARAMSA
#ENDIF
%EQUATE `DIDIFT_CONFIGURATION = &H00000001
%EQUATE `DIDIFT_OVERLAY = &H00000002
%EQUATE `DIDAL_CENTERED = &H00000000
%EQUATE `DIDAL_LEFTALIGNED = &H00000001
%EQUATE `DIDAL_RIGHTALIGNED = &H00000002
%EQUATE `DIDAL_MIDDLE = &H00000000
%EQUATE `DIDAL_TOPALIGNED = &H00000004
%EQUATE `DIDAL_BOTTOMALIGNED = &H00000008
' // Size = 352 bytes
TYPE DIDEVICEIMAGEINFOA DWORD
 tszImagePath AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
 dwFlags AS DWORD
 ' // These are valid if DIDIFT_OVERLAY is present in dwFlags.
 dwViewID AS DWORD
 rcOverlay AS RECT ' RECT
 dwObjID AS DWORD
 dwcValidPts AS DWORD
 rgptCalloutLine(4) AS POINT ' POINT[5]
 rcCalloutRect AS RECT ' RECT
 dwTextAlign AS DWORD
END TYPE
' // Size = 612 bytes
TYPE DIDEVICEIMAGEINFOW DWORD
 tszImagePath AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
 dwFlags AS DWORD
 ' // These are valid if DIDIFT_OVERLAY is present in dwFlags.
 dwViewID AS DWORD
 rcOverlay AS RECT ' RECT
 dwObjID AS DWORD
 dwcValidPts AS DWORD ' DWORD[5]
 rgptCalloutLine(4) AS POINT
 rcCalloutRect AS RECT ' RECT
 dwTextAlign AS DWORD
END TYPE
#IF %DEF(%UNICODE)
 MACRO DIDEVICEIMAGEINFO = DIDEVICEIMAGEINFOW
#ELSE
 MACRO DIDEVICEIMAGEINFO = DIDEVICEIMAGEINFOA
#ENDIF
' // Size = 36 bytes
TYPE DIDEVICEIMAGEINFOHEADERA DWORD
 dwSize AS DWORD
 dwSizeImageInfo AS DWORD
 dwcViews AS DWORD
 dwcButtons AS DWORD
 dwcAxes AS DWORD
 dwcPOVs AS DWORD
 dwBufferSize AS DWORD
 dwBufferUsed AS DWORD
 lprgImageInfoArray AS DIDEVICEIMAGEINFOA PTR
END TYPE
TYPE DIDEVICEIMAGEINFOHEADERW DWORD
 dwSize AS DWORD
 dwSizeImageInfo AS DWORD
 dwcViews AS DWORD
 dwcButtons AS DWORD
 dwcAxes AS DWORD
 dwcPOVs AS DWORD
 dwBufferSize AS DWORD
 dwBufferUsed AS DWORD
 lprgImageInfoArray AS DIDEVICEIMAGEINFOW PTR
END TYPE
#IF %DEF(%UNICODE)
 MACRO DIDEVICEIMAGEINFOHEADER = DIDEVICEIMAGEINFOHEADERW
#ELSE
 MACRO DIDEVICEIMAGEINFOHEADER = DIDEVICEIMAGEINFOHEADERA
#ENDIF
'/* These structures are defined for DirectX 3.0 compatibility */
' // Size = 292 bytes
TYPE DIDEVICEOBJECTINSTANCE_DX3A DWORD
 dwSize AS DWORD
 guidType AS GUID ' GUID
 dwOfs AS DWORD
 dwType AS DWORD
 dwFlags AS DWORD
 tszName AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
END TYPE
' // Size = 552 bytes
TYPE DIDEVICEOBJECTINSTANCE_DX3W DWORD
 dwSize AS DWORD
 guidType AS GUID ' GUID
 dwOfs AS DWORD
 dwType AS DWORD
 dwFlags AS DWORD
 tszName AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
END TYPE
#IF %DEF(%UNICODE)
 MACRO DIDEVICEOBJECTINSTANCE_DX3 = DIDEVICEOBJECTINSTANCE_DX3W
#ELSE
 MACRO DIDEVICEOBJECTINSTANCE_DX3 = DIDEVICEOBJECTINSTANCE_DX3A
#ENDIF
' // Size = 316 bytes
TYPE DIDEVICEOBJECTINSTANCEA WORD
 dwSize AS DWORD
 guidType AS GUID ' GUID
 dwOfs AS DWORD
 dwType AS DWORD
 dwFlags AS DWORD
 tszName AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
'#if(DIRECTINPUT_VERSION >= 0x0500)
 dwFFMaxForce AS DWORD
 dwFFForceResolution AS DWORD
 wCollectionNumber AS WORD ' WORD
 wDesignatorIndex AS WORD ' WORD
 wUsagePage AS WORD ' WORD
 wUsage AS WORD ' WORD
 dwDimension AS DWORD
 wExponent AS WORD ' WORD
 wReportId AS WORD ' WORD
'#endif /* DIRECTINPUT_VERSION >= 0x0500 */
END TYPE
' // Size = 576 bytes
TYPE DIDEVICEOBJECTINSTANCEW WORD
 dwSize AS DWORD
 guidType AS GUID ' GUID
 dwOfs AS DWORD
 dwType AS DWORD
 dwFlags AS DWORD
 tszName AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
'#if(DIRECTINPUT_VERSION >= 0x0500)
 dwFFMaxForce AS DWORD
 dwFFForceResolution AS DWORD
 wCollectionNumber AS WORD ' WORD
 wDesignatorIndex AS WORD ' WORD
 wUsagePage AS WORD ' WORD
 wUsage AS WORD ' WORD
 dwDimension AS DWORD
 wExponent AS WORD ' WORD
 wReportId AS WORD ' WORD
'#endif /* DIRECTINPUT_VERSION >= 0x0500 */
END TYPE
#IF %DEF(%UNICODE)
 MACRO DIDEVICEOBJECTINSTANCE = DIDEVICEOBJECTINSTANCEW
#ELSE
 MACRO DIDEVICEOBJECTINSTANCE = DIDEVICEOBJECTINSTANCEA
#ENDIF
%EQUATE `DIDOI_FFACTUATOR = &H00000001
%EQUATE `DIDOI_FFEFFECTTRIGGER = &H00000002
%EQUATE `DIDOI_POLLED = &H00008000
%EQUATE `DIDOI_ASPECTPOSITION = &H00000100
%EQUATE `DIDOI_ASPECTVELOCITY = &H00000200
%EQUATE `DIDOI_ASPECTACCEL = &H00000300
%EQUATE `DIDOI_ASPECTFORCE = &H00000400
%EQUATE `DIDOI_ASPECTMASK = &H00000F00
%EQUATE `DIDOI_GUIDISUSAGE = &H00010000
' // Size = 16 bytes
TYPE DIPROPHEADER DWORD
 dwSize AS DWORD
 dwHeaderSize AS DWORD
 dwObj AS DWORD
 dwHow AS DWORD
END TYPE
%EQUATE `DIPH_DEVICE = 0
%EQUATE `DIPH_BYOFFSET = 1
%EQUATE `DIPH_BYID = 2
%EQUATE `DIPH_BYUSAGE = 3
'#define DIMAKEUSAGEDWORD(UsagePage, Usage) \
' (DWORD)MAKELONG(Usage, UsagePage)
' // Size = 20 bytes
TYPE DIPROPDWORD DWORD
 diph AS DIPROPHEADER ' DIPROPHEADER
 dwData AS DWORD
END TYPE
' // Size = 20 bytes
TYPE DIPROPPOINTER DWORD
 diph AS DIPROPHEADER ' DIPROPHEADER
 uData AS DWORD ' UINT_PTR
END TYPE
' // Size = 24 bytes
TYPE DIPROPRANGE DWORD
 diph AS DIPROPHEADER ' DIPROPHEADER
 lMin AS LONG
 lMax AS LONG
END TYPE
%EQUATE `DIPROPRANGE_NOMIN = &H80000000
%EQUATE `DIPROPRANGE_NOMAX = &H7FFFFFFF
' // Size = 28 bytes
TYPE DIPROPCAL DWORD
 diph AS DIPROPHEADER ' DIPROPHEADER
 lMin AS LONG
 lCenter AS LONG
 lMax AS LONG
END TYPE
' // Size = 56 bytes
TYPE DIPROPCALPOV DWORD
 diph AS DIPROPHEADER ' DIPROPHEADER
 lMin(4) AS LONG ' LONG[5]
 lMax(4) AS LONG ' LONG[5]
END TYPE
' // Size = 552 bytes
TYPE DIPROPGUIDANDPATH DWORD
 diph AS DIPROPHEADER ' DIPROPHEADER
 guidClass AS GUID ' GUID
 wszPath AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
END TYPE
' // Size = 536 bytes
TYPE DIPROPSTRING DWORD
 diph AS DIPROPHEADER ' DIPROPHEADER
 wsz AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
END TYPE
%EQUATE `MAXCPOINTSNUM = 8
' // Size = 8 bytes
TYPE CPOINT DWORD
 lP AS LONG ' LONG // raw value
 dwLog AS DWORD ' DWORD // logical_value / max_logical_value * 10000
END TYPE
' // Size = 84 bytes
TYPE DIPROPCPOINTS DWORD
 diph AS DIPROPHEADER ' DIPROPHEADER
 dwCPointsNum AS DWORD
 cp(%MAXCPOINTSNUM - 1) AS CPOINT ' CPOINT[MAXCPOINTSNUM]
END TYPE
'#define MAKEDIPROP(prop) (*(const GUID *)(prop))
'#define DIPROP_BUFFERSIZE MAKEDIPROP(1)
'#define DIPROP_AXISMODE MAKEDIPROP(2)
%EQUATE `DIPROPAXISMODE_ABS = 0
%EQUATE `DIPROPAXISMODE_REL = 1
'#define DIPROP_GRANULARITY MAKEDIPROP(3)
'#define DIPROP_RANGE MAKEDIPROP(4)
'#define DIPROP_DEADZONE MAKEDIPROP(5)
'#define DIPROP_SATURATION MAKEDIPROP(6)
'#define DIPROP_FFGAIN MAKEDIPROP(7)
'#define DIPROP_FFLOAD MAKEDIPROP(8)
'#define DIPROP_AUTOCENTER MAKEDIPROP(9)
%EQUATE `DIPROPAUTOCENTER_OFF = 0
%EQUATE `DIPROPAUTOCENTER_ON = 1
'#define DIPROP_CALIBRATIONMODE MAKEDIPROP(10)
%EQUATE `DIPROPCALIBRATIONMODE_COOKED = 0
%EQUATE `DIPROPCALIBRATIONMODE_RAW = 1
'#define DIPROP_CALIBRATION MAKEDIPROP(11)
'#define DIPROP_GUIDANDPATH MAKEDIPROP(12)
'#define DIPROP_INSTANCENAME MAKEDIPROP(13)
'#define DIPROP_PRODUCTNAME MAKEDIPROP(14)
'#define DIPROP_JOYSTICKID MAKEDIPROP(15)
'#define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16)
'#define DIPROP_PHYSICALRANGE MAKEDIPROP(18)
'#define DIPROP_LOGICALRANGE MAKEDIPROP(19)
'#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)
' // Size = 16 bytes
TYPE DIDEVICEOBJECTDATA_DX3 DWORD
 dwOfs AS DWORD
 dwData AS DWORD
 dwTimeStamp AS DWORD
 dwSequence AS DWORD
END TYPE
' // Size = 20 bytes
TYPE DIDEVICEOBJECTDATA DWORD
 dwOfs AS DWORD
 dwData AS DWORD
 dwTimeStamp AS DWORD
 dwSequence AS DWORD
'#if(DIRECTINPUT_VERSION >= 0x0800)
 uAppData AS DWORD ' UINT_PTR
'#endif /* DIRECTINPUT_VERSION >= 0x0800 */
END TYPE
%EQUATE `DIGDD_PEEK = &H00000001
'#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \
' ((int)((dwSequence1) - (dwSequence2)) cmp 0)
%EQUATE `DISCL_EXCLUSIVE = &H00000001
%EQUATE `DISCL_NONEXCLUSIVE = &H00000002
%EQUATE `DISCL_FOREGROUND = &H00000004
%EQUATE `DISCL_BACKGROUND = &H00000008
%EQUATE `DISCL_NOWINKEY = &H00000010
' // Size = 560 bytes
TYPE DIDEVICEINSTANCE_DX3A DWORD
 dwSize AS DWORD
 guidInstance AS GUID ' GUID
 guidProduct AS GUID ' GUID
 dwDevType AS DWORD
 tszInstanceName AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
 tszProductName AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
END TYPE
' // Size = 1080 bytes
TYPE DIDEVICEINSTANCE_DX3W
 dwSize AS DWORD
 guidInstance AS GUID ' GUID
 guidProduct AS GUID ' GUID
 dwDevType AS DWORD
 tszInstanceName AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
 tszProductName AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
END TYPE
#IF %DEF(%UNICODE)
 MACRO DIDEVICEINSTANCE_DX3 = DIDEVICEINSTANCE_DX3W
#ELSE
 MACRO DIDEVICEINSTANCE_DX3 = DIDEVICEINSTANCE_DX3A
#ENDIF
' // Size = 580 bytes
TYPE DIDEVICEINSTANCEA WORD
 dwSize AS DWORD
 guidInstance AS GUID ' GUID
 guidProduct AS GUID ' GUID
 dwDevType AS DWORD
 tszInstanceName AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
 tszProductName AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
'#if(DIRECTINPUT_VERSION >= 0x0500)
 guidFFDriver AS GUID ' GUID
 wUsagePage AS WORD ' WORD
 wUsage AS WORD ' WORD
'#endif /* DIRECTINPUT_VERSION >= 0x0500 */
END TYPE
' // Size = 1100 bytes
TYPE DIDEVICEINSTANCEW WORD
 dwSize AS DWORD
 guidInstance AS GUID ' GUID
 guidProduct AS GUID ' GUID
 dwDevType AS DWORD
 tszInstanceName AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
 tszProductName AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
 guidFFDriver AS GUID ' GUID
 wUsagePage AS WORD ' WORD
 wUsage AS WORD ' WORD
END TYPE
#IF %DEF(%UNICODE)
 MACRO DIDEVICEINSTANCE = DIDEVICEINSTANCEW
#ELSE
 MACRO DIDEVICEINSTANCE = DIDEVICEINSTANCEA
#ENDIF
' ########################################################################################
' IDirectInputDeviceW interface
' IID = 5944E681-C92E-11CF-BFC7-444553540000
' Inherited interface = IUnknown
' ########################################################################################
INTERFACE IDirectInputDeviceW $IID_IDirectInputDeviceW
 INHERIT IUnknown
 ' =====================================================================================
 METHOD GetCapabilities ( ' VTable offset = 12
 BYREF lpDIDevCaps AS DIDEVCAPS
 ) AS LONG
 ' =====================================================================================
 METHOD EnumObjects ( ' VTable offset = 16
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetProperty ( ' VTable offset = 20
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD SetProperty ( ' VTable offset = 24
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD Acquire ( ' VTable offset = 28
 ) AS LONG
 ' =====================================================================================
 METHOD Unacquire ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceState ( ' VTable offset = 36
 BYVAL cbData AS DWORD
 , BYVAL lpvData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceData ( ' VTable offset = 40
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetDataFormat ( ' VTable offset = 44
 BYREF lpdf AS DIDATAFORMAT
 ) AS LONG
 ' =====================================================================================
 METHOD SetEventNotification ( ' VTable offset = 48
 BYVAL hEvent AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetCooperativeLevel ( ' VTable offset = 52
 BYVAL hwnd AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetObjectInfo ( ' VTable offset = 56
 BYREF pdidoi AS DIDEVICEOBJECTINSTANCEW
 , BYVAL dwObj AS DWORD
 , BYVAL dwHow AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceInfo ( ' VTable offset = 60
 BYREF pdidi AS DIDEVICEINSTANCEW
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 64
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 68
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInputDevice interface
' IID = 5944E680-C92E-11CF-BFC7-444553540000
' Inherited interface = IUnknown
' ########################################################################################
INTERFACE IDirectInputDevice $IID_IDirectInputDevice
 INHERIT IUnknown
 ' =====================================================================================
 METHOD GetCapabilities ( ' VTable offset = 12
 BYREF lpDIDevCaps AS DIDEVCAPS
 ) AS LONG
 ' =====================================================================================
 METHOD EnumObjects ( ' VTable offset = 16
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetProperty ( ' VTable offset = 20
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD SetProperty ( ' VTable offset = 24
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD Acquire ( ' VTable offset = 28
 ) AS LONG
 ' =====================================================================================
 METHOD Unacquire ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceState ( ' VTable offset = 36
 BYVAL cbData AS DWORD
 , BYVAL lpvData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceData ( ' VTable offset = 40
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetDataFormat ( ' VTable offset = 44
 BYREF lpdf AS DIDATAFORMAT
 ) AS LONG
 ' =====================================================================================
 METHOD SetEventNotification ( ' VTable offset = 48
 BYVAL hEvent AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetCooperativeLevel ( ' VTable offset = 52
 BYVAL hwnd AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetObjectInfo ( ' VTable offset = 56
 BYREF pdidoi AS DIDEVICEOBJECTINSTANCEA
 , BYVAL dwObj AS DWORD
 , BYVAL dwHow AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceInfo ( ' VTable offset = 60
 BYREF pdidi AS DIDEVICEINSTANCEA
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 64
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 68
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
END INTERFACE
%EQUATE `DISFFC_RESET = &H00000001
%EQUATE `DISFFC_STOPALL = &H00000002
%EQUATE `DISFFC_PAUSE = &H00000004
%EQUATE `DISFFC_CONTINUE = &H00000008
%EQUATE `DISFFC_SETACTUATORSON = &H00000010
%EQUATE `DISFFC_SETACTUATORSOFF = &H00000020
%EQUATE `DIGFFS_EMPTY = &H00000001
%EQUATE `DIGFFS_STOPPED = &H00000002
%EQUATE `DIGFFS_PAUSED = &H00000004
%EQUATE `DIGFFS_ACTUATORSON = &H00000010
%EQUATE `DIGFFS_ACTUATORSOFF = &H00000020
%EQUATE `DIGFFS_POWERON = &H00000040
%EQUATE `DIGFFS_POWEROFF = &H00000080
%EQUATE `DIGFFS_SAFETYSWITCHON = &H00000100
%EQUATE `DIGFFS_SAFETYSWITCHOFF = &H00000200
%EQUATE `DIGFFS_USERFFSWITCHON = &H00000400
%EQUATE `DIGFFS_USERFFSWITCHOFF = &H00000800
%EQUATE `DIGFFS_DEVICELOST = &H80000000
' // Size = 292 bytes
TYPE DIEFFECTINFOA
 dwSize AS DWORD
 rguid AS GUID ' GUID
 dwEffType AS DWORD
 dwStaticParams AS DWORD
 dwDynamicParams AS DWORD
 tszName AS ASCIIZ * %MAX_PATH ' CHAR[MAX_PATH]
END TYPE
' // Size = 552 bytes
TYPE DIEFFECTINFOW DWORD
 dwSize AS DWORD
 rguid AS GUID ' GUID
 dwEffType AS DWORD
 dwStaticParams AS DWORD
 dwDynamicParams AS DWORD
 tszName AS WSTRINGZ * %MAX_PATH ' WCHAR[MAX_PATH]
END TYPE
#IF %DEF(%UNICODE)
 MACRO DIEFFECTINFO = DIEFFECTINFOW
#ELSE
 MACRO DIEFFECTINFO = DIEFFECTINFOA
#ENDIF
%EQUATE `DISDD_CONTINUE = &H00000001
' ########################################################################################
' IDirectInputDevice2W interface
' IID = 5944E683-C92E-11CF-BFC7-444553540000
' Inherited interface = IDirectInputDeviceW
' ########################################################################################
INTERFACE IDirectInputDevice2W $IID_IDirectInputDevice2W
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInputDeviceW methods
 ' =====================================================================================
 METHOD GetCapabilities ( ' VTable offset = 12
 BYREF lpDIDevCaps AS DIDEVCAPS
 ) AS LONG
 ' =====================================================================================
 METHOD EnumObjects ( ' VTable offset = 16
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetProperty ( ' VTable offset = 20
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD SetProperty ( ' VTable offset = 24
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD Acquire ( ' VTable offset = 28
 ) AS LONG
 ' =====================================================================================
 METHOD Unacquire ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceState ( ' VTable offset = 36
 BYVAL cbData AS DWORD
 , BYVAL lpvData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceData ( ' VTable offset = 40
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetDataFormat ( ' VTable offset = 44
 BYREF lpdf AS DIDATAFORMAT
 ) AS LONG
 ' =====================================================================================
 METHOD SetEventNotification ( ' VTable offset = 48
 BYVAL hEvent AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetCooperativeLevel ( ' VTable offset = 52
 BYVAL hwnd AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetObjectInfo ( ' VTable offset = 56
 BYREF pdidoi AS DIDEVICEOBJECTINSTANCEW
 , BYVAL dwObj AS DWORD
 , BYVAL dwHow AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceInfo ( ' VTable offset = 60
 BYREF pdidi AS DIDEVICEINSTANCEW
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 64
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 68
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice2W methods
 ' =====================================================================================
 METHOD CreateEffect ( ' VTable offset = 72
 BYREF rguid AS GUID
 , BYREF lpeff AS DIEFFECT
 , BYREF ppdeff AS IDirectInputEffect
 , BYVAL punkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumEffects ( ' VTable offset = 76
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwEffType AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetEffectInfo ( ' VTable offset = 80
 BYREF pdei AS DIEFFECTINFOW
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD GetForceFeedbackState ( ' VTable offset = 84
 BYREF pdwOut AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SendForceFeedbackCommand ( ' VTable offset = 88
 BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD EnumCreatedEffectObjects ( ' VTable offset = 92
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Escape ( ' VTable offset = 96
 BYREF pesc AS DIEFFESCAPE
 ) AS LONG
 ' =====================================================================================
 METHOD Poll ( ' VTable offset = 100
 ) AS LONG
 ' =====================================================================================
 METHOD SendDeviceData ( ' VTable offset = 104
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInputDevice2 interface
' IID = 5944E682-C92E-11CF-BFC7-444553540000
' Inherited interface = IDirectInputDevice
' ########################################################################################
INTERFACE IDirectInputDevice2 $IID_IDirectInputDevice2A
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInputDevice methods
 ' =====================================================================================
 METHOD GetCapabilities ( ' VTable offset = 12
 BYREF lpDIDevCaps AS DIDEVCAPS
 ) AS LONG
 ' =====================================================================================
 METHOD EnumObjects ( ' VTable offset = 16
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetProperty ( ' VTable offset = 20
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD SetProperty ( ' VTable offset = 24
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD Acquire ( ' VTable offset = 28
 ) AS LONG
 ' =====================================================================================
 METHOD Unacquire ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceState ( ' VTable offset = 36
 BYVAL cbData AS DWORD
 , BYVAL lpvData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceData ( ' VTable offset = 40
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetDataFormat ( ' VTable offset = 44
 BYREF lpdf AS DIDATAFORMAT
 ) AS LONG
 ' =====================================================================================
 METHOD SetEventNotification ( ' VTable offset = 48
 BYVAL hEvent AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetCooperativeLevel ( ' VTable offset = 52
 BYVAL hwnd AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetObjectInfo ( ' VTable offset = 56
 BYREF pdidoi AS DIDEVICEOBJECTINSTANCEA
 , BYVAL dwObj AS DWORD
 , BYVAL dwHow AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceInfo ( ' VTable offset = 60
 BYREF pdidi AS DIDEVICEINSTANCEA
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 64
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 68
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice2 methods
 ' =====================================================================================
 METHOD CreateEffect ( ' VTable offset = 72
 BYREF rguid AS GUID
 , BYREF lpeff AS DIEFFECT
 , BYREF ppdeff AS IDirectInputEffect
 , BYVAL punkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumEffects ( ' VTable offset = 76
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwEffType AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetEffectInfo ( ' VTable offset = 80
 BYREF pdei AS DIEFFECTINFOA
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD GetForceFeedbackState ( ' VTable offset = 84
 BYREF pdwOut AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SendForceFeedbackCommand ( ' VTable offset = 88
 BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD EnumCreatedEffectObjects ( ' VTable offset = 92
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Escape ( ' VTable offset = 96
 BYREF pesc AS DIEFFESCAPE
 ) AS LONG
 ' =====================================================================================
 METHOD Poll ( ' VTable offset = 100
 ) AS LONG
 ' =====================================================================================
 METHOD SendDeviceData ( ' VTable offset = 104
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
%EQUATE `DIFEF_DEFAULT = &H00000000
%EQUATE `DIFEF_INCLUDENONSTANDARD = &H00000001
%EQUATE `DIFEF_MODIFYIFNEEDED = &H00000010
' ########################################################################################
' IDirectInputDevice7W interface
' IID = 57D7C6BD-2356-11D3-8E9D-00C04F6844AE
' Inherited interface = IDirectInputDeviceW
' ########################################################################################
INTERFACE IDirectInputDevice7W $IID_IDirectInputDevice7W
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInputDeviceW methods
 ' =====================================================================================
 METHOD GetCapabilities ( ' VTable offset = 12
 BYREF lpDIDevCaps AS DIDEVCAPS
 ) AS LONG
 ' =====================================================================================
 METHOD EnumObjects ( ' VTable offset = 16
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetProperty ( ' VTable offset = 20
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD SetProperty ( ' VTable offset = 24
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD Acquire ( ' VTable offset = 28
 ) AS LONG
 ' =====================================================================================
 METHOD Unacquire ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceState ( ' VTable offset = 36
 BYVAL cbData AS DWORD
 , BYVAL lpvData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceData ( ' VTable offset = 40
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetDataFormat ( ' VTable offset = 44
 BYREF lpdf AS DIDATAFORMAT
 ) AS LONG
 ' =====================================================================================
 METHOD SetEventNotification ( ' VTable offset = 48
 BYVAL hEvent AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetCooperativeLevel ( ' VTable offset = 52
 BYVAL hwnd AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetObjectInfo ( ' VTable offset = 56
 BYREF pdidoi AS DIDEVICEOBJECTINSTANCEW
 , BYVAL dwObj AS DWORD
 , BYVAL dwHow AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceInfo ( ' VTable offset = 60
 BYREF pdidi AS DIDEVICEINSTANCEW
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 64
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 68
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice2W methods
 ' =====================================================================================
 METHOD CreateEffect ( ' VTable offset = 72
 BYREF rguid AS GUID
 , BYREF lpeff AS DIEFFECT
 , BYREF ppdeff AS IDirectInputEffect
 , BYVAL punkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumEffects ( ' VTable offset = 76
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwEffType AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetEffectInfo ( ' VTable offset = 80
 BYREF pdei AS DIEFFECTINFOW
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD GetForceFeedbackState ( ' VTable offset = 84
 BYREF pdwOut AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SendForceFeedbackCommand ( ' VTable offset = 88
 BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD EnumCreatedEffectObjects ( ' VTable offset = 92
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Escape ( ' VTable offset = 96
 BYREF pesc AS DIEFFESCAPE
 ) AS LONG
 ' =====================================================================================
 METHOD Poll ( ' VTable offset = 100
 ) AS LONG
 ' =====================================================================================
 METHOD SendDeviceData ( ' VTable offset = 104
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice7W methods
 ' =====================================================================================
 METHOD EnumEffectsInFile ( ' VTable offset = 108
 BYREF lpszFileName AS WSTRINGZ
 , BYVAL pec AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD WriteEffectToFile ( ' VTable offset = 112
 BYREF lpszFileName AS WSTRINGZ
 , BYVAL dwEntries AS DWORD
 , BYREF rgDiFileEft AS DIFILEEFFECT
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInputDevice7 interface
' IID = 57D7C6BC-2356-11D3-8E9D-00C04F6844AE
' Inherited interface = IDirectInputDevice
' ########################################################################################
INTERFACE IDirectInputDevice7 $IID_IDirectInputDevice7
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInputDevice methods
 ' =====================================================================================
 METHOD GetCapabilities ( ' VTable offset = 12
 BYREF lpDIDevCaps AS DIDEVCAPS
 ) AS LONG
 ' =====================================================================================
 METHOD EnumObjects ( ' VTable offset = 16
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetProperty ( ' VTable offset = 20
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD SetProperty ( ' VTable offset = 24
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD Acquire ( ' VTable offset = 28
 ) AS LONG
 ' =====================================================================================
 METHOD Unacquire ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceState ( ' VTable offset = 36
 BYVAL cbData AS DWORD
 , BYVAL lpvData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceData ( ' VTable offset = 40
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetDataFormat ( ' VTable offset = 44
 BYREF lpdf AS DIDATAFORMAT
 ) AS LONG
 ' =====================================================================================
 METHOD SetEventNotification ( ' VTable offset = 48
 BYVAL hEvent AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetCooperativeLevel ( ' VTable offset = 52
 BYVAL hwnd AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetObjectInfo ( ' VTable offset = 56
 BYREF pdidoi AS DIDEVICEOBJECTINSTANCEA
 , BYVAL dwObj AS DWORD
 , BYVAL dwHow AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceInfo ( ' VTable offset = 60
 BYREF pdidi AS DIDEVICEINSTANCEA
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 64
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 68
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice2 methods
 ' =====================================================================================
 METHOD CreateEffect ( ' VTable offset = 72
 BYREF rguid AS GUID
 , BYREF lpeff AS DIEFFECT
 , BYREF ppdeff AS IDirectInputEffect
 , BYVAL punkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumEffects ( ' VTable offset = 76
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwEffType AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetEffectInfo ( ' VTable offset = 80
 BYREF pdei AS DIEFFECTINFOA
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD GetForceFeedbackState ( ' VTable offset = 84
 BYREF pdwOut AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SendForceFeedbackCommand ( ' VTable offset = 88
 BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD EnumCreatedEffectObjects ( ' VTable offset = 92
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Escape ( ' VTable offset = 96
 BYREF pesc AS DIEFFESCAPE
 ) AS LONG
 ' =====================================================================================
 METHOD Poll ( ' VTable offset = 100
 ) AS LONG
 ' =====================================================================================
 METHOD SendDeviceData ( ' VTable offset = 104
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice7A methods
 ' =====================================================================================
 METHOD EnumEffectsInFile ( ' VTable offset = 108
 BYREF lpszFileName AS ASCIIZ
 , BYVAL pec AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD WriteEffectToFile ( ' VTable offset = 112
 BYREF lpszFileName AS ASCIIZ
 , BYVAL dwEntries AS DWORD
 , BYREF rgDiFileEft AS DIFILEEFFECT
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInputDevice8W interface
' IID = 54D41081-DC15-4833-A41B-748F73A38179
' Inherited interface = IDirectInputDeviceW
' ########################################################################################
INTERFACE IDirectInputDevice8W $IID_IDirectInputDevice8W
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInputDeviceW methods
 ' =====================================================================================
 METHOD GetCapabilities ( ' VTable offset = 12
 BYREF lpDIDevCaps AS DIDEVCAPS
 ) AS LONG
 ' =====================================================================================
 METHOD EnumObjects ( ' VTable offset = 16
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetProperty ( ' VTable offset = 20
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD SetProperty ( ' VTable offset = 24
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD Acquire ( ' VTable offset = 28
 ) AS LONG
 ' =====================================================================================
 METHOD Unacquire ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceState ( ' VTable offset = 36
 BYVAL cbData AS DWORD
 , BYVAL lpvData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceData ( ' VTable offset = 40
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetDataFormat ( ' VTable offset = 44
 BYREF lpdf AS DIDATAFORMAT
 ) AS LONG
 ' =====================================================================================
 METHOD SetEventNotification ( ' VTable offset = 48
 BYVAL hEvent AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetCooperativeLevel ( ' VTable offset = 52
 BYVAL hwnd AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetObjectInfo ( ' VTable offset = 56
 BYREF pdidoi AS DIDEVICEOBJECTINSTANCEW
 , BYVAL dwObj AS DWORD
 , BYVAL dwHow AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceInfo ( ' VTable offset = 60
 BYREF pdidi AS DIDEVICEINSTANCEW
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 64
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 68
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice2W methods
 ' =====================================================================================
 METHOD CreateEffect ( ' VTable offset = 72
 BYREF rguid AS GUID
 , BYREF lpeff AS DIEFFECT
 , BYREF ppdeff AS IDirectInputEffect
 , BYVAL punkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumEffects ( ' VTable offset = 76
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwEffType AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetEffectInfo ( ' VTable offset = 80
 BYREF pdei AS DIEFFECTINFOW
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD GetForceFeedbackState ( ' VTable offset = 84
 BYREF pdwOut AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SendForceFeedbackCommand ( ' VTable offset = 88
 BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD EnumCreatedEffectObjects ( ' VTable offset = 92
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Escape ( ' VTable offset = 96
 BYREF pesc AS DIEFFESCAPE
 ) AS LONG
 ' =====================================================================================
 METHOD Poll ( ' VTable offset = 100
 ) AS LONG
 ' =====================================================================================
 METHOD SendDeviceData ( ' VTable offset = 104
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice7W methods
 ' =====================================================================================
 METHOD EnumEffectsInFile ( ' VTable offset = 108
 BYREF lpszFileName AS WSTRINGZ
 , BYVAL pec AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD WriteEffectToFile ( ' VTable offset = 112
 BYREF lpszFileName AS WSTRINGZ
 , BYVAL dwEntries AS DWORD
 , BYREF rgDiFileEft AS DIFILEEFFECT
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice8W methods
 ' =====================================================================================
 METHOD BuildActionMap ( ' VTable offset = 116
 BYREF lpdiaf AS DIACTIONFORMATW
 , BYREF lpszUserName AS WSTRINGZ
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetActionMap ( ' VTable offset = 120
 BYREF lpdiActionFormat AS DIACTIONFORMATW
 , BYREF lpszUserName AS WSTRINGZ
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetImageInfo ( ' VTable offset = 124
 BYREF lpdiDevImageInfoHeader AS DIDEVICEIMAGEINFOHEADER
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInputDevice8 interface
' IID = 54D41080-DC15-4833-A41B-748F73A38179
' Inherited interface = IDirectInputDevice
' ########################################################################################
INTERFACE IDirectInputDevice8 $IID_IDirectInputDevice8
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInputDevice methods
 ' =====================================================================================
 METHOD GetCapabilities ( ' VTable offset = 12
 BYREF lpDIDevCaps AS DIDEVCAPS
 ) AS LONG
 ' =====================================================================================
 METHOD EnumObjects ( ' VTable offset = 16
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetProperty ( ' VTable offset = 20
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD SetProperty ( ' VTable offset = 24
 BYREF rguidProp AS GUID
 , BYREF pdiph AS DIPROPHEADER
 ) AS LONG
 ' =====================================================================================
 METHOD Acquire ( ' VTable offset = 28
 ) AS LONG
 ' =====================================================================================
 METHOD Unacquire ( ' VTable offset = 32
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceState ( ' VTable offset = 36
 BYVAL cbData AS DWORD
 , BYVAL lpvData AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceData ( ' VTable offset = 40
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetDataFormat ( ' VTable offset = 44
 BYREF lpdf AS DIDATAFORMAT
 ) AS LONG
 ' =====================================================================================
 METHOD SetEventNotification ( ' VTable offset = 48
 BYVAL hEvent AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetCooperativeLevel ( ' VTable offset = 52
 BYVAL hwnd AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetObjectInfo ( ' VTable offset = 56
 BYREF pdidoi AS DIDEVICEOBJECTINSTANCEA
 , BYVAL dwObj AS DWORD
 , BYVAL dwHow AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceInfo ( ' VTable offset = 60
 BYREF pdidi AS DIDEVICEINSTANCEA
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 64
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 68
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice2 methods
 ' =====================================================================================
 METHOD CreateEffect ( ' VTable offset = 72
 BYREF rguid AS GUID
 , BYREF lpeff AS DIEFFECT
 , BYREF ppdeff AS IDirectInputEffect
 , BYVAL punkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumEffects ( ' VTable offset = 76
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwEffType AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetEffectInfo ( ' VTable offset = 80
 BYREF pdei AS DIEFFECTINFOA
 , BYREF rguid AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD GetForceFeedbackState ( ' VTable offset = 84
 BYREF pdwOut AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SendForceFeedbackCommand ( ' VTable offset = 88
 BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD EnumCreatedEffectObjects ( ' VTable offset = 92
 BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Escape ( ' VTable offset = 96
 BYREF pesc AS DIEFFESCAPE
 ) AS LONG
 ' =====================================================================================
 METHOD Poll ( ' VTable offset = 100
 ) AS LONG
 ' =====================================================================================
 METHOD SendDeviceData ( ' VTable offset = 104
 BYVAL cbObjectData AS DWORD
 , BYREF rgdod AS DIDEVICEOBJECTDATA
 , BYREF pdwInOut AS DWORD
 , BYVAL fl AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice7A methods
 ' =====================================================================================
 METHOD EnumEffectsInFile ( ' VTable offset = 108
 BYREF lpszFileName AS ASCIIZ
 , BYVAL pec AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD WriteEffectToFile ( ' VTable offset = 112
 BYREF lpszFileName AS ASCIIZ
 , BYVAL dwEntries AS DWORD
 , BYREF rgDiFileEft AS DIFILEEFFECT
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInputDevice8A methods
 ' =====================================================================================
 METHOD BuildActionMap ( ' VTable offset = 116
 BYREF lpdiaf AS DIACTIONFORMATA
 , BYREF lpszUserName AS ASCIIZ
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetActionMap ( ' VTable offset = 120
 BYREF lpdiActionFormat AS DIACTIONFORMATA
 , BYREF lpszUserName AS ASCIIZ
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetImageInfo ( ' VTable offset = 124
 BYREF lpdiDevImageInfoHeader AS DIDEVICEIMAGEINFOHEADER
 ) AS LONG
 ' =====================================================================================
END INTERFACE
'/****************************************************************************
' *
' * Mouse
' *
' ****************************************************************************/
' // Size = 16 bytes
TYPE DIMOUSESTATE DWORD
 lX AS LONG
 lY AS LONG
 lZ AS LONG
 rgbButtons(3) AS BYTE ' BYTE[4]
END TYPE
' // Size = 20 bytes
TYPE DIMOUSESTATE2 DWORD
 lX AS LONG
 lY AS LONG
 lZ AS LONG
 rgbButtons(7) AS BYTE ' BYTE[8]
END TYPE
'#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)
'#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)
%EQUATE `DIMOFS_X = 0
%EQUATE `DIMOFS_Y = 4
%EQUATE `DIMOFS_Z = 8
%EQUATE `DIMOFS_BUTTON0 = 12
%EQUATE `DIMOFS_BUTTON1 = 13
%EQUATE `DIMOFS_BUTTON2 = 14
%EQUATE `DIMOFS_BUTTON3 = 15
%EQUATE `DIMOFS_BUTTON4 = 16
%EQUATE `DIMOFS_BUTTON5 = 17
%EQUATE `DIMOFS_BUTTON6 = 18
%EQUATE `DIMOFS_BUTTON7 = 19
'/****************************************************************************
' *
' * Keyboard
' *
' ****************************************************************************/
'/****************************************************************************
' *
' * DirectInput keyboard scan codes
' *
' ****************************************************************************/
%EQUATE `DIK_ESCAPE = &H01
%EQUATE `DIK_1 = &H02
%EQUATE `DIK_2 = &H03
%EQUATE `DIK_3 = &H04
%EQUATE `DIK_4 = &H05
%EQUATE `DIK_5 = &H06
%EQUATE `DIK_6 = &H07
%EQUATE `DIK_7 = &H08
%EQUATE `DIK_8 = &H09
%EQUATE `DIK_9 = &H0A
%EQUATE `DIK_0 = &H0B
%EQUATE `DIK_MINUS = &H0C ' /* - on main keyboard */
%EQUATE `DIK_EQUALS = &H0D
%EQUATE `DIK_BACK = &H0E ' /* backspace */
%EQUATE `DIK_TAB = &H0F
%EQUATE `DIK_Q = &H10
%EQUATE `DIK_W = &H11
%EQUATE `DIK_E = &H12
%EQUATE `DIK_R = &H13
%EQUATE `DIK_T = &H14
%EQUATE `DIK_Y = &H15
%EQUATE `DIK_U = &H16
%EQUATE `DIK_I = &H17
%EQUATE `DIK_O = &H18
%EQUATE `DIK_P = &H19
%EQUATE `DIK_LBRACKET = &H1A
%EQUATE `DIK_RBRACKET = &H1B
%EQUATE `DIK_RETURN = &H1C ' /* Enter on main keyboard */
%EQUATE `DIK_LCONTROL = &H1D
%EQUATE `DIK_A = &H1E
%EQUATE `DIK_S = &H1F
%EQUATE `DIK_D = &H20
%EQUATE `DIK_F = &H21
%EQUATE `DIK_G = &H22
%EQUATE `DIK_H = &H23
%EQUATE `DIK_J = &H24
%EQUATE `DIK_K = &H25
%EQUATE `DIK_L = &H26
%EQUATE `DIK_SEMICOLON = &H27
%EQUATE `DIK_APOSTROPHE = &H28
%EQUATE `DIK_GRAVE = &H29 ' /* accent grave */
%EQUATE `DIK_LSHIFT = &H2A
%EQUATE `DIK_BACKSLASH = &H2B
%EQUATE `DIK_Z = &H2C
%EQUATE `DIK_X = &H2D
%EQUATE `DIK_C = &H2E
%EQUATE `DIK_V = &H2F
%EQUATE `DIK_B = &H30
%EQUATE `DIK_N = &H31
%EQUATE `DIK_M = &H32
%EQUATE `DIK_COMMA = &H33
%EQUATE `DIK_PERIOD = &H34 ' /* . on main keyboard */
%EQUATE `DIK_SLASH = &H35 ' /* / on main keyboard */
%EQUATE `DIK_RSHIFT = &H36
%EQUATE `DIK_MULTIPLY = &H37 ' /* * on numeric keypad */
%EQUATE `DIK_LMENU = &H38 ' /* left Alt */
%EQUATE `DIK_SPACE = &H39
%EQUATE `DIK_CAPITAL = &H3A
%EQUATE `DIK_F1 = &H3B
%EQUATE `DIK_F2 = &H3C
%EQUATE `DIK_F3 = &H3D
%EQUATE `DIK_F4 = &H3E
%EQUATE `DIK_F5 = &H3F
%EQUATE `DIK_F6 = &H40
%EQUATE `DIK_F7 = &H41
%EQUATE `DIK_F8 = &H42
%EQUATE `DIK_F9 = &H43
%EQUATE `DIK_F10 = &H44
%EQUATE `DIK_NUMLOCK = &H45
%EQUATE `DIK_SCROLL = &H46 ' /* Scroll Lock */
%EQUATE `DIK_NUMPAD7 = &H47
%EQUATE `DIK_NUMPAD8 = &H48
%EQUATE `DIK_NUMPAD9 = &H49
%EQUATE `DIK_SUBTRACT = &H4A ' /* - on numeric keypad */
%EQUATE `DIK_NUMPAD4 = &H4B
%EQUATE `DIK_NUMPAD5 = &H4C
%EQUATE `DIK_NUMPAD6 = &H4D
%EQUATE `DIK_ADD = &H4E ' /* + on numeric keypad */
%EQUATE `DIK_NUMPAD1 = &H4F
%EQUATE `DIK_NUMPAD2 = &H50
%EQUATE `DIK_NUMPAD3 = &H51
%EQUATE `DIK_NUMPAD0 = &H52
%EQUATE `DIK_DECIMAL = &H53 ' /* . on numeric keypad */
%EQUATE `DIK_OEM_102 = &H56 ' /* <> or \| on RT 102-key keyboard (Non-U.S.) */
%EQUATE `DIK_F11 = &H57
%EQUATE `DIK_F12 = &H58
%EQUATE `DIK_F13 = &H64 ' /* (NEC PC98) */
%EQUATE `DIK_F14 = &H65 ' /* (NEC PC98) */
%EQUATE `DIK_F15 = &H66 ' /* (NEC PC98) */
%EQUATE `DIK_KANA = &H70 ' /* (Japanese keyboard) */
%EQUATE `DIK_ABNT_C1 = &H73 ' /* /? on Brazilian keyboard */
%EQUATE `DIK_CONVERT = &H79 ' /* (Japanese keyboard) */
%EQUATE `DIK_NOCONVERT = &H7B ' /* (Japanese keyboard) */
%EQUATE `DIK_YEN = &H7D ' /* (Japanese keyboard) */
%EQUATE `DIK_ABNT_C2 = &H7E ' /* Numpad . on Brazilian keyboard */
%EQUATE `DIK_NUMPADEQUALS = &H8D ' /* = on numeric keypad (NEC PC98) */
%EQUATE `DIK_PREVTRACK = &H90 ' /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */
%EQUATE `DIK_AT = &H91 ' /* (NEC PC98) */
%EQUATE `DIK_COLON = &H92 ' /* (NEC PC98) */
%EQUATE `DIK_UNDERLINE = &H93 ' /* (NEC PC98) */
%EQUATE `DIK_KANJI = &H94 ' /* (Japanese keyboard) */
%EQUATE `DIK_STOP = &H95 ' /* (NEC PC98) */
%EQUATE `DIK_AX = &H96 ' /* (Japan AX) */
%EQUATE `DIK_UNLABELED = &H97 ' /* (J3100) */
%EQUATE `DIK_NEXTTRACK = &H99 ' /* Next Track */
%EQUATE `DIK_NUMPADENTER = &H9C ' /* Enter on numeric keypad */
%EQUATE `DIK_RCONTROL = &H9D
%EQUATE `DIK_MUTE = &HA0 ' /* Mute */
%EQUATE `DIK_CALCULATOR = &HA1 ' /* Calculator */
%EQUATE `DIK_PLAYPAUSE = &HA2 ' /* Play / Pause */
%EQUATE `DIK_MEDIASTOP = &HA4 ' /* Media Stop */
%EQUATE `DIK_VOLUMEDOWN = &HAE ' /* Volume - */
%EQUATE `DIK_VOLUMEUP = &HB0 ' /* Volume + */
%EQUATE `DIK_WEBHOME = &HB2 ' /* Web home */
%EQUATE `DIK_NUMPADCOMMA = &HB3 ' /* , on numeric keypad (NEC PC98) */
%EQUATE `DIK_DIVIDE = &HB5 ' /* / on numeric keypad */
%EQUATE `DIK_SYSRQ = &HB7
%EQUATE `DIK_RMENU = &HB8 ' /* right Alt */
%EQUATE `DIK_PAUSE = &HC5 ' /* Pause */
%EQUATE `DIK_HOME = &HC7 ' /* Home on arrow keypad */
%EQUATE `DIK_UP = &HC8 ' /* UpArrow on arrow keypad */
%EQUATE `DIK_PRIOR = &HC9 ' /* PgUp on arrow keypad */
%EQUATE `DIK_LEFT = &HCB ' /* LeftArrow on arrow keypad */
%EQUATE `DIK_RIGHT = &HCD ' /* RightArrow on arrow keypad */
%EQUATE `DIK_END = &HCF ' /* End on arrow keypad */
%EQUATE `DIK_DOWN = &HD0 ' /* DownArrow on arrow keypad */
%EQUATE `DIK_NEXT = &HD1 ' /* PgDn on arrow keypad */
%EQUATE `DIK_INSERT = &HD2 ' /* Insert on arrow keypad */
%EQUATE `DIK_DELETE = &HD3 ' /* Delete on arrow keypad */
%EQUATE `DIK_LWIN = &HDB ' /* Left Windows key */
%EQUATE `DIK_RWIN = &HDC ' /* Right Windows key */
%EQUATE `DIK_APPS = &HDD ' /* AppMenu key */
%EQUATE `DIK_POWER = &HDE ' /* System Power */
%EQUATE `DIK_SLEEP = &HDF ' /* System Sleep */
%EQUATE `DIK_WAKE = &HE3 ' /* System Wake */
%EQUATE `DIK_WEBSEARCH = &HE5 ' /* Web Search */
%EQUATE `DIK_WEBFAVORITES = &HE6 ' /* Web Favorites */
%EQUATE `DIK_WEBREFRESH = &HE7 ' /* Web Refresh */
%EQUATE `DIK_WEBSTOP = &HE8 ' /* Web Stop */
%EQUATE `DIK_WEBFORWARD = &HE9 ' /* Web Forward */
%EQUATE `DIK_WEBBACK = &HEA ' /* Web Back */
%EQUATE `DIK_MYCOMPUTER = &HEB ' /* My Computer */
%EQUATE `DIK_MAIL = &HEC ' /* Mail */
%EQUATE `DIK_MEDIASELECT = &HED ' /* Media Select */
'/*
' * Alternate names for keys, to facilitate transition from DOS.
' */
%EQUATE `DIK_BACKSPACE = %DIK_BACK ' /* backspace */
%EQUATE `DIK_NUMPADSTAR = %DIK_MULTIPLY ' /* * on numeric keypad */
%EQUATE `DIK_LALT = %DIK_LMENU ' /* left Alt */
%EQUATE `DIK_CAPSLOCK = %DIK_CAPITAL ' /* CapsLock */
%EQUATE `DIK_NUMPADMINUS = %DIK_SUBTRACT ' /* - on numeric keypad */
%EQUATE `DIK_NUMPADPLUS = %DIK_ADD ' /* + on numeric keypad */
%EQUATE `DIK_NUMPADPERIOD = %DIK_DECIMAL ' /* . on numeric keypad */
%EQUATE `DIK_NUMPADSLASH = %DIK_DIVIDE ' /* / on numeric keypad */
%EQUATE `DIK_RALT = %DIK_RMENU ' /* right Alt */
%EQUATE `DIK_UPARROW = %DIK_UP ' /* UpArrow on arrow keypad */
%EQUATE `DIK_PGUP = %DIK_PRIOR ' /* PgUp on arrow keypad */
%EQUATE `DIK_LEFTARROW = %DIK_LEFT ' /* LeftArrow on arrow keypad */
%EQUATE `DIK_RIGHTARROW = %DIK_RIGHT ' /* RightArrow on arrow keypad */
%EQUATE `DIK_DOWNARROW = %DIK_DOWN ' /* DownArrow on arrow keypad */
%EQUATE `DIK_PGDN = %DIK_NEXT ' /* PgDn on arrow keypad */
'/*
' * Alternate names for keys originally not used on US keyboards.
' */
%EQUATE `DIK_CIRCUMFLEX = %DIK_PREVTRACK ' /* Japanese keyboard */
'/****************************************************************************
' *
' * Joystick
' *
' ****************************************************************************/
' // Size = 80 bytes
TYPE DIJOYSTATE DWORD
 lX AS LONG ' LONG /* x-axis position */
 lY AS LONG ' LONG /* y-axis position */
 lZ AS LONG ' LONG /* z-axis position */
 lRx AS LONG ' LONG /* x-axis rotation */
 lRy AS LONG ' LONG /* y-axis rotation */
 lRz AS LONG ' LONG /* z-axis rotation */
 rglSlider(1) AS LONG ' LONG[2] /* extra axes positions */
 rgdwPOV(3) AS DWORD ' DWORD[4] /* POV directions */
 rgbButtons(31) AS BYTE ' BYTE[32] /* 32 buttons */
END TYPE
' // Size = 272 bytes
TYPE DIJOYSTATE2 DWORD
 lX AS LONG ' LONG /* x-axis position */
 lY AS LONG ' LONG /* y-axis position */
 lZ AS LONG ' LONG /* z-axis position */
 lRx AS LONG ' LONG /* x-axis rotation */
 lRy AS LONG ' LONG /* y-axis rotation */
 lRz AS LONG ' LONG /* z-axis rotation */
 rglSlider(1) AS LONG ' LONG[2] /* extra axes positions */
 rgdwPOV(3) AS DWORD ' DWORD[4] /* POV directions */
 rgbButtons(127) AS BYTE ' BYTE[128] /* 128 buttons */
 lVX AS LONG ' LONG /* x-axis velocity */
 lVY AS LONG ' LONG /* y-axis velocity */
 lVZ AS LONG ' LONG /* z-axis velocity */
 lVRx AS LONG ' LONG /* x-axis angular velocity */
 lVRy AS LONG ' LONG /* y-axis angular velocity */
 lVRz AS LONG ' LONG /* z-axis angular velocity */
 rglVSlider(1) AS LONG ' LONG[2] /* extra axes velocities */
 lAX AS LONG ' LONG /* x-axis acceleration */
 lAY AS LONG ' LONG /* y-axis acceleration */
 lAZ AS LONG ' LONG /* z-axis acceleration */
 lARx AS LONG ' LONG /* x-axis angular acceleration */
 lARy AS LONG ' LONG /* y-axis angular acceleration */
 lARz AS LONG ' LONG /* z-axis angular acceleration */
 rglASlider(1) AS LONG ' LONG[2] /* extra axes accelerations */
 lFX AS LONG ' LONG /* x-axis force */
 lFY AS LONG ' LONG /* y-axis force */
 lFZ AS LONG ' LONG /* z-axis force */
 lFRx AS LONG ' LONG /* x-axis torque */
 lFRy AS LONG ' LONG /* y-axis torque */
 lFRz AS LONG ' LONG /* z-axis torque */
 rglFSlider(1) AS LONG ' LONG[2] /* extra axes forces */
END TYPE
'#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)
%EQUATE `DIJOFS_X = 0
%EQUATE `DIJOFS_Y = 4
%EQUATE `DIJOFS_Z = 8
%EQUATE `DIJOFS_RX = 12
%EQUATE `DIJOFS_RY = 16
%EQUATE `DIJOFS_RZ = 20
'#define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
' (n) * sizeof(LONG))
'#define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
' (n) * sizeof(DWORD))
'#define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
'#define DIJOFS_BUTTON0 DIJOFS_BUTTON(0)
'#define DIJOFS_BUTTON1 DIJOFS_BUTTON(1)
'#define DIJOFS_BUTTON2 DIJOFS_BUTTON(2)
'#define DIJOFS_BUTTON3 DIJOFS_BUTTON(3)
'#define DIJOFS_BUTTON4 DIJOFS_BUTTON(4)
'#define DIJOFS_BUTTON5 DIJOFS_BUTTON(5)
'#define DIJOFS_BUTTON6 DIJOFS_BUTTON(6)
'#define DIJOFS_BUTTON7 DIJOFS_BUTTON(7)
'#define DIJOFS_BUTTON8 DIJOFS_BUTTON(8)
'#define DIJOFS_BUTTON9 DIJOFS_BUTTON(9)
'#define DIJOFS_BUTTON10 DIJOFS_BUTTON(10)
'#define DIJOFS_BUTTON11 DIJOFS_BUTTON(11)
'#define DIJOFS_BUTTON12 DIJOFS_BUTTON(12)
'#define DIJOFS_BUTTON13 DIJOFS_BUTTON(13)
'#define DIJOFS_BUTTON14 DIJOFS_BUTTON(14)
'#define DIJOFS_BUTTON15 DIJOFS_BUTTON(15)
'#define DIJOFS_BUTTON16 DIJOFS_BUTTON(16)
'#define DIJOFS_BUTTON17 DIJOFS_BUTTON(17)
'#define DIJOFS_BUTTON18 DIJOFS_BUTTON(18)
'#define DIJOFS_BUTTON19 DIJOFS_BUTTON(19)
'#define DIJOFS_BUTTON20 DIJOFS_BUTTON(20)
'#define DIJOFS_BUTTON21 DIJOFS_BUTTON(21)
'#define DIJOFS_BUTTON22 DIJOFS_BUTTON(22)
'#define DIJOFS_BUTTON23 DIJOFS_BUTTON(23)
'#define DIJOFS_BUTTON24 DIJOFS_BUTTON(24)
'#define DIJOFS_BUTTON25 DIJOFS_BUTTON(25)
'#define DIJOFS_BUTTON26 DIJOFS_BUTTON(26)
'#define DIJOFS_BUTTON27 DIJOFS_BUTTON(27)
'#define DIJOFS_BUTTON28 DIJOFS_BUTTON(28)
'#define DIJOFS_BUTTON29 DIJOFS_BUTTON(29)
'#define DIJOFS_BUTTON30 DIJOFS_BUTTON(30)
'#define DIJOFS_BUTTON31 DIJOFS_BUTTON(31)
%EQUATE `DIJOFS_BUTTONB = 48
%EQUATE `DIJOFS_BUTTON0 = %DIJOFS_BUTTONB + 0
%EQUATE `DIJOFS_BUTTON1 = %DIJOFS_BUTTONB + 1
%EQUATE `DIJOFS_BUTTON2 = %DIJOFS_BUTTONB + 2
%EQUATE `DIJOFS_BUTTON3 = %DIJOFS_BUTTONB + 3
%EQUATE `DIJOFS_BUTTON4 = %DIJOFS_BUTTONB + 4
%EQUATE `DIJOFS_BUTTON5 = %DIJOFS_BUTTONB + 5
%EQUATE `DIJOFS_BUTTON6 = %DIJOFS_BUTTONB + 6
%EQUATE `DIJOFS_BUTTON7 = %DIJOFS_BUTTONB + 7
%EQUATE `DIJOFS_BUTTON8 = %DIJOFS_BUTTONB + 8
%EQUATE `DIJOFS_BUTTON9 = %DIJOFS_BUTTONB + 9
%EQUATE `DIJOFS_BUTTON10 = %DIJOFS_BUTTONB + 10
%EQUATE `DIJOFS_BUTTON11 = %DIJOFS_BUTTONB + 11
%EQUATE `DIJOFS_BUTTON12 = %DIJOFS_BUTTONB + 12
%EQUATE `DIJOFS_BUTTON13 = %DIJOFS_BUTTONB + 13
%EQUATE `DIJOFS_BUTTON14 = %DIJOFS_BUTTONB + 14
%EQUATE `DIJOFS_BUTTON15 = %DIJOFS_BUTTONB + 15
%EQUATE `DIJOFS_BUTTON16 = %DIJOFS_BUTTONB + 16
%EQUATE `DIJOFS_BUTTON17 = %DIJOFS_BUTTONB + 17
%EQUATE `DIJOFS_BUTTON18 = %DIJOFS_BUTTONB + 18
%EQUATE `DIJOFS_BUTTON19 = %DIJOFS_BUTTONB + 19
%EQUATE `DIJOFS_BUTTON20 = %DIJOFS_BUTTONB + 20
%EQUATE `DIJOFS_BUTTON21 = %DIJOFS_BUTTONB + 21
%EQUATE `DIJOFS_BUTTON22 = %DIJOFS_BUTTONB + 22
%EQUATE `DIJOFS_BUTTON23 = %DIJOFS_BUTTONB + 23
%EQUATE `DIJOFS_BUTTON24 = %DIJOFS_BUTTONB + 24
%EQUATE `DIJOFS_BUTTON25 = %DIJOFS_BUTTONB + 25
%EQUATE `DIJOFS_BUTTON26 = %DIJOFS_BUTTONB + 26
%EQUATE `DIJOFS_BUTTON27 = %DIJOFS_BUTTONB + 27
%EQUATE `DIJOFS_BUTTON28 = %DIJOFS_BUTTONB + 28
%EQUATE `DIJOFS_BUTTON29 = %DIJOFS_BUTTONB + 29
%EQUATE `DIJOFS_BUTTON30 = %DIJOFS_BUTTONB + 30
%EQUATE `DIJOFS_BUTTON31 = %DIJOFS_BUTTONB + 31
'/****************************************************************************
' *
' * IDirectInput
' *
' ****************************************************************************/
%EQUATE `DIENUM_STOP = 0
%EQUATE `DIENUM_CONTINUE = 1
%EQUATE `DIEDFL_ALLDEVICES = &H00000000
%EQUATE `DIEDFL_ATTACHEDONLY = &H00000001
%EQUATE `DIEDFL_FORCEFEEDBACK = &H00000100
%EQUATE `DIEDFL_INCLUDEALIASES = &H00010000
%EQUATE `DIEDFL_INCLUDEPHANTOMS = &H00020000
%EQUATE `DIEDFL_INCLUDEHIDDEN = &H00040000
%EQUATE `DIEDBS_MAPPEDPRI1 = &H00000001
%EQUATE `DIEDBS_MAPPEDPRI2 = &H00000002
%EQUATE `DIEDBS_RECENTDEVICE = &H00000010
%EQUATE `DIEDBS_NEWDEVICE = &H00000020
%EQUATE `DIEDBSFL_ATTACHEDONLY = &H00000000
%EQUATE `DIEDBSFL_THISUSER = &H00000010
%EQUATE `DIEDBSFL_FORCEFEEDBACK = %DIEDFL_FORCEFEEDBACK
%EQUATE `DIEDBSFL_AVAILABLEDEVICES = &H00001000
%EQUATE `DIEDBSFL_MULTIMICEKEYBOARDS = &H00002000
%EQUATE `DIEDBSFL_NONGAMINGDEVICES = &H00004000
%EQUATE `DIEDBSFL_VALID = &H00007110
' ########################################################################################
' IDirectInputW interface
' IID = 89521361-AA8A-11CF-BFC7-444553540000
' Inherited interface = IUnknown
' ########################################################################################
INTERFACE IDirectInputW $IID_IDirectInputW
 INHERIT IUnknown
 ' =====================================================================================
 METHOD CreateDevice ( ' VTable offset = 12
 BYREF rguid AS GUID
 , BYREF lplpDirectInputDevice AS IDirectInputDeviceW
 , BYVAL pUnkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumDevices ( ' VTable offset = 16
 BYVAL dwDevType AS DWORD
 , BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceStatus ( ' VTable offset = 20
 BYREF rguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 24
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 28
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInput interface
' IID = 89521360-AA8A-11CF-BFC7-444553540000
' Inherited interface = IUnknown
' ########################################################################################
INTERFACE IDirectInput $IID_IDirectInput
 INHERIT IUnknown
 ' =====================================================================================
 METHOD CreateDevice ( ' VTable offset = 12
 BYREF rguid AS GUID
 , BYREF lplpDirectInputDevice AS IDirectInputDevice
 , BYVAL pUnkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumDevices ( ' VTable offset = 16
 BYVAL dwDevType AS DWORD
 , BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceStatus ( ' VTable offset = 20
 BYREF rguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 24
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 28
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInput2W interface
' IID = 5944E663-AA8A-11CF-BFC7-444553540000
' Inherited interface = IDirectInputW
' ########################################################################################
INTERFACE IDirectInput2W $IID_IDirectInput2W
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInputW mehods
 ' =====================================================================================
 METHOD CreateDevice ( ' VTable offset = 12
 BYREF rguid AS GUID
 , BYREF lplpDirectInputDevice AS IDirectInputDeviceW
 , BYVAL pUnkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumDevices ( ' VTable offset = 16
 BYVAL dwDevType AS DWORD
 , BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceStatus ( ' VTable offset = 20
 BYREF rguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 24
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 28
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInput2W mehods
 ' =====================================================================================
 METHOD FindDevice ( ' VTable offset = 32
 BYREF rguidClass AS GUID
 , BYREF ptszName AS WSTRINGZ
 , BYREF pguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInput2 interface
' IID = 5944E662-AA8A-11CF-BFC7-444553540000
' Inherited interface = IDirectInput
' ########################################################################################
INTERFACE IDirectInput2 $IID_IDirectInput2
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInput mehods
 ' =====================================================================================
 METHOD CreateDevice ( ' VTable offset = 12
 BYREF rguid AS GUID
 , BYREF lplpDirectInputDevice AS IDirectInputDevice
 , BYVAL pUnkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumDevices ( ' VTable offset = 16
 BYVAL dwDevType AS DWORD
 , BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceStatus ( ' VTable offset = 20
 BYREF rguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 24
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 28
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInput2 mehods
 ' =====================================================================================
 METHOD FindDevice ( ' VTable offset = 32
 BYREF rguidClass AS GUID
 , BYREF ptszName AS ASCIIZ
 , BYREF pguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInput8W interface
' IID = BF798031-483A-4DA2-AA99-5D64ED369700
' Inherited interface = IDirectInputW
' ########################################################################################
INTERFACE IDirectInput8W $IID_IDirectInput8W
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInputW mehods
 ' =====================================================================================
 METHOD CreateDevice ( ' VTable offset = 12
 BYREF rguid AS GUID
 , BYREF lplpDirectInputDevice AS IDirectInputDeviceW
 , BYVAL pUnkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumDevices ( ' VTable offset = 16
 BYVAL dwDevType AS DWORD
 , BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceStatus ( ' VTable offset = 20
 BYREF rguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 24
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 28
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInput2W mehods
 ' =====================================================================================
 METHOD FindDevice ( ' VTable offset = 32
 BYREF rguidClass AS GUID
 , BYREF ptszName AS WSTRINGZ
 , BYREF pguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInput8W mehods
 ' =====================================================================================
 METHOD EnumDevicesBySemantics ( ' VTable offset = 36
 BYREF ptszUserName AS WSTRINGZ
 , BYREF lpdiActionFormat AS DIACTIONFORMATW
 , BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD ConfigureDevices ( ' VTable offset = 40
 BYVAL lpdiCallback AS DWORD
 , BYREF lpdiCDParams AS DICONFIGUREDEVICESPARAMSW
 , BYVAL dwFlags AS DWORD
 , BYVAL pvRefData AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
' ########################################################################################
' IDirectInput8 interface
' IID = BF798030-483A-4DA2-AA99-5D64ED369700
' Inherited interface = IDirectInput
' ########################################################################################
INTERFACE IDirectInput8 $IID_IDirectInput8
 INHERIT IUnknown
 ' =====================================================================================
 ' IDirectInput mehods
 ' =====================================================================================
 METHOD CreateDevice ( ' VTable offset = 12
 BYREF rguid AS GUID
 , BYREF lplpDirectInputDevice AS IDirectInputDevice
 , BYVAL pUnkOuter AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD EnumDevices ( ' VTable offset = 16
 BYVAL dwDevType AS DWORD
 , BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetDeviceStatus ( ' VTable offset = 20
 BYREF rguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
 METHOD RunControlPanel ( ' VTable offset = 24
 BYVAL hwndOwner AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Initialize ( ' VTable offset = 28
 BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInput2 mehods
 ' =====================================================================================
 METHOD FindDevice ( ' VTable offset = 32
 BYREF rguidClass AS GUID
 , BYREF ptszName AS ASCIIZ
 , BYREF pguidInstance AS GUID
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' IDirectInput8 mehods
 ' =====================================================================================
 METHOD EnumDevicesBySemantics ( ' VTable offset = 36
 BYREF ptszUserName AS ASCIIZ
 , BYREF lpdiActionFormat AS DIACTIONFORMATA
 , BYVAL lpCallback AS DWORD
 , BYVAL pvRef AS DWORD
 , BYVAL dwFlags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD ConfigureDevices ( ' VTable offset = 40
 BYVAL lpdiCallback AS DWORD
 , BYREF lpdiCDParams AS DICONFIGUREDEVICESPARAMSA
 , BYVAL dwFlags AS DWORD
 , BYVAL pvRefData AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
DECLARE FUNCTION DirectInputCreate LIB "dinput.dll" ALIAS "DirectInputCreateA" ( BYVAL hinst AS QUAD , BYVAL dwVersion AS QUAD , BYREF ppDI AS IDirectInput , BYVAL punkOuter AS IUnknown ) AS LONG
DECLARE FUNCTION DirectInputCreateW LIB "dinput.dll" ALIAS "DirectInputCreateW" ( BYVAL hinst AS QUAD
 , BYVAL dwVersion AS DWORD
 , BYREF ppDI AS IDirectInputW
 , BYVAL punkOuter AS IUnknown
 ) AS LONG
DECLARE FUNCTION DirectInputCreateEx LIB "dinput.dll" ALIAS "DirectInputCreateEx" ( BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF riidltf AS GUID
 , BYREF ppvOut AS ANY
 , BYVAL punkOuter AS IUnknown
 ) AS LONG
DECLARE FUNCTION DirectInput8Create LIB "dinput8.dll" ALIAS "DirectInput8Create" ( BYVAL hinst AS DWORD
 , BYVAL dwVersion AS DWORD
 , BYREF riidltf AS GUID
 , BYREF ppvOut AS ANY
 , BYVAL punkOuter AS IUnknown
 ) AS LONG
'/****************************************************************************
' *
' * Return Codes
' *
' ****************************************************************************/
'/*
' * The operation completed successfully.
' */
%EQUATE `DI_OK = %S_OK
'/*
' * The device exists but is not currently attached.
' */
%EQUATE `DI_NOTATTACHED = %S_FALSE
'/*
' * The device buffer overflowed. Some input was lost.
' */
%EQUATE `DI_BUFFEROVERFLOW = %S_FALSE
'/*
' * The change in device properties had no effect.
' */
%EQUATE `DI_PROPNOEFFECT = %S_FALSE
'/*
' * The operation had no effect.
' */
%EQUATE `DI_NOEFFECT = %S_FALSE
'/*
' * The device is a polled device. As a result, device buffering
' * will not collect any data and event notifications will not be
' * signalled until GetDeviceState is called.
' */
%EQUATE `DI_POLLEDDEVICE = &H00000002&
'/*
' * The parameters of the effect were successfully updated by
' * IDirectInputEffect::SetParameters, but the effect was not
' * downloaded because the device is not exclusively acquired
' * or because the DIEP_NODOWNLOAD flag was passed.
' */
%EQUATE `DI_DOWNLOADSKIPPED = &H00000003&
'/*
' * The parameters of the effect were successfully updated by
' * IDirectInputEffect::SetParameters, but in order to change
' * the parameters, the effect needed to be restarted.
' */
%EQUATE `DI_EFFECTRESTARTED = &H00000004&
'/*
' * The parameters of the effect were successfully updated by
' * IDirectInputEffect::SetParameters, but some of them were
' * beyond the capabilities of the device and were truncated.
' */
%EQUATE `DI_TRUNCATED = &H00000008&
'/*
' * The settings have been successfully applied but could not be
' * persisted.
' */
%EQUATE `DI_SETTINGSNOTSAVED = &H0000000B&
'/*
' * Equal to DI_EFFECTRESTARTED | DI_TRUNCATED.
' */
%EQUATE `DI_TRUNCATEDANDRESTARTED = &H0000000C&
'/*
' * A SUCCESS code indicating that settings cannot be modified.
' */
%EQUATE `DI_WRITEPROTECT = &H00000013&
'/*
' * The application requires a newer version of DirectInput.
' */
'#define DIERR_OLDDIRECTINPUTVERSION \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION)
%EQUATE `DIERR_OLDDIRECTINPUTVERSION = &H70000 + 1150 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_OLD_WIN_VERSION
'/*
' * The application was written for an unsupported prerelease version
' * of DirectInput.
' */
'#define DIERR_BETADIRECTINPUTVERSION \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP)
%EQUATE `DIERR_BETADIRECTINPUTVERSION = &H70000 + 1153 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_RMODE_APP
'/*
' * The object could not be created due to an incompatible driver version
' * or mismatched or incomplete driver components.
' */
'#define DIERR_BADDRIVERVER \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL)
%EQUATE `DIERR_BADDRIVERVER = &H70000 + 119 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_BAD_DRIVER_LEVEL
'/*
' * The device or device instance or effect is not registered with DirectInput.
' */
%EQUATE `DIERR_DEVICENOTREG = %REGDB_E_CLASSNOTREG
'/*
' * The requested object does not exist.
' */
'#define DIERR_NOTFOUND \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
%EQUATE `DIERR_NOTFOUND = &H70000 + 2 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_FILE_NOT_FOUND
'/*
' * The requested object does not exist.
' */
'#define DIERR_OBJECTNOTFOUND \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
%EQUATE `DIERR_OBJECTNOTFOUND = &H70000 + 2 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_FILE_NOT_FOUND
'/*
' * An invalid parameter was passed to the returning function,
' * or the object was not in a state that admitted the function
' * to be called.
' */
%EQUATE `DIERR_INVALIDPARAM = %E_INVALIDARG
'/*
' * The specified interface is not supported by the object
' */
%EQUATE `DIERR_NOINTERFACE = %E_NOINTERFACE
'/*
' * An undetermined error occured inside the DInput subsystem
' */
%EQUATE `DIERR_GENERIC = %E_FAIL
'/*
' * The DInput subsystem couldn't allocate sufficient memory to complete the
' * caller's request.
' */
%EQUATE `DIERR_OUTOFMEMORY = %E_OUTOFMEMORY
'/*
' * The function called is not supported at this time
' */
%EQUATE `DIERR_UNSUPPORTED = %E_NOTIMPL
'/*
' * This object has not been initialized
' */
'#define DIERR_NOTINITIALIZED \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY)
%EQUATE `DIERR_NOTINITIALIZED = &H70000 + 21 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_NOT_READY
'/*
' * This object is already initialized
' */
'#define DIERR_ALREADYINITIALIZED \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED)
%EQUATE `DIERR_ALREADYINITIALIZED = &H70000 + 1247 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_ALREADY_INITIALIZED
'/*
' * This object does not support aggregation
' */
%EQUATE `DIERR_NOAGGREGATION = %CLASS_E_NOAGGREGATION
'/*
' * Another app has a higher priority level, preventing this call from
' * succeeding.
' */
%EQUATE `DIERR_OTHERAPPHASPRIO = %E_ACCESSDENIED
'/*
' * Access to the device has been lost. It must be re-acquired.
' */
'#define DIERR_INPUTLOST \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT)
%EQUATE `DIERR_INPUTLOST = &H70000 + 30 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_READ_FAULT
'/*
' * The operation cannot be performed while the device is acquired.
' */
'#define DIERR_ACQUIRED \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY)
%EQUATE `DIERR_ACQUIRED = &H70000 + 170 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_BUSY
'/*
' * The operation cannot be performed unless the device is acquired.
' */
'#define DIERR_NOTACQUIRED \
' MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS)
%EQUATE `DIERR_NOTACQUIRED = &H70000 + 12 ' SEVERITY_ERROR_FACILITY_WIN32 or ERROR_INVALID_ACCESS
'/*
' * The specified property cannot be changed.
' */
%EQUATE `DIERR_READONLY = %E_ACCESSDENIED
'/*
' * The device already has an event notification associated with it.
' */
%EQUATE `DIERR_HANDLEEXISTS = %E_ACCESSDENIED
'/*
' * Data is not yet available.
' */
%EQUATE `E_PENDING = &H8000000A&
'/*
' * Unable to IDirectInputJoyConfig_Acquire because the user
' * does not have sufficient privileges to change the joystick
' * configuration.
' */
%EQUATE `DIERR_INSUFFICIENTPRIVS = &H80040200&
'/*
' * The device is full.
' */
%EQUATE `DIERR_DEVICEFULL = &H80040201&
'/*
' * Not all the requested information fit into the buffer.
' */
%EQUATE `DIERR_MOREDATA = &H80040202&
'/*
' * The effect is not downloaded.
' */
%EQUATE `DIERR_NOTDOWNLOADED = &H80040203&
'/*
' * The device cannot be reinitialized because there are still effects
' * attached to it.
' */
%EQUATE `DIERR_HASEFFECTS = &H80040204&
'/*
' * The operation cannot be performed unless the device is acquired
' * in DISCL_EXCLUSIVE mode.
' */
%EQUATE `DIERR_NOTEXCLUSIVEACQUIRED = &H80040205&
'/*
' * The effect could not be downloaded because essential information
' * is missing. For example, no axes have been associated with the
' * effect, or no type-specific information has been created.
' */
%EQUATE `DIERR_INCOMPLETEEFFECT = &H80040206&
'/*
' * Attempted to read buffered device data from a device that is
' * not buffered.
' */
%EQUATE `DIERR_NOTBUFFERED = &H80040207&
'/*
' * An attempt was made to modify parameters of an effect while it is
' * playing. Not all hardware devices support altering the parameters
' * of an effect while it is playing.
' */
%EQUATE `DIERR_EFFECTPLAYING = &H80040208&
'/*
' * The operation could not be completed because the device is not
' * plugged in.
' */
%EQUATE `DIERR_UNPLUGGED = &H80040209&
'/*
' * SendDeviceData failed because more information was requested
' * to be sent than can be sent to the device. Some devices have
' * restrictions on how much data can be sent to them. (For example,
' * there might be a limit on the number of buttons that can be
' * pressed at once.)
' */
%EQUATE `DIERR_REPORTFULL = &H8004020A&
'/*
' * A mapper file function failed because reading or writing the user or IHV
' * settings file failed.
' */
%EQUATE `DIERR_MAPFILEFAIL = &H8004020B&
'/*--- DINPUT Mapper Definitions: New for Dx8 ---*/
'/*--- Keyboard
' Physical Keyboard Device ---*/
%EQUATE `DIKEYBOARD_ESCAPE = &H81000401
%EQUATE `DIKEYBOARD_1 = &H81000402
%EQUATE `DIKEYBOARD_2 = &H81000403
%EQUATE `DIKEYBOARD_3 = &H81000404
%EQUATE `DIKEYBOARD_4 = &H81000405
%EQUATE `DIKEYBOARD_5 = &H81000406
%EQUATE `DIKEYBOARD_6 = &H81000407
%EQUATE `DIKEYBOARD_7 = &H81000408
%EQUATE `DIKEYBOARD_8 = &H81000409
%EQUATE `DIKEYBOARD_9 = &H8100040A
%EQUATE `DIKEYBOARD_0 = &H8100040B
%EQUATE `DIKEYBOARD_MINUS = &H8100040C ' /* - on main keyboard */
%EQUATE `DIKEYBOARD_EQUALS = &H8100040D
%EQUATE `DIKEYBOARD_BACK = &H8100040E ' /* backspace */
%EQUATE `DIKEYBOARD_TAB = &H8100040F
%EQUATE `DIKEYBOARD_Q = &H81000410
%EQUATE `DIKEYBOARD_W = &H81000411
%EQUATE `DIKEYBOARD_E = &H81000412
%EQUATE `DIKEYBOARD_R = &H81000413
%EQUATE `DIKEYBOARD_T = &H81000414
%EQUATE `DIKEYBOARD_Y = &H81000415
%EQUATE `DIKEYBOARD_U = &H81000416
%EQUATE `DIKEYBOARD_I = &H81000417
%EQUATE `DIKEYBOARD_O = &H81000418
%EQUATE `DIKEYBOARD_P = &H81000419
%EQUATE `DIKEYBOARD_LBRACKET = &H8100041A
%EQUATE `DIKEYBOARD_RBRACKET = &H8100041B
%EQUATE `DIKEYBOARD_RETURN = &H8100041C ' /* Enter on main keyboard */
%EQUATE `DIKEYBOARD_LCONTROL = &H8100041D
%EQUATE `DIKEYBOARD_A = &H8100041E
%EQUATE `DIKEYBOARD_S = &H8100041F
%EQUATE `DIKEYBOARD_D = &H81000420
%EQUATE `DIKEYBOARD_F = &H81000421
%EQUATE `DIKEYBOARD_G = &H81000422
%EQUATE `DIKEYBOARD_H = &H81000423
%EQUATE `DIKEYBOARD_J = &H81000424
%EQUATE `DIKEYBOARD_K = &H81000425
%EQUATE `DIKEYBOARD_L = &H81000426
%EQUATE `DIKEYBOARD_SEMICOLON = &H81000427
%EQUATE `DIKEYBOARD_APOSTROPHE = &H81000428
%EQUATE `DIKEYBOARD_GRAVE = &H81000429 ' /* accent grave */
%EQUATE `DIKEYBOARD_LSHIFT = &H8100042A
%EQUATE `DIKEYBOARD_BACKSLASH = &H8100042B
%EQUATE `DIKEYBOARD_Z = &H8100042C
%EQUATE `DIKEYBOARD_X = &H8100042D
%EQUATE `DIKEYBOARD_C = &H8100042E
%EQUATE `DIKEYBOARD_V = &H8100042F
%EQUATE `DIKEYBOARD_B = &H81000430
%EQUATE `DIKEYBOARD_N = &H81000431
%EQUATE `DIKEYBOARD_M = &H81000432
%EQUATE `DIKEYBOARD_COMMA = &H81000433
%EQUATE `DIKEYBOARD_PERIOD = &H81000434 ' /* . on main keyboard */
%EQUATE `DIKEYBOARD_SLASH = &H81000435 ' /* / on main keyboard */
%EQUATE `DIKEYBOARD_RSHIFT = &H81000436
%EQUATE `DIKEYBOARD_MULTIPLY = &H81000437 ' /* * on numeric keypad */
%EQUATE `DIKEYBOARD_LMENU = &H81000438 ' /* left Alt */
%EQUATE `DIKEYBOARD_SPACE = &H81000439
%EQUATE `DIKEYBOARD_CAPITAL = &H8100043A
%EQUATE `DIKEYBOARD_F1 = &H8100043B
%EQUATE `DIKEYBOARD_F2 = &H8100043C
%EQUATE `DIKEYBOARD_F3 = &H8100043D
%EQUATE `DIKEYBOARD_F4 = &H8100043E
%EQUATE `DIKEYBOARD_F5 = &H8100043F
%EQUATE `DIKEYBOARD_F6 = &H81000440
%EQUATE `DIKEYBOARD_F7 = &H81000441
%EQUATE `DIKEYBOARD_F8 = &H81000442
%EQUATE `DIKEYBOARD_F9 = &H81000443
%EQUATE `DIKEYBOARD_F10 = &H81000444
%EQUATE `DIKEYBOARD_NUMLOCK = &H81000445
%EQUATE `DIKEYBOARD_SCROLL = &H81000446 ' /* Scroll Lock */
%EQUATE `DIKEYBOARD_NUMPAD7 = &H81000447
%EQUATE `DIKEYBOARD_NUMPAD8 = &H81000448
%EQUATE `DIKEYBOARD_NUMPAD9 = &H81000449
%EQUATE `DIKEYBOARD_SUBTRACT = &H8100044A ' /* - on numeric keypad */
%EQUATE `DIKEYBOARD_NUMPAD4 = &H8100044B
%EQUATE `DIKEYBOARD_NUMPAD5 = &H8100044C
%EQUATE `DIKEYBOARD_NUMPAD6 = &H8100044D
%EQUATE `DIKEYBOARD_ADD = &H8100044E ' /* + on numeric keypad */
%EQUATE `DIKEYBOARD_NUMPAD1 = &H8100044F
%EQUATE `DIKEYBOARD_NUMPAD2 = &H81000450
%EQUATE `DIKEYBOARD_NUMPAD3 = &H81000451
%EQUATE `DIKEYBOARD_NUMPAD0 = &H81000452
%EQUATE `DIKEYBOARD_DECIMAL = &H81000453 ' /* . on numeric keypad */
%EQUATE `DIKEYBOARD_OEM_102 = &H81000456 ' /* <> or \| on RT 102-key keyboard (Non-U.S.) */
%EQUATE `DIKEYBOARD_F11 = &H81000457
%EQUATE `DIKEYBOARD_F12 = &H81000458
%EQUATE `DIKEYBOARD_F13 = &H81000464 ' /* (NEC PC98) */
%EQUATE `DIKEYBOARD_F14 = &H81000465 ' /* (NEC PC98) */
%EQUATE `DIKEYBOARD_F15 = &H81000466 ' /* (NEC PC98) */
%EQUATE `DIKEYBOARD_KANA = &H81000470 ' /* (Japanese keyboard) */
%EQUATE `DIKEYBOARD_ABNT_C1 = &H81000473 ' /* /? on Brazilian keyboard */
%EQUATE `DIKEYBOARD_CONVERT = &H81000479 ' /* (Japanese keyboard) */
%EQUATE `DIKEYBOARD_NOCONVERT = &H8100047B ' /* (Japanese keyboard) */
%EQUATE `DIKEYBOARD_YEN = &H8100047D ' /* (Japanese keyboard) */
%EQUATE `DIKEYBOARD_ABNT_C2 = &H8100047E ' /* Numpad . on Brazilian keyboard */
%EQUATE `DIKEYBOARD_NUMPADEQUALS = &H8100048D ' /* = on numeric keypad (NEC PC98) */
%EQUATE `DIKEYBOARD_PREVTRACK = &H81000490 ' /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */
%EQUATE `DIKEYBOARD_AT = &H81000491 ' /* (NEC PC98) */
%EQUATE `DIKEYBOARD_COLON = &H81000492 ' /* (NEC PC98) */
%EQUATE `DIKEYBOARD_UNDERLINE = &H81000493 ' /* (NEC PC98) */
%EQUATE `DIKEYBOARD_KANJI = &H81000494 ' /* (Japanese keyboard) */
%EQUATE `DIKEYBOARD_STOP = &H81000495 ' /* (NEC PC98) */
%EQUATE `DIKEYBOARD_AX = &H81000496 ' /* (Japan AX) */
%EQUATE `DIKEYBOARD_UNLABELED = &H81000497 ' /* (J3100) */
%EQUATE `DIKEYBOARD_NEXTTRACK = &H81000499 ' /* Next Track */
%EQUATE `DIKEYBOARD_NUMPADENTER = &H8100049C ' /* Enter on numeric keypad */
%EQUATE `DIKEYBOARD_RCONTROL = &H8100049D
%EQUATE `DIKEYBOARD_MUTE = &H810004A0 ' /* Mute */
%EQUATE `DIKEYBOARD_CALCULATOR = &H810004A1 ' /* Calculator */
%EQUATE `DIKEYBOARD_PLAYPAUSE = &H810004A2 ' /* Play / Pause */
%EQUATE `DIKEYBOARD_MEDIASTOP = &H810004A4 ' /* Media Stop */
%EQUATE `DIKEYBOARD_VOLUMEDOWN = &H810004AE ' /* Volume - */
%EQUATE `DIKEYBOARD_VOLUMEUP = &H810004B0 ' /* Volume + */
%EQUATE `DIKEYBOARD_WEBHOME = &H810004B2 ' /* Web home */
%EQUATE `DIKEYBOARD_NUMPADCOMMA = &H810004B3 ' /* , on numeric keypad (NEC PC98) */
%EQUATE `DIKEYBOARD_DIVIDE = &H810004B5 ' /* / on numeric keypad */
%EQUATE `DIKEYBOARD_SYSRQ = &H810004B7
%EQUATE `DIKEYBOARD_RMENU = &H810004B8 ' /* right Alt */
%EQUATE `DIKEYBOARD_PAUSE = &H810004C5 ' /* Pause */
%EQUATE `DIKEYBOARD_HOME = &H810004C7 ' /* Home on arrow keypad */
%EQUATE `DIKEYBOARD_UP = &H810004C8 ' /* UpArrow on arrow keypad */
%EQUATE `DIKEYBOARD_PRIOR = &H810004C9 ' /* PgUp on arrow keypad */
%EQUATE `DIKEYBOARD_LEFT = &H810004CB ' /* LeftArrow on arrow keypad */
%EQUATE `DIKEYBOARD_RIGHT = &H810004CD ' /* RightArrow on arrow keypad */
%EQUATE `DIKEYBOARD_END = &H810004CF ' /* End on arrow keypad */
%EQUATE `DIKEYBOARD_DOWN = &H810004D0 ' /* DownArrow on arrow keypad */
%EQUATE `DIKEYBOARD_NEXT = &H810004D1 ' /* PgDn on arrow keypad */
%EQUATE `DIKEYBOARD_INSERT = &H810004D2 ' /* Insert on arrow keypad */
%EQUATE `DIKEYBOARD_DELETE = &H810004D3 ' /* Delete on arrow keypad */
%EQUATE `DIKEYBOARD_LWIN = &H810004DB ' /* Left Windows key */
%EQUATE `DIKEYBOARD_RWIN = &H810004DC ' /* Right Windows key */
%EQUATE `DIKEYBOARD_APPS = &H810004DD ' /* AppMenu key */
%EQUATE `DIKEYBOARD_POWER = &H810004DE ' /* System Power */
%EQUATE `DIKEYBOARD_SLEEP = &H810004DF ' /* System Sleep */
%EQUATE `DIKEYBOARD_WAKE = &H810004E3 ' /* System Wake */
%EQUATE `DIKEYBOARD_WEBSEARCH = &H810004E5 ' /* Web Search */
%EQUATE `DIKEYBOARD_WEBFAVORITES = &H810004E6 ' /* Web Favorites */
%EQUATE `DIKEYBOARD_WEBREFRESH = &H810004E7 ' /* Web Refresh */
%EQUATE `DIKEYBOARD_WEBSTOP = &H810004E8 ' /* Web Stop */
%EQUATE `DIKEYBOARD_WEBFORWARD = &H810004E9 ' /* Web Forward */
%EQUATE `DIKEYBOARD_WEBBACK = &H810004EA ' /* Web Back */
%EQUATE `DIKEYBOARD_MYCOMPUTER = &H810004EB ' /* My Computer */
%EQUATE `DIKEYBOARD_MAIL = &H810004EC ' /* Mail */
%EQUATE `DIKEYBOARD_MEDIASELECT = &H810004ED ' /* Media Select */
' /*--- MOUSE
' Physical Mouse Device ---*/
%EQUATE `DIMOUSE_XAXISAB = &H82000200 OR %DIMOFS_X ' /* X Axis-absolute: Some mice natively report absolute coordinates */
%EQUATE `DIMOUSE_YAXISAB = &H82000200 OR %DIMOFS_Y ' /* Y Axis-absolute: Some mice natively report absolute coordinates */
%EQUATE `DIMOUSE_XAXIS = &H82000300 OR %DIMOFS_X ' /* X Axis */
%EQUATE `DIMOUSE_YAXIS = &H82000300 OR %DIMOFS_Y ' /* Y Axis */
%EQUATE `DIMOUSE_WHEEL = &H82000300 OR %DIMOFS_Z ' /* Z Axis */
%EQUATE `DIMOUSE_BUTTON0 = &H82000400 OR %DIMOFS_BUTTON0 ' /* Button 0 */
%EQUATE `DIMOUSE_BUTTON1 = &H82000400 OR %DIMOFS_BUTTON1 ' /* Button 1 */
%EQUATE `DIMOUSE_BUTTON2 = &H82000400 OR %DIMOFS_BUTTON2 ' /* Button 2 */
%EQUATE `DIMOUSE_BUTTON3 = &H82000400 OR %DIMOFS_BUTTON3 ' /* Button 3 */
%EQUATE `DIMOUSE_BUTTON4 = &H82000400 OR %DIMOFS_BUTTON4 ' /* Button 4 */
%EQUATE `DIMOUSE_BUTTON5 = &H82000400 OR %DIMOFS_BUTTON5 ' /* Button 5 */
%EQUATE `DIMOUSE_BUTTON6 = &H82000400 OR %DIMOFS_BUTTON6 ' /* Button 6 */
%EQUATE `DIMOUSE_BUTTON7 = &H82000400 OR %DIMOFS_BUTTON7 ' /* Button 7 */
'' /*--- VOICE
' Physical Dplay Voice Device ---*/
%EQUATE `DIVOICE_CHANNEL1 = &H83000401
%EQUATE `DIVOICE_CHANNEL2 = &H83000402
%EQUATE `DIVOICE_CHANNEL3 = &H83000403
%EQUATE `DIVOICE_CHANNEL4 = &H83000404
%EQUATE `DIVOICE_CHANNEL5 = &H83000405
%EQUATE `DIVOICE_CHANNEL6 = &H83000406
%EQUATE `DIVOICE_CHANNEL7 = &H83000407
%EQUATE `DIVOICE_CHANNEL8 = &H83000408
%EQUATE `DIVOICE_TEAM = &H83000409
%EQUATE `DIVOICE_ALL = &H8300040A
%EQUATE `DIVOICE_RECORDMUTE = &H8300040B
%EQUATE `DIVOICE_PLAYBACKMUTE = &H8300040C
%EQUATE `DIVOICE_TRANSMIT = &H8300040D
%EQUATE `DIVOICE_VOICECOMMAND = &H83000410
'' /*--- Driving Simulator - Racing
' Vehicle control is primary objective ---*/
%EQUATE `DIVIRTUAL_DRIVING_RACE = &H01000000
%EQUATE `DIAXIS_DRIVINGR_STEER = &H01008A01 ' /* Steering */
%EQUATE `DIAXIS_DRIVINGR_ACCELERATE = &H01039202 ' /* Accelerate */
%EQUATE `DIAXIS_DRIVINGR_BRAKE = &H01041203 ' /* Brake-Axis */
%EQUATE `DIBUTTON_DRIVINGR_SHIFTUP = &H01000C01 ' /* Shift to next higher gear */
%EQUATE `DIBUTTON_DRIVINGR_SHIFTDOWN = &H01000C02 ' /* Shift to next lower gear */
%EQUATE `DIBUTTON_DRIVINGR_VIEW = &H01001C03 ' /* Cycle through view options */
%EQUATE `DIBUTTON_DRIVINGR_MENU = &H010004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIAXIS_DRIVINGR_ACCEL_AND_BRAKE = &H01014A04 ' /* Some devices combine accelerate and brake in a single axis */
%EQUATE `DIHATSWITCH_DRIVINGR_GLANCE = &H01004601 ' /* Look around */
%EQUATE `DIBUTTON_DRIVINGR_BRAKE = &H01004C04 ' /* Brake-button */
%EQUATE `DIBUTTON_DRIVINGR_DASHBOARD = &H01004405 ' /* Select next dashboard option */
%EQUATE `DIBUTTON_DRIVINGR_AIDS = &H01004406 ' /* Driver correction aids */
%EQUATE `DIBUTTON_DRIVINGR_MAP = &H01004407 ' /* Display Driving Map */
%EQUATE `DIBUTTON_DRIVINGR_BOOST = &H01004408 ' /* Turbo Boost */
%EQUATE `DIBUTTON_DRIVINGR_PIT = &H01004409 ' /* Pit stop notification */
%EQUATE `DIBUTTON_DRIVINGR_ACCELERATE_LINK = &H0103D4E0 ' /* Fallback Accelerate button */
%EQUATE `DIBUTTON_DRIVINGR_STEER_LEFT_LINK = &H0100CCE4 ' /* Fallback Steer Left button */
%EQUATE `DIBUTTON_DRIVINGR_STEER_RIGHT_LINK = &H0100CCEC ' /* Fallback Steer Right button */
%EQUATE `DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK = &H0107C4E4 ' /* Fallback Glance Left button */
%EQUATE `DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK = &H0107C4EC ' /* Fallback Glance Right button */
%EQUATE `DIBUTTON_DRIVINGR_DEVICE = &H010044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_DRIVINGR_PAUSE = &H010044FC ' /* Start / Pause / Restart game */
' /*--- Driving Simulator - Combat
' Combat from within a vehicle is primary objective ---*/
%EQUATE `DIVIRTUAL_DRIVING_COMBAT = &H02000000
%EQUATE `DIAXIS_DRIVINGC_STEER = &H02008A01 ' /* Steering */
%EQUATE `DIAXIS_DRIVINGC_ACCELERATE = &H02039202 ' /* Accelerate */
%EQUATE `DIAXIS_DRIVINGC_BRAKE = &H02041203 ' /* Brake-axis */
%EQUATE `DIBUTTON_DRIVINGC_FIRE = &H02000C01 ' /* Fire */
%EQUATE `DIBUTTON_DRIVINGC_WEAPONS = &H02000C02 ' /* Select next weapon */
%EQUATE `DIBUTTON_DRIVINGC_TARGET = &H02000C03 ' /* Select next available target */
%EQUATE `DIBUTTON_DRIVINGC_MENU = &H020004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIAXIS_DRIVINGC_ACCEL_AND_BRAKE = &H02014A04 ' /* Some devices combine accelerate and brake in a single axis */
%EQUATE `DIHATSWITCH_DRIVINGC_GLANCE = &H02004601 ' /* Look around */
%EQUATE `DIBUTTON_DRIVINGC_SHIFTUP = &H02004C04 ' /* Shift to next higher gear */
%EQUATE `DIBUTTON_DRIVINGC_SHIFTDOWN = &H02004C05 ' /* Shift to next lower gear */
%EQUATE `DIBUTTON_DRIVINGC_DASHBOARD = &H02004406 ' /* Select next dashboard option */
%EQUATE `DIBUTTON_DRIVINGC_AIDS = &H02004407 ' /* Driver correction aids */
%EQUATE `DIBUTTON_DRIVINGC_BRAKE = &H02004C08 ' /* Brake-button */
%EQUATE `DIBUTTON_DRIVINGC_FIRESECONDARY = &H02004C09 ' /* Alternative fire button */
%EQUATE `DIBUTTON_DRIVINGC_ACCELERATE_LINK = &H0203D4E0 ' /* Fallback Accelerate button */
%EQUATE `DIBUTTON_DRIVINGC_STEER_LEFT_LINK = &H0200CCE4 ' /* Fallback Steer Left button */
%EQUATE `DIBUTTON_DRIVINGC_STEER_RIGHT_LINK = &H0200CCEC ' /* Fallback Steer Right button */
%EQUATE `DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK = &H0207C4E4 ' /* Fallback Glance Left button */
%EQUATE `DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK = &H0207C4EC ' /* Fallback Glance Right button */
%EQUATE `DIBUTTON_DRIVINGC_DEVICE = &H020044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_DRIVINGC_PAUSE = &H020044FC ' /* Start / Pause / Restart game */
' /*--- Driving Simulator - Tank
' Combat from withing a tank is primary objective ---*/
%EQUATE `DIVIRTUAL_DRIVING_TANK = &H03000000
%EQUATE `DIAXIS_DRIVINGT_STEER = &H03008A01 ' /* Turn tank left / right */
%EQUATE `DIAXIS_DRIVINGT_BARREL = &H03010202 ' /* Raise / lower barrel */
%EQUATE `DIAXIS_DRIVINGT_ACCELERATE = &H03039203 ' /* Accelerate */
%EQUATE `DIAXIS_DRIVINGT_ROTATE = &H03020204 ' /* Turn barrel left / right */
%EQUATE `DIBUTTON_DRIVINGT_FIRE = &H03000C01 ' /* Fire */
%EQUATE `DIBUTTON_DRIVINGT_WEAPONS = &H03000C02 ' /* Select next weapon */
%EQUATE `DIBUTTON_DRIVINGT_TARGET = &H03000C03 ' /* Selects next available target */
%EQUATE `DIBUTTON_DRIVINGT_MENU = &H030004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_DRIVINGT_GLANCE = &H03004601 ' /* Look around */
%EQUATE `DIAXIS_DRIVINGT_BRAKE = &H03045205 ' /* Brake-axis */
%EQUATE `DIAXIS_DRIVINGT_ACCEL_AND_BRAKE = &H03014A06 ' /* Some devices combine accelerate and brake in a single axis */
%EQUATE `DIBUTTON_DRIVINGT_VIEW = &H03005C04 ' /* Cycle through view options */
%EQUATE `DIBUTTON_DRIVINGT_DASHBOARD = &H03005C05 ' /* Select next dashboard option */
%EQUATE `DIBUTTON_DRIVINGT_BRAKE = &H03004C06 ' /* Brake-button */
%EQUATE `DIBUTTON_DRIVINGT_FIRESECONDARY = &H03004C07 ' /* Alternative fire button */
%EQUATE `DIBUTTON_DRIVINGT_ACCELERATE_LINK = &H0303D4E0 ' /* Fallback Accelerate button */
%EQUATE `DIBUTTON_DRIVINGT_STEER_LEFT_LINK = &H0300CCE4 ' /* Fallback Steer Left button */
%EQUATE `DIBUTTON_DRIVINGT_STEER_RIGHT_LINK = &H0300CCEC ' /* Fallback Steer Right button */
%EQUATE `DIBUTTON_DRIVINGT_BARREL_UP_LINK = &H030144E0 ' /* Fallback Barrel up button */
%EQUATE `DIBUTTON_DRIVINGT_BARREL_DOWN_LINK = &H030144E8 ' /* Fallback Barrel down button */
%EQUATE `DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK = &H030244E4 ' /* Fallback Rotate left button */
%EQUATE `DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK = &H030244EC ' /* Fallback Rotate right button */
%EQUATE `DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK = &H0307C4E4 ' /* Fallback Glance Left button */
%EQUATE `DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK = &H0307C4EC ' /* Fallback Glance Right button */
%EQUATE `DIBUTTON_DRIVINGT_DEVICE = &H030044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_DRIVINGT_PAUSE = &H030044FC ' /* Start / Pause / Restart game */
' /*--- Flight Simulator - Civilian
' Plane control is the primary objective ---*/
%EQUATE `DIVIRTUAL_FLYING_CIVILIAN = &H04000000
%EQUATE `DIAXIS_FLYINGC_BANK = &H04008A01 ' /* Roll ship left / right */
%EQUATE `DIAXIS_FLYINGC_PITCH = &H04010A02 ' /* Nose up / down */
%EQUATE `DIAXIS_FLYINGC_THROTTLE = &H04039203 ' /* Throttle */
%EQUATE `DIBUTTON_FLYINGC_VIEW = &H04002401 ' /* Cycle through view options */
%EQUATE `DIBUTTON_FLYINGC_DISPLAY = &H04002402 ' /* Select next dashboard / heads up display option */
%EQUATE `DIBUTTON_FLYINGC_GEAR = &H04002C03 ' /* Gear up / down */
%EQUATE `DIBUTTON_FLYINGC_MENU = &H040004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_FLYINGC_GLANCE = &H04004601 ' /* Look around */
%EQUATE `DIAXIS_FLYINGC_BRAKE = &H04046A04 ' /* Apply Brake */
%EQUATE `DIAXIS_FLYINGC_RUDDER = &H04025205 ' /* Yaw ship left/right */
%EQUATE `DIAXIS_FLYINGC_FLAPS = &H04055A06 ' /* Flaps */
%EQUATE `DIBUTTON_FLYINGC_FLAPSUP = &H04006404 ' /* Increment stepping up until fully retracted */
%EQUATE `DIBUTTON_FLYINGC_FLAPSDOWN = &H04006405 ' /* Decrement stepping down until fully extended */
%EQUATE `DIBUTTON_FLYINGC_BRAKE_LINK = &H04046CE0 ' /* Fallback brake button */
%EQUATE `DIBUTTON_FLYINGC_FASTER_LINK = &H0403D4E0 ' /* Fallback throttle up button */
%EQUATE `DIBUTTON_FLYINGC_SLOWER_LINK = &H0403D4E8 ' /* Fallback throttle down button */
%EQUATE `DIBUTTON_FLYINGC_GLANCE_LEFT_LINK = &H0407C4E4 ' /* Fallback Glance Left button */
%EQUATE `DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK = &H0407C4EC ' /* Fallback Glance Right button */
%EQUATE `DIBUTTON_FLYINGC_GLANCE_UP_LINK = &H0407C4E0 ' /* Fallback Glance Up button */
%EQUATE `DIBUTTON_FLYINGC_GLANCE_DOWN_LINK = &H0407C4E8 ' /* Fallback Glance Down button */
%EQUATE `DIBUTTON_FLYINGC_DEVICE = &H040044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FLYINGC_PAUSE = &H040044FC ' /* Start / Pause / Restart game */
' /*--- Flight Simulator - Military
' Aerial combat is the primary objective ---*/
%EQUATE `DIVIRTUAL_FLYING_MILITARY = &H05000000
%EQUATE `DIAXIS_FLYINGM_BANK = &H05008A01 ' /* Bank - Roll ship left / right */
%EQUATE `DIAXIS_FLYINGM_PITCH = &H05010A02 ' /* Pitch - Nose up / down */
%EQUATE `DIAXIS_FLYINGM_THROTTLE = &H05039203 ' /* Throttle - faster / slower */
%EQUATE `DIBUTTON_FLYINGM_FIRE = &H05000C01 ' /* Fire */
%EQUATE `DIBUTTON_FLYINGM_WEAPONS = &H05000C02 ' /* Select next weapon */
%EQUATE `DIBUTTON_FLYINGM_TARGET = &H05000C03 ' /* Selects next available target */
%EQUATE `DIBUTTON_FLYINGM_MENU = &H050004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_FLYINGM_GLANCE = &H05004601 ' /* Look around */
%EQUATE `DIBUTTON_FLYINGM_COUNTER = &H05005C04 ' /* Activate counter measures */
%EQUATE `DIAXIS_FLYINGM_RUDDER = &H05024A04 ' /* Rudder - Yaw ship left/right */
%EQUATE `DIAXIS_FLYINGM_BRAKE = &H05046205 ' /* Brake-axis */
%EQUATE `DIBUTTON_FLYINGM_VIEW = &H05006405 ' /* Cycle through view options */
%EQUATE `DIBUTTON_FLYINGM_DISPLAY = &H05006406 ' /* Select next dashboard option */
%EQUATE `DIAXIS_FLYINGM_FLAPS = &H05055206 ' /* Flaps */
%EQUATE `DIBUTTON_FLYINGM_FLAPSUP = &H05005407 ' /* Increment stepping up until fully retracted */
%EQUATE `DIBUTTON_FLYINGM_FLAPSDOWN = &H05005408 ' /* Decrement stepping down until fully extended */
%EQUATE `DIBUTTON_FLYINGM_FIRESECONDARY = &H05004C09 ' /* Alternative fire button */
%EQUATE `DIBUTTON_FLYINGM_GEAR = &H0500640A ' /* Gear up / down */
%EQUATE `DIBUTTON_FLYINGM_BRAKE_LINK = &H050464E0 ' /* Fallback brake button */
%EQUATE `DIBUTTON_FLYINGM_FASTER_LINK = &H0503D4E0 ' /* Fallback throttle up button */
%EQUATE `DIBUTTON_FLYINGM_SLOWER_LINK = &H0503D4E8 ' /* Fallback throttle down button */
%EQUATE `DIBUTTON_FLYINGM_GLANCE_LEFT_LINK = &H0507C4E4 ' /* Fallback Glance Left button */
%EQUATE `DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK = &H0507C4EC ' /* Fallback Glance Right button */
%EQUATE `DIBUTTON_FLYINGM_GLANCE_UP_LINK = &H0507C4E0 ' /* Fallback Glance Up button */
%EQUATE `DIBUTTON_FLYINGM_GLANCE_DOWN_LINK = &H0507C4E8 ' /* Fallback Glance Down button */
%EQUATE `DIBUTTON_FLYINGM_DEVICE = &H050044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FLYINGM_PAUSE = &H050044FC ' /* Start / Pause / Restart game */
' /*--- Flight Simulator - Combat Helicopter
' Combat from helicopter is primary objective ---*/
%EQUATE `DIVIRTUAL_FLYING_HELICOPTER = &H06000000
%EQUATE `DIAXIS_FLYINGH_BANK = &H06008A01 ' /* Bank - Roll ship left / right */
%EQUATE `DIAXIS_FLYINGH_PITCH = &H06010A02 ' /* Pitch - Nose up / down */
%EQUATE `DIAXIS_FLYINGH_COLLECTIVE = &H06018A03 ' /* Collective - Blade pitch/power */
%EQUATE `DIBUTTON_FLYINGH_FIRE = &H06001401 ' /* Fire */
%EQUATE `DIBUTTON_FLYINGH_WEAPONS = &H06001402 ' /* Select next weapon */
%EQUATE `DIBUTTON_FLYINGH_TARGET = &H06001403 ' /* Selects next available target */
%EQUATE `DIBUTTON_FLYINGH_MENU = &H060004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_FLYINGH_GLANCE = &H06004601 ' /* Look around */
%EQUATE `DIAXIS_FLYINGH_TORQUE = &H06025A04 ' /* Torque - Rotate ship around left / right axis */
%EQUATE `DIAXIS_FLYINGH_THROTTLE = &H0603DA05 ' /* Throttle */
%EQUATE `DIBUTTON_FLYINGH_COUNTER = &H06005404 ' /* Activate counter measures */
%EQUATE `DIBUTTON_FLYINGH_VIEW = &H06006405 ' /* Cycle through view options */
%EQUATE `DIBUTTON_FLYINGH_GEAR = &H06006406 ' /* Gear up / down */
%EQUATE `DIBUTTON_FLYINGH_FIRESECONDARY = &H06004C07 ' /* Alternative fire button */
%EQUATE `DIBUTTON_FLYINGH_FASTER_LINK = &H0603DCE0 ' /* Fallback throttle up button */
%EQUATE `DIBUTTON_FLYINGH_SLOWER_LINK = &H0603DCE8 ' /* Fallback throttle down button */
%EQUATE `DIBUTTON_FLYINGH_GLANCE_LEFT_LINK = &H0607C4E4 ' /* Fallback Glance Left button */
%EQUATE `DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK = &H0607C4EC ' /* Fallback Glance Right button */
%EQUATE `DIBUTTON_FLYINGH_GLANCE_UP_LINK = &H0607C4E0 ' /* Fallback Glance Up button */
%EQUATE `DIBUTTON_FLYINGH_GLANCE_DOWN_LINK = &H0607C4E8 ' /* Fallback Glance Down button */
%EQUATE `DIBUTTON_FLYINGH_DEVICE = &H060044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FLYINGH_PAUSE = &H060044FC ' /* Start / Pause / Restart game */
' /*--- Space Simulator - Combat
' Space Simulator with weapons ---*/
%EQUATE `DIVIRTUAL_SPACESIM = &H07000000
%EQUATE `DIAXIS_SPACESIM_LATERAL = &H07008201 ' /* Move ship left / right */
%EQUATE `DIAXIS_SPACESIM_MOVE = &H07010202 ' /* Move ship forward/backward */
%EQUATE `DIAXIS_SPACESIM_THROTTLE = &H07038203 ' /* Throttle - Engine speed */
%EQUATE `DIBUTTON_SPACESIM_FIRE = &H07000401 ' /* Fire */
%EQUATE `DIBUTTON_SPACESIM_WEAPONS = &H07000402 ' /* Select next weapon */
%EQUATE `DIBUTTON_SPACESIM_TARGET = &H07000403 ' /* Selects next available target */
%EQUATE `DIBUTTON_SPACESIM_MENU = &H070004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_SPACESIM_GLANCE = &H07004601 ' /* Look around */
%EQUATE `DIAXIS_SPACESIM_CLIMB = &H0701C204 ' /* Climb - Pitch ship up/down */
%EQUATE `DIAXIS_SPACESIM_ROTATE = &H07024205 ' /* Rotate - Turn ship left/right */
%EQUATE `DIBUTTON_SPACESIM_VIEW = &H07004404 ' /* Cycle through view options */
%EQUATE `DIBUTTON_SPACESIM_DISPLAY = &H07004405 ' /* Select next dashboard / heads up display option */
%EQUATE `DIBUTTON_SPACESIM_RAISE = &H07004406 ' /* Raise ship while maintaining current pitch */
%EQUATE `DIBUTTON_SPACESIM_LOWER = &H07004407 ' /* Lower ship while maintaining current pitch */
%EQUATE `DIBUTTON_SPACESIM_GEAR = &H07004408 ' /* Gear up / down */
%EQUATE `DIBUTTON_SPACESIM_FIRESECONDARY = &H07004409 ' /* Alternative fire button */
%EQUATE `DIBUTTON_SPACESIM_LEFT_LINK = &H0700C4E4 ' /* Fallback move left button */
%EQUATE `DIBUTTON_SPACESIM_RIGHT_LINK = &H0700C4EC ' /* Fallback move right button */
%EQUATE `DIBUTTON_SPACESIM_FORWARD_LINK = &H070144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_SPACESIM_BACKWARD_LINK = &H070144E8 ' /* Fallback move backwards button */
%EQUATE `DIBUTTON_SPACESIM_FASTER_LINK = &H0703C4E0 ' /* Fallback throttle up button */
%EQUATE `DIBUTTON_SPACESIM_SLOWER_LINK = &H0703C4E8 ' /* Fallback throttle down button */
%EQUATE `DIBUTTON_SPACESIM_TURN_LEFT_LINK = &H070244E4 ' /* Fallback turn left button */
%EQUATE `DIBUTTON_SPACESIM_TURN_RIGHT_LINK = &H070244EC ' /* Fallback turn right button */
%EQUATE `DIBUTTON_SPACESIM_GLANCE_LEFT_LINK = &H0707C4E4 ' /* Fallback Glance Left button */
%EQUATE `DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK = &H0707C4EC ' /* Fallback Glance Right button */
%EQUATE `DIBUTTON_SPACESIM_GLANCE_UP_LINK = &H0707C4E0 ' /* Fallback Glance Up button */
%EQUATE `DIBUTTON_SPACESIM_GLANCE_DOWN_LINK = &H0707C4E8 ' /* Fallback Glance Down button */
%EQUATE `DIBUTTON_SPACESIM_DEVICE = &H070044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_SPACESIM_PAUSE = &H070044FC ' /* Start / Pause / Restart game */
' /*--- Fighting - First Person
' Hand to Hand combat is primary objective ---*/
%EQUATE `DIVIRTUAL_FIGHTING_HAND2HAND = &H08000000
%EQUATE `DIAXIS_FIGHTINGH_LATERAL = &H08008201 ' /* Sidestep left/right */
%EQUATE `DIAXIS_FIGHTINGH_MOVE = &H08010202 ' /* Move forward/backward */
%EQUATE `DIBUTTON_FIGHTINGH_PUNCH = &H08000401 ' /* Punch */
%EQUATE `DIBUTTON_FIGHTINGH_KICK = &H08000402 ' /* Kick */
%EQUATE `DIBUTTON_FIGHTINGH_BLOCK = &H08000403 ' /* Block */
%EQUATE `DIBUTTON_FIGHTINGH_CROUCH = &H08000404 ' /* Crouch */
%EQUATE `DIBUTTON_FIGHTINGH_JUMP = &H08000405 ' /* Jump */
%EQUATE `DIBUTTON_FIGHTINGH_SPECIAL1 = &H08000406 ' /* Apply first special move */
%EQUATE `DIBUTTON_FIGHTINGH_SPECIAL2 = &H08000407 ' /* Apply second special move */
%EQUATE `DIBUTTON_FIGHTINGH_MENU = &H080004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_FIGHTINGH_SELECT = &H08004408 ' /* Select special move */
%EQUATE `DIHATSWITCH_FIGHTINGH_SLIDE = &H08004601 ' /* Look around */
%EQUATE `DIBUTTON_FIGHTINGH_DISPLAY = &H08004409 ' /* Shows next on-screen display option */
%EQUATE `DIAXIS_FIGHTINGH_ROTATE = &H08024203 ' /* Rotate - Turn body left/right */
%EQUATE `DIBUTTON_FIGHTINGH_DODGE = &H0800440A ' /* Dodge */
%EQUATE `DIBUTTON_FIGHTINGH_LEFT_LINK = &H0800C4E4 ' /* Fallback left sidestep button */
%EQUATE `DIBUTTON_FIGHTINGH_RIGHT_LINK = &H0800C4EC ' /* Fallback right sidestep button */
%EQUATE `DIBUTTON_FIGHTINGH_FORWARD_LINK = &H080144E0 ' /* Fallback forward button */
%EQUATE `DIBUTTON_FIGHTINGH_BACKWARD_LINK = &H080144E8 ' /* Fallback backward button */
%EQUATE `DIBUTTON_FIGHTINGH_DEVICE = &H080044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FIGHTINGH_PAUSE = &H080044FC ' /* Start / Pause / Restart game */
' /*--- Fighting - First Person Shooting
' Navigation and combat are primary objectives ---*/
%EQUATE `DIVIRTUAL_FIGHTING_FPS = &H09000000
%EQUATE `DIAXIS_FPS_ROTATE = &H09008201 ' /* Rotate character left/right */
%EQUATE `DIAXIS_FPS_MOVE = &H09010202 ' /* Move forward/backward */
%EQUATE `DIBUTTON_FPS_FIRE = &H09000401 ' /* Fire */
%EQUATE `DIBUTTON_FPS_WEAPONS = &H09000402 ' /* Select next weapon */
%EQUATE `DIBUTTON_FPS_APPLY = &H09000403 ' /* Use item */
%EQUATE `DIBUTTON_FPS_SELECT = &H09000404 ' /* Select next inventory item */
%EQUATE `DIBUTTON_FPS_CROUCH = &H09000405 ' /* Crouch/ climb down/ swim down */
%EQUATE `DIBUTTON_FPS_JUMP = &H09000406 ' /* Jump/ climb up/ swim up */
%EQUATE `DIAXIS_FPS_LOOKUPDOWN = &H09018203 ' /* Look up / down */
%EQUATE `DIBUTTON_FPS_STRAFE = &H09000407 ' /* Enable strafing while active */
%EQUATE `DIBUTTON_FPS_MENU = &H090004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_FPS_GLANCE = &H09004601 ' /* Look around */
%EQUATE `DIBUTTON_FPS_DISPLAY = &H09004408 ' /* Shows next on-screen display option/ map */
%EQUATE `DIAXIS_FPS_SIDESTEP = &H09024204 ' /* Sidestep */
%EQUATE `DIBUTTON_FPS_DODGE = &H09004409 ' /* Dodge */
%EQUATE `DIBUTTON_FPS_GLANCEL = &H0900440A ' /* Glance Left */
%EQUATE `DIBUTTON_FPS_GLANCER = &H0900440B ' /* Glance Right */
%EQUATE `DIBUTTON_FPS_FIRESECONDARY = &H0900440C ' /* Alternative fire button */
%EQUATE `DIBUTTON_FPS_ROTATE_LEFT_LINK = &H0900C4E4 ' /* Fallback rotate left button */
%EQUATE `DIBUTTON_FPS_ROTATE_RIGHT_LINK = &H0900C4EC ' /* Fallback rotate right button */
%EQUATE `DIBUTTON_FPS_FORWARD_LINK = &H090144E0 ' /* Fallback forward button */
%EQUATE `DIBUTTON_FPS_BACKWARD_LINK = &H090144E8 ' /* Fallback backward button */
%EQUATE `DIBUTTON_FPS_GLANCE_UP_LINK = &H0901C4E0 ' /* Fallback look up button */
%EQUATE `DIBUTTON_FPS_GLANCE_DOWN_LINK = &H0901C4E8 ' /* Fallback look down button */
%EQUATE `DIBUTTON_FPS_STEP_LEFT_LINK = &H090244E4 ' /* Fallback step left button */
%EQUATE `DIBUTTON_FPS_STEP_RIGHT_LINK = &H090244EC ' /* Fallback step right button */
%EQUATE `DIBUTTON_FPS_DEVICE = &H090044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FPS_PAUSE = &H090044FC ' /* Start / Pause / Restart game */
' /*--- Fighting - Third Person action
' Perspective of camera is behind the main character ---*/
%EQUATE `DIVIRTUAL_FIGHTING_THIRDPERSON = &H0A000000
%EQUATE `DIAXIS_TPS_TURN = &H0A020201 ' /* Turn left/right */
%EQUATE `DIAXIS_TPS_MOVE = &H0A010202 ' /* Move forward/backward */
%EQUATE `DIBUTTON_TPS_RUN = &H0A000401 ' /* Run or walk toggle switch */
%EQUATE `DIBUTTON_TPS_ACTION = &H0A000402 ' /* Action Button */
%EQUATE `DIBUTTON_TPS_SELECT = &H0A000403 ' /* Select next weapon */
%EQUATE `DIBUTTON_TPS_USE = &H0A000404 ' /* Use inventory item currently selected */
%EQUATE `DIBUTTON_TPS_JUMP = &H0A000405 ' /* Character Jumps */
%EQUATE `DIBUTTON_TPS_MENU = &H0A0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_TPS_GLANCE = &H0A004601 ' /* Look around */
%EQUATE `DIBUTTON_TPS_VIEW = &H0A004406 ' /* Select camera view */
%EQUATE `DIBUTTON_TPS_STEPLEFT = &H0A004407 ' /* Character takes a left step */
%EQUATE `DIBUTTON_TPS_STEPRIGHT = &H0A004408 ' /* Character takes a right step */
%EQUATE `DIAXIS_TPS_STEP = &H0A00C203 ' /* Character steps left/right */
%EQUATE `DIBUTTON_TPS_DODGE = &H0A004409 ' /* Character dodges or ducks */
%EQUATE `DIBUTTON_TPS_INVENTORY = &H0A00440A ' /* Cycle through inventory */
%EQUATE `DIBUTTON_TPS_TURN_LEFT_LINK = &H0A0244E4 ' /* Fallback turn left button */
%EQUATE `DIBUTTON_TPS_TURN_RIGHT_LINK = &H0A0244EC ' /* Fallback turn right button */
%EQUATE `DIBUTTON_TPS_FORWARD_LINK = &H0A0144E0 ' /* Fallback forward button */
%EQUATE `DIBUTTON_TPS_BACKWARD_LINK = &H0A0144E8 ' /* Fallback backward button */
%EQUATE `DIBUTTON_TPS_GLANCE_UP_LINK = &H0A07C4E0 ' /* Fallback look up button */
%EQUATE `DIBUTTON_TPS_GLANCE_DOWN_LINK = &H0A07C4E8 ' /* Fallback look down button */
%EQUATE `DIBUTTON_TPS_GLANCE_LEFT_LINK = &H0A07C4E4 ' /* Fallback glance up button */
%EQUATE `DIBUTTON_TPS_GLANCE_RIGHT_LINK = &H0A07C4EC ' /* Fallback glance right button */
%EQUATE `DIBUTTON_TPS_DEVICE = &H0A0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_TPS_PAUSE = &H0A0044FC ' /* Start / Pause / Restart game */
' /*--- Strategy - Role Playing
' Navigation and problem solving are primary actions ---*/
%EQUATE `DIVIRTUAL_STRATEGY_ROLEPLAYING = &H0B000000
%EQUATE `DIAXIS_STRATEGYR_LATERAL = &H0B008201 ' /* sidestep - left/right */
%EQUATE `DIAXIS_STRATEGYR_MOVE = &H0B010202 ' /* move forward/backward */
%EQUATE `DIBUTTON_STRATEGYR_GET = &H0B000401 ' /* Acquire item */
%EQUATE `DIBUTTON_STRATEGYR_APPLY = &H0B000402 ' /* Use selected item */
%EQUATE `DIBUTTON_STRATEGYR_SELECT = &H0B000403 ' /* Select nextitem */
%EQUATE `DIBUTTON_STRATEGYR_ATTACK = &H0B000404 ' /* Attack */
%EQUATE `DIBUTTON_STRATEGYR_CAST = &H0B000405 ' /* Cast Spell */
%EQUATE `DIBUTTON_STRATEGYR_CROUCH = &H0B000406 ' /* Crouch */
%EQUATE `DIBUTTON_STRATEGYR_JUMP = &H0B000407 ' /* Jump */
%EQUATE `DIBUTTON_STRATEGYR_MENU = &H0B0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_STRATEGYR_GLANCE = &H0B004601 ' /* Look around */
%EQUATE `DIBUTTON_STRATEGYR_MAP = &H0B004408 ' /* Cycle through map options */
%EQUATE `DIBUTTON_STRATEGYR_DISPLAY = &H0B004409 ' /* Shows next on-screen display option */
%EQUATE `DIAXIS_STRATEGYR_ROTATE = &H0B024203 ' /* Turn body left/right */
%EQUATE `DIBUTTON_STRATEGYR_LEFT_LINK = &H0B00C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_STRATEGYR_RIGHT_LINK = &H0B00C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_STRATEGYR_FORWARD_LINK = &H0B0144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_STRATEGYR_BACK_LINK = &H0B0144E8 ' /* Fallback move backward button */
%EQUATE `DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK = &H0B0244E4 ' /* Fallback turn body left button */
%EQUATE `DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK = &H0B0244EC ' /* Fallback turn body right button */
%EQUATE `DIBUTTON_STRATEGYR_DEVICE = &H0B0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_STRATEGYR_PAUSE = &H0B0044FC ' /* Start / Pause / Restart game */
' /*--- Strategy - Turn based
' Navigation and problem solving are primary actions ---*/
%EQUATE `DIVIRTUAL_STRATEGY_TURN = &H0C000000
%EQUATE `DIAXIS_STRATEGYT_LATERAL = &H0C008201 ' /* Sidestep left/right */
%EQUATE `DIAXIS_STRATEGYT_MOVE = &H0C010202 ' /* Move forward/backwards */
%EQUATE `DIBUTTON_STRATEGYT_SELECT = &H0C000401 ' /* Select unit or object */
%EQUATE `DIBUTTON_STRATEGYT_INSTRUCT = &H0C000402 ' /* Cycle through instructions */
%EQUATE `DIBUTTON_STRATEGYT_APPLY = &H0C000403 ' /* Apply selected instruction */
%EQUATE `DIBUTTON_STRATEGYT_TEAM = &H0C000404 ' /* Select next team / cycle through all */
%EQUATE `DIBUTTON_STRATEGYT_TURN = &H0C000405 ' /* Indicate turn over */
%EQUATE `DIBUTTON_STRATEGYT_MENU = &H0C0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_STRATEGYT_ZOOM = &H0C004406 ' /* Zoom - in / out */
%EQUATE `DIBUTTON_STRATEGYT_MAP = &H0C004407 ' /* cycle through map options */
%EQUATE `DIBUTTON_STRATEGYT_DISPLAY = &H0C004408 ' /* shows next on-screen display options */
%EQUATE `DIBUTTON_STRATEGYT_LEFT_LINK = &H0C00C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_STRATEGYT_RIGHT_LINK = &H0C00C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_STRATEGYT_FORWARD_LINK = &H0C0144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_STRATEGYT_BACK_LINK = &H0C0144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_STRATEGYT_DEVICE = &H0C0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_STRATEGYT_PAUSE = &H0C0044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Hunting
' Hunting ---*/
%EQUATE `DIVIRTUAL_SPORTS_HUNTING = &H0D000000
%EQUATE `DIAXIS_HUNTING_LATERAL = &H0D008201 ' /* sidestep left/right */
%EQUATE `DIAXIS_HUNTING_MOVE = &H0D010202 ' /* move forward/backwards */
%EQUATE `DIBUTTON_HUNTING_FIRE = &H0D000401 ' /* Fire selected weapon */
%EQUATE `DIBUTTON_HUNTING_AIM = &H0D000402 ' /* Select aim/move */
%EQUATE `DIBUTTON_HUNTING_WEAPON = &H0D000403 ' /* Select next weapon */
%EQUATE `DIBUTTON_HUNTING_BINOCULAR = &H0D000404 ' /* Look through Binoculars */
%EQUATE `DIBUTTON_HUNTING_CALL = &H0D000405 ' /* Make animal call */
%EQUATE `DIBUTTON_HUNTING_MAP = &H0D000406 ' /* View Map */
%EQUATE `DIBUTTON_HUNTING_SPECIAL = &H0D000407 ' /* Special game operation */
%EQUATE `DIBUTTON_HUNTING_MENU = &H0D0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_HUNTING_GLANCE = &H0D004601 ' /* Look around */
%EQUATE `DIBUTTON_HUNTING_DISPLAY = &H0D004408 ' /* show next on-screen display option */
%EQUATE `DIAXIS_HUNTING_ROTATE = &H0D024203 ' /* Turn body left/right */
%EQUATE `DIBUTTON_HUNTING_CROUCH = &H0D004409 ' /* Crouch/ Climb / Swim down */
%EQUATE `DIBUTTON_HUNTING_JUMP = &H0D00440A ' /* Jump/ Climb up / Swim up */
%EQUATE `DIBUTTON_HUNTING_FIRESECONDARY = &H0D00440B ' /* Alternative fire button */
%EQUATE `DIBUTTON_HUNTING_LEFT_LINK = &H0D00C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_HUNTING_RIGHT_LINK = &H0D00C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_HUNTING_FORWARD_LINK = &H0D0144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_HUNTING_BACK_LINK = &H0D0144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_HUNTING_ROTATE_LEFT_LINK = &H0D0244E4 ' /* Fallback turn body left button */
%EQUATE `DIBUTTON_HUNTING_ROTATE_RIGHT_LINK = &H0D0244EC ' /* Fallback turn body right button */
%EQUATE `DIBUTTON_HUNTING_DEVICE = &H0D0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_HUNTING_PAUSE = &H0D0044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Fishing
' Catching Fish is primary objective ---*/
%EQUATE `DIVIRTUAL_SPORTS_FISHING = &H0E000000
%EQUATE `DIAXIS_FISHING_LATERAL = &H0E008201 ' /* sidestep left/right */
%EQUATE `DIAXIS_FISHING_MOVE = &H0E010202 ' /* move forward/backwards */
%EQUATE `DIBUTTON_FISHING_CAST = &H0E000401 ' /* Cast line */
%EQUATE `DIBUTTON_FISHING_TYPE = &H0E000402 ' /* Select cast type */
%EQUATE `DIBUTTON_FISHING_BINOCULAR = &H0E000403 ' /* Look through Binocular */
%EQUATE `DIBUTTON_FISHING_BAIT = &H0E000404 ' /* Select type of Bait */
%EQUATE `DIBUTTON_FISHING_MAP = &H0E000405 ' /* View Map */
%EQUATE `DIBUTTON_FISHING_MENU = &H0E0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_FISHING_GLANCE = &H0E004601 ' /* Look around */
%EQUATE `DIBUTTON_FISHING_DISPLAY = &H0E004406 ' /* Show next on-screen display option */
%EQUATE `DIAXIS_FISHING_ROTATE = &H0E024203 ' /* Turn character left / right */
%EQUATE `DIBUTTON_FISHING_CROUCH = &H0E004407 ' /* Crouch/ Climb / Swim down */
%EQUATE `DIBUTTON_FISHING_JUMP = &H0E004408 ' /* Jump/ Climb up / Swim up */
%EQUATE `DIBUTTON_FISHING_LEFT_LINK = &H0E00C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_FISHING_RIGHT_LINK = &H0E00C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_FISHING_FORWARD_LINK = &H0E0144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_FISHING_BACK_LINK = &H0E0144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_FISHING_ROTATE_LEFT_LINK = &H0E0244E4 ' /* Fallback turn body left button */
%EQUATE `DIBUTTON_FISHING_ROTATE_RIGHT_LINK = &H0E0244EC ' /* Fallback turn body right button */
%EQUATE `DIBUTTON_FISHING_DEVICE = &H0E0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FISHING_PAUSE = &H0E0044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Baseball - Batting
' Batter control is primary objective ---*/
%EQUATE `DIVIRTUAL_SPORTS_BASEBALL_BAT = &H0F000000
%EQUATE `DIAXIS_BASEBALLB_LATERAL = &H0F008201 ' /* Aim left / right */
%EQUATE `DIAXIS_BASEBALLB_MOVE = &H0F010202 ' /* Aim up / down */
%EQUATE `DIBUTTON_BASEBALLB_SELECT = &H0F000401 ' /* cycle through swing options */
%EQUATE `DIBUTTON_BASEBALLB_NORMAL = &H0F000402 ' /* normal swing */
%EQUATE `DIBUTTON_BASEBALLB_POWER = &H0F000403 ' /* swing for the fence */
%EQUATE `DIBUTTON_BASEBALLB_BUNT = &H0F000404 ' /* bunt */
%EQUATE `DIBUTTON_BASEBALLB_STEAL = &H0F000405 ' /* Base runner attempts to steal a base */
%EQUATE `DIBUTTON_BASEBALLB_BURST = &H0F000406 ' /* Base runner invokes burst of speed */
%EQUATE `DIBUTTON_BASEBALLB_SLIDE = &H0F000407 ' /* Base runner slides into base */
%EQUATE `DIBUTTON_BASEBALLB_CONTACT = &H0F000408 ' /* Contact swing */
%EQUATE `DIBUTTON_BASEBALLB_MENU = &H0F0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_BASEBALLB_NOSTEAL = &H0F004409 ' /* Base runner goes back to a base */
%EQUATE `DIBUTTON_BASEBALLB_BOX = &H0F00440A ' /* Enter or exit batting box */
%EQUATE `DIBUTTON_BASEBALLB_LEFT_LINK = &H0F00C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_BASEBALLB_RIGHT_LINK = &H0F00C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_BASEBALLB_FORWARD_LINK = &H0F0144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_BASEBALLB_BACK_LINK = &H0F0144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_BASEBALLB_DEVICE = &H0F0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_BASEBALLB_PAUSE = &H0F0044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Baseball - Pitching
' Pitcher control is primary objective ---*/
%EQUATE `DIVIRTUAL_SPORTS_BASEBALL_PITCH = &H10000000
%EQUATE `DIAXIS_BASEBALLP_LATERAL = &H10008201 ' /* Aim left / right */
%EQUATE `DIAXIS_BASEBALLP_MOVE = &H10010202 ' /* Aim up / down */
%EQUATE `DIBUTTON_BASEBALLP_SELECT = &H10000401 ' /* cycle through pitch selections */
%EQUATE `DIBUTTON_BASEBALLP_PITCH = &H10000402 ' /* throw pitch */
%EQUATE `DIBUTTON_BASEBALLP_BASE = &H10000403 ' /* select base to throw to */
%EQUATE `DIBUTTON_BASEBALLP_THROW = &H10000404 ' /* throw to base */
%EQUATE `DIBUTTON_BASEBALLP_FAKE = &H10000405 ' /* Fake a throw to a base */
%EQUATE `DIBUTTON_BASEBALLP_MENU = &H100004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_BASEBALLP_WALK = &H10004406 ' /* Throw intentional walk / pitch out */
%EQUATE `DIBUTTON_BASEBALLP_LOOK = &H10004407 ' /* Look at runners on bases */
%EQUATE `DIBUTTON_BASEBALLP_LEFT_LINK = &H1000C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_BASEBALLP_RIGHT_LINK = &H1000C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_BASEBALLP_FORWARD_LINK = &H100144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_BASEBALLP_BACK_LINK = &H100144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_BASEBALLP_DEVICE = &H100044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_BASEBALLP_PAUSE = &H100044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Baseball - Fielding
' Fielder control is primary objective ---*/
%EQUATE `DIVIRTUAL_SPORTS_BASEBALL_FIELD = &H11000000
%EQUATE `DIAXIS_BASEBALLF_LATERAL = &H11008201 ' /* Aim left / right */
%EQUATE `DIAXIS_BASEBALLF_MOVE = &H11010202 ' /* Aim up / down */
%EQUATE `DIBUTTON_BASEBALLF_NEAREST = &H11000401 ' /* Switch to fielder nearest to the ball */
%EQUATE `DIBUTTON_BASEBALLF_THROW1 = &H11000402 ' /* Make conservative throw */
%EQUATE `DIBUTTON_BASEBALLF_THROW2 = &H11000403 ' /* Make aggressive throw */
%EQUATE `DIBUTTON_BASEBALLF_BURST = &H11000404 ' /* Invoke burst of speed */
%EQUATE `DIBUTTON_BASEBALLF_JUMP = &H11000405 ' /* Jump to catch ball */
%EQUATE `DIBUTTON_BASEBALLF_DIVE = &H11000406 ' /* Dive to catch ball */
%EQUATE `DIBUTTON_BASEBALLF_MENU = &H110004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_BASEBALLF_SHIFTIN = &H11004407 ' /* Shift the infield positioning */
%EQUATE `DIBUTTON_BASEBALLF_SHIFTOUT = &H11004408 ' /* Shift the outfield positioning */
%EQUATE `DIBUTTON_BASEBALLF_AIM_LEFT_LINK = &H1100C4E4 ' /* Fallback aim left button */
%EQUATE `DIBUTTON_BASEBALLF_AIM_RIGHT_LINK = &H1100C4EC ' /* Fallback aim right button */
%EQUATE `DIBUTTON_BASEBALLF_FORWARD_LINK = &H110144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_BASEBALLF_BACK_LINK = &H110144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_BASEBALLF_DEVICE = &H110044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_BASEBALLF_PAUSE = &H110044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Basketball - Offense
' Offense ---*/
%EQUATE `DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE = &H12000000
%EQUATE `DIAXIS_BBALLO_LATERAL = &H12008201 ' /* left / right */
%EQUATE `DIAXIS_BBALLO_MOVE = &H12010202 ' /* up / down */
%EQUATE `DIBUTTON_BBALLO_SHOOT = &H12000401 ' /* shoot basket */
%EQUATE `DIBUTTON_BBALLO_DUNK = &H12000402 ' /* dunk basket */
%EQUATE `DIBUTTON_BBALLO_PASS = &H12000403 ' /* throw pass */
%EQUATE `DIBUTTON_BBALLO_FAKE = &H12000404 ' /* fake shot or pass */
%EQUATE `DIBUTTON_BBALLO_SPECIAL = &H12000405 ' /* apply special move */
%EQUATE `DIBUTTON_BBALLO_PLAYER = &H12000406 ' /* select next player */
%EQUATE `DIBUTTON_BBALLO_BURST = &H12000407 ' /* invoke burst */
%EQUATE `DIBUTTON_BBALLO_CALL = &H12000408 ' /* call for ball / pass to me */
%EQUATE `DIBUTTON_BBALLO_MENU = &H120004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_BBALLO_GLANCE = &H12004601 ' /* scroll view */
%EQUATE `DIBUTTON_BBALLO_SCREEN = &H12004409 ' /* Call for screen */
%EQUATE `DIBUTTON_BBALLO_PLAY = &H1200440A ' /* Call for specific offensive play */
%EQUATE `DIBUTTON_BBALLO_JAB = &H1200440B ' /* Initiate fake drive to basket */
%EQUATE `DIBUTTON_BBALLO_POST = &H1200440C ' /* Perform post move */
%EQUATE `DIBUTTON_BBALLO_TIMEOUT = &H1200440D ' /* Time Out */
%EQUATE `DIBUTTON_BBALLO_SUBSTITUTE = &H1200440E ' /* substitute one player for another */
%EQUATE `DIBUTTON_BBALLO_LEFT_LINK = &H1200C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_BBALLO_RIGHT_LINK = &H1200C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_BBALLO_FORWARD_LINK = &H120144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_BBALLO_BACK_LINK = &H120144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_BBALLO_DEVICE = &H120044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_BBALLO_PAUSE = &H120044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Basketball - Defense
' Defense ---*/
%EQUATE `DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE = &H13000000
%EQUATE `DIAXIS_BBALLD_LATERAL = &H13008201 ' /* left / right */
%EQUATE `DIAXIS_BBALLD_MOVE = &H13010202 ' /* up / down */
%EQUATE `DIBUTTON_BBALLD_JUMP = &H13000401 ' /* jump to block shot */
%EQUATE `DIBUTTON_BBALLD_STEAL = &H13000402 ' /* attempt to steal ball */
%EQUATE `DIBUTTON_BBALLD_FAKE = &H13000403 ' /* fake block or steal */
%EQUATE `DIBUTTON_BBALLD_SPECIAL = &H13000404 ' /* apply special move */
%EQUATE `DIBUTTON_BBALLD_PLAYER = &H13000405 ' /* select next player */
%EQUATE `DIBUTTON_BBALLD_BURST = &H13000406 ' /* invoke burst */
%EQUATE `DIBUTTON_BBALLD_PLAY = &H13000407 ' /* call for specific defensive play */
%EQUATE `DIBUTTON_BBALLD_MENU = &H130004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_BBALLD_GLANCE = &H13004601 ' /* scroll view */
%EQUATE `DIBUTTON_BBALLD_TIMEOUT = &H13004408 ' /* Time Out */
%EQUATE `DIBUTTON_BBALLD_SUBSTITUTE = &H13004409 ' /* substitute one player for another */
%EQUATE `DIBUTTON_BBALLD_LEFT_LINK = &H1300C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_BBALLD_RIGHT_LINK = &H1300C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_BBALLD_FORWARD_LINK = &H130144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_BBALLD_BACK_LINK = &H130144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_BBALLD_DEVICE = &H130044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_BBALLD_PAUSE = &H130044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Football - Play
' Play selection ---*/
%EQUATE `DIVIRTUAL_SPORTS_FOOTBALL_FIELD = &H14000000
%EQUATE `DIBUTTON_FOOTBALLP_PLAY = &H14000401 ' /* cycle through available plays */
%EQUATE `DIBUTTON_FOOTBALLP_SELECT = &H14000402 ' /* select play */
%EQUATE `DIBUTTON_FOOTBALLP_HELP = &H14000403 ' /* Bring up pop-up help */
%EQUATE `DIBUTTON_FOOTBALLP_MENU = &H140004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_FOOTBALLP_DEVICE = &H140044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FOOTBALLP_PAUSE = &H140044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Football - QB
' Offense: Quarterback / Kicker ---*/
%EQUATE `DIVIRTUAL_SPORTS_FOOTBALL_QBCK = &H15000000
%EQUATE `DIAXIS_FOOTBALLQ_LATERAL = &H15008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_FOOTBALLQ_MOVE = &H15010202 ' /* Move / Aim: up / down */
%EQUATE `DIBUTTON_FOOTBALLQ_SELECT = &H15000401 ' /* Select */
%EQUATE `DIBUTTON_FOOTBALLQ_SNAP = &H15000402 ' /* snap ball - start play */
%EQUATE `DIBUTTON_FOOTBALLQ_JUMP = &H15000403 ' /* jump over defender */
%EQUATE `DIBUTTON_FOOTBALLQ_SLIDE = &H15000404 ' /* Dive/Slide */
%EQUATE `DIBUTTON_FOOTBALLQ_PASS = &H15000405 ' /* throws pass to receiver */
%EQUATE `DIBUTTON_FOOTBALLQ_FAKE = &H15000406 ' /* pump fake pass or fake kick */
%EQUATE `DIBUTTON_FOOTBALLQ_MENU = &H150004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_FOOTBALLQ_FAKESNAP = &H15004407 ' /* Fake snap */
%EQUATE `DIBUTTON_FOOTBALLQ_MOTION = &H15004408 ' /* Send receivers in motion */
%EQUATE `DIBUTTON_FOOTBALLQ_AUDIBLE = &H15004409 ' /* Change offensive play at line of scrimmage */
%EQUATE `DIBUTTON_FOOTBALLQ_LEFT_LINK = &H1500C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_FOOTBALLQ_RIGHT_LINK = &H1500C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_FOOTBALLQ_FORWARD_LINK = &H150144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_FOOTBALLQ_BACK_LINK = &H150144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_FOOTBALLQ_DEVICE = &H150044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FOOTBALLQ_PAUSE = &H150044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Football - Offense
' Offense - Runner ---*/
%EQUATE `DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE = &H16000000
%EQUATE `DIAXIS_FOOTBALLO_LATERAL = &H16008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_FOOTBALLO_MOVE = &H16010202 ' /* Move / Aim: up / down */
%EQUATE `DIBUTTON_FOOTBALLO_JUMP = &H16000401 ' /* jump or hurdle over defender */
%EQUATE `DIBUTTON_FOOTBALLO_LEFTARM = &H16000402 ' /* holds out left arm */
%EQUATE `DIBUTTON_FOOTBALLO_RIGHTARM = &H16000403 ' /* holds out right arm */
%EQUATE `DIBUTTON_FOOTBALLO_THROW = &H16000404 ' /* throw pass or lateral ball to another runner */
%EQUATE `DIBUTTON_FOOTBALLO_SPIN = &H16000405 ' /* Spin to avoid defenders */
%EQUATE `DIBUTTON_FOOTBALLO_MENU = &H160004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_FOOTBALLO_JUKE = &H16004406 ' /* Use special move to avoid defenders */
%EQUATE `DIBUTTON_FOOTBALLO_SHOULDER = &H16004407 ' /* Lower shoulder to run over defenders */
%EQUATE `DIBUTTON_FOOTBALLO_TURBO = &H16004408 ' /* Speed burst past defenders */
%EQUATE `DIBUTTON_FOOTBALLO_DIVE = &H16004409 ' /* Dive over defenders */
%EQUATE `DIBUTTON_FOOTBALLO_ZOOM = &H1600440A ' /* Zoom view in / out */
%EQUATE `DIBUTTON_FOOTBALLO_SUBSTITUTE = &H1600440B ' /* substitute one player for another */
%EQUATE `DIBUTTON_FOOTBALLO_LEFT_LINK = &H1600C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_FOOTBALLO_RIGHT_LINK = &H1600C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_FOOTBALLO_FORWARD_LINK = &H160144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_FOOTBALLO_BACK_LINK = &H160144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_FOOTBALLO_DEVICE = &H160044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FOOTBALLO_PAUSE = &H160044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Football - Defense
' Defense ---*/
%EQUATE `DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE = &H17000000
%EQUATE `DIAXIS_FOOTBALLD_LATERAL = &H17008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_FOOTBALLD_MOVE = &H17010202 ' /* Move / Aim: up / down */
%EQUATE `DIBUTTON_FOOTBALLD_PLAY = &H17000401 ' /* cycle through available plays */
%EQUATE `DIBUTTON_FOOTBALLD_SELECT = &H17000402 ' /* select player closest to the ball */
%EQUATE `DIBUTTON_FOOTBALLD_JUMP = &H17000403 ' /* jump to intercept or block */
%EQUATE `DIBUTTON_FOOTBALLD_TACKLE = &H17000404 ' /* tackler runner */
%EQUATE `DIBUTTON_FOOTBALLD_FAKE = &H17000405 ' /* hold down to fake tackle or intercept */
%EQUATE `DIBUTTON_FOOTBALLD_SUPERTACKLE = &H17000406 ' /* Initiate special tackle */
%EQUATE `DIBUTTON_FOOTBALLD_MENU = &H170004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_FOOTBALLD_SPIN = &H17004407 ' /* Spin to beat offensive line */
%EQUATE `DIBUTTON_FOOTBALLD_SWIM = &H17004408 ' /* Swim to beat the offensive line */
%EQUATE `DIBUTTON_FOOTBALLD_BULLRUSH = &H17004409 ' /* Bull rush the offensive line */
%EQUATE `DIBUTTON_FOOTBALLD_RIP = &H1700440A ' /* Rip the offensive line */
%EQUATE `DIBUTTON_FOOTBALLD_AUDIBLE = &H1700440B ' /* Change defensive play at the line of scrimmage */
%EQUATE `DIBUTTON_FOOTBALLD_ZOOM = &H1700440C ' /* Zoom view in / out */
%EQUATE `DIBUTTON_FOOTBALLD_SUBSTITUTE = &H1700440D ' /* substitute one player for another */
%EQUATE `DIBUTTON_FOOTBALLD_LEFT_LINK = &H1700C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_FOOTBALLD_RIGHT_LINK = &H1700C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_FOOTBALLD_FORWARD_LINK = &H170144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_FOOTBALLD_BACK_LINK = &H170144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_FOOTBALLD_DEVICE = &H170044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_FOOTBALLD_PAUSE = &H170044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Golf
' ---*/
%EQUATE `DIVIRTUAL_SPORTS_GOLF = &H18000000
%EQUATE `DIAXIS_GOLF_LATERAL = &H18008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_GOLF_MOVE = &H18010202 ' /* Move / Aim: up / down */
%EQUATE `DIBUTTON_GOLF_SWING = &H18000401 ' /* swing club */
%EQUATE `DIBUTTON_GOLF_SELECT = &H18000402 ' /* cycle between: club / swing strength / ball arc / ball spin */
%EQUATE `DIBUTTON_GOLF_UP = &H18000403 ' /* increase selection */
%EQUATE `DIBUTTON_GOLF_DOWN = &H18000404 ' /* decrease selection */
%EQUATE `DIBUTTON_GOLF_TERRAIN = &H18000405 ' /* shows terrain detail */
%EQUATE `DIBUTTON_GOLF_FLYBY = &H18000406 ' /* view the hole via a flyby */
%EQUATE `DIBUTTON_GOLF_MENU = &H180004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_GOLF_SCROLL = &H18004601 ' /* scroll view */
%EQUATE `DIBUTTON_GOLF_ZOOM = &H18004407 ' /* Zoom view in / out */
%EQUATE `DIBUTTON_GOLF_TIMEOUT = &H18004408 ' /* Call for time out */
%EQUATE `DIBUTTON_GOLF_SUBSTITUTE = &H18004409 ' /* substitute one player for another */
%EQUATE `DIBUTTON_GOLF_LEFT_LINK = &H1800C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_GOLF_RIGHT_LINK = &H1800C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_GOLF_FORWARD_LINK = &H180144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_GOLF_BACK_LINK = &H180144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_GOLF_DEVICE = &H180044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_GOLF_PAUSE = &H180044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Hockey - Offense
' Offense ---*/
%EQUATE `DIVIRTUAL_SPORTS_HOCKEY_OFFENSE = &H19000000
%EQUATE `DIAXIS_HOCKEYO_LATERAL = &H19008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_HOCKEYO_MOVE = &H19010202 ' /* Move / Aim: up / down */
%EQUATE `DIBUTTON_HOCKEYO_SHOOT = &H19000401 ' /* Shoot */
%EQUATE `DIBUTTON_HOCKEYO_PASS = &H19000402 ' /* pass the puck */
%EQUATE `DIBUTTON_HOCKEYO_BURST = &H19000403 ' /* invoke speed burst */
%EQUATE `DIBUTTON_HOCKEYO_SPECIAL = &H19000404 ' /* invoke special move */
%EQUATE `DIBUTTON_HOCKEYO_FAKE = &H19000405 ' /* hold down to fake pass or kick */
%EQUATE `DIBUTTON_HOCKEYO_MENU = &H190004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_HOCKEYO_SCROLL = &H19004601 ' /* scroll view */
%EQUATE `DIBUTTON_HOCKEYO_ZOOM = &H19004406 ' /* Zoom view in / out */
%EQUATE `DIBUTTON_HOCKEYO_STRATEGY = &H19004407 ' /* Invoke coaching menu for strategy help */
%EQUATE `DIBUTTON_HOCKEYO_TIMEOUT = &H19004408 ' /* Call for time out */
%EQUATE `DIBUTTON_HOCKEYO_SUBSTITUTE = &H19004409 ' /* substitute one player for another */
%EQUATE `DIBUTTON_HOCKEYO_LEFT_LINK = &H1900C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_HOCKEYO_RIGHT_LINK = &H1900C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_HOCKEYO_FORWARD_LINK = &H190144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_HOCKEYO_BACK_LINK = &H190144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_HOCKEYO_DEVICE = &H190044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_HOCKEYO_PAUSE = &H190044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Hockey - Defense
' Defense ---*/
%EQUATE `DIVIRTUAL_SPORTS_HOCKEY_DEFENSE = &H1A000000
%EQUATE `DIAXIS_HOCKEYD_LATERAL = &H1A008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_HOCKEYD_MOVE = &H1A010202 ' /* Move / Aim: up / down */
%EQUATE `DIBUTTON_HOCKEYD_PLAYER = &H1A000401 ' /* control player closest to the puck */
%EQUATE `DIBUTTON_HOCKEYD_STEAL = &H1A000402 ' /* attempt steal */
%EQUATE `DIBUTTON_HOCKEYD_BURST = &H1A000403 ' /* speed burst or body check */
%EQUATE `DIBUTTON_HOCKEYD_BLOCK = &H1A000404 ' /* block puck */
%EQUATE `DIBUTTON_HOCKEYD_FAKE = &H1A000405 ' /* hold down to fake tackle or intercept */
%EQUATE `DIBUTTON_HOCKEYD_MENU = &H1A0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_HOCKEYD_SCROLL = &H1A004601 ' /* scroll view */
%EQUATE `DIBUTTON_HOCKEYD_ZOOM = &H1A004406 ' /* Zoom view in / out */
%EQUATE `DIBUTTON_HOCKEYD_STRATEGY = &H1A004407 ' /* Invoke coaching menu for strategy help */
%EQUATE `DIBUTTON_HOCKEYD_TIMEOUT = &H1A004408 ' /* Call for time out */
%EQUATE `DIBUTTON_HOCKEYD_SUBSTITUTE = &H1A004409 ' /* substitute one player for another */
%EQUATE `DIBUTTON_HOCKEYD_LEFT_LINK = &H1A00C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_HOCKEYD_RIGHT_LINK = &H1A00C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_HOCKEYD_FORWARD_LINK = &H1A0144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_HOCKEYD_BACK_LINK = &H1A0144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_HOCKEYD_DEVICE = &H1A0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_HOCKEYD_PAUSE = &H1A0044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Hockey - Goalie
' Goal tending ---*/
%EQUATE `DIVIRTUAL_SPORTS_HOCKEY_GOALIE = &H1B000000
%EQUATE `DIAXIS_HOCKEYG_LATERAL = &H1B008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_HOCKEYG_MOVE = &H1B010202 ' /* Move / Aim: up / down */
%EQUATE `DIBUTTON_HOCKEYG_PASS = &H1B000401 ' /* pass puck */
%EQUATE `DIBUTTON_HOCKEYG_POKE = &H1B000402 ' /* poke / check / hack */
%EQUATE `DIBUTTON_HOCKEYG_STEAL = &H1B000403 ' /* attempt steal */
%EQUATE `DIBUTTON_HOCKEYG_BLOCK = &H1B000404 ' /* block puck */
%EQUATE `DIBUTTON_HOCKEYG_MENU = &H1B0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_HOCKEYG_SCROLL = &H1B004601 ' /* scroll view */
%EQUATE `DIBUTTON_HOCKEYG_ZOOM = &H1B004405 ' /* Zoom view in / out */
%EQUATE `DIBUTTON_HOCKEYG_STRATEGY = &H1B004406 ' /* Invoke coaching menu for strategy help */
%EQUATE `DIBUTTON_HOCKEYG_TIMEOUT = &H1B004407 ' /* Call for time out */
%EQUATE `DIBUTTON_HOCKEYG_SUBSTITUTE = &H1B004408 ' /* substitute one player for another */
%EQUATE `DIBUTTON_HOCKEYG_LEFT_LINK = &H1B00C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_HOCKEYG_RIGHT_LINK = &H1B00C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_HOCKEYG_FORWARD_LINK = &H1B0144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_HOCKEYG_BACK_LINK = &H1B0144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_HOCKEYG_DEVICE = &H1B0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_HOCKEYG_PAUSE = &H1B0044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Mountain Biking
' ---*/
%EQUATE `DIVIRTUAL_SPORTS_BIKING_MOUNTAIN = &H1C000000
%EQUATE `DIAXIS_BIKINGM_TURN = &H1C008201 ' /* left / right */
%EQUATE `DIAXIS_BIKINGM_PEDAL = &H1C010202 ' /* Pedal faster / slower / brake */
%EQUATE `DIBUTTON_BIKINGM_JUMP = &H1C000401 ' /* jump over obstacle */
%EQUATE `DIBUTTON_BIKINGM_CAMERA = &H1C000402 ' /* switch camera view */
%EQUATE `DIBUTTON_BIKINGM_SPECIAL1 = &H1C000403 ' /* perform first special move */
%EQUATE `DIBUTTON_BIKINGM_SELECT = &H1C000404 ' /* Select */
%EQUATE `DIBUTTON_BIKINGM_SPECIAL2 = &H1C000405 ' /* perform second special move */
%EQUATE `DIBUTTON_BIKINGM_MENU = &H1C0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_BIKINGM_SCROLL = &H1C004601 ' /* scroll view */
%EQUATE `DIBUTTON_BIKINGM_ZOOM = &H1C004406 ' /* Zoom view in / out */
%EQUATE `DIAXIS_BIKINGM_BRAKE = &H1C044203 ' /* Brake axis */
%EQUATE `DIBUTTON_BIKINGM_LEFT_LINK = &H1C00C4E4 ' /* Fallback turn left button */
%EQUATE `DIBUTTON_BIKINGM_RIGHT_LINK = &H1C00C4EC ' /* Fallback turn right button */
%EQUATE `DIBUTTON_BIKINGM_FASTER_LINK = &H1C0144E0 ' /* Fallback pedal faster button */
%EQUATE `DIBUTTON_BIKINGM_SLOWER_LINK = &H1C0144E8 ' /* Fallback pedal slower button */
%EQUATE `DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK = &H1C0444E8 ' /* Fallback brake button */
%EQUATE `DIBUTTON_BIKINGM_DEVICE = &H1C0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_BIKINGM_PAUSE = &H1C0044FC ' /* Start / Pause / Restart game */
' /*--- Sports: Skiing / Snowboarding / Skateboarding
' ---*/
%EQUATE `DIVIRTUAL_SPORTS_SKIING = &H1D000000
%EQUATE `DIAXIS_SKIING_TURN = &H1D008201 ' /* left / right */
%EQUATE `DIAXIS_SKIING_SPEED = &H1D010202 ' /* faster / slower */
%EQUATE `DIBUTTON_SKIING_JUMP = &H1D000401 ' /* Jump */
%EQUATE `DIBUTTON_SKIING_CROUCH = &H1D000402 ' /* crouch down */
%EQUATE `DIBUTTON_SKIING_CAMERA = &H1D000403 ' /* switch camera view */
%EQUATE `DIBUTTON_SKIING_SPECIAL1 = &H1D000404 ' /* perform first special move */
%EQUATE `DIBUTTON_SKIING_SELECT = &H1D000405 ' /* Select */
%EQUATE `DIBUTTON_SKIING_SPECIAL2 = &H1D000406 ' /* perform second special move */
%EQUATE `DIBUTTON_SKIING_MENU = &H1D0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_SKIING_GLANCE = &H1D004601 ' /* scroll view */
%EQUATE `DIBUTTON_SKIING_ZOOM = &H1D004407 ' /* Zoom view in / out */
%EQUATE `DIBUTTON_SKIING_LEFT_LINK = &H1D00C4E4 ' /* Fallback turn left button */
%EQUATE `DIBUTTON_SKIING_RIGHT_LINK = &H1D00C4EC ' /* Fallback turn right button */
%EQUATE `DIBUTTON_SKIING_FASTER_LINK = &H1D0144E0 ' /* Fallback increase speed button */
%EQUATE `DIBUTTON_SKIING_SLOWER_LINK = &H1D0144E8 ' /* Fallback decrease speed button */
%EQUATE `DIBUTTON_SKIING_DEVICE = &H1D0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_SKIING_PAUSE = &H1D0044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Soccer - Offense
' Offense ---*/
%EQUATE `DIVIRTUAL_SPORTS_SOCCER_OFFENSE = &H1E000000
%EQUATE `DIAXIS_SOCCERO_LATERAL = &H1E008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_SOCCERO_MOVE = &H1E010202 ' /* Move / Aim: up / down */
%EQUATE `DIAXIS_SOCCERO_BEND = &H1E018203 ' /* Bend to soccer shot/pass */
%EQUATE `DIBUTTON_SOCCERO_SHOOT = &H1E000401 ' /* Shoot the ball */
%EQUATE `DIBUTTON_SOCCERO_PASS = &H1E000402 ' /* Pass */
%EQUATE `DIBUTTON_SOCCERO_FAKE = &H1E000403 ' /* Fake */
%EQUATE `DIBUTTON_SOCCERO_PLAYER = &H1E000404 ' /* Select next player */
%EQUATE `DIBUTTON_SOCCERO_SPECIAL1 = &H1E000405 ' /* Apply special move */
%EQUATE `DIBUTTON_SOCCERO_SELECT = &H1E000406 ' /* Select special move */
%EQUATE `DIBUTTON_SOCCERO_MENU = &H1E0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_SOCCERO_GLANCE = &H1E004601 ' /* scroll view */
%EQUATE `DIBUTTON_SOCCERO_SUBSTITUTE = &H1E004407 ' /* Substitute one player for another */
%EQUATE `DIBUTTON_SOCCERO_SHOOTLOW = &H1E004408 ' /* Shoot the ball low */
%EQUATE `DIBUTTON_SOCCERO_SHOOTHIGH = &H1E004409 ' /* Shoot the ball high */
%EQUATE `DIBUTTON_SOCCERO_PASSTHRU = &H1E00440A ' /* Make a thru pass */
%EQUATE `DIBUTTON_SOCCERO_SPRINT = &H1E00440B ' /* Sprint / turbo boost */
%EQUATE `DIBUTTON_SOCCERO_CONTROL = &H1E00440C ' /* Obtain control of the ball */
%EQUATE `DIBUTTON_SOCCERO_HEAD = &H1E00440D ' /* Attempt to head the ball */
%EQUATE `DIBUTTON_SOCCERO_LEFT_LINK = &H1E00C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_SOCCERO_RIGHT_LINK = &H1E00C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_SOCCERO_FORWARD_LINK = &H1E0144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_SOCCERO_BACK_LINK = &H1E0144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_SOCCERO_DEVICE = &H1E0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_SOCCERO_PAUSE = &H1E0044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Soccer - Defense
' Defense ---*/
%EQUATE `DIVIRTUAL_SPORTS_SOCCER_DEFENSE = &H1F000000
%EQUATE `DIAXIS_SOCCERD_LATERAL = &H1F008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_SOCCERD_MOVE = &H1F010202 ' /* Move / Aim: up / down */
%EQUATE `DIBUTTON_SOCCERD_BLOCK = &H1F000401 ' /* Attempt to block shot */
%EQUATE `DIBUTTON_SOCCERD_STEAL = &H1F000402 ' /* Attempt to steal ball */
%EQUATE `DIBUTTON_SOCCERD_FAKE = &H1F000403 ' /* Fake a block or a steal */
%EQUATE `DIBUTTON_SOCCERD_PLAYER = &H1F000404 ' /* Select next player */
%EQUATE `DIBUTTON_SOCCERD_SPECIAL = &H1F000405 ' /* Apply special move */
%EQUATE `DIBUTTON_SOCCERD_SELECT = &H1F000406 ' /* Select special move */
%EQUATE `DIBUTTON_SOCCERD_SLIDE = &H1F000407 ' /* Attempt a slide tackle */
%EQUATE `DIBUTTON_SOCCERD_MENU = &H1F0004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_SOCCERD_GLANCE = &H1F004601 ' /* scroll view */
%EQUATE `DIBUTTON_SOCCERD_FOUL = &H1F004408 ' /* Initiate a foul / hard-foul */
%EQUATE `DIBUTTON_SOCCERD_HEAD = &H1F004409 ' /* Attempt a Header */
%EQUATE `DIBUTTON_SOCCERD_CLEAR = &H1F00440A ' /* Attempt to clear the ball down the field */
%EQUATE `DIBUTTON_SOCCERD_GOALIECHARGE = &H1F00440B ' /* Make the goalie charge out of the box */
%EQUATE `DIBUTTON_SOCCERD_SUBSTITUTE = &H1F00440C ' /* Substitute one player for another */
%EQUATE `DIBUTTON_SOCCERD_LEFT_LINK = &H1F00C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_SOCCERD_RIGHT_LINK = &H1F00C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_SOCCERD_FORWARD_LINK = &H1F0144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_SOCCERD_BACK_LINK = &H1F0144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_SOCCERD_DEVICE = &H1F0044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_SOCCERD_PAUSE = &H1F0044FC ' /* Start / Pause / Restart game */
' /*--- Sports - Racquet
' Tennis - Table-Tennis - Squash ---*/
%EQUATE `DIVIRTUAL_SPORTS_RACQUET = &H20000000
%EQUATE `DIAXIS_RACQUET_LATERAL = &H20008201 ' /* Move / Aim: left / right */
%EQUATE `DIAXIS_RACQUET_MOVE = &H20010202 ' /* Move / Aim: up / down */
%EQUATE `DIBUTTON_RACQUET_SWING = &H20000401 ' /* Swing racquet */
%EQUATE `DIBUTTON_RACQUET_BACKSWING = &H20000402 ' /* Swing backhand */
%EQUATE `DIBUTTON_RACQUET_SMASH = &H20000403 ' /* Smash shot */
%EQUATE `DIBUTTON_RACQUET_SPECIAL = &H20000404 ' /* Special shot */
%EQUATE `DIBUTTON_RACQUET_SELECT = &H20000405 ' /* Select special shot */
%EQUATE `DIBUTTON_RACQUET_MENU = &H200004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_RACQUET_GLANCE = &H20004601 ' /* scroll view */
%EQUATE `DIBUTTON_RACQUET_TIMEOUT = &H20004406 ' /* Call for time out */
%EQUATE `DIBUTTON_RACQUET_SUBSTITUTE = &H20004407 ' /* Substitute one player for another */
%EQUATE `DIBUTTON_RACQUET_LEFT_LINK = &H2000C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_RACQUET_RIGHT_LINK = &H2000C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_RACQUET_FORWARD_LINK = &H200144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_RACQUET_BACK_LINK = &H200144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_RACQUET_DEVICE = &H200044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_RACQUET_PAUSE = &H200044FC ' /* Start / Pause / Restart game */
' /*--- Arcade- 2D
' Side to Side movement ---*/
%EQUATE `DIVIRTUAL_ARCADE_SIDE2SIDE = &H21000000
%EQUATE `DIAXIS_ARCADES_LATERAL = &H21008201 ' /* left / right */
%EQUATE `DIAXIS_ARCADES_MOVE = &H21010202 ' /* up / down */
%EQUATE `DIBUTTON_ARCADES_THROW = &H21000401 ' /* throw object */
%EQUATE `DIBUTTON_ARCADES_CARRY = &H21000402 ' /* carry object */
%EQUATE `DIBUTTON_ARCADES_ATTACK = &H21000403 ' /* attack */
%EQUATE `DIBUTTON_ARCADES_SPECIAL = &H21000404 ' /* apply special move */
%EQUATE `DIBUTTON_ARCADES_SELECT = &H21000405 ' /* select special move */
%EQUATE `DIBUTTON_ARCADES_MENU = &H210004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_ARCADES_VIEW = &H21004601 ' /* scroll view left / right / up / down */
%EQUATE `DIBUTTON_ARCADES_LEFT_LINK = &H2100C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_ARCADES_RIGHT_LINK = &H2100C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_ARCADES_FORWARD_LINK = &H210144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_ARCADES_BACK_LINK = &H210144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_ARCADES_VIEW_UP_LINK = &H2107C4E0 ' /* Fallback scroll view up button */
%EQUATE `DIBUTTON_ARCADES_VIEW_DOWN_LINK = &H2107C4E8 ' /* Fallback scroll view down button */
%EQUATE `DIBUTTON_ARCADES_VIEW_LEFT_LINK = &H2107C4E4 ' /* Fallback scroll view left button */
%EQUATE `DIBUTTON_ARCADES_VIEW_RIGHT_LINK = &H2107C4EC ' /* Fallback scroll view right button */
%EQUATE `DIBUTTON_ARCADES_DEVICE = &H210044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_ARCADES_PAUSE = &H210044FC ' /* Start / Pause / Restart game */
' /*--- Arcade - Platform Game
' Character moves around on screen ---*/
%EQUATE `DIVIRTUAL_ARCADE_PLATFORM = &H22000000
%EQUATE `DIAXIS_ARCADEP_LATERAL = &H22008201 ' /* Left / right */
%EQUATE `DIAXIS_ARCADEP_MOVE = &H22010202 ' /* Up / down */
%EQUATE `DIBUTTON_ARCADEP_JUMP = &H22000401 ' /* Jump */
%EQUATE `DIBUTTON_ARCADEP_FIRE = &H22000402 ' /* Fire */
%EQUATE `DIBUTTON_ARCADEP_CROUCH = &H22000403 ' /* Crouch */
%EQUATE `DIBUTTON_ARCADEP_SPECIAL = &H22000404 ' /* Apply special move */
%EQUATE `DIBUTTON_ARCADEP_SELECT = &H22000405 ' /* Select special move */
%EQUATE `DIBUTTON_ARCADEP_MENU = &H220004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_ARCADEP_VIEW = &H22004601 ' /* Scroll view */
%EQUATE `DIBUTTON_ARCADEP_FIRESECONDARY = &H22004406 ' /* Alternative fire button */
%EQUATE `DIBUTTON_ARCADEP_LEFT_LINK = &H2200C4E4 ' /* Fallback sidestep left button */
%EQUATE `DIBUTTON_ARCADEP_RIGHT_LINK = &H2200C4EC ' /* Fallback sidestep right button */
%EQUATE `DIBUTTON_ARCADEP_FORWARD_LINK = &H220144E0 ' /* Fallback move forward button */
%EQUATE `DIBUTTON_ARCADEP_BACK_LINK = &H220144E8 ' /* Fallback move back button */
%EQUATE `DIBUTTON_ARCADEP_VIEW_UP_LINK = &H2207C4E0 ' /* Fallback scroll view up button */
%EQUATE `DIBUTTON_ARCADEP_VIEW_DOWN_LINK = &H2207C4E8 ' /* Fallback scroll view down button */
%EQUATE `DIBUTTON_ARCADEP_VIEW_LEFT_LINK = &H2207C4E4 ' /* Fallback scroll view left button */
%EQUATE `DIBUTTON_ARCADEP_VIEW_RIGHT_LINK = &H2207C4EC ' /* Fallback scroll view right button */
%EQUATE `DIBUTTON_ARCADEP_DEVICE = &H220044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_ARCADEP_PAUSE = &H220044FC ' /* Start / Pause / Restart game */
' /*--- CAD - 2D Object Control
' Controls to select and move objects in 2D ---*/
%EQUATE `DIVIRTUAL_CAD_2DCONTROL = &H23000000
%EQUATE `DIAXIS_2DCONTROL_LATERAL = &H23008201 ' /* Move view left / right */
%EQUATE `DIAXIS_2DCONTROL_MOVE = &H23010202 ' /* Move view up / down */
%EQUATE `DIAXIS_2DCONTROL_INOUT = &H23018203 ' /* Zoom - in / out */
%EQUATE `DIBUTTON_2DCONTROL_SELECT = &H23000401 ' /* Select Object */
%EQUATE `DIBUTTON_2DCONTROL_SPECIAL1 = &H23000402 ' /* Do first special operation */
%EQUATE `DIBUTTON_2DCONTROL_SPECIAL = &H23000403 ' /* Select special operation */
%EQUATE `DIBUTTON_2DCONTROL_SPECIAL2 = &H23000404 ' /* Do second special operation */
%EQUATE `DIBUTTON_2DCONTROL_MENU = &H230004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_2DCONTROL_HATSWITCH = &H23004601 ' /* Hat switch */
%EQUATE `DIAXIS_2DCONTROL_ROTATEZ = &H23024204 ' /* Rotate view clockwise / counterclockwise */
%EQUATE `DIBUTTON_2DCONTROL_DISPLAY = &H23004405 ' /* Shows next on-screen display options */
%EQUATE `DIBUTTON_2DCONTROL_DEVICE = &H230044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_2DCONTROL_PAUSE = &H230044FC ' /* Start / Pause / Restart game */
' /*--- CAD - 3D object control
' Controls to select and move objects within a 3D environment ---*/
%EQUATE `DIVIRTUAL_CAD_3DCONTROL = &H24000000
%EQUATE `DIAXIS_3DCONTROL_LATERAL = &H24008201 ' /* Move view left / right */
%EQUATE `DIAXIS_3DCONTROL_MOVE = &H24010202 ' /* Move view up / down */
%EQUATE `DIAXIS_3DCONTROL_INOUT = &H24018203 ' /* Zoom - in / out */
%EQUATE `DIBUTTON_3DCONTROL_SELECT = &H24000401 ' /* Select Object */
%EQUATE `DIBUTTON_3DCONTROL_SPECIAL1 = &H24000402 ' /* Do first special operation */
%EQUATE `DIBUTTON_3DCONTROL_SPECIAL = &H24000403 ' /* Select special operation */
%EQUATE `DIBUTTON_3DCONTROL_SPECIAL2 = &H24000404 ' /* Do second special operation */
%EQUATE `DIBUTTON_3DCONTROL_MENU = &H240004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_3DCONTROL_HATSWITCH = &H24004601 ' /* Hat switch */
%EQUATE `DIAXIS_3DCONTROL_ROTATEX = &H24034204 ' /* Rotate view forward or up / backward or down */
%EQUATE `DIAXIS_3DCONTROL_ROTATEY = &H2402C205 ' /* Rotate view clockwise / counterclockwise */
%EQUATE `DIAXIS_3DCONTROL_ROTATEZ = &H24024206 ' /* Rotate view left / right */
%EQUATE `DIBUTTON_3DCONTROL_DISPLAY = &H24004405 ' /* Show next on-screen display options */
%EQUATE `DIBUTTON_3DCONTROL_DEVICE = &H240044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_3DCONTROL_PAUSE = &H240044FC ' /* Start / Pause / Restart game */
' /*--- CAD - 3D Navigation - Fly through
' Controls for 3D modeling ---*/
%EQUATE `DIVIRTUAL_CAD_FLYBY = &H25000000
%EQUATE `DIAXIS_CADF_LATERAL = &H25008201 ' /* move view left / right */
%EQUATE `DIAXIS_CADF_MOVE = &H25010202 ' /* move view up / down */
%EQUATE `DIAXIS_CADF_INOUT = &H25018203 ' /* in / out */
%EQUATE `DIBUTTON_CADF_SELECT = &H25000401 ' /* Select Object */
%EQUATE `DIBUTTON_CADF_SPECIAL1 = &H25000402 ' /* do first special operation */
%EQUATE `DIBUTTON_CADF_SPECIAL = &H25000403 ' /* Select special operation */
%EQUATE `DIBUTTON_CADF_SPECIAL2 = &H25000404 ' /* do second special operation */
%EQUATE `DIBUTTON_CADF_MENU = &H250004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_CADF_HATSWITCH = &H25004601 ' /* Hat switch */
%EQUATE `DIAXIS_CADF_ROTATEX = &H25034204 ' /* Rotate view forward or up / backward or down */
%EQUATE `DIAXIS_CADF_ROTATEY = &H2502C205 ' /* Rotate view clockwise / counterclockwise */
%EQUATE `DIAXIS_CADF_ROTATEZ = &H25024206 ' /* Rotate view left / right */
%EQUATE `DIBUTTON_CADF_DISPLAY = &H25004405 ' /* shows next on-screen display options */
%EQUATE `DIBUTTON_CADF_DEVICE = &H250044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_CADF_PAUSE = &H250044FC ' /* Start / Pause / Restart game */
' /*--- CAD - 3D Model Control
' Controls for 3D modeling ---*/
%EQUATE `DIVIRTUAL_CAD_MODEL = &H26000000
%EQUATE `DIAXIS_CADM_LATERAL = &H26008201 ' /* move view left / right */
%EQUATE `DIAXIS_CADM_MOVE = &H26010202 ' /* move view up / down */
%EQUATE `DIAXIS_CADM_INOUT = &H26018203 ' /* in / out */
%EQUATE `DIBUTTON_CADM_SELECT = &H26000401 ' /* Select Object */
%EQUATE `DIBUTTON_CADM_SPECIAL1 = &H26000402 ' /* do first special operation */
%EQUATE `DIBUTTON_CADM_SPECIAL = &H26000403 ' /* Select special operation */
%EQUATE `DIBUTTON_CADM_SPECIAL2 = &H26000404 ' /* do second special operation */
%EQUATE `DIBUTTON_CADM_MENU = &H260004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIHATSWITCH_CADM_HATSWITCH = &H26004601 ' /* Hat switch */
%EQUATE `DIAXIS_CADM_ROTATEX = &H26034204 ' /* Rotate view forward or up / backward or down */
%EQUATE `DIAXIS_CADM_ROTATEY = &H2602C205 ' /* Rotate view clockwise / counterclockwise */
%EQUATE `DIAXIS_CADM_ROTATEZ = &H26024206 ' /* Rotate view left / right */
%EQUATE `DIBUTTON_CADM_DISPLAY = &H26004405 ' /* shows next on-screen display options */
%EQUATE `DIBUTTON_CADM_DEVICE = &H260044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_CADM_PAUSE = &H260044FC ' /* Start / Pause / Restart game */
' /*--- Control - Media Equipment
' Remote ---*/
%EQUATE `DIVIRTUAL_REMOTE_CONTROL = &H27000000
%EQUATE `DIAXIS_REMOTE_SLIDER = &H27050201 ' /* Slider for adjustment: volume / color / bass / etc */
%EQUATE `DIBUTTON_REMOTE_MUTE = &H27000401 ' /* Set volume on current device to zero */
%EQUATE `DIBUTTON_REMOTE_SELECT = &H27000402 ' /* Next/previous: channel/ track / chapter / picture / station */
%EQUATE `DIBUTTON_REMOTE_PLAY = &H27002403 ' /* Start or pause entertainment on current device */
%EQUATE `DIBUTTON_REMOTE_CUE = &H27002404 ' /* Move through current media */
%EQUATE `DIBUTTON_REMOTE_REVIEW = &H27002405 ' /* Move through current media */
%EQUATE `DIBUTTON_REMOTE_CHANGE = &H27002406 ' /* Select next device */
%EQUATE `DIBUTTON_REMOTE_RECORD = &H27002407 ' /* Start recording the current media */
%EQUATE `DIBUTTON_REMOTE_MENU = &H270004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIAXIS_REMOTE_SLIDER2 = &H27054202 ' /* Slider for adjustment: volume */
%EQUATE `DIBUTTON_REMOTE_TV = &H27005C08 ' /* Select TV */
%EQUATE `DIBUTTON_REMOTE_CABLE = &H27005C09 ' /* Select cable box */
%EQUATE `DIBUTTON_REMOTE_CD = &H27005C0A ' /* Select CD player */
%EQUATE `DIBUTTON_REMOTE_VCR = &H27005C0B ' /* Select VCR */
%EQUATE `DIBUTTON_REMOTE_TUNER = &H27005C0C ' /* Select tuner */
%EQUATE `DIBUTTON_REMOTE_DVD = &H27005C0D ' /* Select DVD player */
%EQUATE `DIBUTTON_REMOTE_ADJUST = &H27005C0E ' /* Enter device adjustment menu */
%EQUATE `DIBUTTON_REMOTE_DIGIT0 = &H2700540F ' /* Digit 0 */
%EQUATE `DIBUTTON_REMOTE_DIGIT1 = &H27005410 ' /* Digit 1 */
%EQUATE `DIBUTTON_REMOTE_DIGIT2 = &H27005411 ' /* Digit 2 */
%EQUATE `DIBUTTON_REMOTE_DIGIT3 = &H27005412 ' /* Digit 3 */
%EQUATE `DIBUTTON_REMOTE_DIGIT4 = &H27005413 ' /* Digit 4 */
%EQUATE `DIBUTTON_REMOTE_DIGIT5 = &H27005414 ' /* Digit 5 */
%EQUATE `DIBUTTON_REMOTE_DIGIT6 = &H27005415 ' /* Digit 6 */
%EQUATE `DIBUTTON_REMOTE_DIGIT7 = &H27005416 ' /* Digit 7 */
%EQUATE `DIBUTTON_REMOTE_DIGIT8 = &H27005417 ' /* Digit 8 */
%EQUATE `DIBUTTON_REMOTE_DIGIT9 = &H27005418 ' /* Digit 9 */
%EQUATE `DIBUTTON_REMOTE_DEVICE = &H270044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_REMOTE_PAUSE = &H270044FC ' /* Start / Pause / Restart game */
' /*--- Control- Web
' Help or Browser ---*/
%EQUATE `DIVIRTUAL_BROWSER_CONTROL = &H28000000
%EQUATE `DIAXIS_BROWSER_LATERAL = &H28008201 ' /* Move on screen pointer */
%EQUATE `DIAXIS_BROWSER_MOVE = &H28010202 ' /* Move on screen pointer */
%EQUATE `DIBUTTON_BROWSER_SELECT = &H28000401 ' /* Select current item */
%EQUATE `DIAXIS_BROWSER_VIEW = &H28018203 ' /* Move view up/down */
%EQUATE `DIBUTTON_BROWSER_REFRESH = &H28000402 ' /* Refresh */
%EQUATE `DIBUTTON_BROWSER_MENU = &H280004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_BROWSER_SEARCH = &H28004403 ' /* Use search tool */
%EQUATE `DIBUTTON_BROWSER_STOP = &H28004404 ' /* Cease current update */
%EQUATE `DIBUTTON_BROWSER_HOME = &H28004405 ' /* Go directly to "home" location */
%EQUATE `DIBUTTON_BROWSER_FAVORITES = &H28004406 ' /* Mark current site as favorite */
%EQUATE `DIBUTTON_BROWSER_NEXT = &H28004407 ' /* Select Next page */
%EQUATE `DIBUTTON_BROWSER_PREVIOUS = &H28004408 ' /* Select Previous page */
%EQUATE `DIBUTTON_BROWSER_HISTORY = &H28004409 ' /* Show/Hide History */
%EQUATE `DIBUTTON_BROWSER_PRINT = &H2800440A ' /* Print current page */
%EQUATE `DIBUTTON_BROWSER_DEVICE = &H280044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_BROWSER_PAUSE = &H280044FC ' /* Start / Pause / Restart game */
' /*--- Driving Simulator - Giant Walking Robot
' Walking tank with weapons ---*/
%EQUATE `DIVIRTUAL_DRIVING_MECHA = &H29000000
%EQUATE `DIAXIS_MECHA_STEER = &H29008201 ' /* Turns mecha left/right */
%EQUATE `DIAXIS_MECHA_TORSO = &H29010202 ' /* Tilts torso forward/backward */
%EQUATE `DIAXIS_MECHA_ROTATE = &H29020203 ' /* Turns torso left/right */
%EQUATE `DIAXIS_MECHA_THROTTLE = &H29038204 ' /* Engine Speed */
%EQUATE `DIBUTTON_MECHA_FIRE = &H29000401 ' /* Fire */
%EQUATE `DIBUTTON_MECHA_WEAPONS = &H29000402 ' /* Select next weapon group */
%EQUATE `DIBUTTON_MECHA_TARGET = &H29000403 ' /* Select closest enemy available target */
%EQUATE `DIBUTTON_MECHA_REVERSE = &H29000404 ' /* Toggles throttle in/out of reverse */
%EQUATE `DIBUTTON_MECHA_ZOOM = &H29000405 ' /* Zoom in/out targeting reticule */
%EQUATE `DIBUTTON_MECHA_JUMP = &H29000406 ' /* Fires jump jets */
%EQUATE `DIBUTTON_MECHA_MENU = &H290004FD ' /* Show menu options */
' /*--- Priority 2 controls ---*/
%EQUATE `DIBUTTON_MECHA_CENTER = &H29004407 ' /* Center torso to legs */
%EQUATE `DIHATSWITCH_MECHA_GLANCE = &H29004601 ' /* Look around */
%EQUATE `DIBUTTON_MECHA_VIEW = &H29004408 ' /* Cycle through view options */
%EQUATE `DIBUTTON_MECHA_FIRESECONDARY = &H29004409 ' /* Alternative fire button */
%EQUATE `DIBUTTON_MECHA_LEFT_LINK = &H2900C4E4 ' /* Fallback steer left button */
%EQUATE `DIBUTTON_MECHA_RIGHT_LINK = &H2900C4EC ' /* Fallback steer right button */
%EQUATE `DIBUTTON_MECHA_FORWARD_LINK = &H290144E0 ' /* Fallback tilt torso forward button */
%EQUATE `DIBUTTON_MECHA_BACK_LINK = &H290144E8 ' /* Fallback tilt toroso backward button */
%EQUATE `DIBUTTON_MECHA_ROTATE_LEFT_LINK = &H290244E4 ' /* Fallback rotate toroso right button */
%EQUATE `DIBUTTON_MECHA_ROTATE_RIGHT_LINK = &H290244EC ' /* Fallback rotate torso left button */
%EQUATE `DIBUTTON_MECHA_FASTER_LINK = &H2903C4E0 ' /* Fallback increase engine speed */
%EQUATE `DIBUTTON_MECHA_SLOWER_LINK = &H2903C4E8 ' /* Fallback decrease engine speed */
%EQUATE `DIBUTTON_MECHA_DEVICE = &H290044FE ' /* Show input device and controls */
%EQUATE `DIBUTTON_MECHA_PAUSE = &H290044FC ' /* Start / Pause / Restart game */
' /*
' * "ANY" semantics can be used as a last resort to get mappings for actions
' * that match nothing in the chosen virtual genre. These semantics will be
' * mapped at a lower priority that virtual genre semantics. Also, hardware
' * vendors will not be able to provide sensible mappings for these unless
' * they provide application specific mappings.
' */
%EQUATE `DIAXIS_ANY_X_1 = &HFF00C201
%EQUATE `DIAXIS_ANY_X_2 = &HFF00C202
%EQUATE `DIAXIS_ANY_Y_1 = &HFF014201
%EQUATE `DIAXIS_ANY_Y_2 = &HFF014202
%EQUATE `DIAXIS_ANY_Z_1 = &HFF01C201
%EQUATE `DIAXIS_ANY_Z_2 = &HFF01C202
%EQUATE `DIAXIS_ANY_R_1 = &HFF024201
%EQUATE `DIAXIS_ANY_R_2 = &HFF024202
%EQUATE `DIAXIS_ANY_U_1 = &HFF02C201
%EQUATE `DIAXIS_ANY_U_2 = &HFF02C202
%EQUATE `DIAXIS_ANY_V_1 = &HFF034201
%EQUATE `DIAXIS_ANY_V_2 = &HFF034202
%EQUATE `DIAXIS_ANY_A_1 = &HFF03C201
%EQUATE `DIAXIS_ANY_A_2 = &HFF03C202
%EQUATE `DIAXIS_ANY_B_1 = &HFF044201
%EQUATE `DIAXIS_ANY_B_2 = &HFF044202
%EQUATE `DIAXIS_ANY_C_1 = &HFF04C201
%EQUATE `DIAXIS_ANY_C_2 = &HFF04C202
%EQUATE `DIAXIS_ANY_S_1 = &HFF054201
%EQUATE `DIAXIS_ANY_S_2 = &HFF054202
%EQUATE `DIAXIS_ANY_1 = &HFF004201
%EQUATE `DIAXIS_ANY_2 = &HFF004202
%EQUATE `DIAXIS_ANY_3 = &HFF004203
%EQUATE `DIAXIS_ANY_4 = &HFF004204
%EQUATE `DIPOV_ANY_1 = &HFF004601
%EQUATE `DIPOV_ANY_2 = &HFF004602
%EQUATE `DIPOV_ANY_3 = &HFF004603
%EQUATE `DIPOV_ANY_4 = &HFF004604
'#define DIBUTTON_ANY(instance) ( 0xFF004400 | instance )
MACRO DIBUTTON_ANY(bInstance) = &HFF004400 OR bInstance
'/****************************************************************************
' *
' * Definitions for non-IDirectInput (VJoyD) features defined more recently
' * than the current sdk files
' *
' ****************************************************************************/
'/****************************************************************************
' *
' * Definitions for non-IDirectInput (VJoyD) features defined more recently
' * than the current sdk files
' *
' ****************************************************************************/
'/*
' * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure
' * contains mini-driver specific data to be passed by VJoyD to the mini-
' * driver instead of doing a poll.
' */
%EQUATE `JOY_PASSDRIVERDATA = &H10000000
'/*
' * Informs the joystick driver that the configuration has been changed
' * and should be reloaded from the registery.
' * dwFlags is reserved and should be set to zero
' */
'WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags );
DECLARE FUNCTION joyConfigChanged LIB "winmm.dll" ALIAS "joyConfigChanged" ( BYVAL dwFlags AS QUAD ' DWORD dwFlags ) AS LONG ' MMRESULT
'/*
' * Invoke the joystick control panel directly, using the passed window handle
' * as the parent of the dialog. This API is only supported for compatibility
' * purposes; new applications should use the RunControlPanel method of a
' * device interface for a game controller.
' * The API is called by using the function pointer returned by
' * GetProcAddress( hCPL, TEXT("ShowJoyCPL") ) where hCPL is a HMODULE returned
' * by LoadLibrary( TEXT("joy.cpl") ). The typedef is provided to allow
' * declaration and casting of an appropriately typed variable.
' */
'void WINAPI ShowJoyCPL( HWND hWnd );
'/*
' * Hardware Setting indicating that the device is a headtracker
' */
%EQUATE `JOY_HWS_ISHEADTRACKER = &H02000000
'/*
' * Hardware Setting indicating that the VxD is used to replace
' * the standard analog polling
' */
%EQUATE `JOY_HWS_ISGAMEPORTDRIVER = &H04000000
'/*
' * Hardware Setting indicating that the driver needs a standard
' * gameport in order to communicate with the device.
' */
%EQUATE `JOY_HWS_ISANALOGPORTDRIVER = &H08000000
'/*
' * Hardware Setting indicating that VJoyD should not load this
' * driver, it will be loaded externally and will register with
' * VJoyD of it's own accord.
' */
%EQUATE `JOY_HWS_AUTOLOAD = &H10000000
'/*
' * Hardware Setting indicating that the driver acquires any
' * resources needed without needing a devnode through VJoyD.
' */
%EQUATE `JOY_HWS_NODEVNODE = &H20000000
'/*
' * Hardware Setting indicating that the device is a gameport bus
' */
%EQUATE `JOY_HWS_ISGAMEPORTBUS = &H80000000
%EQUATE `JOY_HWS_GAMEPORTBUSBUSY = &H00000001
'/*
' * Usage Setting indicating that the settings are volatile and
' * should be removed if still present on a reboot.
' */
%EQUATE `JOY_US_VOLATILE = &H00000008
'/****************************************************************************
' *
' * Definitions for non-IDirectInput (VJoyD) features defined more recently
' * than the current ddk files
' *
' ****************************************************************************/
'#ifndef DIJ_RINGZERO
'#ifdef _INC_MMDDK
'#ifndef MMNOJOYDEV
'#ifndef __VJOYDXD_INCLUDED__
'#define __VJOYDXD_INCLUDED__
'/*
' * Poll type in which the do_other field of the JOYOEMPOLLDATA
' * structure contains mini-driver specific data passed from an app.
' */
'#define JOY_OEMPOLL_PASSDRIVERDATA 7
%EQUATE `JOY_OEMPOLL_PASSDRIVERDATA = 7
'#endif /* __VJOYDXD_INCLUDED__ */
'#endif /* not MMNOJOYDEV */
'#endif /* _INC_MMDDK */
'#endif /* DIJ_RINGZERO */
#ENDIF
