di8

package module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 23, 2025 License: MIT Imports: 4 Imported by: 3

Documentation

Overview

di8 provides a way to access Windows' DirectInput API in Go.

Call di8.Create() to create the basic DirectInput object.

Use DirectInput.EnumDevices() to list all the mouse, keyboard and game controller devices.

Use DirectInput.CreateDevice() to create Device objects for all devices that you want to use.

To be able to query data from a Device, call Device.SetDataFormat() first, then Device.SetProperty(di8.PROP_BUFFERSIZE) and lastly Device.Acquire(). When you are done with it, call Device.Unacquire().

There are two ways to query a Device: get the current state or get events when the state changes. To get the current state, call Device.GetDeviceState. To get state change events, call Device.GetDeviceData.

Call Release() on all objects when you are done using them.

Index

Constants

View Source
const (
	DIRECTINPUT_VERSION = 0x0800
	VERSION             = DIRECTINPUT_VERSION

	EFT_ALL = 0x00000000

	EFT_CONSTANTFORCE      = 0x00000001
	EFT_RAMPFORCE          = 0x00000002
	EFT_PERIODIC           = 0x00000003
	EFT_CONDITION          = 0x00000004
	EFT_CUSTOMFORCE        = 0x00000005
	EFT_HARDWARE           = 0x000000FF
	EFT_FFATTACK           = 0x00000200
	EFT_FFFADE             = 0x00000400
	EFT_SATURATION         = 0x00000800
	EFT_POSNEGCOEFFICIENTS = 0x00001000
	EFT_POSNEGSATURATION   = 0x00002000
	EFT_DEADBAND           = 0x00004000
	EFT_STARTDELAY         = 0x00008000

	DEGREES      = 100
	FFNOMINALMAX = 10000
	SECONDS      = 1000000

	EFF_OBJECTIDS     = 0x00000001
	EFF_OBJECTOFFSETS = 0x00000002
	EFF_CARTESIAN     = 0x00000010
	EFF_POLAR         = 0x00000020
	EFF_SPHERICAL     = 0x00000040

	EP_DURATION              = 0x00000001
	EP_SAMPLEPERIOD          = 0x00000002
	EP_GAIN                  = 0x00000004
	EP_TRIGGERBUTTON         = 0x00000008
	EP_TRIGGERREPEATINTERVAL = 0x00000010
	EP_AXES                  = 0x00000020
	EP_DIRECTION             = 0x00000040
	EP_ENVELOPE              = 0x00000080
	EP_TYPESPECIFICPARAMS    = 0x00000100
	EP_STARTDELAY            = 0x00000200
	EP_ALLPARAMS_DX5         = 0x000001FF
	EP_ALLPARAMS             = 0x000003FF
	EP_START                 = 0x20000000
	EP_NORESTART             = 0x40000000
	EP_NODOWNLOAD            = 0x80000000
	EB_NOTRIGGER             = 0xFFFFFFFF

	ES_SOLO       = 0x00000001
	ES_NODOWNLOAD = 0x80000000

	EGES_PLAYING  = 0x00000001
	EGES_EMULATED = 0x00000002

	DEVCLASS_ALL      = 0
	DEVCLASS_DEVICE   = 1
	DEVCLASS_POINTER  = 2
	DEVCLASS_KEYBOARD = 3
	DEVCLASS_GAMECTRL = 4

	DEVTYPE_DEVICE        = 0x11
	DEVTYPE_MOUSE         = 0x12
	DEVTYPE_KEYBOARD      = 0x13
	DEVTYPE_JOYSTICK      = 0x14
	DEVTYPE_GAMEPAD       = 0x15
	DEVTYPE_DRIVING       = 0x16
	DEVTYPE_FLIGHT        = 0x17
	DEVTYPE_1STPERSON     = 0x18
	DEVTYPE_DEVICECTRL    = 0x19
	DEVTYPE_SCREENPOINTER = 0x1A
	DEVTYPE_REMOTE        = 0x1B
	DEVTYPE_SUPPLEMENTAL  = 0x1C

	DEVTYPE_HID = 0x00010000

	DEVTYPEMOUSE_UNKNOWN     = 1
	DEVTYPEMOUSE_TRADITIONAL = 2
	DEVTYPEMOUSE_FINGERSTICK = 3
	DEVTYPEMOUSE_TOUCHPAD    = 4
	DEVTYPEMOUSE_TRACKBALL   = 5
	DEVTYPEMOUSE_ABSOLUTE    = 6

	DEVTYPEKEYBOARD_UNKNOWN     = 0
	DEVTYPEKEYBOARD_PCXT        = 1
	DEVTYPEKEYBOARD_OLIVETTI    = 2
	DEVTYPEKEYBOARD_PCAT        = 3
	DEVTYPEKEYBOARD_PCENH       = 4
	DEVTYPEKEYBOARD_NOKIA1050   = 5
	DEVTYPEKEYBOARD_NOKIA9140   = 6
	DEVTYPEKEYBOARD_NEC98       = 7
	DEVTYPEKEYBOARD_NEC98LAPTOP = 8
	DEVTYPEKEYBOARD_NEC98106    = 9
	DEVTYPEKEYBOARD_JAPAN106    = 10
	DEVTYPEKEYBOARD_JAPANAX     = 11
	DEVTYPEKEYBOARD_J3100       = 12

	DEVTYPE_LIMITEDGAMESUBTYPE = 1

	DEVTYPEJOYSTICK_LIMITED  = DEVTYPE_LIMITEDGAMESUBTYPE
	DEVTYPEJOYSTICK_STANDARD = 2

	DEVTYPEGAMEPAD_LIMITED  = DEVTYPE_LIMITEDGAMESUBTYPE
	DEVTYPEGAMEPAD_STANDARD = 2
	DEVTYPEGAMEPAD_TILT     = 3

	DEVTYPEDRIVING_LIMITED        = DEVTYPE_LIMITEDGAMESUBTYPE
	DEVTYPEDRIVING_COMBINEDPEDALS = 2
	DEVTYPEDRIVING_DUALPEDALS     = 3
	DEVTYPEDRIVING_THREEPEDALS    = 4
	DEVTYPEDRIVING_HANDHELD       = 5

	DEVTYPEFLIGHT_LIMITED = DEVTYPE_LIMITEDGAMESUBTYPE
	DEVTYPEFLIGHT_STICK   = 2
	DEVTYPEFLIGHT_YOKE    = 3
	DEVTYPEFLIGHT_RC      = 4

	DEVTYPE1STPERSON_LIMITED = DEVTYPE_LIMITEDGAMESUBTYPE
	DEVTYPE1STPERSON_UNKNOWN = 2
	DEVTYPE1STPERSON_SIXDOF  = 3
	DEVTYPE1STPERSON_SHOOTER = 4

	DEVTYPESCREENPTR_UNKNOWN  = 2
	DEVTYPESCREENPTR_LIGHTGUN = 3
	DEVTYPESCREENPTR_LIGHTPEN = 4
	DEVTYPESCREENPTR_TOUCH    = 5

	DEVTYPEREMOTE_UNKNOWN = 2

	DEVTYPEDEVICECTRL_UNKNOWN                  = 2
	DEVTYPEDEVICECTRL_COMMSSELECTION           = 3
	DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED = 4

	DEVTYPESUPPLEMENTAL_UNKNOWN           = 2
	DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER = 3
	DEVTYPESUPPLEMENTAL_HEADTRACKER       = 4
	DEVTYPESUPPLEMENTAL_HANDTRACKER       = 5
	DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE    = 6
	DEVTYPESUPPLEMENTAL_SHIFTER           = 7
	DEVTYPESUPPLEMENTAL_THROTTLE          = 8
	DEVTYPESUPPLEMENTAL_SPLITTHROTTLE     = 9
	DEVTYPESUPPLEMENTAL_COMBINEDPEDALS    = 10
	DEVTYPESUPPLEMENTAL_DUALPEDALS        = 11
	DEVTYPESUPPLEMENTAL_THREEPEDALS       = 12
	DEVTYPESUPPLEMENTAL_RUDDERPEDALS      = 13

	DC_ATTACHED           = 0x00000001
	DC_POLLEDDEVICE       = 0x00000002
	DC_EMULATED           = 0x00000004
	DC_POLLEDDATAFORMAT   = 0x00000008
	DC_FORCEFEEDBACK      = 0x00000100
	DC_FFATTACK           = 0x00000200
	DC_FFFADE             = 0x00000400
	DC_SATURATION         = 0x00000800
	DC_POSNEGCOEFFICIENTS = 0x00001000
	DC_POSNEGSATURATION   = 0x00002000
	DC_DEADBAND           = 0x00004000
	DC_STARTDELAY         = 0x00008000
	DC_ALIAS              = 0x00010000
	DC_PHANTOM            = 0x00020000
	DC_HIDDEN             = 0x00040000

	DFT_ALL = 0x00000000

	DFT_RELAXIS = 0x00000001
	DFT_ABSAXIS = 0x00000002
	DFT_AXIS    = 0x00000003

	DFT_PSHBUTTON = 0x00000004
	DFT_TGLBUTTON = 0x00000008
	DFT_BUTTON    = 0x0000000C

	DFT_POV        = 0x00000010
	DFT_COLLECTION = 0x00000040
	DFT_NODATA     = 0x00000080

	DFT_ANYINSTANCE     = 0x00FFFF00
	DFT_INSTANCEMASK    = DFT_ANYINSTANCE
	DFT_FFACTUATOR      = 0x01000000
	DFT_FFEFFECTTRIGGER = 0x02000000
	DFT_OUTPUT          = 0x10000000
	DFT_VENDORDEFINED   = 0x04000000
	DFT_ALIAS           = 0x08000000

	DFT_NOCOLLECTION = 0x00FFFF00

	DF_ABSAXIS = 0x00000001
	DF_RELAXIS = 0x00000002

	A_FORCEFEEDBACK = 0x00000001
	A_APPMAPPED     = 0x00000002
	A_APPNOMAP      = 0x00000004
	A_NORANGE       = 0x00000008
	A_APPFIXED      = 0x00000010

	AH_UNMAPPED     = 0x00000000
	AH_USERCONFIG   = 0x00000001
	AH_APPREQUESTED = 0x00000002
	AH_HWAPP        = 0x00000004
	AH_HWDEFAULT    = 0x00000008
	AH_DEFAULT      = 0x00000020
	AH_ERROR        = 0x80000000

	AFTS_NEWDEVICELOW     = 0xFFFFFFFF
	AFTS_NEWDEVICEHIGH    = 0xFFFFFFFF
	AFTS_UNUSEDDEVICELOW  = 0x00000000
	AFTS_UNUSEDDEVICEHIGH = 0x00000000

	DBAM_DEFAULT    = 0x00000000
	DBAM_PRESERVE   = 0x00000001
	DBAM_INITIALIZE = 0x00000002
	DBAM_HWDEFAULTS = 0x00000004

	DSAM_DEFAULT   = 0x00000000
	DSAM_NOUSER    = 0x00000001
	DSAM_FORCESAVE = 0x00000002

	CD_DEFAULT = 0x00000000
	CD_EDIT    = 0x00000001

	DIFT_CONFIGURATION = 0x00000001
	DIFT_OVERLAY       = 0x00000002

	DAL_CENTERED      = 0x00000000
	DAL_LEFTALIGNED   = 0x00000001
	DAL_RIGHTALIGNED  = 0x00000002
	DAL_MIDDLE        = 0x00000000
	DAL_TOPALIGNED    = 0x00000004
	DAL_BOTTOMALIGNED = 0x00000008

	DOI_FFACTUATOR      = 0x00000001
	DOI_FFEFFECTTRIGGER = 0x00000002
	DOI_POLLED          = 0x00008000
	DOI_ASPECTPOSITION  = 0x00000100
	DOI_ASPECTVELOCITY  = 0x00000200
	DOI_ASPECTACCEL     = 0x00000300
	DOI_ASPECTFORCE     = 0x00000400
	DOI_ASPECTMASK      = 0x00000F00
	DOI_GUIDISUSAGE     = 0x00010000

	PH_DEVICE   = 0
	PH_BYOFFSET = 1
	PH_BYID     = 2
	PH_BYUSAGE  = 3

	PROPRANGE_NOMIN = 0x80000000
	PROPRANGE_NOMAX = 0x7FFFFFFF

	MAXCPOINTSNUM = 8

	PROPAXISMODE_ABS = 0
	PROPAXISMODE_REL = 1

	PROPAUTOCENTER_OFF = 0
	PROPAUTOCENTER_ON  = 1

	PROPCALIBRATIONMODE_COOKED = 0
	PROPCALIBRATIONMODE_RAW    = 1

	GDD_PEEK = 0x00000001

	SCL_EXCLUSIVE    = 0x00000001
	SCL_NONEXCLUSIVE = 0x00000002
	SCL_FOREGROUND   = 0x00000004
	SCL_BACKGROUND   = 0x00000008
	SCL_NOWINKEY     = 0x00000010

	SFFC_RESET           = 0x00000001
	SFFC_STOPALL         = 0x00000002
	SFFC_PAUSE           = 0x00000004
	SFFC_CONTINUE        = 0x00000008
	SFFC_SETACTUATORSON  = 0x00000010
	SFFC_SETACTUATORSOFF = 0x00000020

	GFFS_EMPTY           = 0x00000001
	GFFS_STOPPED         = 0x00000002
	GFFS_PAUSED          = 0x00000004
	GFFS_ACTUATORSON     = 0x00000010
	GFFS_ACTUATORSOFF    = 0x00000020
	GFFS_POWERON         = 0x00000040
	GFFS_POWEROFF        = 0x00000080
	GFFS_SAFETYSWITCHON  = 0x00000100
	GFFS_SAFETYSWITCHOFF = 0x00000200
	GFFS_USERFFSWITCHON  = 0x00000400
	GFFS_USERFFSWITCHOFF = 0x00000800
	GFFS_DEVICELOST      = 0x80000000

	SDD_CONTINUE = 0x00000001

	FEF_DEFAULT            = 0x00000000
	FEF_INCLUDENONSTANDARD = 0x00000001
	FEF_MODIFYIFNEEDED     = 0x00000010

	MOFS_X       = 0
	MOFS_Y       = 4
	MOFS_Z       = 8
	MOFS_BUTTON0 = 12
	MOFS_BUTTON1 = 13
	MOFS_BUTTON2 = 14
	MOFS_BUTTON3 = 15
	MOFS_BUTTON4 = 16
	MOFS_BUTTON5 = 17
	MOFS_BUTTON6 = 18
	MOFS_BUTTON7 = 19

	K_ESCAPE       = 0x01
	K_1            = 0x02
	K_2            = 0x03
	K_3            = 0x04
	K_4            = 0x05
	K_5            = 0x06
	K_6            = 0x07
	K_7            = 0x08
	K_8            = 0x09
	K_9            = 0x0A
	K_0            = 0x0B
	K_MINUS        = 0x0C
	K_EQUALS       = 0x0D
	K_BACK         = 0x0E
	K_TAB          = 0x0F
	K_Q            = 0x10
	K_W            = 0x11
	K_E            = 0x12
	K_R            = 0x13
	K_T            = 0x14
	K_Y            = 0x15
	K_U            = 0x16
	K_I            = 0x17
	K_O            = 0x18
	K_P            = 0x19
	K_LBRACKET     = 0x1A
	K_RBRACKET     = 0x1B
	K_RETURN       = 0x1C
	K_LCONTROL     = 0x1D
	K_A            = 0x1E
	K_S            = 0x1F
	K_D            = 0x20
	K_F            = 0x21
	K_G            = 0x22
	K_H            = 0x23
	K_J            = 0x24
	K_K            = 0x25
	K_L            = 0x26
	K_SEMICOLON    = 0x27
	K_APOSTROPHE   = 0x28
	K_GRAVE        = 0x29
	K_LSHIFT       = 0x2A
	K_BACKSLASH    = 0x2B
	K_Z            = 0x2C
	K_X            = 0x2D
	K_C            = 0x2E
	K_V            = 0x2F
	K_B            = 0x30
	K_N            = 0x31
	K_M            = 0x32
	K_COMMA        = 0x33
	K_PERIOD       = 0x34
	K_SLASH        = 0x35
	K_RSHIFT       = 0x36
	K_MULTIPLY     = 0x37
	K_LMENU        = 0x38
	K_SPACE        = 0x39
	K_CAPITAL      = 0x3A
	K_F1           = 0x3B
	K_F2           = 0x3C
	K_F3           = 0x3D
	K_F4           = 0x3E
	K_F5           = 0x3F
	K_F6           = 0x40
	K_F7           = 0x41
	K_F8           = 0x42
	K_F9           = 0x43
	K_F10          = 0x44
	K_NUMLOCK      = 0x45
	K_SCROLL       = 0x46
	K_NUMPAD7      = 0x47
	K_NUMPAD8      = 0x48
	K_NUMPAD9      = 0x49
	K_SUBTRACT     = 0x4A
	K_NUMPAD4      = 0x4B
	K_NUMPAD5      = 0x4C
	K_NUMPAD6      = 0x4D
	K_ADD          = 0x4E
	K_NUMPAD1      = 0x4F
	K_NUMPAD2      = 0x50
	K_NUMPAD3      = 0x51
	K_NUMPAD0      = 0x52
	K_DECIMAL      = 0x53
	K_OEM_102      = 0x56
	K_F11          = 0x57
	K_F12          = 0x58
	K_F13          = 0x64
	K_F14          = 0x65
	K_F15          = 0x66
	K_KANA         = 0x70
	K_ABNT_C1      = 0x73
	K_CONVERT      = 0x79
	K_NOCONVERT    = 0x7B
	K_YEN          = 0x7D
	K_ABNT_C2      = 0x7E
	K_NUMPADEQUALS = 0x8D
	K_PREVTRACK    = 0x90
	K_AT           = 0x91
	K_COLON        = 0x92
	K_UNDERLINE    = 0x93
	K_KANJI        = 0x94
	K_STOP         = 0x95
	K_AX           = 0x96
	K_UNLABELED    = 0x97
	K_NEXTTRACK    = 0x99
	K_NUMPADENTER  = 0x9C
	K_RCONTROL     = 0x9D
	K_MUTE         = 0xA0
	K_CALCULATOR   = 0xA1
	K_PLAYPAUSE    = 0xA2
	K_MEDIASTOP    = 0xA4
	K_VOLUMEDOWN   = 0xAE
	K_VOLUMEUP     = 0xB0
	K_WEBHOME      = 0xB2
	K_NUMPADCOMMA  = 0xB3
	K_DIVIDE       = 0xB5
	K_SYSRQ        = 0xB7
	K_RMENU        = 0xB8
	K_PAUSE        = 0xC5
	K_HOME         = 0xC7
	K_UP           = 0xC8
	K_PRIOR        = 0xC9
	K_LEFT         = 0xCB
	K_RIGHT        = 0xCD
	K_END          = 0xCF
	K_DOWN         = 0xD0
	K_NEXT         = 0xD1
	K_INSERT       = 0xD2
	K_DELETE       = 0xD3
	K_LWIN         = 0xDB
	K_RWIN         = 0xDC
	K_APPS         = 0xDD
	K_POWER        = 0xDE
	K_SLEEP        = 0xDF
	K_WAKE         = 0xE3
	K_WEBSEARCH    = 0xE5
	K_WEBFAVORITES = 0xE6
	K_WEBREFRESH   = 0xE7
	K_WEBSTOP      = 0xE8
	K_WEBFORWARD   = 0xE9
	K_WEBBACK      = 0xEA
	K_MYCOMPUTER   = 0xEB
	K_MAIL         = 0xEC
	K_MEDIASELECT  = 0xED

	K_BACKSPACE    = K_BACK
	K_NUMPADSTAR   = K_MULTIPLY
	K_LALT         = K_LMENU
	K_CAPSLOCK     = K_CAPITAL
	K_NUMPADMINUS  = K_SUBTRACT
	K_NUMPADPLUS   = K_ADD
	K_NUMPADPERIOD = K_DECIMAL
	K_NUMPADSLASH  = K_DIVIDE
	K_RALT         = K_RMENU
	K_UPARROW      = K_UP
	K_PGUP         = K_PRIOR
	K_LEFTARROW    = K_LEFT
	K_RIGHTARROW   = K_RIGHT
	K_DOWNARROW    = K_DOWN
	K_PGDN         = K_NEXT

	K_CIRCUMFLEX = K_PREVTRACK

	JOFS_X  = 0
	JOFS_Y  = 4
	JOFS_Z  = 8
	JOFS_RX = 12
	JOFS_RY = 16
	JOFS_RZ = 20

	JOFS_BUTTON0  = 48
	JOFS_BUTTON1  = 49
	JOFS_BUTTON2  = 50
	JOFS_BUTTON3  = 51
	JOFS_BUTTON4  = 52
	JOFS_BUTTON5  = 53
	JOFS_BUTTON6  = 54
	JOFS_BUTTON7  = 55
	JOFS_BUTTON8  = 56
	JOFS_BUTTON9  = 57
	JOFS_BUTTON10 = 58
	JOFS_BUTTON11 = 59
	JOFS_BUTTON12 = 60
	JOFS_BUTTON13 = 61
	JOFS_BUTTON14 = 62
	JOFS_BUTTON15 = 63
	JOFS_BUTTON16 = 64
	JOFS_BUTTON17 = 65
	JOFS_BUTTON18 = 66
	JOFS_BUTTON19 = 67
	JOFS_BUTTON20 = 68
	JOFS_BUTTON21 = 69
	JOFS_BUTTON22 = 70
	JOFS_BUTTON23 = 71
	JOFS_BUTTON24 = 72
	JOFS_BUTTON25 = 73
	JOFS_BUTTON26 = 74
	JOFS_BUTTON27 = 75
	JOFS_BUTTON28 = 76
	JOFS_BUTTON29 = 77
	JOFS_BUTTON30 = 78
	JOFS_BUTTON31 = 79

	ENUM_STOP     = 0
	ENUM_CONTINUE = 1

	EDFL_ALLDEVICES      = 0x00000000
	EDFL_ATTACHEDONLY    = 0x00000001
	EDFL_FORCEFEEDBACK   = 0x00000100
	EDFL_INCLUDEALIASES  = 0x00010000
	EDFL_INCLUDEPHANTOMS = 0x00020000
	EDFL_INCLUDEHIDDEN   = 0x00040000

	EDBS_MAPPEDPRI1   = 0x00000001
	EDBS_MAPPEDPRI2   = 0x00000002
	EDBS_RECENTDEVICE = 0x00000010
	EDBS_NEWDEVICE    = 0x00000020

	EDBSFL_ATTACHEDONLY       = 0x00000000
	EDBSFL_THISUSER           = 0x00000010
	EDBSFL_FORCEFEEDBACK      = EDFL_FORCEFEEDBACK
	EDBSFL_AVAILABLEDEVICES   = 0x00001000
	EDBSFL_MULTIMICEKEYBOARDS = 0x00002000
	EDBSFL_NONGAMINGDEVICES   = 0x00004000
	EDBSFL_VALID              = 0x00007110

	OK             = 0
	NOTATTACHED    = 1
	BUFFEROVERFLOW = 1
	PROPNOEFFECT   = 1
	NOEFFECT       = 1

	POLLEDDEVICE          = 0x00000002
	DOWNLOADSKIPPED       = 0x00000003
	EFFECTRESTARTED       = 0x00000004
	TRUNCATED             = 0x00000008
	SETTINGSNOTSAVED      = 0x0000000B
	TRUNCATEDANDRESTARTED = 0x0000000C
	WRITEPROTECT          = 0x00000013

	ERR_OLDDIRECTINPUTVERSION  = -2147023746
	ERR_BETADIRECTINPUTVERSION = -2147023743
	ERR_BADDRIVERVER           = -2147024777
	ERR_DEVICENOTREG           = -2147221164
	ERR_NOTFOUND               = -2147024894
	ERR_OBJECTNOTFOUND         = -2147024894
	ERR_INVALIDPARAM           = -2147024809
	ERR_NOINTERFACE            = -2147467262
	ERR_GENERIC                = -2147467259
	ERR_OUTOFMEMORY            = -2147024882
	ERR_UNSUPPORTED            = -2147467263
	ERR_NOTINITIALIZED         = -2147024875
	ERR_ALREADYINITIALIZED     = -2147023649
	ERR_NOAGGREGATION          = -2147221232
	ERR_OTHERAPPHASPRIO        = -2147024891
	ERR_INPUTLOST              = -2147024866
	ERR_ACQUIRED               = -2147024726
	ERR_NOTACQUIRED            = -2147024884
	ERR_READONLY               = -2147024891
	ERR_HANDLEEXISTS           = -2147024891

	E_PENDING                = 0x8000000A
	ERR_INSUFFICIENTPRIVS    = 0x80040200
	ERR_DEVICEFULL           = 0x80040201
	ERR_MOREDATA             = 0x80040202
	ERR_NOTDOWNLOADED        = 0x80040203
	ERR_HASEFFECTS           = 0x80040204
	ERR_NOTEXCLUSIVEACQUIRED = 0x80040205
	ERR_INCOMPLETEEFFECT     = 0x80040206
	ERR_NOTBUFFERED          = 0x80040207
	ERR_EFFECTPLAYING        = 0x80040208
	ERR_UNPLUGGED            = 0x80040209
	ERR_REPORTFULL           = 0x8004020A
	ERR_MAPFILEFAIL          = 0x8004020B

	KEYBOARD_ESCAPE       = 0x81000401
	KEYBOARD_1            = 0x81000402
	KEYBOARD_2            = 0x81000403
	KEYBOARD_3            = 0x81000404
	KEYBOARD_4            = 0x81000405
	KEYBOARD_5            = 0x81000406
	KEYBOARD_6            = 0x81000407
	KEYBOARD_7            = 0x81000408
	KEYBOARD_8            = 0x81000409
	KEYBOARD_9            = 0x8100040A
	KEYBOARD_0            = 0x8100040B
	KEYBOARD_MINUS        = 0x8100040C
	KEYBOARD_EQUALS       = 0x8100040D
	KEYBOARD_BACK         = 0x8100040E
	KEYBOARD_TAB          = 0x8100040F
	KEYBOARD_Q            = 0x81000410
	KEYBOARD_W            = 0x81000411
	KEYBOARD_E            = 0x81000412
	KEYBOARD_R            = 0x81000413
	KEYBOARD_T            = 0x81000414
	KEYBOARD_Y            = 0x81000415
	KEYBOARD_U            = 0x81000416
	KEYBOARD_I            = 0x81000417
	KEYBOARD_O            = 0x81000418
	KEYBOARD_P            = 0x81000419
	KEYBOARD_LBRACKET     = 0x8100041A
	KEYBOARD_RBRACKET     = 0x8100041B
	KEYBOARD_RETURN       = 0x8100041C
	KEYBOARD_LCONTROL     = 0x8100041D
	KEYBOARD_A            = 0x8100041E
	KEYBOARD_S            = 0x8100041F
	KEYBOARD_D            = 0x81000420
	KEYBOARD_F            = 0x81000421
	KEYBOARD_G            = 0x81000422
	KEYBOARD_H            = 0x81000423
	KEYBOARD_J            = 0x81000424
	KEYBOARD_K            = 0x81000425
	KEYBOARD_L            = 0x81000426
	KEYBOARD_SEMICOLON    = 0x81000427
	KEYBOARD_APOSTROPHE   = 0x81000428
	KEYBOARD_GRAVE        = 0x81000429
	KEYBOARD_LSHIFT       = 0x8100042A
	KEYBOARD_BACKSLASH    = 0x8100042B
	KEYBOARD_Z            = 0x8100042C
	KEYBOARD_X            = 0x8100042D
	KEYBOARD_C            = 0x8100042E
	KEYBOARD_V            = 0x8100042F
	KEYBOARD_B            = 0x81000430
	KEYBOARD_N            = 0x81000431
	KEYBOARD_M            = 0x81000432
	KEYBOARD_COMMA        = 0x81000433
	KEYBOARD_PERIOD       = 0x81000434
	KEYBOARD_SLASH        = 0x81000435
	KEYBOARD_RSHIFT       = 0x81000436
	KEYBOARD_MULTIPLY     = 0x81000437
	KEYBOARD_LMENU        = 0x81000438
	KEYBOARD_SPACE        = 0x81000439
	KEYBOARD_CAPITAL      = 0x8100043A
	KEYBOARD_F1           = 0x8100043B
	KEYBOARD_F2           = 0x8100043C
	KEYBOARD_F3           = 0x8100043D
	KEYBOARD_F4           = 0x8100043E
	KEYBOARD_F5           = 0x8100043F
	KEYBOARD_F6           = 0x81000440
	KEYBOARD_F7           = 0x81000441
	KEYBOARD_F8           = 0x81000442
	KEYBOARD_F9           = 0x81000443
	KEYBOARD_F10          = 0x81000444
	KEYBOARD_NUMLOCK      = 0x81000445
	KEYBOARD_SCROLL       = 0x81000446
	KEYBOARD_NUMPAD7      = 0x81000447
	KEYBOARD_NUMPAD8      = 0x81000448
	KEYBOARD_NUMPAD9      = 0x81000449
	KEYBOARD_SUBTRACT     = 0x8100044A
	KEYBOARD_NUMPAD4      = 0x8100044B
	KEYBOARD_NUMPAD5      = 0x8100044C
	KEYBOARD_NUMPAD6      = 0x8100044D
	KEYBOARD_ADD          = 0x8100044E
	KEYBOARD_NUMPAD1      = 0x8100044F
	KEYBOARD_NUMPAD2      = 0x81000450
	KEYBOARD_NUMPAD3      = 0x81000451
	KEYBOARD_NUMPAD0      = 0x81000452
	KEYBOARD_DECIMAL      = 0x81000453
	KEYBOARD_OEM_102      = 0x81000456
	KEYBOARD_F11          = 0x81000457
	KEYBOARD_F12          = 0x81000458
	KEYBOARD_F13          = 0x81000464
	KEYBOARD_F14          = 0x81000465
	KEYBOARD_F15          = 0x81000466
	KEYBOARD_KANA         = 0x81000470
	KEYBOARD_ABNT_C1      = 0x81000473
	KEYBOARD_CONVERT      = 0x81000479
	KEYBOARD_NOCONVERT    = 0x8100047B
	KEYBOARD_YEN          = 0x8100047D
	KEYBOARD_ABNT_C2      = 0x8100047E
	KEYBOARD_NUMPADEQUALS = 0x8100048D
	KEYBOARD_PREVTRACK    = 0x81000490
	KEYBOARD_AT           = 0x81000491
	KEYBOARD_COLON        = 0x81000492
	KEYBOARD_UNDERLINE    = 0x81000493
	KEYBOARD_KANJI        = 0x81000494
	KEYBOARD_STOP         = 0x81000495
	KEYBOARD_AX           = 0x81000496
	KEYBOARD_UNLABELED    = 0x81000497
	KEYBOARD_NEXTTRACK    = 0x81000499
	KEYBOARD_NUMPADENTER  = 0x8100049C
	KEYBOARD_RCONTROL     = 0x8100049D
	KEYBOARD_MUTE         = 0x810004A0
	KEYBOARD_CALCULATOR   = 0x810004A1
	KEYBOARD_PLAYPAUSE    = 0x810004A2
	KEYBOARD_MEDIASTOP    = 0x810004A4
	KEYBOARD_VOLUMEDOWN   = 0x810004AE
	KEYBOARD_VOLUMEUP     = 0x810004B0
	KEYBOARD_WEBHOME      = 0x810004B2
	KEYBOARD_NUMPADCOMMA  = 0x810004B3
	KEYBOARD_DIVIDE       = 0x810004B5
	KEYBOARD_SYSRQ        = 0x810004B7
	KEYBOARD_RMENU        = 0x810004B8
	KEYBOARD_PAUSE        = 0x810004C5
	KEYBOARD_HOME         = 0x810004C7
	KEYBOARD_UP           = 0x810004C8
	KEYBOARD_PRIOR        = 0x810004C9
	KEYBOARD_LEFT         = 0x810004CB
	KEYBOARD_RIGHT        = 0x810004CD
	KEYBOARD_END          = 0x810004CF
	KEYBOARD_DOWN         = 0x810004D0
	KEYBOARD_NEXT         = 0x810004D1
	KEYBOARD_INSERT       = 0x810004D2
	KEYBOARD_DELETE       = 0x810004D3
	KEYBOARD_LWIN         = 0x810004DB
	KEYBOARD_RWIN         = 0x810004DC
	KEYBOARD_APPS         = 0x810004DD
	KEYBOARD_POWER        = 0x810004DE
	KEYBOARD_SLEEP        = 0x810004DF
	KEYBOARD_WAKE         = 0x810004E3
	KEYBOARD_WEBSEARCH    = 0x810004E5
	KEYBOARD_WEBFAVORITES = 0x810004E6
	KEYBOARD_WEBREFRESH   = 0x810004E7
	KEYBOARD_WEBSTOP      = 0x810004E8
	KEYBOARD_WEBFORWARD   = 0x810004E9
	KEYBOARD_WEBBACK      = 0x810004EA
	KEYBOARD_MYCOMPUTER   = 0x810004EB
	KEYBOARD_MAIL         = 0x810004EC
	KEYBOARD_MEDIASELECT  = 0x810004ED

	MOUSE_XAXISAB = 0x82000200 | MOFS_X
	MOUSE_YAXISAB = 0x82000200 | MOFS_Y
	MOUSE_XAXIS   = 0x82000300 | MOFS_X
	MOUSE_YAXIS   = 0x82000300 | MOFS_Y
	MOUSE_WHEEL   = 0x82000300 | MOFS_Z
	MOUSE_BUTTON0 = 0x82000400 | MOFS_BUTTON0
	MOUSE_BUTTON1 = 0x82000400 | MOFS_BUTTON1
	MOUSE_BUTTON2 = 0x82000400 | MOFS_BUTTON2
	MOUSE_BUTTON3 = 0x82000400 | MOFS_BUTTON3
	MOUSE_BUTTON4 = 0x82000400 | MOFS_BUTTON4
	MOUSE_BUTTON5 = 0x82000400 | MOFS_BUTTON5
	MOUSE_BUTTON6 = 0x82000400 | MOFS_BUTTON6
	MOUSE_BUTTON7 = 0x82000400 | MOFS_BUTTON7

	VOICE_CHANNEL1     = 0x83000401
	VOICE_CHANNEL2     = 0x83000402
	VOICE_CHANNEL3     = 0x83000403
	VOICE_CHANNEL4     = 0x83000404
	VOICE_CHANNEL5     = 0x83000405
	VOICE_CHANNEL6     = 0x83000406
	VOICE_CHANNEL7     = 0x83000407
	VOICE_CHANNEL8     = 0x83000408
	VOICE_TEAM         = 0x83000409
	VOICE_ALL          = 0x8300040A
	VOICE_RECORDMUTE   = 0x8300040B
	VOICE_PLAYBACKMUTE = 0x8300040C
	VOICE_TRANSMIT     = 0x8300040D
	VOICE_VOICECOMMAND = 0x83000410

	VIRTUAL_DRIVING_RACE      = 0x01000000
	AXIS_DRIVINGR_STEER       = 0x01008A01
	AXIS_DRIVINGR_ACCELERATE  = 0x01039202
	AXIS_DRIVINGR_BRAKE       = 0x01041203
	BUTTON_DRIVINGR_SHIFTUP   = 0x01000C01
	BUTTON_DRIVINGR_SHIFTDOWN = 0x01000C02
	BUTTON_DRIVINGR_VIEW      = 0x01001C03
	BUTTON_DRIVINGR_MENU      = 0x010004FD

	AXIS_DRIVINGR_ACCEL_AND_BRAKE     = 0x01014A04
	HATSWITCH_DRIVINGR_GLANCE         = 0x01004601
	BUTTON_DRIVINGR_BRAKE             = 0x01004C04
	BUTTON_DRIVINGR_DASHBOARD         = 0x01004405
	BUTTON_DRIVINGR_AIDS              = 0x01004406
	BUTTON_DRIVINGR_MAP               = 0x01004407
	BUTTON_DRIVINGR_BOOST             = 0x01004408
	BUTTON_DRIVINGR_PIT               = 0x01004409
	BUTTON_DRIVINGR_ACCELERATE_LINK   = 0x0103D4E0
	BUTTON_DRIVINGR_STEER_LEFT_LINK   = 0x0100CCE4
	BUTTON_DRIVINGR_STEER_RIGHT_LINK  = 0x0100CCEC
	BUTTON_DRIVINGR_GLANCE_LEFT_LINK  = 0x0107C4E4
	BUTTON_DRIVINGR_GLANCE_RIGHT_LINK = 0x0107C4EC
	BUTTON_DRIVINGR_DEVICE            = 0x010044FE
	BUTTON_DRIVINGR_PAUSE             = 0x010044FC

	VIRTUAL_DRIVING_COMBAT   = 0x02000000
	AXIS_DRIVINGC_STEER      = 0x02008A01
	AXIS_DRIVINGC_ACCELERATE = 0x02039202
	AXIS_DRIVINGC_BRAKE      = 0x02041203
	BUTTON_DRIVINGC_FIRE     = 0x02000C01
	BUTTON_DRIVINGC_WEAPONS  = 0x02000C02
	BUTTON_DRIVINGC_TARGET   = 0x02000C03
	BUTTON_DRIVINGC_MENU     = 0x020004FD

	AXIS_DRIVINGC_ACCEL_AND_BRAKE     = 0x02014A04
	HATSWITCH_DRIVINGC_GLANCE         = 0x02004601
	BUTTON_DRIVINGC_SHIFTUP           = 0x02004C04
	BUTTON_DRIVINGC_SHIFTDOWN         = 0x02004C05
	BUTTON_DRIVINGC_DASHBOARD         = 0x02004406
	BUTTON_DRIVINGC_AIDS              = 0x02004407
	BUTTON_DRIVINGC_BRAKE             = 0x02004C08
	BUTTON_DRIVINGC_FIRESECONDARY     = 0x02004C09
	BUTTON_DRIVINGC_ACCELERATE_LINK   = 0x0203D4E0
	BUTTON_DRIVINGC_STEER_LEFT_LINK   = 0x0200CCE4
	BUTTON_DRIVINGC_STEER_RIGHT_LINK  = 0x0200CCEC
	BUTTON_DRIVINGC_GLANCE_LEFT_LINK  = 0x0207C4E4
	BUTTON_DRIVINGC_GLANCE_RIGHT_LINK = 0x0207C4EC
	BUTTON_DRIVINGC_DEVICE            = 0x020044FE
	BUTTON_DRIVINGC_PAUSE             = 0x020044FC

	VIRTUAL_DRIVING_TANK     = 0x03000000
	AXIS_DRIVINGT_STEER      = 0x03008A01
	AXIS_DRIVINGT_BARREL     = 0x03010202
	AXIS_DRIVINGT_ACCELERATE = 0x03039203
	AXIS_DRIVINGT_ROTATE     = 0x03020204
	BUTTON_DRIVINGT_FIRE     = 0x03000C01
	BUTTON_DRIVINGT_WEAPONS  = 0x03000C02
	BUTTON_DRIVINGT_TARGET   = 0x03000C03
	BUTTON_DRIVINGT_MENU     = 0x030004FD

	HATSWITCH_DRIVINGT_GLANCE         = 0x03004601
	AXIS_DRIVINGT_BRAKE               = 0x03045205
	AXIS_DRIVINGT_ACCEL_AND_BRAKE     = 0x03014A06
	BUTTON_DRIVINGT_VIEW              = 0x03005C04
	BUTTON_DRIVINGT_DASHBOARD         = 0x03005C05
	BUTTON_DRIVINGT_BRAKE             = 0x03004C06
	BUTTON_DRIVINGT_FIRESECONDARY     = 0x03004C07
	BUTTON_DRIVINGT_ACCELERATE_LINK   = 0x0303D4E0
	BUTTON_DRIVINGT_STEER_LEFT_LINK   = 0x0300CCE4
	BUTTON_DRIVINGT_STEER_RIGHT_LINK  = 0x0300CCEC
	BUTTON_DRIVINGT_BARREL_UP_LINK    = 0x030144E0
	BUTTON_DRIVINGT_BARREL_DOWN_LINK  = 0x030144E8
	BUTTON_DRIVINGT_ROTATE_LEFT_LINK  = 0x030244E4
	BUTTON_DRIVINGT_ROTATE_RIGHT_LINK = 0x030244EC
	BUTTON_DRIVINGT_GLANCE_LEFT_LINK  = 0x0307C4E4
	BUTTON_DRIVINGT_GLANCE_RIGHT_LINK = 0x0307C4EC
	BUTTON_DRIVINGT_DEVICE            = 0x030044FE
	BUTTON_DRIVINGT_PAUSE             = 0x030044FC

	VIRTUAL_FLYING_CIVILIAN = 0x04000000
	AXIS_FLYINGC_BANK       = 0x04008A01
	AXIS_FLYINGC_PITCH      = 0x04010A02
	AXIS_FLYINGC_THROTTLE   = 0x04039203
	BUTTON_FLYINGC_VIEW     = 0x04002401
	BUTTON_FLYINGC_DISPLAY  = 0x04002402
	BUTTON_FLYINGC_GEAR     = 0x04002C03
	BUTTON_FLYINGC_MENU     = 0x040004FD

	HATSWITCH_FLYINGC_GLANCE         = 0x04004601
	AXIS_FLYINGC_BRAKE               = 0x04046A04
	AXIS_FLYINGC_RUDDER              = 0x04025205
	AXIS_FLYINGC_FLAPS               = 0x04055A06
	BUTTON_FLYINGC_FLAPSUP           = 0x04006404
	BUTTON_FLYINGC_FLAPSDOWN         = 0x04006405
	BUTTON_FLYINGC_BRAKE_LINK        = 0x04046CE0
	BUTTON_FLYINGC_FASTER_LINK       = 0x0403D4E0
	BUTTON_FLYINGC_SLOWER_LINK       = 0x0403D4E8
	BUTTON_FLYINGC_GLANCE_LEFT_LINK  = 0x0407C4E4
	BUTTON_FLYINGC_GLANCE_RIGHT_LINK = 0x0407C4EC
	BUTTON_FLYINGC_GLANCE_UP_LINK    = 0x0407C4E0
	BUTTON_FLYINGC_GLANCE_DOWN_LINK  = 0x0407C4E8
	BUTTON_FLYINGC_DEVICE            = 0x040044FE
	BUTTON_FLYINGC_PAUSE             = 0x040044FC

	VIRTUAL_FLYING_MILITARY = 0x05000000
	AXIS_FLYINGM_BANK       = 0x05008A01
	AXIS_FLYINGM_PITCH      = 0x05010A02
	AXIS_FLYINGM_THROTTLE   = 0x05039203
	BUTTON_FLYINGM_FIRE     = 0x05000C01
	BUTTON_FLYINGM_WEAPONS  = 0x05000C02
	BUTTON_FLYINGM_TARGET   = 0x05000C03
	BUTTON_FLYINGM_MENU     = 0x050004FD

	HATSWITCH_FLYINGM_GLANCE         = 0x05004601
	BUTTON_FLYINGM_COUNTER           = 0x05005C04
	AXIS_FLYINGM_RUDDER              = 0x05024A04
	AXIS_FLYINGM_BRAKE               = 0x05046205
	BUTTON_FLYINGM_VIEW              = 0x05006405
	BUTTON_FLYINGM_DISPLAY           = 0x05006406
	AXIS_FLYINGM_FLAPS               = 0x05055206
	BUTTON_FLYINGM_FLAPSUP           = 0x05005407
	BUTTON_FLYINGM_FLAPSDOWN         = 0x05005408
	BUTTON_FLYINGM_FIRESECONDARY     = 0x05004C09
	BUTTON_FLYINGM_GEAR              = 0x0500640A
	BUTTON_FLYINGM_BRAKE_LINK        = 0x050464E0
	BUTTON_FLYINGM_FASTER_LINK       = 0x0503D4E0
	BUTTON_FLYINGM_SLOWER_LINK       = 0x0503D4E8
	BUTTON_FLYINGM_GLANCE_LEFT_LINK  = 0x0507C4E4
	BUTTON_FLYINGM_GLANCE_RIGHT_LINK = 0x0507C4EC
	BUTTON_FLYINGM_GLANCE_UP_LINK    = 0x0507C4E0
	BUTTON_FLYINGM_GLANCE_DOWN_LINK  = 0x0507C4E8
	BUTTON_FLYINGM_DEVICE            = 0x050044FE
	BUTTON_FLYINGM_PAUSE             = 0x050044FC

	VIRTUAL_FLYING_HELICOPTER = 0x06000000
	AXIS_FLYINGH_BANK         = 0x06008A01
	AXIS_FLYINGH_PITCH        = 0x06010A02
	AXIS_FLYINGH_COLLECTIVE   = 0x06018A03
	BUTTON_FLYINGH_FIRE       = 0x06001401
	BUTTON_FLYINGH_WEAPONS    = 0x06001402
	BUTTON_FLYINGH_TARGET     = 0x06001403
	BUTTON_FLYINGH_MENU       = 0x060004FD

	HATSWITCH_FLYINGH_GLANCE         = 0x06004601
	AXIS_FLYINGH_TORQUE              = 0x06025A04
	AXIS_FLYINGH_THROTTLE            = 0x0603DA05
	BUTTON_FLYINGH_COUNTER           = 0x06005404
	BUTTON_FLYINGH_VIEW              = 0x06006405
	BUTTON_FLYINGH_GEAR              = 0x06006406
	BUTTON_FLYINGH_FIRESECONDARY     = 0x06004C07
	BUTTON_FLYINGH_FASTER_LINK       = 0x0603DCE0
	BUTTON_FLYINGH_SLOWER_LINK       = 0x0603DCE8
	BUTTON_FLYINGH_GLANCE_LEFT_LINK  = 0x0607C4E4
	BUTTON_FLYINGH_GLANCE_RIGHT_LINK = 0x0607C4EC
	BUTTON_FLYINGH_GLANCE_UP_LINK    = 0x0607C4E0
	BUTTON_FLYINGH_GLANCE_DOWN_LINK  = 0x0607C4E8
	BUTTON_FLYINGH_DEVICE            = 0x060044FE
	BUTTON_FLYINGH_PAUSE             = 0x060044FC

	VIRTUAL_SPACESIM        = 0x07000000
	AXIS_SPACESIM_LATERAL   = 0x07008201
	AXIS_SPACESIM_MOVE      = 0x07010202
	AXIS_SPACESIM_THROTTLE  = 0x07038203
	BUTTON_SPACESIM_FIRE    = 0x07000401
	BUTTON_SPACESIM_WEAPONS = 0x07000402
	BUTTON_SPACESIM_TARGET  = 0x07000403
	BUTTON_SPACESIM_MENU    = 0x070004FD

	HATSWITCH_SPACESIM_GLANCE         = 0x07004601
	AXIS_SPACESIM_CLIMB               = 0x0701C204
	AXIS_SPACESIM_ROTATE              = 0x07024205
	BUTTON_SPACESIM_VIEW              = 0x07004404
	BUTTON_SPACESIM_DISPLAY           = 0x07004405
	BUTTON_SPACESIM_RAISE             = 0x07004406
	BUTTON_SPACESIM_LOWER             = 0x07004407
	BUTTON_SPACESIM_GEAR              = 0x07004408
	BUTTON_SPACESIM_FIRESECONDARY     = 0x07004409
	BUTTON_SPACESIM_LEFT_LINK         = 0x0700C4E4
	BUTTON_SPACESIM_RIGHT_LINK        = 0x0700C4EC
	BUTTON_SPACESIM_FORWARD_LINK      = 0x070144E0
	BUTTON_SPACESIM_BACKWARD_LINK     = 0x070144E8
	BUTTON_SPACESIM_FASTER_LINK       = 0x0703C4E0
	BUTTON_SPACESIM_SLOWER_LINK       = 0x0703C4E8
	BUTTON_SPACESIM_TURN_LEFT_LINK    = 0x070244E4
	BUTTON_SPACESIM_TURN_RIGHT_LINK   = 0x070244EC
	BUTTON_SPACESIM_GLANCE_LEFT_LINK  = 0x0707C4E4
	BUTTON_SPACESIM_GLANCE_RIGHT_LINK = 0x0707C4EC
	BUTTON_SPACESIM_GLANCE_UP_LINK    = 0x0707C4E0
	BUTTON_SPACESIM_GLANCE_DOWN_LINK  = 0x0707C4E8
	BUTTON_SPACESIM_DEVICE            = 0x070044FE
	BUTTON_SPACESIM_PAUSE             = 0x070044FC

	VIRTUAL_FIGHTING_HAND2HAND = 0x08000000
	AXIS_FIGHTINGH_LATERAL     = 0x08008201
	AXIS_FIGHTINGH_MOVE        = 0x08010202
	BUTTON_FIGHTINGH_PUNCH     = 0x08000401
	BUTTON_FIGHTINGH_KICK      = 0x08000402
	BUTTON_FIGHTINGH_BLOCK     = 0x08000403
	BUTTON_FIGHTINGH_CROUCH    = 0x08000404
	BUTTON_FIGHTINGH_JUMP      = 0x08000405
	BUTTON_FIGHTINGH_SPECIAL1  = 0x08000406
	BUTTON_FIGHTINGH_SPECIAL2  = 0x08000407
	BUTTON_FIGHTINGH_MENU      = 0x080004FD

	BUTTON_FIGHTINGH_SELECT        = 0x08004408
	HATSWITCH_FIGHTINGH_SLIDE      = 0x08004601
	BUTTON_FIGHTINGH_DISPLAY       = 0x08004409
	AXIS_FIGHTINGH_ROTATE          = 0x08024203
	BUTTON_FIGHTINGH_DODGE         = 0x0800440A
	BUTTON_FIGHTINGH_LEFT_LINK     = 0x0800C4E4
	BUTTON_FIGHTINGH_RIGHT_LINK    = 0x0800C4EC
	BUTTON_FIGHTINGH_FORWARD_LINK  = 0x080144E0
	BUTTON_FIGHTINGH_BACKWARD_LINK = 0x080144E8
	BUTTON_FIGHTINGH_DEVICE        = 0x080044FE
	BUTTON_FIGHTINGH_PAUSE         = 0x080044FC

	VIRTUAL_FIGHTING_FPS = 0x09000000
	AXIS_FPS_ROTATE      = 0x09008201
	AXIS_FPS_MOVE        = 0x09010202
	BUTTON_FPS_FIRE      = 0x09000401
	BUTTON_FPS_WEAPONS   = 0x09000402
	BUTTON_FPS_APPLY     = 0x09000403
	BUTTON_FPS_SELECT    = 0x09000404
	BUTTON_FPS_CROUCH    = 0x09000405
	BUTTON_FPS_JUMP      = 0x09000406
	AXIS_FPS_LOOKUPDOWN  = 0x09018203
	BUTTON_FPS_STRAFE    = 0x09000407
	BUTTON_FPS_MENU      = 0x090004FD

	HATSWITCH_FPS_GLANCE         = 0x09004601
	BUTTON_FPS_DISPLAY           = 0x09004408
	AXIS_FPS_SIDESTEP            = 0x09024204
	BUTTON_FPS_DODGE             = 0x09004409
	BUTTON_FPS_GLANCEL           = 0x0900440A
	BUTTON_FPS_GLANCER           = 0x0900440B
	BUTTON_FPS_FIRESECONDARY     = 0x0900440C
	BUTTON_FPS_ROTATE_LEFT_LINK  = 0x0900C4E4
	BUTTON_FPS_ROTATE_RIGHT_LINK = 0x0900C4EC
	BUTTON_FPS_FORWARD_LINK      = 0x090144E0
	BUTTON_FPS_BACKWARD_LINK     = 0x090144E8
	BUTTON_FPS_GLANCE_UP_LINK    = 0x0901C4E0
	BUTTON_FPS_GLANCE_DOWN_LINK  = 0x0901C4E8
	BUTTON_FPS_STEP_LEFT_LINK    = 0x090244E4
	BUTTON_FPS_STEP_RIGHT_LINK   = 0x090244EC
	BUTTON_FPS_DEVICE            = 0x090044FE
	BUTTON_FPS_PAUSE             = 0x090044FC

	VIRTUAL_FIGHTING_THIRDPERSON = 0x0A000000
	AXIS_TPS_TURN                = 0x0A020201
	AXIS_TPS_MOVE                = 0x0A010202
	BUTTON_TPS_RUN               = 0x0A000401
	BUTTON_TPS_ACTION            = 0x0A000402
	BUTTON_TPS_SELECT            = 0x0A000403
	BUTTON_TPS_USE               = 0x0A000404
	BUTTON_TPS_JUMP              = 0x0A000405
	BUTTON_TPS_MENU              = 0x0A0004FD

	HATSWITCH_TPS_GLANCE         = 0x0A004601
	BUTTON_TPS_VIEW              = 0x0A004406
	BUTTON_TPS_STEPLEFT          = 0x0A004407
	BUTTON_TPS_STEPRIGHT         = 0x0A004408
	AXIS_TPS_STEP                = 0x0A00C203
	BUTTON_TPS_DODGE             = 0x0A004409
	BUTTON_TPS_INVENTORY         = 0x0A00440A
	BUTTON_TPS_TURN_LEFT_LINK    = 0x0A0244E4
	BUTTON_TPS_TURN_RIGHT_LINK   = 0x0A0244EC
	BUTTON_TPS_FORWARD_LINK      = 0x0A0144E0
	BUTTON_TPS_BACKWARD_LINK     = 0x0A0144E8
	BUTTON_TPS_GLANCE_UP_LINK    = 0x0A07C4E0
	BUTTON_TPS_GLANCE_DOWN_LINK  = 0x0A07C4E8
	BUTTON_TPS_GLANCE_LEFT_LINK  = 0x0A07C4E4
	BUTTON_TPS_GLANCE_RIGHT_LINK = 0x0A07C4EC
	BUTTON_TPS_DEVICE            = 0x0A0044FE
	BUTTON_TPS_PAUSE             = 0x0A0044FC

	VIRTUAL_STRATEGY_ROLEPLAYING = 0x0B000000
	AXIS_STRATEGYR_LATERAL       = 0x0B008201
	AXIS_STRATEGYR_MOVE          = 0x0B010202
	BUTTON_STRATEGYR_GET         = 0x0B000401
	BUTTON_STRATEGYR_APPLY       = 0x0B000402
	BUTTON_STRATEGYR_SELECT      = 0x0B000403
	BUTTON_STRATEGYR_ATTACK      = 0x0B000404
	BUTTON_STRATEGYR_CAST        = 0x0B000405
	BUTTON_STRATEGYR_CROUCH      = 0x0B000406
	BUTTON_STRATEGYR_JUMP        = 0x0B000407
	BUTTON_STRATEGYR_MENU        = 0x0B0004FD

	HATSWITCH_STRATEGYR_GLANCE         = 0x0B004601
	BUTTON_STRATEGYR_MAP               = 0x0B004408
	BUTTON_STRATEGYR_DISPLAY           = 0x0B004409
	AXIS_STRATEGYR_ROTATE              = 0x0B024203
	BUTTON_STRATEGYR_LEFT_LINK         = 0x0B00C4E4
	BUTTON_STRATEGYR_RIGHT_LINK        = 0x0B00C4EC
	BUTTON_STRATEGYR_FORWARD_LINK      = 0x0B0144E0
	BUTTON_STRATEGYR_BACK_LINK         = 0x0B0144E8
	BUTTON_STRATEGYR_ROTATE_LEFT_LINK  = 0x0B0244E4
	BUTTON_STRATEGYR_ROTATE_RIGHT_LINK = 0x0B0244EC
	BUTTON_STRATEGYR_DEVICE            = 0x0B0044FE
	BUTTON_STRATEGYR_PAUSE             = 0x0B0044FC

	VIRTUAL_STRATEGY_TURN     = 0x0C000000
	AXIS_STRATEGYT_LATERAL    = 0x0C008201
	AXIS_STRATEGYT_MOVE       = 0x0C010202
	BUTTON_STRATEGYT_SELECT   = 0x0C000401
	BUTTON_STRATEGYT_INSTRUCT = 0x0C000402
	BUTTON_STRATEGYT_APPLY    = 0x0C000403
	BUTTON_STRATEGYT_TEAM     = 0x0C000404
	BUTTON_STRATEGYT_TURN     = 0x0C000405
	BUTTON_STRATEGYT_MENU     = 0x0C0004FD

	BUTTON_STRATEGYT_ZOOM         = 0x0C004406
	BUTTON_STRATEGYT_MAP          = 0x0C004407
	BUTTON_STRATEGYT_DISPLAY      = 0x0C004408
	BUTTON_STRATEGYT_LEFT_LINK    = 0x0C00C4E4
	BUTTON_STRATEGYT_RIGHT_LINK   = 0x0C00C4EC
	BUTTON_STRATEGYT_FORWARD_LINK = 0x0C0144E0
	BUTTON_STRATEGYT_BACK_LINK    = 0x0C0144E8
	BUTTON_STRATEGYT_DEVICE       = 0x0C0044FE
	BUTTON_STRATEGYT_PAUSE        = 0x0C0044FC

	VIRTUAL_SPORTS_HUNTING   = 0x0D000000
	AXIS_HUNTING_LATERAL     = 0x0D008201
	AXIS_HUNTING_MOVE        = 0x0D010202
	BUTTON_HUNTING_FIRE      = 0x0D000401
	BUTTON_HUNTING_AIM       = 0x0D000402
	BUTTON_HUNTING_WEAPON    = 0x0D000403
	BUTTON_HUNTING_BINOCULAR = 0x0D000404
	BUTTON_HUNTING_CALL      = 0x0D000405
	BUTTON_HUNTING_MAP       = 0x0D000406
	BUTTON_HUNTING_SPECIAL   = 0x0D000407
	BUTTON_HUNTING_MENU      = 0x0D0004FD

	HATSWITCH_HUNTING_GLANCE         = 0x0D004601
	BUTTON_HUNTING_DISPLAY           = 0x0D004408
	AXIS_HUNTING_ROTATE              = 0x0D024203
	BUTTON_HUNTING_CROUCH            = 0x0D004409
	BUTTON_HUNTING_JUMP              = 0x0D00440A
	BUTTON_HUNTING_FIRESECONDARY     = 0x0D00440B
	BUTTON_HUNTING_LEFT_LINK         = 0x0D00C4E4
	BUTTON_HUNTING_RIGHT_LINK        = 0x0D00C4EC
	BUTTON_HUNTING_FORWARD_LINK      = 0x0D0144E0
	BUTTON_HUNTING_BACK_LINK         = 0x0D0144E8
	BUTTON_HUNTING_ROTATE_LEFT_LINK  = 0x0D0244E4
	BUTTON_HUNTING_ROTATE_RIGHT_LINK = 0x0D0244EC
	BUTTON_HUNTING_DEVICE            = 0x0D0044FE
	BUTTON_HUNTING_PAUSE             = 0x0D0044FC

	VIRTUAL_SPORTS_FISHING   = 0x0E000000
	AXIS_FISHING_LATERAL     = 0x0E008201
	AXIS_FISHING_MOVE        = 0x0E010202
	BUTTON_FISHING_CAST      = 0x0E000401
	BUTTON_FISHING_TYPE      = 0x0E000402
	BUTTON_FISHING_BINOCULAR = 0x0E000403
	BUTTON_FISHING_BAIT      = 0x0E000404
	BUTTON_FISHING_MAP       = 0x0E000405
	BUTTON_FISHING_MENU      = 0x0E0004FD

	HATSWITCH_FISHING_GLANCE         = 0x0E004601
	BUTTON_FISHING_DISPLAY           = 0x0E004406
	AXIS_FISHING_ROTATE              = 0x0E024203
	BUTTON_FISHING_CROUCH            = 0x0E004407
	BUTTON_FISHING_JUMP              = 0x0E004408
	BUTTON_FISHING_LEFT_LINK         = 0x0E00C4E4
	BUTTON_FISHING_RIGHT_LINK        = 0x0E00C4EC
	BUTTON_FISHING_FORWARD_LINK      = 0x0E0144E0
	BUTTON_FISHING_BACK_LINK         = 0x0E0144E8
	BUTTON_FISHING_ROTATE_LEFT_LINK  = 0x0E0244E4
	BUTTON_FISHING_ROTATE_RIGHT_LINK = 0x0E0244EC
	BUTTON_FISHING_DEVICE            = 0x0E0044FE
	BUTTON_FISHING_PAUSE             = 0x0E0044FC

	VIRTUAL_SPORTS_BASEBALL_BAT = 0x0F000000
	AXIS_BASEBALLB_LATERAL      = 0x0F008201
	AXIS_BASEBALLB_MOVE         = 0x0F010202
	BUTTON_BASEBALLB_SELECT     = 0x0F000401
	BUTTON_BASEBALLB_NORMAL     = 0x0F000402
	BUTTON_BASEBALLB_POWER      = 0x0F000403
	BUTTON_BASEBALLB_BUNT       = 0x0F000404
	BUTTON_BASEBALLB_STEAL      = 0x0F000405
	BUTTON_BASEBALLB_BURST      = 0x0F000406
	BUTTON_BASEBALLB_SLIDE      = 0x0F000407
	BUTTON_BASEBALLB_CONTACT    = 0x0F000408
	BUTTON_BASEBALLB_MENU       = 0x0F0004FD

	BUTTON_BASEBALLB_NOSTEAL      = 0x0F004409
	BUTTON_BASEBALLB_BOX          = 0x0F00440A
	BUTTON_BASEBALLB_LEFT_LINK    = 0x0F00C4E4
	BUTTON_BASEBALLB_RIGHT_LINK   = 0x0F00C4EC
	BUTTON_BASEBALLB_FORWARD_LINK = 0x0F0144E0
	BUTTON_BASEBALLB_BACK_LINK    = 0x0F0144E8
	BUTTON_BASEBALLB_DEVICE       = 0x0F0044FE
	BUTTON_BASEBALLB_PAUSE        = 0x0F0044FC

	VIRTUAL_SPORTS_BASEBALL_PITCH = 0x10000000
	AXIS_BASEBALLP_LATERAL        = 0x10008201
	AXIS_BASEBALLP_MOVE           = 0x10010202
	BUTTON_BASEBALLP_SELECT       = 0x10000401
	BUTTON_BASEBALLP_PITCH        = 0x10000402
	BUTTON_BASEBALLP_BASE         = 0x10000403
	BUTTON_BASEBALLP_THROW        = 0x10000404
	BUTTON_BASEBALLP_FAKE         = 0x10000405
	BUTTON_BASEBALLP_MENU         = 0x100004FD

	BUTTON_BASEBALLP_WALK         = 0x10004406
	BUTTON_BASEBALLP_LOOK         = 0x10004407
	BUTTON_BASEBALLP_LEFT_LINK    = 0x1000C4E4
	BUTTON_BASEBALLP_RIGHT_LINK   = 0x1000C4EC
	BUTTON_BASEBALLP_FORWARD_LINK = 0x100144E0
	BUTTON_BASEBALLP_BACK_LINK    = 0x100144E8
	BUTTON_BASEBALLP_DEVICE       = 0x100044FE
	BUTTON_BASEBALLP_PAUSE        = 0x100044FC

	VIRTUAL_SPORTS_BASEBALL_FIELD = 0x11000000
	AXIS_BASEBALLF_LATERAL        = 0x11008201
	AXIS_BASEBALLF_MOVE           = 0x11010202
	BUTTON_BASEBALLF_NEAREST      = 0x11000401
	BUTTON_BASEBALLF_THROW1       = 0x11000402
	BUTTON_BASEBALLF_THROW2       = 0x11000403
	BUTTON_BASEBALLF_BURST        = 0x11000404
	BUTTON_BASEBALLF_JUMP         = 0x11000405
	BUTTON_BASEBALLF_DIVE         = 0x11000406
	BUTTON_BASEBALLF_MENU         = 0x110004FD

	BUTTON_BASEBALLF_SHIFTIN        = 0x11004407
	BUTTON_BASEBALLF_SHIFTOUT       = 0x11004408
	BUTTON_BASEBALLF_AIM_LEFT_LINK  = 0x1100C4E4
	BUTTON_BASEBALLF_AIM_RIGHT_LINK = 0x1100C4EC
	BUTTON_BASEBALLF_FORWARD_LINK   = 0x110144E0
	BUTTON_BASEBALLF_BACK_LINK      = 0x110144E8
	BUTTON_BASEBALLF_DEVICE         = 0x110044FE
	BUTTON_BASEBALLF_PAUSE          = 0x110044FC

	VIRTUAL_SPORTS_BASKETBALL_OFFENSE = 0x12000000
	AXIS_BBALLO_LATERAL               = 0x12008201
	AXIS_BBALLO_MOVE                  = 0x12010202
	BUTTON_BBALLO_SHOOT               = 0x12000401
	BUTTON_BBALLO_DUNK                = 0x12000402
	BUTTON_BBALLO_PASS                = 0x12000403
	BUTTON_BBALLO_FAKE                = 0x12000404
	BUTTON_BBALLO_SPECIAL             = 0x12000405
	BUTTON_BBALLO_PLAYER              = 0x12000406
	BUTTON_BBALLO_BURST               = 0x12000407
	BUTTON_BBALLO_CALL                = 0x12000408
	BUTTON_BBALLO_MENU                = 0x120004FD

	HATSWITCH_BBALLO_GLANCE    = 0x12004601
	BUTTON_BBALLO_SCREEN       = 0x12004409
	BUTTON_BBALLO_PLAY         = 0x1200440A
	BUTTON_BBALLO_JAB          = 0x1200440B
	BUTTON_BBALLO_POST         = 0x1200440C
	BUTTON_BBALLO_TIMEOUT      = 0x1200440D
	BUTTON_BBALLO_SUBSTITUTE   = 0x1200440E
	BUTTON_BBALLO_LEFT_LINK    = 0x1200C4E4
	BUTTON_BBALLO_RIGHT_LINK   = 0x1200C4EC
	BUTTON_BBALLO_FORWARD_LINK = 0x120144E0
	BUTTON_BBALLO_BACK_LINK    = 0x120144E8
	BUTTON_BBALLO_DEVICE       = 0x120044FE
	BUTTON_BBALLO_PAUSE        = 0x120044FC

	VIRTUAL_SPORTS_BASKETBALL_DEFENSE = 0x13000000
	AXIS_BBALLD_LATERAL               = 0x13008201
	AXIS_BBALLD_MOVE                  = 0x13010202
	BUTTON_BBALLD_JUMP                = 0x13000401
	BUTTON_BBALLD_STEAL               = 0x13000402
	BUTTON_BBALLD_FAKE                = 0x13000403
	BUTTON_BBALLD_SPECIAL             = 0x13000404
	BUTTON_BBALLD_PLAYER              = 0x13000405
	BUTTON_BBALLD_BURST               = 0x13000406
	BUTTON_BBALLD_PLAY                = 0x13000407
	BUTTON_BBALLD_MENU                = 0x130004FD

	HATSWITCH_BBALLD_GLANCE    = 0x13004601
	BUTTON_BBALLD_TIMEOUT      = 0x13004408
	BUTTON_BBALLD_SUBSTITUTE   = 0x13004409
	BUTTON_BBALLD_LEFT_LINK    = 0x1300C4E4
	BUTTON_BBALLD_RIGHT_LINK   = 0x1300C4EC
	BUTTON_BBALLD_FORWARD_LINK = 0x130144E0
	BUTTON_BBALLD_BACK_LINK    = 0x130144E8
	BUTTON_BBALLD_DEVICE       = 0x130044FE
	BUTTON_BBALLD_PAUSE        = 0x130044FC

	VIRTUAL_SPORTS_FOOTBALL_FIELD = 0x14000000
	BUTTON_FOOTBALLP_PLAY         = 0x14000401
	BUTTON_FOOTBALLP_SELECT       = 0x14000402
	BUTTON_FOOTBALLP_HELP         = 0x14000403
	BUTTON_FOOTBALLP_MENU         = 0x140004FD

	BUTTON_FOOTBALLP_DEVICE = 0x140044FE
	BUTTON_FOOTBALLP_PAUSE  = 0x140044FC

	VIRTUAL_SPORTS_FOOTBALL_QBCK = 0x15000000
	AXIS_FOOTBALLQ_LATERAL       = 0x15008201
	AXIS_FOOTBALLQ_MOVE          = 0x15010202
	BUTTON_FOOTBALLQ_SELECT      = 0x15000401
	BUTTON_FOOTBALLQ_SNAP        = 0x15000402
	BUTTON_FOOTBALLQ_JUMP        = 0x15000403
	BUTTON_FOOTBALLQ_SLIDE       = 0x15000404
	BUTTON_FOOTBALLQ_PASS        = 0x15000405
	BUTTON_FOOTBALLQ_FAKE        = 0x15000406
	BUTTON_FOOTBALLQ_MENU        = 0x150004FD

	BUTTON_FOOTBALLQ_FAKESNAP     = 0x15004407
	BUTTON_FOOTBALLQ_MOTION       = 0x15004408
	BUTTON_FOOTBALLQ_AUDIBLE      = 0x15004409
	BUTTON_FOOTBALLQ_LEFT_LINK    = 0x1500C4E4
	BUTTON_FOOTBALLQ_RIGHT_LINK   = 0x1500C4EC
	BUTTON_FOOTBALLQ_FORWARD_LINK = 0x150144E0
	BUTTON_FOOTBALLQ_BACK_LINK    = 0x150144E8
	BUTTON_FOOTBALLQ_DEVICE       = 0x150044FE
	BUTTON_FOOTBALLQ_PAUSE        = 0x150044FC

	VIRTUAL_SPORTS_FOOTBALL_OFFENSE = 0x16000000
	AXIS_FOOTBALLO_LATERAL          = 0x16008201
	AXIS_FOOTBALLO_MOVE             = 0x16010202
	BUTTON_FOOTBALLO_JUMP           = 0x16000401
	BUTTON_FOOTBALLO_LEFTARM        = 0x16000402
	BUTTON_FOOTBALLO_RIGHTARM       = 0x16000403
	BUTTON_FOOTBALLO_THROW          = 0x16000404
	BUTTON_FOOTBALLO_SPIN           = 0x16000405
	BUTTON_FOOTBALLO_MENU           = 0x160004FD

	BUTTON_FOOTBALLO_JUKE         = 0x16004406
	BUTTON_FOOTBALLO_SHOULDER     = 0x16004407
	BUTTON_FOOTBALLO_TURBO        = 0x16004408
	BUTTON_FOOTBALLO_DIVE         = 0x16004409
	BUTTON_FOOTBALLO_ZOOM         = 0x1600440A
	BUTTON_FOOTBALLO_SUBSTITUTE   = 0x1600440B
	BUTTON_FOOTBALLO_LEFT_LINK    = 0x1600C4E4
	BUTTON_FOOTBALLO_RIGHT_LINK   = 0x1600C4EC
	BUTTON_FOOTBALLO_FORWARD_LINK = 0x160144E0
	BUTTON_FOOTBALLO_BACK_LINK    = 0x160144E8
	BUTTON_FOOTBALLO_DEVICE       = 0x160044FE
	BUTTON_FOOTBALLO_PAUSE        = 0x160044FC

	VIRTUAL_SPORTS_FOOTBALL_DEFENSE = 0x17000000
	AXIS_FOOTBALLD_LATERAL          = 0x17008201
	AXIS_FOOTBALLD_MOVE             = 0x17010202
	BUTTON_FOOTBALLD_PLAY           = 0x17000401
	BUTTON_FOOTBALLD_SELECT         = 0x17000402
	BUTTON_FOOTBALLD_JUMP           = 0x17000403
	BUTTON_FOOTBALLD_TACKLE         = 0x17000404
	BUTTON_FOOTBALLD_FAKE           = 0x17000405
	BUTTON_FOOTBALLD_SUPERTACKLE    = 0x17000406
	BUTTON_FOOTBALLD_MENU           = 0x170004FD

	BUTTON_FOOTBALLD_SPIN         = 0x17004407
	BUTTON_FOOTBALLD_SWIM         = 0x17004408
	BUTTON_FOOTBALLD_BULLRUSH     = 0x17004409
	BUTTON_FOOTBALLD_RIP          = 0x1700440A
	BUTTON_FOOTBALLD_AUDIBLE      = 0x1700440B
	BUTTON_FOOTBALLD_ZOOM         = 0x1700440C
	BUTTON_FOOTBALLD_SUBSTITUTE   = 0x1700440D
	BUTTON_FOOTBALLD_LEFT_LINK    = 0x1700C4E4
	BUTTON_FOOTBALLD_RIGHT_LINK   = 0x1700C4EC
	BUTTON_FOOTBALLD_FORWARD_LINK = 0x170144E0
	BUTTON_FOOTBALLD_BACK_LINK    = 0x170144E8
	BUTTON_FOOTBALLD_DEVICE       = 0x170044FE
	BUTTON_FOOTBALLD_PAUSE        = 0x170044FC

	VIRTUAL_SPORTS_GOLF = 0x18000000
	AXIS_GOLF_LATERAL   = 0x18008201
	AXIS_GOLF_MOVE      = 0x18010202
	BUTTON_GOLF_SWING   = 0x18000401
	BUTTON_GOLF_SELECT  = 0x18000402
	BUTTON_GOLF_UP      = 0x18000403
	BUTTON_GOLF_DOWN    = 0x18000404
	BUTTON_GOLF_TERRAIN = 0x18000405
	BUTTON_GOLF_FLYBY   = 0x18000406
	BUTTON_GOLF_MENU    = 0x180004FD

	HATSWITCH_GOLF_SCROLL    = 0x18004601
	BUTTON_GOLF_ZOOM         = 0x18004407
	BUTTON_GOLF_TIMEOUT      = 0x18004408
	BUTTON_GOLF_SUBSTITUTE   = 0x18004409
	BUTTON_GOLF_LEFT_LINK    = 0x1800C4E4
	BUTTON_GOLF_RIGHT_LINK   = 0x1800C4EC
	BUTTON_GOLF_FORWARD_LINK = 0x180144E0
	BUTTON_GOLF_BACK_LINK    = 0x180144E8
	BUTTON_GOLF_DEVICE       = 0x180044FE
	BUTTON_GOLF_PAUSE        = 0x180044FC

	VIRTUAL_SPORTS_HOCKEY_OFFENSE = 0x19000000
	AXIS_HOCKEYO_LATERAL          = 0x19008201
	AXIS_HOCKEYO_MOVE             = 0x19010202
	BUTTON_HOCKEYO_SHOOT          = 0x19000401
	BUTTON_HOCKEYO_PASS           = 0x19000402
	BUTTON_HOCKEYO_BURST          = 0x19000403
	BUTTON_HOCKEYO_SPECIAL        = 0x19000404
	BUTTON_HOCKEYO_FAKE           = 0x19000405
	BUTTON_HOCKEYO_MENU           = 0x190004FD

	HATSWITCH_HOCKEYO_SCROLL    = 0x19004601
	BUTTON_HOCKEYO_ZOOM         = 0x19004406
	BUTTON_HOCKEYO_STRATEGY     = 0x19004407
	BUTTON_HOCKEYO_TIMEOUT      = 0x19004408
	BUTTON_HOCKEYO_SUBSTITUTE   = 0x19004409
	BUTTON_HOCKEYO_LEFT_LINK    = 0x1900C4E4
	BUTTON_HOCKEYO_RIGHT_LINK   = 0x1900C4EC
	BUTTON_HOCKEYO_FORWARD_LINK = 0x190144E0
	BUTTON_HOCKEYO_BACK_LINK    = 0x190144E8
	BUTTON_HOCKEYO_DEVICE       = 0x190044FE
	BUTTON_HOCKEYO_PAUSE        = 0x190044FC

	VIRTUAL_SPORTS_HOCKEY_DEFENSE = 0x1A000000
	AXIS_HOCKEYD_LATERAL          = 0x1A008201
	AXIS_HOCKEYD_MOVE             = 0x1A010202
	BUTTON_HOCKEYD_PLAYER         = 0x1A000401
	BUTTON_HOCKEYD_STEAL          = 0x1A000402
	BUTTON_HOCKEYD_BURST          = 0x1A000403
	BUTTON_HOCKEYD_BLOCK          = 0x1A000404
	BUTTON_HOCKEYD_FAKE           = 0x1A000405
	BUTTON_HOCKEYD_MENU           = 0x1A0004FD

	HATSWITCH_HOCKEYD_SCROLL    = 0x1A004601
	BUTTON_HOCKEYD_ZOOM         = 0x1A004406
	BUTTON_HOCKEYD_STRATEGY     = 0x1A004407
	BUTTON_HOCKEYD_TIMEOUT      = 0x1A004408
	BUTTON_HOCKEYD_SUBSTITUTE   = 0x1A004409
	BUTTON_HOCKEYD_LEFT_LINK    = 0x1A00C4E4
	BUTTON_HOCKEYD_RIGHT_LINK   = 0x1A00C4EC
	BUTTON_HOCKEYD_FORWARD_LINK = 0x1A0144E0
	BUTTON_HOCKEYD_BACK_LINK    = 0x1A0144E8
	BUTTON_HOCKEYD_DEVICE       = 0x1A0044FE
	BUTTON_HOCKEYD_PAUSE        = 0x1A0044FC

	VIRTUAL_SPORTS_HOCKEY_GOALIE = 0x1B000000
	AXIS_HOCKEYG_LATERAL         = 0x1B008201
	AXIS_HOCKEYG_MOVE            = 0x1B010202
	BUTTON_HOCKEYG_PASS          = 0x1B000401
	BUTTON_HOCKEYG_POKE          = 0x1B000402
	BUTTON_HOCKEYG_STEAL         = 0x1B000403
	BUTTON_HOCKEYG_BLOCK         = 0x1B000404
	BUTTON_HOCKEYG_MENU          = 0x1B0004FD

	HATSWITCH_HOCKEYG_SCROLL    = 0x1B004601
	BUTTON_HOCKEYG_ZOOM         = 0x1B004405
	BUTTON_HOCKEYG_STRATEGY     = 0x1B004406
	BUTTON_HOCKEYG_TIMEOUT      = 0x1B004407
	BUTTON_HOCKEYG_SUBSTITUTE   = 0x1B004408
	BUTTON_HOCKEYG_LEFT_LINK    = 0x1B00C4E4
	BUTTON_HOCKEYG_RIGHT_LINK   = 0x1B00C4EC
	BUTTON_HOCKEYG_FORWARD_LINK = 0x1B0144E0
	BUTTON_HOCKEYG_BACK_LINK    = 0x1B0144E8
	BUTTON_HOCKEYG_DEVICE       = 0x1B0044FE
	BUTTON_HOCKEYG_PAUSE        = 0x1B0044FC

	VIRTUAL_SPORTS_BIKING_MOUNTAIN = 0x1C000000
	AXIS_BIKINGM_TURN              = 0x1C008201
	AXIS_BIKINGM_PEDAL             = 0x1C010202
	BUTTON_BIKINGM_JUMP            = 0x1C000401
	BUTTON_BIKINGM_CAMERA          = 0x1C000402
	BUTTON_BIKINGM_SPECIAL1        = 0x1C000403
	BUTTON_BIKINGM_SELECT          = 0x1C000404
	BUTTON_BIKINGM_SPECIAL2        = 0x1C000405
	BUTTON_BIKINGM_MENU            = 0x1C0004FD

	HATSWITCH_BIKINGM_SCROLL         = 0x1C004601
	BUTTON_BIKINGM_ZOOM              = 0x1C004406
	AXIS_BIKINGM_BRAKE               = 0x1C044203
	BUTTON_BIKINGM_LEFT_LINK         = 0x1C00C4E4
	BUTTON_BIKINGM_RIGHT_LINK        = 0x1C00C4EC
	BUTTON_BIKINGM_FASTER_LINK       = 0x1C0144E0
	BUTTON_BIKINGM_SLOWER_LINK       = 0x1C0144E8
	BUTTON_BIKINGM_BRAKE_BUTTON_LINK = 0x1C0444E8
	BUTTON_BIKINGM_DEVICE            = 0x1C0044FE
	BUTTON_BIKINGM_PAUSE             = 0x1C0044FC

	VIRTUAL_SPORTS_SKIING  = 0x1D000000
	AXIS_SKIING_TURN       = 0x1D008201
	AXIS_SKIING_SPEED      = 0x1D010202
	BUTTON_SKIING_JUMP     = 0x1D000401
	BUTTON_SKIING_CROUCH   = 0x1D000402
	BUTTON_SKIING_CAMERA   = 0x1D000403
	BUTTON_SKIING_SPECIAL1 = 0x1D000404
	BUTTON_SKIING_SELECT   = 0x1D000405
	BUTTON_SKIING_SPECIAL2 = 0x1D000406
	BUTTON_SKIING_MENU     = 0x1D0004FD

	HATSWITCH_SKIING_GLANCE   = 0x1D004601
	BUTTON_SKIING_ZOOM        = 0x1D004407
	BUTTON_SKIING_LEFT_LINK   = 0x1D00C4E4
	BUTTON_SKIING_RIGHT_LINK  = 0x1D00C4EC
	BUTTON_SKIING_FASTER_LINK = 0x1D0144E0
	BUTTON_SKIING_SLOWER_LINK = 0x1D0144E8
	BUTTON_SKIING_DEVICE      = 0x1D0044FE
	BUTTON_SKIING_PAUSE       = 0x1D0044FC

	VIRTUAL_SPORTS_SOCCER_OFFENSE = 0x1E000000
	AXIS_SOCCERO_LATERAL          = 0x1E008201
	AXIS_SOCCERO_MOVE             = 0x1E010202
	AXIS_SOCCERO_BEND             = 0x1E018203
	BUTTON_SOCCERO_SHOOT          = 0x1E000401
	BUTTON_SOCCERO_PASS           = 0x1E000402
	BUTTON_SOCCERO_FAKE           = 0x1E000403
	BUTTON_SOCCERO_PLAYER         = 0x1E000404
	BUTTON_SOCCERO_SPECIAL1       = 0x1E000405
	BUTTON_SOCCERO_SELECT         = 0x1E000406
	BUTTON_SOCCERO_MENU           = 0x1E0004FD

	HATSWITCH_SOCCERO_GLANCE    = 0x1E004601
	BUTTON_SOCCERO_SUBSTITUTE   = 0x1E004407
	BUTTON_SOCCERO_SHOOTLOW     = 0x1E004408
	BUTTON_SOCCERO_SHOOTHIGH    = 0x1E004409
	BUTTON_SOCCERO_PASSTHRU     = 0x1E00440A
	BUTTON_SOCCERO_SPRINT       = 0x1E00440B
	BUTTON_SOCCERO_CONTROL      = 0x1E00440C
	BUTTON_SOCCERO_HEAD         = 0x1E00440D
	BUTTON_SOCCERO_LEFT_LINK    = 0x1E00C4E4
	BUTTON_SOCCERO_RIGHT_LINK   = 0x1E00C4EC
	BUTTON_SOCCERO_FORWARD_LINK = 0x1E0144E0
	BUTTON_SOCCERO_BACK_LINK    = 0x1E0144E8
	BUTTON_SOCCERO_DEVICE       = 0x1E0044FE
	BUTTON_SOCCERO_PAUSE        = 0x1E0044FC

	VIRTUAL_SPORTS_SOCCER_DEFENSE = 0x1F000000
	AXIS_SOCCERD_LATERAL          = 0x1F008201
	AXIS_SOCCERD_MOVE             = 0x1F010202
	BUTTON_SOCCERD_BLOCK          = 0x1F000401
	BUTTON_SOCCERD_STEAL          = 0x1F000402
	BUTTON_SOCCERD_FAKE           = 0x1F000403
	BUTTON_SOCCERD_PLAYER         = 0x1F000404
	BUTTON_SOCCERD_SPECIAL        = 0x1F000405
	BUTTON_SOCCERD_SELECT         = 0x1F000406
	BUTTON_SOCCERD_SLIDE          = 0x1F000407
	BUTTON_SOCCERD_MENU           = 0x1F0004FD

	HATSWITCH_SOCCERD_GLANCE    = 0x1F004601
	BUTTON_SOCCERD_FOUL         = 0x1F004408
	BUTTON_SOCCERD_HEAD         = 0x1F004409
	BUTTON_SOCCERD_CLEAR        = 0x1F00440A
	BUTTON_SOCCERD_GOALIECHARGE = 0x1F00440B
	BUTTON_SOCCERD_SUBSTITUTE   = 0x1F00440C
	BUTTON_SOCCERD_LEFT_LINK    = 0x1F00C4E4
	BUTTON_SOCCERD_RIGHT_LINK   = 0x1F00C4EC
	BUTTON_SOCCERD_FORWARD_LINK = 0x1F0144E0
	BUTTON_SOCCERD_BACK_LINK    = 0x1F0144E8
	BUTTON_SOCCERD_DEVICE       = 0x1F0044FE
	BUTTON_SOCCERD_PAUSE        = 0x1F0044FC

	VIRTUAL_SPORTS_RACQUET   = 0x20000000
	AXIS_RACQUET_LATERAL     = 0x20008201
	AXIS_RACQUET_MOVE        = 0x20010202
	BUTTON_RACQUET_SWING     = 0x20000401
	BUTTON_RACQUET_BACKSWING = 0x20000402
	BUTTON_RACQUET_SMASH     = 0x20000403
	BUTTON_RACQUET_SPECIAL   = 0x20000404
	BUTTON_RACQUET_SELECT    = 0x20000405
	BUTTON_RACQUET_MENU      = 0x200004FD

	HATSWITCH_RACQUET_GLANCE    = 0x20004601
	BUTTON_RACQUET_TIMEOUT      = 0x20004406
	BUTTON_RACQUET_SUBSTITUTE   = 0x20004407
	BUTTON_RACQUET_LEFT_LINK    = 0x2000C4E4
	BUTTON_RACQUET_RIGHT_LINK   = 0x2000C4EC
	BUTTON_RACQUET_FORWARD_LINK = 0x200144E0
	BUTTON_RACQUET_BACK_LINK    = 0x200144E8
	BUTTON_RACQUET_DEVICE       = 0x200044FE
	BUTTON_RACQUET_PAUSE        = 0x200044FC

	VIRTUAL_ARCADE_SIDE2SIDE = 0x21000000
	AXIS_ARCADES_LATERAL     = 0x21008201
	AXIS_ARCADES_MOVE        = 0x21010202
	BUTTON_ARCADES_THROW     = 0x21000401
	BUTTON_ARCADES_CARRY     = 0x21000402
	BUTTON_ARCADES_ATTACK    = 0x21000403
	BUTTON_ARCADES_SPECIAL   = 0x21000404
	BUTTON_ARCADES_SELECT    = 0x21000405
	BUTTON_ARCADES_MENU      = 0x210004FD

	HATSWITCH_ARCADES_VIEW         = 0x21004601
	BUTTON_ARCADES_LEFT_LINK       = 0x2100C4E4
	BUTTON_ARCADES_RIGHT_LINK      = 0x2100C4EC
	BUTTON_ARCADES_FORWARD_LINK    = 0x210144E0
	BUTTON_ARCADES_BACK_LINK       = 0x210144E8
	BUTTON_ARCADES_VIEW_UP_LINK    = 0x2107C4E0
	BUTTON_ARCADES_VIEW_DOWN_LINK  = 0x2107C4E8
	BUTTON_ARCADES_VIEW_LEFT_LINK  = 0x2107C4E4
	BUTTON_ARCADES_VIEW_RIGHT_LINK = 0x2107C4EC
	BUTTON_ARCADES_DEVICE          = 0x210044FE
	BUTTON_ARCADES_PAUSE           = 0x210044FC

	VIRTUAL_ARCADE_PLATFORM = 0x22000000
	AXIS_ARCADEP_LATERAL    = 0x22008201
	AXIS_ARCADEP_MOVE       = 0x22010202
	BUTTON_ARCADEP_JUMP     = 0x22000401
	BUTTON_ARCADEP_FIRE     = 0x22000402
	BUTTON_ARCADEP_CROUCH   = 0x22000403
	BUTTON_ARCADEP_SPECIAL  = 0x22000404
	BUTTON_ARCADEP_SELECT   = 0x22000405
	BUTTON_ARCADEP_MENU     = 0x220004FD

	HATSWITCH_ARCADEP_VIEW         = 0x22004601
	BUTTON_ARCADEP_FIRESECONDARY   = 0x22004406
	BUTTON_ARCADEP_LEFT_LINK       = 0x2200C4E4
	BUTTON_ARCADEP_RIGHT_LINK      = 0x2200C4EC
	BUTTON_ARCADEP_FORWARD_LINK    = 0x220144E0
	BUTTON_ARCADEP_BACK_LINK       = 0x220144E8
	BUTTON_ARCADEP_VIEW_UP_LINK    = 0x2207C4E0
	BUTTON_ARCADEP_VIEW_DOWN_LINK  = 0x2207C4E8
	BUTTON_ARCADEP_VIEW_LEFT_LINK  = 0x2207C4E4
	BUTTON_ARCADEP_VIEW_RIGHT_LINK = 0x2207C4EC
	BUTTON_ARCADEP_DEVICE          = 0x220044FE
	BUTTON_ARCADEP_PAUSE           = 0x220044FC

	VIRTUAL_CAD_2DCONTROL     = 0x23000000
	AXIS_2DCONTROL_LATERAL    = 0x23008201
	AXIS_2DCONTROL_MOVE       = 0x23010202
	AXIS_2DCONTROL_INOUT      = 0x23018203
	BUTTON_2DCONTROL_SELECT   = 0x23000401
	BUTTON_2DCONTROL_SPECIAL1 = 0x23000402
	BUTTON_2DCONTROL_SPECIAL  = 0x23000403
	BUTTON_2DCONTROL_SPECIAL2 = 0x23000404
	BUTTON_2DCONTROL_MENU     = 0x230004FD

	HATSWITCH_2DCONTROL_HATSWITCH = 0x23004601
	AXIS_2DCONTROL_ROTATEZ        = 0x23024204
	BUTTON_2DCONTROL_DISPLAY      = 0x23004405
	BUTTON_2DCONTROL_DEVICE       = 0x230044FE
	BUTTON_2DCONTROL_PAUSE        = 0x230044FC

	VIRTUAL_CAD_3DCONTROL     = 0x24000000
	AXIS_3DCONTROL_LATERAL    = 0x24008201
	AXIS_3DCONTROL_MOVE       = 0x24010202
	AXIS_3DCONTROL_INOUT      = 0x24018203
	BUTTON_3DCONTROL_SELECT   = 0x24000401
	BUTTON_3DCONTROL_SPECIAL1 = 0x24000402
	BUTTON_3DCONTROL_SPECIAL  = 0x24000403
	BUTTON_3DCONTROL_SPECIAL2 = 0x24000404
	BUTTON_3DCONTROL_MENU     = 0x240004FD

	HATSWITCH_3DCONTROL_HATSWITCH = 0x24004601
	AXIS_3DCONTROL_ROTATEX        = 0x24034204
	AXIS_3DCONTROL_ROTATEY        = 0x2402C205
	AXIS_3DCONTROL_ROTATEZ        = 0x24024206
	BUTTON_3DCONTROL_DISPLAY      = 0x24004405
	BUTTON_3DCONTROL_DEVICE       = 0x240044FE
	BUTTON_3DCONTROL_PAUSE        = 0x240044FC

	VIRTUAL_CAD_FLYBY    = 0x25000000
	AXIS_CADF_LATERAL    = 0x25008201
	AXIS_CADF_MOVE       = 0x25010202
	AXIS_CADF_INOUT      = 0x25018203
	BUTTON_CADF_SELECT   = 0x25000401
	BUTTON_CADF_SPECIAL1 = 0x25000402
	BUTTON_CADF_SPECIAL  = 0x25000403
	BUTTON_CADF_SPECIAL2 = 0x25000404
	BUTTON_CADF_MENU     = 0x250004FD

	HATSWITCH_CADF_HATSWITCH = 0x25004601
	AXIS_CADF_ROTATEX        = 0x25034204
	AXIS_CADF_ROTATEY        = 0x2502C205
	AXIS_CADF_ROTATEZ        = 0x25024206
	BUTTON_CADF_DISPLAY      = 0x25004405
	BUTTON_CADF_DEVICE       = 0x250044FE
	BUTTON_CADF_PAUSE        = 0x250044FC

	VIRTUAL_CAD_MODEL    = 0x26000000
	AXIS_CADM_LATERAL    = 0x26008201
	AXIS_CADM_MOVE       = 0x26010202
	AXIS_CADM_INOUT      = 0x26018203
	BUTTON_CADM_SELECT   = 0x26000401
	BUTTON_CADM_SPECIAL1 = 0x26000402
	BUTTON_CADM_SPECIAL  = 0x26000403
	BUTTON_CADM_SPECIAL2 = 0x26000404
	BUTTON_CADM_MENU     = 0x260004FD

	HATSWITCH_CADM_HATSWITCH = 0x26004601
	AXIS_CADM_ROTATEX        = 0x26034204
	AXIS_CADM_ROTATEY        = 0x2602C205
	AXIS_CADM_ROTATEZ        = 0x26024206
	BUTTON_CADM_DISPLAY      = 0x26004405
	BUTTON_CADM_DEVICE       = 0x260044FE
	BUTTON_CADM_PAUSE        = 0x260044FC

	VIRTUAL_REMOTE_CONTROL = 0x27000000
	AXIS_REMOTE_SLIDER     = 0x27050201
	BUTTON_REMOTE_MUTE     = 0x27000401
	BUTTON_REMOTE_SELECT   = 0x27000402
	BUTTON_REMOTE_PLAY     = 0x27002403
	BUTTON_REMOTE_CUE      = 0x27002404
	BUTTON_REMOTE_REVIEW   = 0x27002405
	BUTTON_REMOTE_CHANGE   = 0x27002406
	BUTTON_REMOTE_RECORD   = 0x27002407
	BUTTON_REMOTE_MENU     = 0x270004FD

	AXIS_REMOTE_SLIDER2  = 0x27054202
	BUTTON_REMOTE_TV     = 0x27005C08
	BUTTON_REMOTE_CABLE  = 0x27005C09
	BUTTON_REMOTE_CD     = 0x27005C0A
	BUTTON_REMOTE_VCR    = 0x27005C0B
	BUTTON_REMOTE_TUNER  = 0x27005C0C
	BUTTON_REMOTE_DVD    = 0x27005C0D
	BUTTON_REMOTE_ADJUST = 0x27005C0E
	BUTTON_REMOTE_DIGIT0 = 0x2700540F
	BUTTON_REMOTE_DIGIT1 = 0x27005410
	BUTTON_REMOTE_DIGIT2 = 0x27005411
	BUTTON_REMOTE_DIGIT3 = 0x27005412
	BUTTON_REMOTE_DIGIT4 = 0x27005413
	BUTTON_REMOTE_DIGIT5 = 0x27005414
	BUTTON_REMOTE_DIGIT6 = 0x27005415
	BUTTON_REMOTE_DIGIT7 = 0x27005416
	BUTTON_REMOTE_DIGIT8 = 0x27005417
	BUTTON_REMOTE_DIGIT9 = 0x27005418
	BUTTON_REMOTE_DEVICE = 0x270044FE
	BUTTON_REMOTE_PAUSE  = 0x270044FC

	VIRTUAL_BROWSER_CONTROL = 0x28000000
	AXIS_BROWSER_LATERAL    = 0x28008201
	AXIS_BROWSER_MOVE       = 0x28010202
	BUTTON_BROWSER_SELECT   = 0x28000401
	AXIS_BROWSER_VIEW       = 0x28018203
	BUTTON_BROWSER_REFRESH  = 0x28000402
	BUTTON_BROWSER_MENU     = 0x280004FD

	BUTTON_BROWSER_SEARCH    = 0x28004403
	BUTTON_BROWSER_STOP      = 0x28004404
	BUTTON_BROWSER_HOME      = 0x28004405
	BUTTON_BROWSER_FAVORITES = 0x28004406
	BUTTON_BROWSER_NEXT      = 0x28004407
	BUTTON_BROWSER_PREVIOUS  = 0x28004408
	BUTTON_BROWSER_HISTORY   = 0x28004409
	BUTTON_BROWSER_PRINT     = 0x2800440A
	BUTTON_BROWSER_DEVICE    = 0x280044FE
	BUTTON_BROWSER_PAUSE     = 0x280044FC

	VIRTUAL_DRIVING_MECHA = 0x29000000
	AXIS_MECHA_STEER      = 0x29008201
	AXIS_MECHA_TORSO      = 0x29010202
	AXIS_MECHA_ROTATE     = 0x29020203
	AXIS_MECHA_THROTTLE   = 0x29038204
	BUTTON_MECHA_FIRE     = 0x29000401
	BUTTON_MECHA_WEAPONS  = 0x29000402
	BUTTON_MECHA_TARGET   = 0x29000403
	BUTTON_MECHA_REVERSE  = 0x29000404
	BUTTON_MECHA_ZOOM     = 0x29000405
	BUTTON_MECHA_JUMP     = 0x29000406
	BUTTON_MECHA_MENU     = 0x290004FD

	BUTTON_MECHA_CENTER            = 0x29004407
	HATSWITCH_MECHA_GLANCE         = 0x29004601
	BUTTON_MECHA_VIEW              = 0x29004408
	BUTTON_MECHA_FIRESECONDARY     = 0x29004409
	BUTTON_MECHA_LEFT_LINK         = 0x2900C4E4
	BUTTON_MECHA_RIGHT_LINK        = 0x2900C4EC
	BUTTON_MECHA_FORWARD_LINK      = 0x290144E0
	BUTTON_MECHA_BACK_LINK         = 0x290144E8
	BUTTON_MECHA_ROTATE_LEFT_LINK  = 0x290244E4
	BUTTON_MECHA_ROTATE_RIGHT_LINK = 0x290244EC
	BUTTON_MECHA_FASTER_LINK       = 0x2903C4E0
	BUTTON_MECHA_SLOWER_LINK       = 0x2903C4E8
	BUTTON_MECHA_DEVICE            = 0x290044FE
	BUTTON_MECHA_PAUSE             = 0x290044FC

	AXIS_ANY_X_1 = 0xFF00C201
	AXIS_ANY_X_2 = 0xFF00C202
	AXIS_ANY_Y_1 = 0xFF014201
	AXIS_ANY_Y_2 = 0xFF014202
	AXIS_ANY_Z_1 = 0xFF01C201
	AXIS_ANY_Z_2 = 0xFF01C202
	AXIS_ANY_R_1 = 0xFF024201
	AXIS_ANY_R_2 = 0xFF024202
	AXIS_ANY_U_1 = 0xFF02C201
	AXIS_ANY_U_2 = 0xFF02C202
	AXIS_ANY_V_1 = 0xFF034201
	AXIS_ANY_V_2 = 0xFF034202
	AXIS_ANY_A_1 = 0xFF03C201
	AXIS_ANY_A_2 = 0xFF03C202
	AXIS_ANY_B_1 = 0xFF044201
	AXIS_ANY_B_2 = 0xFF044202
	AXIS_ANY_C_1 = 0xFF04C201
	AXIS_ANY_C_2 = 0xFF04C202
	AXIS_ANY_S_1 = 0xFF054201
	AXIS_ANY_S_2 = 0xFF054202

	AXIS_ANY_1 = 0xFF004201
	AXIS_ANY_2 = 0xFF004202
	AXIS_ANY_3 = 0xFF004203
	AXIS_ANY_4 = 0xFF004204

	POV_ANY_1 = 0xFF004601
	POV_ANY_2 = 0xFF004602
	POV_ANY_3 = 0xFF004603
	POV_ANY_4 = 0xFF004604

	JOY_PASSDRIVERDATA = 0x10000000

	JOY_HWS_ISHEADTRACKER      = 0x02000000
	JOY_HWS_ISGAMEPORTDRIVER   = 0x04000000
	JOY_HWS_ISANALOGPORTDRIVER = 0x08000000
	JOY_HWS_AUTOLOAD           = 0x10000000
	JOY_HWS_NODEVNODE          = 0x20000000
	JOY_HWS_ISGAMEPORTBUS      = 0x80000000
	JOY_HWS_GAMEPORTBUSBUSY    = 0x00000001
	JOY_US_VOLATILE            = 0x00000008
)

Variables

View Source
var (
	CLSID_DirectInput        = GUID{0x25E609E0, 0xB259, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	CLSID_DirectInputDevice  = GUID{0x25E609E1, 0xB259, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	CLSID_DirectInput8       = GUID{0x25E609E4, 0xB259, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	CLSID_DirectInputDevice8 = GUID{0x25E609E5, 0xB259, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	IID_IDirectInputA        = GUID{0x89521360, 0xAA8A, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	IID_IDirectInputW        = GUID{0x89521361, 0xAA8A, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	IID_IDirectInput         = IID_IDirectInputW
	IID_IDirectInput2A       = GUID{0x5944E662, 0xAA8A, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	IID_IDirectInput2W       = GUID{0x5944E663, 0xAA8A, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	IID_IDirectInput2        = IID_IDirectInput2W
	IID_IDirectInput7A       = GUID{0x9A4CB684, 0x236D, 0x11D3, [8]byte{0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE}}
	IID_IDirectInput7W       = GUID{0x9A4CB685, 0x236D, 0x11D3, [8]byte{0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE}}
	IID_IDirectInput7        = IID_IDirectInput7W
	IID_IDirectInput8A       = GUID{0xBF798030, 0x483A, 0x4DA2, [8]byte{0xAA, 0x99, 0x5D, 0x64, 0xED, 0x36, 0x97, 0x00}}
	IID_IDirectInput8W       = GUID{0xBF798031, 0x483A, 0x4DA2, [8]byte{0xAA, 0x99, 0x5D, 0x64, 0xED, 0x36, 0x97, 0x00}}
	IID_IDirectInput8        = IID_IDirectInput8W
	IID_IDirectInputDeviceA  = GUID{0x5944E680, 0xC92E, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	IID_IDirectInputDeviceW  = GUID{0x5944E681, 0xC92E, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	IID_IDirectInputDevice   = IID_IDirectInputDeviceW
	IID_IDirectInputDevice2A = GUID{0x5944E682, 0xC92E, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	IID_IDirectInputDevice2W = GUID{0x5944E683, 0xC92E, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	IID_IDirectInputDevice2  = IID_IDirectInputDevice2W
	IID_IDirectInputDevice7A = GUID{0x57D7C6BC, 0x2356, 0x11D3, [8]byte{0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE}}
	IID_IDirectInputDevice7W = GUID{0x57D7C6BD, 0x2356, 0x11D3, [8]byte{0x8E, 0x9D, 0x00, 0xC0, 0x4F, 0x68, 0x44, 0xAE}}
	IID_IDirectInputDevice7  = IID_IDirectInputDevice7W
	IID_IDirectInputDevice8A = GUID{0x54D41080, 0xDC15, 0x4833, [8]byte{0xA4, 0x1B, 0x74, 0x8F, 0x73, 0xA3, 0x81, 0x79}}
	IID_IDirectInputDevice8W = GUID{0x54D41081, 0xDC15, 0x4833, [8]byte{0xA4, 0x1B, 0x74, 0x8F, 0x73, 0xA3, 0x81, 0x79}}
	IID_IDirectInputDevice8  = IID_IDirectInputDevice8W
	IID_IDirectInputEffect   = GUID{0xE7E1F7C0, 0x88D2, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_XAxis               = GUID{0xA36D02E0, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_YAxis               = GUID{0xA36D02E1, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_ZAxis               = GUID{0xA36D02E2, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_RxAxis              = GUID{0xA36D02F4, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_RyAxis              = GUID{0xA36D02F5, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_RzAxis              = GUID{0xA36D02E3, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_Slider              = GUID{0xA36D02E4, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_Button              = GUID{0xA36D02F0, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_Key                 = GUID{0x55728220, 0xD33C, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_POV                 = GUID{0xA36D02F2, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_Unknown             = GUID{0xA36D02F3, 0xC9F3, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_SysMouse            = GUID{0x6F1D2B60, 0xD5A0, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_SysKeyboard         = GUID{0x6F1D2B61, 0xD5A0, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_Joystick            = GUID{0x6F1D2B70, 0xD5A0, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_SysMouseEm          = GUID{0x6F1D2B80, 0xD5A0, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_SysMouseEm2         = GUID{0x6F1D2B81, 0xD5A0, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_SysKeyboardEm       = GUID{0x6F1D2B82, 0xD5A0, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_SysKeyboardEm2      = GUID{0x6F1D2B83, 0xD5A0, 0x11CF, [8]byte{0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}
	GUID_ConstantForce       = GUID{0x13541C20, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_RampForce           = GUID{0x13541C21, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_Square              = GUID{0x13541C22, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_Sine                = GUID{0x13541C23, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_Triangle            = GUID{0x13541C24, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_SawtoothUp          = GUID{0x13541C25, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_SawtoothDown        = GUID{0x13541C26, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_Spring              = GUID{0x13541C27, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_Damper              = GUID{0x13541C28, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_Inertia             = GUID{0x13541C29, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_Friction            = GUID{0x13541C2A, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}
	GUID_CustomForce         = GUID{0x13541C2B, 0x8E33, 0x11D0, [8]byte{0x9A, 0xD0, 0x00, 0xA0, 0xC9, 0xA0, 0x6E, 0x35}}

	Keyboard = DATAFORMAT{
		Size:     uint32(unsafe.Sizeof(DATAFORMAT{})),
		ObjSize:  uint32(unsafe.Sizeof(OBJECTDATAFORMAT{})),
		Flags:    2,
		DataSize: 256,
		NumObjs:  256,
		Rgodf: &[]OBJECTDATAFORMAT{
			{Guid: &GUID_Key, Ofs: 0, Type: 0x8000000C},
			{Guid: &GUID_Key, Ofs: 1, Type: 0x8000010C},
			{Guid: &GUID_Key, Ofs: 2, Type: 0x8000020C},
			{Guid: &GUID_Key, Ofs: 3, Type: 0x8000030C},
			{Guid: &GUID_Key, Ofs: 4, Type: 0x8000040C},
			{Guid: &GUID_Key, Ofs: 5, Type: 0x8000050C},
			{Guid: &GUID_Key, Ofs: 6, Type: 0x8000060C},
			{Guid: &GUID_Key, Ofs: 7, Type: 0x8000070C},
			{Guid: &GUID_Key, Ofs: 8, Type: 0x8000080C},
			{Guid: &GUID_Key, Ofs: 9, Type: 0x8000090C},
			{Guid: &GUID_Key, Ofs: 10, Type: 0x80000A0C},
			{Guid: &GUID_Key, Ofs: 11, Type: 0x80000B0C},
			{Guid: &GUID_Key, Ofs: 12, Type: 0x80000C0C},
			{Guid: &GUID_Key, Ofs: 13, Type: 0x80000D0C},
			{Guid: &GUID_Key, Ofs: 14, Type: 0x80000E0C},
			{Guid: &GUID_Key, Ofs: 15, Type: 0x80000F0C},
			{Guid: &GUID_Key, Ofs: 16, Type: 0x8000100C},
			{Guid: &GUID_Key, Ofs: 17, Type: 0x8000110C},
			{Guid: &GUID_Key, Ofs: 18, Type: 0x8000120C},
			{Guid: &GUID_Key, Ofs: 19, Type: 0x8000130C},
			{Guid: &GUID_Key, Ofs: 20, Type: 0x8000140C},
			{Guid: &GUID_Key, Ofs: 21, Type: 0x8000150C},
			{Guid: &GUID_Key, Ofs: 22, Type: 0x8000160C},
			{Guid: &GUID_Key, Ofs: 23, Type: 0x8000170C},
			{Guid: &GUID_Key, Ofs: 24, Type: 0x8000180C},
			{Guid: &GUID_Key, Ofs: 25, Type: 0x8000190C},
			{Guid: &GUID_Key, Ofs: 26, Type: 0x80001A0C},
			{Guid: &GUID_Key, Ofs: 27, Type: 0x80001B0C},
			{Guid: &GUID_Key, Ofs: 28, Type: 0x80001C0C},
			{Guid: &GUID_Key, Ofs: 29, Type: 0x80001D0C},
			{Guid: &GUID_Key, Ofs: 30, Type: 0x80001E0C},
			{Guid: &GUID_Key, Ofs: 31, Type: 0x80001F0C},
			{Guid: &GUID_Key, Ofs: 32, Type: 0x8000200C},
			{Guid: &GUID_Key, Ofs: 33, Type: 0x8000210C},
			{Guid: &GUID_Key, Ofs: 34, Type: 0x8000220C},
			{Guid: &GUID_Key, Ofs: 35, Type: 0x8000230C},
			{Guid: &GUID_Key, Ofs: 36, Type: 0x8000240C},
			{Guid: &GUID_Key, Ofs: 37, Type: 0x8000250C},
			{Guid: &GUID_Key, Ofs: 38, Type: 0x8000260C},
			{Guid: &GUID_Key, Ofs: 39, Type: 0x8000270C},
			{Guid: &GUID_Key, Ofs: 40, Type: 0x8000280C},
			{Guid: &GUID_Key, Ofs: 41, Type: 0x8000290C},
			{Guid: &GUID_Key, Ofs: 42, Type: 0x80002A0C},
			{Guid: &GUID_Key, Ofs: 43, Type: 0x80002B0C},
			{Guid: &GUID_Key, Ofs: 44, Type: 0x80002C0C},
			{Guid: &GUID_Key, Ofs: 45, Type: 0x80002D0C},
			{Guid: &GUID_Key, Ofs: 46, Type: 0x80002E0C},
			{Guid: &GUID_Key, Ofs: 47, Type: 0x80002F0C},
			{Guid: &GUID_Key, Ofs: 48, Type: 0x8000300C},
			{Guid: &GUID_Key, Ofs: 49, Type: 0x8000310C},
			{Guid: &GUID_Key, Ofs: 50, Type: 0x8000320C},
			{Guid: &GUID_Key, Ofs: 51, Type: 0x8000330C},
			{Guid: &GUID_Key, Ofs: 52, Type: 0x8000340C},
			{Guid: &GUID_Key, Ofs: 53, Type: 0x8000350C},
			{Guid: &GUID_Key, Ofs: 54, Type: 0x8000360C},
			{Guid: &GUID_Key, Ofs: 55, Type: 0x8000370C},
			{Guid: &GUID_Key, Ofs: 56, Type: 0x8000380C},
			{Guid: &GUID_Key, Ofs: 57, Type: 0x8000390C},
			{Guid: &GUID_Key, Ofs: 58, Type: 0x80003A0C},
			{Guid: &GUID_Key, Ofs: 59, Type: 0x80003B0C},
			{Guid: &GUID_Key, Ofs: 60, Type: 0x80003C0C},
			{Guid: &GUID_Key, Ofs: 61, Type: 0x80003D0C},
			{Guid: &GUID_Key, Ofs: 62, Type: 0x80003E0C},
			{Guid: &GUID_Key, Ofs: 63, Type: 0x80003F0C},
			{Guid: &GUID_Key, Ofs: 64, Type: 0x8000400C},
			{Guid: &GUID_Key, Ofs: 65, Type: 0x8000410C},
			{Guid: &GUID_Key, Ofs: 66, Type: 0x8000420C},
			{Guid: &GUID_Key, Ofs: 67, Type: 0x8000430C},
			{Guid: &GUID_Key, Ofs: 68, Type: 0x8000440C},
			{Guid: &GUID_Key, Ofs: 69, Type: 0x8000450C},
			{Guid: &GUID_Key, Ofs: 70, Type: 0x8000460C},
			{Guid: &GUID_Key, Ofs: 71, Type: 0x8000470C},
			{Guid: &GUID_Key, Ofs: 72, Type: 0x8000480C},
			{Guid: &GUID_Key, Ofs: 73, Type: 0x8000490C},
			{Guid: &GUID_Key, Ofs: 74, Type: 0x80004A0C},
			{Guid: &GUID_Key, Ofs: 75, Type: 0x80004B0C},
			{Guid: &GUID_Key, Ofs: 76, Type: 0x80004C0C},
			{Guid: &GUID_Key, Ofs: 77, Type: 0x80004D0C},
			{Guid: &GUID_Key, Ofs: 78, Type: 0x80004E0C},
			{Guid: &GUID_Key, Ofs: 79, Type: 0x80004F0C},
			{Guid: &GUID_Key, Ofs: 80, Type: 0x8000500C},
			{Guid: &GUID_Key, Ofs: 81, Type: 0x8000510C},
			{Guid: &GUID_Key, Ofs: 82, Type: 0x8000520C},
			{Guid: &GUID_Key, Ofs: 83, Type: 0x8000530C},
			{Guid: &GUID_Key, Ofs: 84, Type: 0x8000540C},
			{Guid: &GUID_Key, Ofs: 85, Type: 0x8000550C},
			{Guid: &GUID_Key, Ofs: 86, Type: 0x8000560C},
			{Guid: &GUID_Key, Ofs: 87, Type: 0x8000570C},
			{Guid: &GUID_Key, Ofs: 88, Type: 0x8000580C},
			{Guid: &GUID_Key, Ofs: 89, Type: 0x8000590C},
			{Guid: &GUID_Key, Ofs: 90, Type: 0x80005A0C},
			{Guid: &GUID_Key, Ofs: 91, Type: 0x80005B0C},
			{Guid: &GUID_Key, Ofs: 92, Type: 0x80005C0C},
			{Guid: &GUID_Key, Ofs: 93, Type: 0x80005D0C},
			{Guid: &GUID_Key, Ofs: 94, Type: 0x80005E0C},
			{Guid: &GUID_Key, Ofs: 95, Type: 0x80005F0C},
			{Guid: &GUID_Key, Ofs: 96, Type: 0x8000600C},
			{Guid: &GUID_Key, Ofs: 97, Type: 0x8000610C},
			{Guid: &GUID_Key, Ofs: 98, Type: 0x8000620C},
			{Guid: &GUID_Key, Ofs: 99, Type: 0x8000630C},
			{Guid: &GUID_Key, Ofs: 100, Type: 0x8000640C},
			{Guid: &GUID_Key, Ofs: 101, Type: 0x8000650C},
			{Guid: &GUID_Key, Ofs: 102, Type: 0x8000660C},
			{Guid: &GUID_Key, Ofs: 103, Type: 0x8000670C},
			{Guid: &GUID_Key, Ofs: 104, Type: 0x8000680C},
			{Guid: &GUID_Key, Ofs: 105, Type: 0x8000690C},
			{Guid: &GUID_Key, Ofs: 106, Type: 0x80006A0C},
			{Guid: &GUID_Key, Ofs: 107, Type: 0x80006B0C},
			{Guid: &GUID_Key, Ofs: 108, Type: 0x80006C0C},
			{Guid: &GUID_Key, Ofs: 109, Type: 0x80006D0C},
			{Guid: &GUID_Key, Ofs: 110, Type: 0x80006E0C},
			{Guid: &GUID_Key, Ofs: 111, Type: 0x80006F0C},
			{Guid: &GUID_Key, Ofs: 112, Type: 0x8000700C},
			{Guid: &GUID_Key, Ofs: 113, Type: 0x8000710C},
			{Guid: &GUID_Key, Ofs: 114, Type: 0x8000720C},
			{Guid: &GUID_Key, Ofs: 115, Type: 0x8000730C},
			{Guid: &GUID_Key, Ofs: 116, Type: 0x8000740C},
			{Guid: &GUID_Key, Ofs: 117, Type: 0x8000750C},
			{Guid: &GUID_Key, Ofs: 118, Type: 0x8000760C},
			{Guid: &GUID_Key, Ofs: 119, Type: 0x8000770C},
			{Guid: &GUID_Key, Ofs: 120, Type: 0x8000780C},
			{Guid: &GUID_Key, Ofs: 121, Type: 0x8000790C},
			{Guid: &GUID_Key, Ofs: 122, Type: 0x80007A0C},
			{Guid: &GUID_Key, Ofs: 123, Type: 0x80007B0C},
			{Guid: &GUID_Key, Ofs: 124, Type: 0x80007C0C},
			{Guid: &GUID_Key, Ofs: 125, Type: 0x80007D0C},
			{Guid: &GUID_Key, Ofs: 126, Type: 0x80007E0C},
			{Guid: &GUID_Key, Ofs: 127, Type: 0x80007F0C},
			{Guid: &GUID_Key, Ofs: 128, Type: 0x8000800C},
			{Guid: &GUID_Key, Ofs: 129, Type: 0x8000810C},
			{Guid: &GUID_Key, Ofs: 130, Type: 0x8000820C},
			{Guid: &GUID_Key, Ofs: 131, Type: 0x8000830C},
			{Guid: &GUID_Key, Ofs: 132, Type: 0x8000840C},
			{Guid: &GUID_Key, Ofs: 133, Type: 0x8000850C},
			{Guid: &GUID_Key, Ofs: 134, Type: 0x8000860C},
			{Guid: &GUID_Key, Ofs: 135, Type: 0x8000870C},
			{Guid: &GUID_Key, Ofs: 136, Type: 0x8000880C},
			{Guid: &GUID_Key, Ofs: 137, Type: 0x8000890C},
			{Guid: &GUID_Key, Ofs: 138, Type: 0x80008A0C},
			{Guid: &GUID_Key, Ofs: 139, Type: 0x80008B0C},
			{Guid: &GUID_Key, Ofs: 140, Type: 0x80008C0C},
			{Guid: &GUID_Key, Ofs: 141, Type: 0x80008D0C},
			{Guid: &GUID_Key, Ofs: 142, Type: 0x80008E0C},
			{Guid: &GUID_Key, Ofs: 143, Type: 0x80008F0C},
			{Guid: &GUID_Key, Ofs: 144, Type: 0x8000900C},
			{Guid: &GUID_Key, Ofs: 145, Type: 0x8000910C},
			{Guid: &GUID_Key, Ofs: 146, Type: 0x8000920C},
			{Guid: &GUID_Key, Ofs: 147, Type: 0x8000930C},
			{Guid: &GUID_Key, Ofs: 148, Type: 0x8000940C},
			{Guid: &GUID_Key, Ofs: 149, Type: 0x8000950C},
			{Guid: &GUID_Key, Ofs: 150, Type: 0x8000960C},
			{Guid: &GUID_Key, Ofs: 151, Type: 0x8000970C},
			{Guid: &GUID_Key, Ofs: 152, Type: 0x8000980C},
			{Guid: &GUID_Key, Ofs: 153, Type: 0x8000990C},
			{Guid: &GUID_Key, Ofs: 154, Type: 0x80009A0C},
			{Guid: &GUID_Key, Ofs: 155, Type: 0x80009B0C},
			{Guid: &GUID_Key, Ofs: 156, Type: 0x80009C0C},
			{Guid: &GUID_Key, Ofs: 157, Type: 0x80009D0C},
			{Guid: &GUID_Key, Ofs: 158, Type: 0x80009E0C},
			{Guid: &GUID_Key, Ofs: 159, Type: 0x80009F0C},
			{Guid: &GUID_Key, Ofs: 160, Type: 0x8000A00C},
			{Guid: &GUID_Key, Ofs: 161, Type: 0x8000A10C},
			{Guid: &GUID_Key, Ofs: 162, Type: 0x8000A20C},
			{Guid: &GUID_Key, Ofs: 163, Type: 0x8000A30C},
			{Guid: &GUID_Key, Ofs: 164, Type: 0x8000A40C},
			{Guid: &GUID_Key, Ofs: 165, Type: 0x8000A50C},
			{Guid: &GUID_Key, Ofs: 166, Type: 0x8000A60C},
			{Guid: &GUID_Key, Ofs: 167, Type: 0x8000A70C},
			{Guid: &GUID_Key, Ofs: 168, Type: 0x8000A80C},
			{Guid: &GUID_Key, Ofs: 169, Type: 0x8000A90C},
			{Guid: &GUID_Key, Ofs: 170, Type: 0x8000AA0C},
			{Guid: &GUID_Key, Ofs: 171, Type: 0x8000AB0C},
			{Guid: &GUID_Key, Ofs: 172, Type: 0x8000AC0C},
			{Guid: &GUID_Key, Ofs: 173, Type: 0x8000AD0C},
			{Guid: &GUID_Key, Ofs: 174, Type: 0x8000AE0C},
			{Guid: &GUID_Key, Ofs: 175, Type: 0x8000AF0C},
			{Guid: &GUID_Key, Ofs: 176, Type: 0x8000B00C},
			{Guid: &GUID_Key, Ofs: 177, Type: 0x8000B10C},
			{Guid: &GUID_Key, Ofs: 178, Type: 0x8000B20C},
			{Guid: &GUID_Key, Ofs: 179, Type: 0x8000B30C},
			{Guid: &GUID_Key, Ofs: 180, Type: 0x8000B40C},
			{Guid: &GUID_Key, Ofs: 181, Type: 0x8000B50C},
			{Guid: &GUID_Key, Ofs: 182, Type: 0x8000B60C},
			{Guid: &GUID_Key, Ofs: 183, Type: 0x8000B70C},
			{Guid: &GUID_Key, Ofs: 184, Type: 0x8000B80C},
			{Guid: &GUID_Key, Ofs: 185, Type: 0x8000B90C},
			{Guid: &GUID_Key, Ofs: 186, Type: 0x8000BA0C},
			{Guid: &GUID_Key, Ofs: 187, Type: 0x8000BB0C},
			{Guid: &GUID_Key, Ofs: 188, Type: 0x8000BC0C},
			{Guid: &GUID_Key, Ofs: 189, Type: 0x8000BD0C},
			{Guid: &GUID_Key, Ofs: 190, Type: 0x8000BE0C},
			{Guid: &GUID_Key, Ofs: 191, Type: 0x8000BF0C},
			{Guid: &GUID_Key, Ofs: 192, Type: 0x8000C00C},
			{Guid: &GUID_Key, Ofs: 193, Type: 0x8000C10C},
			{Guid: &GUID_Key, Ofs: 194, Type: 0x8000C20C},
			{Guid: &GUID_Key, Ofs: 195, Type: 0x8000C30C},
			{Guid: &GUID_Key, Ofs: 196, Type: 0x8000C40C},
			{Guid: &GUID_Key, Ofs: 197, Type: 0x8000C50C},
			{Guid: &GUID_Key, Ofs: 198, Type: 0x8000C60C},
			{Guid: &GUID_Key, Ofs: 199, Type: 0x8000C70C},
			{Guid: &GUID_Key, Ofs: 200, Type: 0x8000C80C},
			{Guid: &GUID_Key, Ofs: 201, Type: 0x8000C90C},
			{Guid: &GUID_Key, Ofs: 202, Type: 0x8000CA0C},
			{Guid: &GUID_Key, Ofs: 203, Type: 0x8000CB0C},
			{Guid: &GUID_Key, Ofs: 204, Type: 0x8000CC0C},
			{Guid: &GUID_Key, Ofs: 205, Type: 0x8000CD0C},
			{Guid: &GUID_Key, Ofs: 206, Type: 0x8000CE0C},
			{Guid: &GUID_Key, Ofs: 207, Type: 0x8000CF0C},
			{Guid: &GUID_Key, Ofs: 208, Type: 0x8000D00C},
			{Guid: &GUID_Key, Ofs: 209, Type: 0x8000D10C},
			{Guid: &GUID_Key, Ofs: 210, Type: 0x8000D20C},
			{Guid: &GUID_Key, Ofs: 211, Type: 0x8000D30C},
			{Guid: &GUID_Key, Ofs: 212, Type: 0x8000D40C},
			{Guid: &GUID_Key, Ofs: 213, Type: 0x8000D50C},
			{Guid: &GUID_Key, Ofs: 214, Type: 0x8000D60C},
			{Guid: &GUID_Key, Ofs: 215, Type: 0x8000D70C},
			{Guid: &GUID_Key, Ofs: 216, Type: 0x8000D80C},
			{Guid: &GUID_Key, Ofs: 217, Type: 0x8000D90C},
			{Guid: &GUID_Key, Ofs: 218, Type: 0x8000DA0C},
			{Guid: &GUID_Key, Ofs: 219, Type: 0x8000DB0C},
			{Guid: &GUID_Key, Ofs: 220, Type: 0x8000DC0C},
			{Guid: &GUID_Key, Ofs: 221, Type: 0x8000DD0C},
			{Guid: &GUID_Key, Ofs: 222, Type: 0x8000DE0C},
			{Guid: &GUID_Key, Ofs: 223, Type: 0x8000DF0C},
			{Guid: &GUID_Key, Ofs: 224, Type: 0x8000E00C},
			{Guid: &GUID_Key, Ofs: 225, Type: 0x8000E10C},
			{Guid: &GUID_Key, Ofs: 226, Type: 0x8000E20C},
			{Guid: &GUID_Key, Ofs: 227, Type: 0x8000E30C},
			{Guid: &GUID_Key, Ofs: 228, Type: 0x8000E40C},
			{Guid: &GUID_Key, Ofs: 229, Type: 0x8000E50C},
			{Guid: &GUID_Key, Ofs: 230, Type: 0x8000E60C},
			{Guid: &GUID_Key, Ofs: 231, Type: 0x8000E70C},
			{Guid: &GUID_Key, Ofs: 232, Type: 0x8000E80C},
			{Guid: &GUID_Key, Ofs: 233, Type: 0x8000E90C},
			{Guid: &GUID_Key, Ofs: 234, Type: 0x8000EA0C},
			{Guid: &GUID_Key, Ofs: 235, Type: 0x8000EB0C},
			{Guid: &GUID_Key, Ofs: 236, Type: 0x8000EC0C},
			{Guid: &GUID_Key, Ofs: 237, Type: 0x8000ED0C},
			{Guid: &GUID_Key, Ofs: 238, Type: 0x8000EE0C},
			{Guid: &GUID_Key, Ofs: 239, Type: 0x8000EF0C},
			{Guid: &GUID_Key, Ofs: 240, Type: 0x8000F00C},
			{Guid: &GUID_Key, Ofs: 241, Type: 0x8000F10C},
			{Guid: &GUID_Key, Ofs: 242, Type: 0x8000F20C},
			{Guid: &GUID_Key, Ofs: 243, Type: 0x8000F30C},
			{Guid: &GUID_Key, Ofs: 244, Type: 0x8000F40C},
			{Guid: &GUID_Key, Ofs: 245, Type: 0x8000F50C},
			{Guid: &GUID_Key, Ofs: 246, Type: 0x8000F60C},
			{Guid: &GUID_Key, Ofs: 247, Type: 0x8000F70C},
			{Guid: &GUID_Key, Ofs: 248, Type: 0x8000F80C},
			{Guid: &GUID_Key, Ofs: 249, Type: 0x8000F90C},
			{Guid: &GUID_Key, Ofs: 250, Type: 0x8000FA0C},
			{Guid: &GUID_Key, Ofs: 251, Type: 0x8000FB0C},
			{Guid: &GUID_Key, Ofs: 252, Type: 0x8000FC0C},
			{Guid: &GUID_Key, Ofs: 253, Type: 0x8000FD0C},
			{Guid: &GUID_Key, Ofs: 254, Type: 0x8000FE0C},
			{Guid: &GUID_Key, Ofs: 255, Type: 0x8000FF0C},
		}[0],
	}

	Mouse = DATAFORMAT{
		Size:     uint32(unsafe.Sizeof(DATAFORMAT{})),
		ObjSize:  uint32(unsafe.Sizeof(OBJECTDATAFORMAT{})),
		Flags:    2,
		DataSize: 16,
		NumObjs:  7,
		Rgodf: &[]OBJECTDATAFORMAT{
			{Guid: &GUID_XAxis, Ofs: 0, Type: 0xFFFF03},
			{Guid: &GUID_YAxis, Ofs: 4, Type: 0xFFFF03},
			{Guid: &GUID_ZAxis, Ofs: 8, Type: 0x80FFFF03},
			{Ofs: 12, Type: 0xFFFF0C},
			{Ofs: 13, Type: 0xFFFF0C},
			{Ofs: 14, Type: 0x80FFFF0C},
			{Ofs: 15, Type: 0x80FFFF0C},
		}[0],
	}

	Mouse2 = DATAFORMAT{
		Size:     uint32(unsafe.Sizeof(DATAFORMAT{})),
		ObjSize:  uint32(unsafe.Sizeof(OBJECTDATAFORMAT{})),
		Flags:    2,
		DataSize: 20,
		NumObjs:  11,
		Rgodf: &[]OBJECTDATAFORMAT{
			{Guid: &GUID_XAxis, Ofs: 0, Type: 0xFFFF03},
			{Guid: &GUID_YAxis, Ofs: 4, Type: 0xFFFF03},
			{Guid: &GUID_ZAxis, Ofs: 8, Type: 0x80FFFF03},
			{Ofs: 12, Type: 0xFFFF0C},
			{Ofs: 13, Type: 0xFFFF0C},
			{Ofs: 14, Type: 0x80FFFF0C},
			{Ofs: 15, Type: 0x80FFFF0C},
			{Ofs: 16, Type: 0x80FFFF0C},
			{Ofs: 17, Type: 0x80FFFF0C},
			{Ofs: 18, Type: 0x80FFFF0C},
			{Ofs: 19, Type: 0x80FFFF0C},
		}[0],
	}

	Joystick = DATAFORMAT{
		Size:     uint32(unsafe.Sizeof(DATAFORMAT{})),
		ObjSize:  uint32(unsafe.Sizeof(OBJECTDATAFORMAT{})),
		Flags:    1,
		DataSize: 80,
		NumObjs:  44,
		Rgodf: &[]OBJECTDATAFORMAT{
			{Guid: &GUID_XAxis, Ofs: 0, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_YAxis, Ofs: 4, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_ZAxis, Ofs: 8, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_RxAxis, Ofs: 12, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_RyAxis, Ofs: 16, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_RzAxis, Ofs: 20, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_Slider, Ofs: 24, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_Slider, Ofs: 28, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_POV, Ofs: 32, Type: 0x80FFFF10},
			{Guid: &GUID_POV, Ofs: 36, Type: 0x80FFFF10},
			{Guid: &GUID_POV, Ofs: 40, Type: 0x80FFFF10},
			{Guid: &GUID_POV, Ofs: 44, Type: 0x80FFFF10},
			{Ofs: 48, Type: 0x80FFFF0C},
			{Ofs: 49, Type: 0x80FFFF0C},
			{Ofs: 50, Type: 0x80FFFF0C},
			{Ofs: 51, Type: 0x80FFFF0C},
			{Ofs: 52, Type: 0x80FFFF0C},
			{Ofs: 53, Type: 0x80FFFF0C},
			{Ofs: 54, Type: 0x80FFFF0C},
			{Ofs: 55, Type: 0x80FFFF0C},
			{Ofs: 56, Type: 0x80FFFF0C},
			{Ofs: 57, Type: 0x80FFFF0C},
			{Ofs: 58, Type: 0x80FFFF0C},
			{Ofs: 59, Type: 0x80FFFF0C},
			{Ofs: 60, Type: 0x80FFFF0C},
			{Ofs: 61, Type: 0x80FFFF0C},
			{Ofs: 62, Type: 0x80FFFF0C},
			{Ofs: 63, Type: 0x80FFFF0C},
			{Ofs: 64, Type: 0x80FFFF0C},
			{Ofs: 65, Type: 0x80FFFF0C},
			{Ofs: 66, Type: 0x80FFFF0C},
			{Ofs: 67, Type: 0x80FFFF0C},
			{Ofs: 68, Type: 0x80FFFF0C},
			{Ofs: 69, Type: 0x80FFFF0C},
			{Ofs: 70, Type: 0x80FFFF0C},
			{Ofs: 71, Type: 0x80FFFF0C},
			{Ofs: 72, Type: 0x80FFFF0C},
			{Ofs: 73, Type: 0x80FFFF0C},
			{Ofs: 74, Type: 0x80FFFF0C},
			{Ofs: 75, Type: 0x80FFFF0C},
			{Ofs: 76, Type: 0x80FFFF0C},
			{Ofs: 77, Type: 0x80FFFF0C},
			{Ofs: 78, Type: 0x80FFFF0C},
			{Ofs: 79, Type: 0x80FFFF0C},
		}[0],
	}

	Joystick2 = DATAFORMAT{
		Size:     uint32(unsafe.Sizeof(DATAFORMAT{})),
		ObjSize:  uint32(unsafe.Sizeof(OBJECTDATAFORMAT{})),
		Flags:    1,
		DataSize: 272,
		NumObjs:  164,
		Rgodf: &[]OBJECTDATAFORMAT{
			{Guid: &GUID_XAxis, Ofs: 0, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_YAxis, Ofs: 4, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_ZAxis, Ofs: 8, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_RxAxis, Ofs: 12, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_RyAxis, Ofs: 16, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_RzAxis, Ofs: 20, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_Slider, Ofs: 24, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_Slider, Ofs: 28, Type: 0x80FFFF03, Flags: 256},
			{Guid: &GUID_POV, Ofs: 32, Type: 0x80FFFF10},
			{Guid: &GUID_POV, Ofs: 36, Type: 0x80FFFF10},
			{Guid: &GUID_POV, Ofs: 40, Type: 0x80FFFF10},
			{Guid: &GUID_POV, Ofs: 44, Type: 0x80FFFF10},
			{Ofs: 48, Type: 0x80FFFF0C},
			{Ofs: 49, Type: 0x80FFFF0C},
			{Ofs: 50, Type: 0x80FFFF0C},
			{Ofs: 51, Type: 0x80FFFF0C},
			{Ofs: 52, Type: 0x80FFFF0C},
			{Ofs: 53, Type: 0x80FFFF0C},
			{Ofs: 54, Type: 0x80FFFF0C},
			{Ofs: 55, Type: 0x80FFFF0C},
			{Ofs: 56, Type: 0x80FFFF0C},
			{Ofs: 57, Type: 0x80FFFF0C},
			{Ofs: 58, Type: 0x80FFFF0C},
			{Ofs: 59, Type: 0x80FFFF0C},
			{Ofs: 60, Type: 0x80FFFF0C},
			{Ofs: 61, Type: 0x80FFFF0C},
			{Ofs: 62, Type: 0x80FFFF0C},
			{Ofs: 63, Type: 0x80FFFF0C},
			{Ofs: 64, Type: 0x80FFFF0C},
			{Ofs: 65, Type: 0x80FFFF0C},
			{Ofs: 66, Type: 0x80FFFF0C},
			{Ofs: 67, Type: 0x80FFFF0C},
			{Ofs: 68, Type: 0x80FFFF0C},
			{Ofs: 69, Type: 0x80FFFF0C},
			{Ofs: 70, Type: 0x80FFFF0C},
			{Ofs: 71, Type: 0x80FFFF0C},
			{Ofs: 72, Type: 0x80FFFF0C},
			{Ofs: 73, Type: 0x80FFFF0C},
			{Ofs: 74, Type: 0x80FFFF0C},
			{Ofs: 75, Type: 0x80FFFF0C},
			{Ofs: 76, Type: 0x80FFFF0C},
			{Ofs: 77, Type: 0x80FFFF0C},
			{Ofs: 78, Type: 0x80FFFF0C},
			{Ofs: 79, Type: 0x80FFFF0C},
			{Ofs: 80, Type: 0x80FFFF0C},
			{Ofs: 81, Type: 0x80FFFF0C},
			{Ofs: 82, Type: 0x80FFFF0C},
			{Ofs: 83, Type: 0x80FFFF0C},
			{Ofs: 84, Type: 0x80FFFF0C},
			{Ofs: 85, Type: 0x80FFFF0C},
			{Ofs: 86, Type: 0x80FFFF0C},
			{Ofs: 87, Type: 0x80FFFF0C},
			{Ofs: 88, Type: 0x80FFFF0C},
			{Ofs: 89, Type: 0x80FFFF0C},
			{Ofs: 90, Type: 0x80FFFF0C},
			{Ofs: 91, Type: 0x80FFFF0C},
			{Ofs: 92, Type: 0x80FFFF0C},
			{Ofs: 93, Type: 0x80FFFF0C},
			{Ofs: 94, Type: 0x80FFFF0C},
			{Ofs: 95, Type: 0x80FFFF0C},
			{Ofs: 96, Type: 0x80FFFF0C},
			{Ofs: 97, Type: 0x80FFFF0C},
			{Ofs: 98, Type: 0x80FFFF0C},
			{Ofs: 99, Type: 0x80FFFF0C},
			{Ofs: 100, Type: 0x80FFFF0C},
			{Ofs: 101, Type: 0x80FFFF0C},
			{Ofs: 102, Type: 0x80FFFF0C},
			{Ofs: 103, Type: 0x80FFFF0C},
			{Ofs: 104, Type: 0x80FFFF0C},
			{Ofs: 105, Type: 0x80FFFF0C},
			{Ofs: 106, Type: 0x80FFFF0C},
			{Ofs: 107, Type: 0x80FFFF0C},
			{Ofs: 108, Type: 0x80FFFF0C},
			{Ofs: 109, Type: 0x80FFFF0C},
			{Ofs: 110, Type: 0x80FFFF0C},
			{Ofs: 111, Type: 0x80FFFF0C},
			{Ofs: 112, Type: 0x80FFFF0C},
			{Ofs: 113, Type: 0x80FFFF0C},
			{Ofs: 114, Type: 0x80FFFF0C},
			{Ofs: 115, Type: 0x80FFFF0C},
			{Ofs: 116, Type: 0x80FFFF0C},
			{Ofs: 117, Type: 0x80FFFF0C},
			{Ofs: 118, Type: 0x80FFFF0C},
			{Ofs: 119, Type: 0x80FFFF0C},
			{Ofs: 120, Type: 0x80FFFF0C},
			{Ofs: 121, Type: 0x80FFFF0C},
			{Ofs: 122, Type: 0x80FFFF0C},
			{Ofs: 123, Type: 0x80FFFF0C},
			{Ofs: 124, Type: 0x80FFFF0C},
			{Ofs: 125, Type: 0x80FFFF0C},
			{Ofs: 126, Type: 0x80FFFF0C},
			{Ofs: 127, Type: 0x80FFFF0C},
			{Ofs: 128, Type: 0x80FFFF0C},
			{Ofs: 129, Type: 0x80FFFF0C},
			{Ofs: 130, Type: 0x80FFFF0C},
			{Ofs: 131, Type: 0x80FFFF0C},
			{Ofs: 132, Type: 0x80FFFF0C},
			{Ofs: 133, Type: 0x80FFFF0C},
			{Ofs: 134, Type: 0x80FFFF0C},
			{Ofs: 135, Type: 0x80FFFF0C},
			{Ofs: 136, Type: 0x80FFFF0C},
			{Ofs: 137, Type: 0x80FFFF0C},
			{Ofs: 138, Type: 0x80FFFF0C},
			{Ofs: 139, Type: 0x80FFFF0C},
			{Ofs: 140, Type: 0x80FFFF0C},
			{Ofs: 141, Type: 0x80FFFF0C},
			{Ofs: 142, Type: 0x80FFFF0C},
			{Ofs: 143, Type: 0x80FFFF0C},
			{Ofs: 144, Type: 0x80FFFF0C},
			{Ofs: 145, Type: 0x80FFFF0C},
			{Ofs: 146, Type: 0x80FFFF0C},
			{Ofs: 147, Type: 0x80FFFF0C},
			{Ofs: 148, Type: 0x80FFFF0C},
			{Ofs: 149, Type: 0x80FFFF0C},
			{Ofs: 150, Type: 0x80FFFF0C},
			{Ofs: 151, Type: 0x80FFFF0C},
			{Ofs: 152, Type: 0x80FFFF0C},
			{Ofs: 153, Type: 0x80FFFF0C},
			{Ofs: 154, Type: 0x80FFFF0C},
			{Ofs: 155, Type: 0x80FFFF0C},
			{Ofs: 156, Type: 0x80FFFF0C},
			{Ofs: 157, Type: 0x80FFFF0C},
			{Ofs: 158, Type: 0x80FFFF0C},
			{Ofs: 159, Type: 0x80FFFF0C},
			{Ofs: 160, Type: 0x80FFFF0C},
			{Ofs: 161, Type: 0x80FFFF0C},
			{Ofs: 162, Type: 0x80FFFF0C},
			{Ofs: 163, Type: 0x80FFFF0C},
			{Ofs: 164, Type: 0x80FFFF0C},
			{Ofs: 165, Type: 0x80FFFF0C},
			{Ofs: 166, Type: 0x80FFFF0C},
			{Ofs: 167, Type: 0x80FFFF0C},
			{Ofs: 168, Type: 0x80FFFF0C},
			{Ofs: 169, Type: 0x80FFFF0C},
			{Ofs: 170, Type: 0x80FFFF0C},
			{Ofs: 171, Type: 0x80FFFF0C},
			{Ofs: 172, Type: 0x80FFFF0C},
			{Ofs: 173, Type: 0x80FFFF0C},
			{Ofs: 174, Type: 0x80FFFF0C},
			{Ofs: 175, Type: 0x80FFFF0C},
			{Guid: &GUID_XAxis, Ofs: 176, Type: 0x80FFFF03, Flags: 512},
			{Guid: &GUID_YAxis, Ofs: 180, Type: 0x80FFFF03, Flags: 512},
			{Guid: &GUID_ZAxis, Ofs: 184, Type: 0x80FFFF03, Flags: 512},
			{Guid: &GUID_RxAxis, Ofs: 188, Type: 0x80FFFF03, Flags: 512},
			{Guid: &GUID_RyAxis, Ofs: 192, Type: 0x80FFFF03, Flags: 512},
			{Guid: &GUID_RzAxis, Ofs: 196, Type: 0x80FFFF03, Flags: 512},
			{Guid: &GUID_Slider, Ofs: 24, Type: 0x80FFFF03, Flags: 512},
			{Guid: &GUID_Slider, Ofs: 28, Type: 0x80FFFF03, Flags: 512},
			{Guid: &GUID_XAxis, Ofs: 208, Type: 0x80FFFF03, Flags: 768},
			{Guid: &GUID_YAxis, Ofs: 212, Type: 0x80FFFF03, Flags: 768},
			{Guid: &GUID_ZAxis, Ofs: 216, Type: 0x80FFFF03, Flags: 768},
			{Guid: &GUID_RxAxis, Ofs: 220, Type: 0x80FFFF03, Flags: 768},
			{Guid: &GUID_RyAxis, Ofs: 224, Type: 0x80FFFF03, Flags: 768},
			{Guid: &GUID_RzAxis, Ofs: 228, Type: 0x80FFFF03, Flags: 768},
			{Guid: &GUID_Slider, Ofs: 24, Type: 0x80FFFF03, Flags: 768},
			{Guid: &GUID_Slider, Ofs: 28, Type: 0x80FFFF03, Flags: 768},
			{Guid: &GUID_XAxis, Ofs: 240, Type: 0x80FFFF03, Flags: 1024},
			{Guid: &GUID_YAxis, Ofs: 244, Type: 0x80FFFF03, Flags: 1024},
			{Guid: &GUID_ZAxis, Ofs: 248, Type: 0x80FFFF03, Flags: 1024},
			{Guid: &GUID_RxAxis, Ofs: 252, Type: 0x80FFFF03, Flags: 1024},
			{Guid: &GUID_RyAxis, Ofs: 256, Type: 0x80FFFF03, Flags: 1024},
			{Guid: &GUID_RzAxis, Ofs: 260, Type: 0x80FFFF03, Flags: 1024},
			{Guid: &GUID_Slider, Ofs: 24, Type: 0x80FFFF03, Flags: 1024},
			{Guid: &GUID_Slider, Ofs: 28, Type: 0x80FFFF03, Flags: 1024},
		}[0],
	}

	PROP_BUFFERSIZE         = (*GUID)(unsafe.Pointer(uintptr(1)))
	PROP_AXISMODE           = (*GUID)(unsafe.Pointer(uintptr(2)))
	PROP_GRANULARITY        = (*GUID)(unsafe.Pointer(uintptr(3)))
	PROP_RANGE              = (*GUID)(unsafe.Pointer(uintptr(4)))
	PROP_DEADZONE           = (*GUID)(unsafe.Pointer(uintptr(5)))
	PROP_SATURATION         = (*GUID)(unsafe.Pointer(uintptr(6)))
	PROP_FFGAIN             = (*GUID)(unsafe.Pointer(uintptr(7)))
	PROP_FFLOAD             = (*GUID)(unsafe.Pointer(uintptr(8)))
	PROP_AUTOCENTER         = (*GUID)(unsafe.Pointer(uintptr(9)))
	PROP_CALIBRATIONMODE    = (*GUID)(unsafe.Pointer(uintptr(10)))
	PROP_CALIBRATION        = (*GUID)(unsafe.Pointer(uintptr(11)))
	PROP_GUIDANDPATH        = (*GUID)(unsafe.Pointer(uintptr(12)))
	PROP_INSTANCENAME       = (*GUID)(unsafe.Pointer(uintptr(13)))
	PROP_PRODUCTNAME        = (*GUID)(unsafe.Pointer(uintptr(14)))
	PROP_JOYSTICKID         = (*GUID)(unsafe.Pointer(uintptr(15)))
	PROP_GETPORTDISPLAYNAME = (*GUID)(unsafe.Pointer(uintptr(16)))
	IPROP_PHYSICALRANGE     = (*GUID)(unsafe.Pointer(uintptr(18)))
	PROP_LOGICALRANGE       = (*GUID)(unsafe.Pointer(uintptr(19)))
	PROP_KEYNAME            = (*GUID)(unsafe.Pointer(uintptr(20)))
	PROP_CPOINTS            = (*GUID)(unsafe.Pointer(uintptr(21)))
	PROP_APPDATA            = (*GUID)(unsafe.Pointer(uintptr(22)))
	PROP_SCANCODE           = (*GUID)(unsafe.Pointer(uintptr(23)))
	PROP_VIDPID             = (*GUID)(unsafe.Pointer(uintptr(24)))
	PROP_USERNAME           = (*GUID)(unsafe.Pointer(uintptr(25)))
	PROP_TYPENAME           = (*GUID)(unsafe.Pointer(uintptr(26)))
)

Functions

func BUTTON_ANY

func BUTTON_ANY(instance uint) uint

func DFT_ENUMCOLLECTION

func DFT_ENUMCOLLECTION(n uint) uint

DFT_ENUMCOLLECTION enumerates objects that belongs to HID link collection number n.

func DFT_GETINSTANCE

func DFT_GETINSTANCE(n uint) uint

DFT_GETINSTANCE extracts the object instance number code from a data format type. n is a DirectInput data format type. The possible values for this parameter are identical to those found in the Type member of the OBJECTDATAFORMAT structure.

func DFT_GETTYPE

func DFT_GETTYPE(n uint) uint

DFT_GETTYPE macro extracts the effect type code from an effect format type. n is a DirectInput effect format type. The possible values for this parameter are identical to those found in the EffType member of the EffectInfo structure.

func DFT_MAKEINSTANCE

func DFT_MAKEINSTANCE(n uint) uint

DFT_MAKEINSTANCE creates an instance identifier of a device object for packing in the Type member of the OBJECTDATAFORMAT structure. n is the instance of the object; for example, 1 for button 1 of a mouse.

func EFT_GETTYPE

func EFT_GETTYPE(n uint) uint

EFT_GETTYPE returns the effect type of n.

func GET_DEVICE_SUBTYPE

func GET_DEVICE_SUBTYPE(devType uint) uint

GET_DIDEVICE_SUBTYPE extracts the device subtype code from a device type description code. devType is a DirectInput device type description code. The possible values for this parameter are identical to those found in the DevType member of the DEVICEINSTANCE structure.

func GET_DEVICE_TYPE

func GET_DEVICE_TYPE(devType uint) uint

GET_DIDEVICE_TYPE extracts the device primary type code from a device type description code. devType is a DirectInput device type description code. Possible values for this parameter are identical to those found in the DevType member of the DEVICEINSTANCE structure.

func JOFS_BUTTON

func JOFS_BUTTON(n int) uint32

func JOFS_POV

func JOFS_POV(n int) uint32

func JOFS_SLIDER

func JOFS_SLIDER(n int) uint32

func KeyDown

func KeyDown(value uint8) bool

KeyDown returns true if the high-bit of the value is set, this can be used to determine whether a button state value means the button is down or was pressed.

func KeyUp

func KeyUp(value uint8) bool

KeyUp returns the opposite of KeyDown, see above.

func MAKEUSAGEDWORD

func MAKEUSAGEDWORD(UsagePage, Usage uint) uint

MAKEUSAGEDWORD combines the usage page and usage codes for a device object representing a Human Interface Device (HID), for passing to the Device.GetObjectInfo method.

func SEQUENCE_COMPARE

func SEQUENCE_COMPARE(seq1, seq2 uint32) int

SEQUENCE_COMPARE compares two DirectInput sequence numbers, compensating for wraparound. It returns the difference of two sequence values. Check the result against 0 with the comparison operator of your choice, e.g.

SEQUENCE_COMPARE(a, b) < 0

to check if sequence value a < b.

Types

type CPOINT

type CPOINT struct {
	P   int32
	Log uint32
}

type DATAFORMAT

type DATAFORMAT struct {
	Size     uint32
	ObjSize  uint32
	Flags    uint32
	DataSize uint32
	NumObjs  uint32
	Rgodf    *OBJECTDATAFORMAT
}

type DEVICEINSTANCE

type DEVICEINSTANCE struct {
	Size         uint32
	GuidInstance GUID
	GuidProduct  GUID
	DevType      uint32
	InstanceName [max_path]uint16
	ProductName  [max_path]uint16
	GuidFFDriver GUID
	UsagePage    uint16
	Usage        uint16
}

func (*DEVICEINSTANCE) GetInstanceName added in v1.1.0

func (d *DEVICEINSTANCE) GetInstanceName() string

func (*DEVICEINSTANCE) GetProductName added in v1.1.0

func (d *DEVICEINSTANCE) GetProductName() string

type DEVICEOBJECTDATA

type DEVICEOBJECTDATA struct {
	Ofs       uint32
	Data      uint32
	TimeStamp uint32
	Sequence  uint32
	AppData   uintptr
}

type DEVICEOBJECTINSTANCE added in v1.1.0

type DEVICEOBJECTINSTANCE struct {
	Size              uint32
	GuidType          GUID
	Ofs               uint32
	Type              uint32
	Flags             uint32
	Name              [max_path]uint16
	FFMaxForce        uint32
	FFForceResolution uint32
	CollectionNumber  uint16
	DesignatorIndex   uint16
	UsagePage         uint16
	Usage             uint16
	Dimension         uint32
	Exponent          uint16
	ReportId          uint16
}

func (*DEVICEOBJECTINSTANCE) GetName added in v1.1.0

func (d *DEVICEOBJECTINSTANCE) GetName() string

type Error

type Error interface {
	error
	// Code returns the DirectInput error code for a function. Call this
	// function only if the Error is not nil, if the error code is DI_OK or any
	// other code that signifies success, a function will return nil as the
	// Error instead of a non-nil error with that code in it. This way,
	// functions behave in a standard Go way, returning nil as the error in case
	// of success and only returning non-nil errors if something went wrong.
	Code() int32
}

Error is returned by all di8 functions. It encapsulates the error code returned by DirectInput. If a function succeeds it will return nil as the Error and if it fails you can retrieve the error code using the Code() function. You can check the result against the predefined error codes, like ERR_INVALIDPARAM, ERR_OUTOFMEMORY, etc.

type GUID

type GUID struct {
	Data1 uint32
	Data2 uint16
	Data3 uint16
	Data4 [8]uint8
}

type HINSTANCE

type HINSTANCE uintptr

type HWND

type HWND uintptr

type JOYSTATE

type JOYSTATE struct {
	X       int32
	Y       int32
	Z       int32
	Rx      int32
	Ry      int32
	Rz      int32
	Slider  [2]int32
	POV     [4]uint32
	Buttons [32]byte
}

type JOYSTATE2

type JOYSTATE2 struct {
	X       int32
	Y       int32
	Z       int32
	Rx      int32
	Ry      int32
	Rz      int32
	Slider  [2]int32
	POV     [4]uint32
	Buttons [128]byte
	VX      int32
	VY      int32
	VZ      int32
	VRx     int32
	VRy     int32
	VRz     int32
	VSlider [2]int32
	AX      int32
	AY      int32
	AZ      int32
	ARx     int32
	ARy     int32
	ARz     int32
	ASlider [2]int32
	FX      int32
	FY      int32
	FZ      int32
	FRx     int32
	FRy     int32
	FRz     int32
	FSlider [2]int32
}

type KEYBOARDSTATE

type KEYBOARDSTATE [256]byte

type MOUSESTATE

type MOUSESTATE struct {
	X       int32
	Y       int32
	Z       int32
	Buttons [4]byte
}

type MOUSESTATE2

type MOUSESTATE2 struct {
	X       int32
	Y       int32
	Z       int32
	Buttons [8]byte
}

type OBJECTDATAFORMAT

type OBJECTDATAFORMAT struct {
	Guid  *GUID
	Ofs   uint32
	Type  uint32
	Flags uint32
}

type PROPCAL

type PROPCAL struct {
	PROPHEADER
	Min    int32
	Center int32
	Max    int32
}

func NewPropCal

func NewPropCal(obj, how uint32, min, center, max int32) *PROPCAL

type PROPCALPOV

type PROPCALPOV struct {
	PROPHEADER
	Min [5]int32
	Max [5]int32
}

func NewPropCalPOV

func NewPropCalPOV(obj, how uint32, min, max [5]int32) *PROPCALPOV

type PROPCPOINTS

type PROPCPOINTS struct {
	PROPHEADER
	CPointsNum uint32
	Points     [MAXCPOINTSNUM]CPOINT
}

func NewPropCPoints

func NewPropCPoints(obj, how uint32, points []CPOINT) *PROPCPOINTS

type PROPDWORD

type PROPDWORD struct {
	PROPHEADER
	Data uint32
}

func NewPropDWord

func NewPropDWord(obj, how, data uint32) *PROPDWORD

type PROPGUIDANDPATH

type PROPGUIDANDPATH struct {
	PROPHEADER
	GuidClass GUID
	Path      [max_path]uint16
}

func NewPropGuidAndPath

func NewPropGuidAndPath(obj, how uint32, guid GUID, path string) *PROPGUIDANDPATH

func (*PROPGUIDANDPATH) GetPath added in v1.1.0

func (p *PROPGUIDANDPATH) GetPath() string

type PROPHEADER

type PROPHEADER struct {
	Size       uint32
	HeaderSize uint32
	Obj        uint32
	How        uint32
}

type PROPPOINTER

type PROPPOINTER struct {
	PROPHEADER
	Data uintptr
}

func NewPropPointer

func NewPropPointer(obj, how uint32, pointer uintptr) *PROPPOINTER

type PROPRANGE

type PROPRANGE struct {
	PROPHEADER
	Min int32
	Max int32
}

func NewPropRange

func NewPropRange(obj, how uint32, min, max int32) *PROPRANGE

type PROPSTRING

type PROPSTRING struct {
	PROPHEADER
	String [max_path]uint16
}

func NewPropString

func NewPropString(obj, how uint32, s string) *PROPSTRING

func (*PROPSTRING) GetString added in v1.1.0

func (p *PROPSTRING) GetString() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL