USING: windows.kernel32 windows.ole32 windows.com windows.com.syntax
-alien alien.c-types alien.syntax kernel system namespaces math ;
+alien alien.c-types alien.syntax kernel system namespaces math constants
+alias ;
IN: windows.dinput
<<
FUNCTION: HRESULT DirectInput8Create ( HINSTANCE hinst, DWORD dwVersion, REFIID riidtlf, LPVOID* ppvOut, LPUNKNOWN punkOuter ) ;
-: DIRECTINPUT_VERSION HEX: 0800 ; inline
-
-: DI8DEVCLASS_ALL 0 ; inline
-: DI8DEVCLASS_DEVICE 1 ; inline
-: DI8DEVCLASS_POINTER 2 ; inline
-: DI8DEVCLASS_KEYBOARD 3 ; inline
-: DI8DEVCLASS_GAMECTRL 4 ; inline
-
-: DIEDFL_ALLDEVICES HEX: 00000000 ; inline
-: DIEDFL_ATTACHEDONLY HEX: 00000001 ; inline
-: DIEDFL_FORCEFEEDBACK HEX: 00000100 ; inline
-: DIEDFL_INCLUDEALIASES HEX: 00010000 ; inline
-: DIEDFL_INCLUDEPHANTOMS HEX: 00020000 ; inline
-: DIEDFL_INCLUDEHIDDEN HEX: 00040000 ; inline
-
-: DIENUM_STOP 0 ; inline
-: DIENUM_CONTINUE 1 ; inline
-
-: DIDF_ABSAXIS 1 ;
-: DIDF_RELAXIS 2 ;
-
-: DIDFT_ALL HEX: 00000000 ; inline
-
-: DIDFT_RELAXIS HEX: 00000001 ; inline
-: DIDFT_ABSAXIS HEX: 00000002 ; inline
-: DIDFT_AXIS HEX: 00000003 ; inline
-
-: DIDFT_PSHBUTTON HEX: 00000004 ; inline
-: DIDFT_TGLBUTTON HEX: 00000008 ; inline
-: DIDFT_BUTTON HEX: 0000000C ; inline
-
-: DIDFT_POV HEX: 00000010 ; inline
-: DIDFT_COLLECTION HEX: 00000040 ; inline
-: DIDFT_NODATA HEX: 00000080 ; inline
-
-: DIDFT_ANYINSTANCE HEX: 00FFFF00 ; inline
-: DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE ; inline
+CONSTANT: DIRECTINPUT_VERSION HEX: 0800
+
+CONSTANT: DI8DEVCLASS_ALL 0
+CONSTANT: DI8DEVCLASS_DEVICE 1
+CONSTANT: DI8DEVCLASS_POINTER 2
+CONSTANT: DI8DEVCLASS_KEYBOARD 3
+CONSTANT: DI8DEVCLASS_GAMECTRL 4
+
+CONSTANT: DIEDFL_ALLDEVICES HEX: 00000000
+CONSTANT: DIEDFL_ATTACHEDONLY HEX: 00000001
+CONSTANT: DIEDFL_FORCEFEEDBACK HEX: 00000100
+CONSTANT: DIEDFL_INCLUDEALIASES HEX: 00010000
+CONSTANT: DIEDFL_INCLUDEPHANTOMS HEX: 00020000
+CONSTANT: DIEDFL_INCLUDEHIDDEN HEX: 00040000
+
+CONSTANT: DIENUM_STOP 0
+CONSTANT: DIENUM_CONTINUE 1
+
+CONSTANT: DIDF_ABSAXIS 1
+CONSTANT: DIDF_RELAXIS 2
+
+CONSTANT: DIDFT_ALL HEX: 00000000
+
+CONSTANT: DIDFT_RELAXIS HEX: 00000001
+CONSTANT: DIDFT_ABSAXIS HEX: 00000002
+CONSTANT: DIDFT_AXIS HEX: 00000003
+
+CONSTANT: DIDFT_PSHBUTTON HEX: 00000004
+CONSTANT: DIDFT_TGLBUTTON HEX: 00000008
+CONSTANT: DIDFT_BUTTON HEX: 0000000C
+
+CONSTANT: DIDFT_POV HEX: 00000010
+CONSTANT: DIDFT_COLLECTION HEX: 00000040
+CONSTANT: DIDFT_NODATA HEX: 00000080
+
+CONSTANT: DIDFT_ANYINSTANCE HEX: 00FFFF00
+ALIAS: DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE
: DIDFT_MAKEINSTANCE ( n -- instance ) 8 shift ; inline
: DIDFT_GETTYPE ( n -- type ) HEX: FF bitand ; inline
: DIDFT_GETINSTANCE ( n -- instance ) -8 shift HEX: FFFF bitand ; inline
-: DIDFT_FFACTUATOR HEX: 01000000 ; inline
-: DIDFT_FFEFFECTTRIGGER HEX: 02000000 ; inline
-: DIDFT_OUTPUT HEX: 10000000 ; inline
-: DIDFT_VENDORDEFINED HEX: 04000000 ; inline
-: DIDFT_ALIAS HEX: 08000000 ; inline
-: DIDFT_OPTIONAL HEX: 80000000 ; inline
+CONSTANT: DIDFT_FFACTUATOR HEX: 01000000
+CONSTANT: DIDFT_FFEFFECTTRIGGER HEX: 02000000
+CONSTANT: DIDFT_OUTPUT HEX: 10000000
+CONSTANT: DIDFT_VENDORDEFINED HEX: 04000000
+CONSTANT: DIDFT_ALIAS HEX: 08000000
+CONSTANT: DIDFT_OPTIONAL HEX: 80000000
: DIDFT_ENUMCOLLECTION ( n -- instance ) 8 shift HEX: FFFF bitand ; inline
-: DIDFT_NOCOLLECTION HEX: 00FFFF00 ; inline
-
-: DIDOI_FFACTUATOR HEX: 00000001 ; inline
-: DIDOI_FFEFFECTTRIGGER HEX: 00000002 ; inline
-: DIDOI_POLLED HEX: 00008000 ; inline
-: DIDOI_ASPECTPOSITION HEX: 00000100 ; inline
-: DIDOI_ASPECTVELOCITY HEX: 00000200 ; inline
-: DIDOI_ASPECTACCEL HEX: 00000300 ; inline
-: DIDOI_ASPECTFORCE HEX: 00000400 ; inline
-: DIDOI_ASPECTMASK HEX: 00000F00 ; inline
-: DIDOI_GUIDISUSAGE HEX: 00010000 ; inline
-
-: DISCL_EXCLUSIVE HEX: 00000001 ; inline
-: DISCL_NONEXCLUSIVE HEX: 00000002 ; inline
-: DISCL_FOREGROUND HEX: 00000004 ; inline
-: DISCL_BACKGROUND HEX: 00000008 ; inline
-: DISCL_NOWINKEY HEX: 00000010 ; inline
-
-: DIK_ESCAPE HEX: 01 ; inline
-: DIK_1 HEX: 02 ; inline
-: DIK_2 HEX: 03 ; inline
-: DIK_3 HEX: 04 ; inline
-: DIK_4 HEX: 05 ; inline
-: DIK_5 HEX: 06 ; inline
-: DIK_6 HEX: 07 ; inline
-: DIK_7 HEX: 08 ; inline
-: DIK_8 HEX: 09 ; inline
-: DIK_9 HEX: 0A ; inline
-: DIK_0 HEX: 0B ; inline
-: DIK_MINUS HEX: 0C ; inline
-: DIK_EQUALS HEX: 0D ; inline
-: DIK_BACK HEX: 0E ; inline
-: DIK_TAB HEX: 0F ; inline
-: DIK_Q HEX: 10 ; inline
-: DIK_W HEX: 11 ; inline
-: DIK_E HEX: 12 ; inline
-: DIK_R HEX: 13 ; inline
-: DIK_T HEX: 14 ; inline
-: DIK_Y HEX: 15 ; inline
-: DIK_U HEX: 16 ; inline
-: DIK_I HEX: 17 ; inline
-: DIK_O HEX: 18 ; inline
-: DIK_P HEX: 19 ; inline
-: DIK_LBRACKET HEX: 1A ; inline
-: DIK_RBRACKET HEX: 1B ; inline
-: DIK_RETURN HEX: 1C ; inline
-: DIK_LCONTROL HEX: 1D ; inline
-: DIK_A HEX: 1E ; inline
-: DIK_S HEX: 1F ; inline
-: DIK_D HEX: 20 ; inline
-: DIK_F HEX: 21 ; inline
-: DIK_G HEX: 22 ; inline
-: DIK_H HEX: 23 ; inline
-: DIK_J HEX: 24 ; inline
-: DIK_K HEX: 25 ; inline
-: DIK_L HEX: 26 ; inline
-: DIK_SEMICOLON HEX: 27 ; inline
-: DIK_APOSTROPHE HEX: 28 ; inline
-: DIK_GRAVE HEX: 29 ; inline
-: DIK_LSHIFT HEX: 2A ; inline
-: DIK_BACKSLASH HEX: 2B ; inline
-: DIK_Z HEX: 2C ; inline
-: DIK_X HEX: 2D ; inline
-: DIK_C HEX: 2E ; inline
-: DIK_V HEX: 2F ; inline
-: DIK_B HEX: 30 ; inline
-: DIK_N HEX: 31 ; inline
-: DIK_M HEX: 32 ; inline
-: DIK_COMMA HEX: 33 ; inline
-: DIK_PERIOD HEX: 34 ; inline
-: DIK_SLASH HEX: 35 ; inline
-: DIK_RSHIFT HEX: 36 ; inline
-: DIK_MULTIPLY HEX: 37 ; inline
-: DIK_LMENU HEX: 38 ; inline
-: DIK_SPACE HEX: 39 ; inline
-: DIK_CAPITAL HEX: 3A ; inline
-: DIK_F1 HEX: 3B ; inline
-: DIK_F2 HEX: 3C ; inline
-: DIK_F3 HEX: 3D ; inline
-: DIK_F4 HEX: 3E ; inline
-: DIK_F5 HEX: 3F ; inline
-: DIK_F6 HEX: 40 ; inline
-: DIK_F7 HEX: 41 ; inline
-: DIK_F8 HEX: 42 ; inline
-: DIK_F9 HEX: 43 ; inline
-: DIK_F10 HEX: 44 ; inline
-: DIK_NUMLOCK HEX: 45 ; inline
-: DIK_SCROLL HEX: 46 ; inline
-: DIK_NUMPAD7 HEX: 47 ; inline
-: DIK_NUMPAD8 HEX: 48 ; inline
-: DIK_NUMPAD9 HEX: 49 ; inline
-: DIK_SUBTRACT HEX: 4A ; inline
-: DIK_NUMPAD4 HEX: 4B ; inline
-: DIK_NUMPAD5 HEX: 4C ; inline
-: DIK_NUMPAD6 HEX: 4D ; inline
-: DIK_ADD HEX: 4E ; inline
-: DIK_NUMPAD1 HEX: 4F ; inline
-: DIK_NUMPAD2 HEX: 50 ; inline
-: DIK_NUMPAD3 HEX: 51 ; inline
-: DIK_NUMPAD0 HEX: 52 ; inline
-: DIK_DECIMAL HEX: 53 ; inline
-: DIK_OEM_102 HEX: 56 ; inline
-: DIK_F11 HEX: 57 ; inline
-: DIK_F12 HEX: 58 ; inline
-: DIK_F13 HEX: 64 ; inline
-: DIK_F14 HEX: 65 ; inline
-: DIK_F15 HEX: 66 ; inline
-: DIK_KANA HEX: 70 ; inline
-: DIK_ABNT_C1 HEX: 73 ; inline
-: DIK_CONVERT HEX: 79 ; inline
-: DIK_NOCONVERT HEX: 7B ; inline
-: DIK_YEN HEX: 7D ; inline
-: DIK_ABNT_C2 HEX: 7E ; inline
-: DIK_NUMPADEQUALS HEX: 8D ; inline
-: DIK_PREVTRACK HEX: 90 ; inline
-: DIK_AT HEX: 91 ; inline
-: DIK_COLON HEX: 92 ; inline
-: DIK_UNDERLINE HEX: 93 ; inline
-: DIK_KANJI HEX: 94 ; inline
-: DIK_STOP HEX: 95 ; inline
-: DIK_AX HEX: 96 ; inline
-: DIK_UNLABELED HEX: 97 ; inline
-: DIK_NEXTTRACK HEX: 99 ; inline
-: DIK_NUMPADENTER HEX: 9C ; inline
-: DIK_RCONTROL HEX: 9D ; inline
-: DIK_MUTE HEX: A0 ; inline
-: DIK_CALCULATOR HEX: A1 ; inline
-: DIK_PLAYPAUSE HEX: A2 ; inline
-: DIK_MEDIASTOP HEX: A4 ; inline
-: DIK_VOLUMEDOWN HEX: AE ; inline
-: DIK_VOLUMEUP HEX: B0 ; inline
-: DIK_WEBHOME HEX: B2 ; inline
-: DIK_NUMPADCOMMA HEX: B3 ; inline
-: DIK_DIVIDE HEX: B5 ; inline
-: DIK_SYSRQ HEX: B7 ; inline
-: DIK_RMENU HEX: B8 ; inline
-: DIK_PAUSE HEX: C5 ; inline
-: DIK_HOME HEX: C7 ; inline
-: DIK_UP HEX: C8 ; inline
-: DIK_PRIOR HEX: C9 ; inline
-: DIK_LEFT HEX: CB ; inline
-: DIK_RIGHT HEX: CD ; inline
-: DIK_END HEX: CF ; inline
-: DIK_DOWN HEX: D0 ; inline
-: DIK_NEXT HEX: D1 ; inline
-: DIK_INSERT HEX: D2 ; inline
-: DIK_DELETE HEX: D3 ; inline
-: DIK_LWIN HEX: DB ; inline
-: DIK_RWIN HEX: DC ; inline
-: DIK_APPS HEX: DD ; inline
-: DIK_POWER HEX: DE ; inline
-: DIK_SLEEP HEX: DF ; inline
-: DIK_WAKE HEX: E3 ; inline
-: DIK_WEBSEARCH HEX: E5 ; inline
-: DIK_WEBFAVORITES HEX: E6 ; inline
-: DIK_WEBREFRESH HEX: E7 ; inline
-: DIK_WEBSTOP HEX: E8 ; inline
-: DIK_WEBFORWARD HEX: E9 ; inline
-: DIK_WEBBACK HEX: EA ; inline
-: DIK_MYCOMPUTER HEX: EB ; inline
-: DIK_MAIL HEX: EC ; inline
-: DIK_MEDIASELECT HEX: ED ; inline
-
-: DIK_BACKSPACE DIK_BACK ; inline
-: DIK_NUMPADSTAR DIK_MULTIPLY ; inline
-: DIK_LALT DIK_LMENU ; inline
-: DIK_CAPSLOCK DIK_CAPITAL ; inline
-: DIK_NUMPADMINUS DIK_SUBTRACT ; inline
-: DIK_NUMPADPLUS DIK_ADD ; inline
-: DIK_NUMPADPERIOD DIK_DECIMAL ; inline
-: DIK_NUMPADSLASH DIK_DIVIDE ; inline
-: DIK_RALT DIK_RMENU ; inline
-: DIK_UPARROW DIK_UP ; inline
-: DIK_PGUP DIK_PRIOR ; inline
-: DIK_LEFTARROW DIK_LEFT ; inline
-: DIK_RIGHTARROW DIK_RIGHT ; inline
-: DIK_DOWNARROW DIK_DOWN ; inline
-: DIK_PGDN DIK_NEXT ; inline
-
-: DIK_CIRCUMFLEX DIK_PREVTRACK ; inline
-
-: DI8DEVTYPE_DEVICE HEX: 11 ; inline
-: DI8DEVTYPE_MOUSE HEX: 12 ; inline
-: DI8DEVTYPE_KEYBOARD HEX: 13 ; inline
-: DI8DEVTYPE_JOYSTICK HEX: 14 ; inline
-: DI8DEVTYPE_GAMEPAD HEX: 15 ; inline
-: DI8DEVTYPE_DRIVING HEX: 16 ; inline
-: DI8DEVTYPE_FLIGHT HEX: 17 ; inline
-: DI8DEVTYPE_1STPERSON HEX: 18 ; inline
-: DI8DEVTYPE_DEVICECTRL HEX: 19 ; inline
-: DI8DEVTYPE_SCREENPOINTER HEX: 1A ; inline
-: DI8DEVTYPE_REMOTE HEX: 1B ; inline
-: DI8DEVTYPE_SUPPLEMENTAL HEX: 1C ; inline
+CONSTANT: DIDFT_NOCOLLECTION HEX: 00FFFF00
+
+CONSTANT: DIDOI_FFACTUATOR HEX: 00000001
+CONSTANT: DIDOI_FFEFFECTTRIGGER HEX: 00000002
+CONSTANT: DIDOI_POLLED HEX: 00008000
+CONSTANT: DIDOI_ASPECTPOSITION HEX: 00000100
+CONSTANT: DIDOI_ASPECTVELOCITY HEX: 00000200
+CONSTANT: DIDOI_ASPECTACCEL HEX: 00000300
+CONSTANT: DIDOI_ASPECTFORCE HEX: 00000400
+CONSTANT: DIDOI_ASPECTMASK HEX: 00000F00
+CONSTANT: DIDOI_GUIDISUSAGE HEX: 00010000
+
+CONSTANT: DISCL_EXCLUSIVE HEX: 00000001
+CONSTANT: DISCL_NONEXCLUSIVE HEX: 00000002
+CONSTANT: DISCL_FOREGROUND HEX: 00000004
+CONSTANT: DISCL_BACKGROUND HEX: 00000008
+CONSTANT: DISCL_NOWINKEY HEX: 00000010
+
+CONSTANT: DIK_ESCAPE HEX: 01
+CONSTANT: DIK_1 HEX: 02
+CONSTANT: DIK_2 HEX: 03
+CONSTANT: DIK_3 HEX: 04
+CONSTANT: DIK_4 HEX: 05
+CONSTANT: DIK_5 HEX: 06
+CONSTANT: DIK_6 HEX: 07
+CONSTANT: DIK_7 HEX: 08
+CONSTANT: DIK_8 HEX: 09
+CONSTANT: DIK_9 HEX: 0A
+CONSTANT: DIK_0 HEX: 0B
+CONSTANT: DIK_MINUS HEX: 0C
+CONSTANT: DIK_EQUALS HEX: 0D
+CONSTANT: DIK_BACK HEX: 0E
+CONSTANT: DIK_TAB HEX: 0F
+CONSTANT: DIK_Q HEX: 10
+CONSTANT: DIK_W HEX: 11
+CONSTANT: DIK_E HEX: 12
+CONSTANT: DIK_R HEX: 13
+CONSTANT: DIK_T HEX: 14
+CONSTANT: DIK_Y HEX: 15
+CONSTANT: DIK_U HEX: 16
+CONSTANT: DIK_I HEX: 17
+CONSTANT: DIK_O HEX: 18
+CONSTANT: DIK_P HEX: 19
+CONSTANT: DIK_LBRACKET HEX: 1A
+CONSTANT: DIK_RBRACKET HEX: 1B
+CONSTANT: DIK_RETURN HEX: 1C
+CONSTANT: DIK_LCONTROL HEX: 1D
+CONSTANT: DIK_A HEX: 1E
+CONSTANT: DIK_S HEX: 1F
+CONSTANT: DIK_D HEX: 20
+CONSTANT: DIK_F HEX: 21
+CONSTANT: DIK_G HEX: 22
+CONSTANT: DIK_H HEX: 23
+CONSTANT: DIK_J HEX: 24
+CONSTANT: DIK_K HEX: 25
+CONSTANT: DIK_L HEX: 26
+CONSTANT: DIK_SEMICOLON HEX: 27
+CONSTANT: DIK_APOSTROPHE HEX: 28
+CONSTANT: DIK_GRAVE HEX: 29
+CONSTANT: DIK_LSHIFT HEX: 2A
+CONSTANT: DIK_BACKSLASH HEX: 2B
+CONSTANT: DIK_Z HEX: 2C
+CONSTANT: DIK_X HEX: 2D
+CONSTANT: DIK_C HEX: 2E
+CONSTANT: DIK_V HEX: 2F
+CONSTANT: DIK_B HEX: 30
+CONSTANT: DIK_N HEX: 31
+CONSTANT: DIK_M HEX: 32
+CONSTANT: DIK_COMMA HEX: 33
+CONSTANT: DIK_PERIOD HEX: 34
+CONSTANT: DIK_SLASH HEX: 35
+CONSTANT: DIK_RSHIFT HEX: 36
+CONSTANT: DIK_MULTIPLY HEX: 37
+CONSTANT: DIK_LMENU HEX: 38
+CONSTANT: DIK_SPACE HEX: 39
+CONSTANT: DIK_CAPITAL HEX: 3A
+CONSTANT: DIK_F1 HEX: 3B
+CONSTANT: DIK_F2 HEX: 3C
+CONSTANT: DIK_F3 HEX: 3D
+CONSTANT: DIK_F4 HEX: 3E
+CONSTANT: DIK_F5 HEX: 3F
+CONSTANT: DIK_F6 HEX: 40
+CONSTANT: DIK_F7 HEX: 41
+CONSTANT: DIK_F8 HEX: 42
+CONSTANT: DIK_F9 HEX: 43
+CONSTANT: DIK_F10 HEX: 44
+CONSTANT: DIK_NUMLOCK HEX: 45
+CONSTANT: DIK_SCROLL HEX: 46
+CONSTANT: DIK_NUMPAD7 HEX: 47
+CONSTANT: DIK_NUMPAD8 HEX: 48
+CONSTANT: DIK_NUMPAD9 HEX: 49
+CONSTANT: DIK_SUBTRACT HEX: 4A
+CONSTANT: DIK_NUMPAD4 HEX: 4B
+CONSTANT: DIK_NUMPAD5 HEX: 4C
+CONSTANT: DIK_NUMPAD6 HEX: 4D
+CONSTANT: DIK_ADD HEX: 4E
+CONSTANT: DIK_NUMPAD1 HEX: 4F
+CONSTANT: DIK_NUMPAD2 HEX: 50
+CONSTANT: DIK_NUMPAD3 HEX: 51
+CONSTANT: DIK_NUMPAD0 HEX: 52
+CONSTANT: DIK_DECIMAL HEX: 53
+CONSTANT: DIK_OEM_102 HEX: 56
+CONSTANT: DIK_F11 HEX: 57
+CONSTANT: DIK_F12 HEX: 58
+CONSTANT: DIK_F13 HEX: 64
+CONSTANT: DIK_F14 HEX: 65
+CONSTANT: DIK_F15 HEX: 66
+CONSTANT: DIK_KANA HEX: 70
+CONSTANT: DIK_ABNT_C1 HEX: 73
+CONSTANT: DIK_CONVERT HEX: 79
+CONSTANT: DIK_NOCONVERT HEX: 7B
+CONSTANT: DIK_YEN HEX: 7D
+CONSTANT: DIK_ABNT_C2 HEX: 7E
+CONSTANT: DIK_NUMPADEQUALS HEX: 8D
+CONSTANT: DIK_PREVTRACK HEX: 90
+CONSTANT: DIK_AT HEX: 91
+CONSTANT: DIK_COLON HEX: 92
+CONSTANT: DIK_UNDERLINE HEX: 93
+CONSTANT: DIK_KANJI HEX: 94
+CONSTANT: DIK_STOP HEX: 95
+CONSTANT: DIK_AX HEX: 96
+CONSTANT: DIK_UNLABELED HEX: 97
+CONSTANT: DIK_NEXTTRACK HEX: 99
+CONSTANT: DIK_NUMPADENTER HEX: 9C
+CONSTANT: DIK_RCONTROL HEX: 9D
+CONSTANT: DIK_MUTE HEX: A0
+CONSTANT: DIK_CALCULATOR HEX: A1
+CONSTANT: DIK_PLAYPAUSE HEX: A2
+CONSTANT: DIK_MEDIASTOP HEX: A4
+CONSTANT: DIK_VOLUMEDOWN HEX: AE
+CONSTANT: DIK_VOLUMEUP HEX: B0
+CONSTANT: DIK_WEBHOME HEX: B2
+CONSTANT: DIK_NUMPADCOMMA HEX: B3
+CONSTANT: DIK_DIVIDE HEX: B5
+CONSTANT: DIK_SYSRQ HEX: B7
+CONSTANT: DIK_RMENU HEX: B8
+CONSTANT: DIK_PAUSE HEX: C5
+CONSTANT: DIK_HOME HEX: C7
+CONSTANT: DIK_UP HEX: C8
+CONSTANT: DIK_PRIOR HEX: C9
+CONSTANT: DIK_LEFT HEX: CB
+CONSTANT: DIK_RIGHT HEX: CD
+CONSTANT: DIK_END HEX: CF
+CONSTANT: DIK_DOWN HEX: D0
+CONSTANT: DIK_NEXT HEX: D1
+CONSTANT: DIK_INSERT HEX: D2
+CONSTANT: DIK_DELETE HEX: D3
+CONSTANT: DIK_LWIN HEX: DB
+CONSTANT: DIK_RWIN HEX: DC
+CONSTANT: DIK_APPS HEX: DD
+CONSTANT: DIK_POWER HEX: DE
+CONSTANT: DIK_SLEEP HEX: DF
+CONSTANT: DIK_WAKE HEX: E3
+CONSTANT: DIK_WEBSEARCH HEX: E5
+CONSTANT: DIK_WEBFAVORITES HEX: E6
+CONSTANT: DIK_WEBREFRESH HEX: E7
+CONSTANT: DIK_WEBSTOP HEX: E8
+CONSTANT: DIK_WEBFORWARD HEX: E9
+CONSTANT: DIK_WEBBACK HEX: EA
+CONSTANT: DIK_MYCOMPUTER HEX: EB
+CONSTANT: DIK_MAIL HEX: EC
+CONSTANT: DIK_MEDIASELECT HEX: ED
+
+ALIAS: DIK_BACKSPACE DIK_BACK
+ALIAS: DIK_NUMPADSTAR DIK_MULTIPLY
+ALIAS: DIK_LALT DIK_LMENU
+ALIAS: DIK_CAPSLOCK DIK_CAPITAL
+ALIAS: DIK_NUMPADMINUS DIK_SUBTRACT
+ALIAS: DIK_NUMPADPLUS DIK_ADD
+ALIAS: DIK_NUMPADPERIOD DIK_DECIMAL
+ALIAS: DIK_NUMPADSLASH DIK_DIVIDE
+ALIAS: DIK_RALT DIK_RMENU
+ALIAS: DIK_UPARROW DIK_UP
+ALIAS: DIK_PGUP DIK_PRIOR
+ALIAS: DIK_LEFTARROW DIK_LEFT
+ALIAS: DIK_RIGHTARROW DIK_RIGHT
+ALIAS: DIK_DOWNARROW DIK_DOWN
+ALIAS: DIK_PGDN DIK_NEXT
+
+ALIAS: DIK_CIRCUMFLEX DIK_PREVTRACK
+
+CONSTANT: DI8DEVTYPE_DEVICE HEX: 11
+CONSTANT: DI8DEVTYPE_MOUSE HEX: 12
+CONSTANT: DI8DEVTYPE_KEYBOARD HEX: 13
+CONSTANT: DI8DEVTYPE_JOYSTICK HEX: 14
+CONSTANT: DI8DEVTYPE_GAMEPAD HEX: 15
+CONSTANT: DI8DEVTYPE_DRIVING HEX: 16
+CONSTANT: DI8DEVTYPE_FLIGHT HEX: 17
+CONSTANT: DI8DEVTYPE_1STPERSON HEX: 18
+CONSTANT: DI8DEVTYPE_DEVICECTRL HEX: 19
+CONSTANT: DI8DEVTYPE_SCREENPOINTER HEX: 1A
+CONSTANT: DI8DEVTYPE_REMOTE HEX: 1B
+CONSTANT: DI8DEVTYPE_SUPPLEMENTAL HEX: 1C
: GET_DIDEVICE_TYPE ( dwType -- type ) HEX: FF bitand ; inline
-: DIPROPRANGE_NOMIN HEX: 80000000 ; inline
-: DIPROPRANGE_NOMAX HEX: 7FFFFFFF ; inline
-: MAXCPOINTSNUM 8 ; inline
-
-: DIPH_DEVICE 0 ; inline
-: DIPH_BYOFFSET 1 ; inline
-: DIPH_BYID 2 ; inline
-: DIPH_BYUSAGE 3 ; inline
+CONSTANT: DIPROPRANGE_NOMIN HEX: 80000000
+CONSTANT: DIPROPRANGE_NOMAX HEX: 7FFFFFFF
+CONSTANT: MAXCPOINTSNUM 8
+CONSTANT: DIPH_DEVICE 0
+CONSTANT: DIPH_BYOFFSET 1
+CONSTANT: DIPH_BYID 2
+CONSTANT: DIPH_BYUSAGE 3
+
: DIMAKEUSAGEDWORD ( UsagePage Usage -- DWORD ) 16 shift bitor ; inline
-: DIPROP_BUFFERSIZE 1 <alien> ; inline
-: DIPROP_AXISMODE 2 <alien> ; inline
-
-: DIPROPAXISMODE_ABS 0 ; inline
-: DIPROPAXISMODE_REL 1 ; inline
-
-: DIPROP_GRANULARITY 3 <alien> ; inline
-: DIPROP_RANGE 4 <alien> ; inline
-: DIPROP_DEADZONE 5 <alien> ; inline
-: DIPROP_SATURATION 6 <alien> ; inline
-: DIPROP_FFGAIN 7 <alien> ; inline
-: DIPROP_FFLOAD 8 <alien> ; inline
-: DIPROP_AUTOCENTER 9 <alien> ; inline
-
-: DIPROPAUTOCENTER_OFF 0 ; inline
-: DIPROPAUTOCENTER_ON 1 ; inline
-
-: DIPROP_CALIBRATIONMODE 10 <alien> ; inline
-
-: DIPROPCALIBRATIONMODE_COOKED 0 ; inline
-: DIPROPCALIBRATIONMODE_RAW 1 ; inline
-
-: DIPROP_CALIBRATION 11 <alien> ; inline
-: DIPROP_GUIDANDPATH 12 <alien> ; inline
-: DIPROP_INSTANCENAME 13 <alien> ; inline
-: DIPROP_PRODUCTNAME 14 <alien> ; inline
-: DIPROP_JOYSTICKID 15 <alien> ; inline
-: DIPROP_GETPORTDISPLAYNAME 16 <alien> ; inline
-: DIPROP_PHYSICALRANGE 18 <alien> ; inline
-: DIPROP_LOGICALRANGE 19 <alien> ; inline
-: DIPROP_KEYNAME 20 <alien> ; inline
-: DIPROP_CPOINTS 21 <alien> ; inline
-: DIPROP_APPDATA 22 <alien> ; inline
-: DIPROP_SCANCODE 23 <alien> ; inline
-: DIPROP_VIDPID 24 <alien> ; inline
-: DIPROP_USERNAME 25 <alien> ; inline
-: DIPROP_TYPENAME 26 <alien> ; inline
-
-: GUID_XAxis GUID: {A36D02E0-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_YAxis GUID: {A36D02E1-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_ZAxis GUID: {A36D02E2-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_RxAxis GUID: {A36D02F4-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_RyAxis GUID: {A36D02F5-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_RzAxis GUID: {A36D02E3-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_Slider GUID: {A36D02E4-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_Button GUID: {A36D02F0-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_Key GUID: {55728220-D33C-11CF-BFC7-444553540000} ; inline
-: GUID_POV GUID: {A36D02F2-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_Unknown GUID: {A36D02F3-C9F3-11CF-BFC7-444553540000} ; inline
-: GUID_SysMouse GUID: {6F1D2B60-D5A0-11CF-BFC7-444553540000} ; inline
-: GUID_SysKeyboard GUID: {6F1D2B61-D5A0-11CF-BFC7-444553540000} ; inline
-: GUID_Joystick GUID: {6F1D2B70-D5A0-11CF-BFC7-444553540000} ; inline
-: GUID_SysMouseEm GUID: {6F1D2B80-D5A0-11CF-BFC7-444553540000} ; inline
-: GUID_SysMouseEm2 GUID: {6F1D2B81-D5A0-11CF-BFC7-444553540000} ; inline
-: GUID_SysKeyboardEm GUID: {6F1D2B82-D5A0-11CF-BFC7-444553540000} ; inline
-: GUID_SysKeyboardEm2 GUID: {6F1D2B83-D5A0-11CF-BFC7-444553540000} ; inline
+: DIPROP_BUFFERSIZE ( -- alien ) 1 <alien> ; inline
+: DIPROP_AXISMODE ( -- alien ) 2 <alien> ; inline
+
+CONSTANT: DIPROPAXISMODE_ABS 0
+CONSTANT: DIPROPAXISMODE_REL 1
+
+: DIPROP_GRANULARITY ( -- alien ) 3 <alien> ; inline
+: DIPROP_RANGE ( -- alien ) 4 <alien> ; inline
+: DIPROP_DEADZONE ( -- alien ) 5 <alien> ; inline
+: DIPROP_SATURATION ( -- alien ) 6 <alien> ; inline
+: DIPROP_FFGAIN ( -- alien ) 7 <alien> ; inline
+: DIPROP_FFLOAD ( -- alien ) 8 <alien> ; inline
+: DIPROP_AUTOCENTER ( -- alien ) 9 <alien> ; inline
+
+CONSTANT: DIPROPAUTOCENTER_OFF 0
+CONSTANT: DIPROPAUTOCENTER_ON 1
+
+: DIPROP_CALIBRATIONMODE ( -- alien ) 10 <alien> ; inline
+
+CONSTANT: DIPROPCALIBRATIONMODE_COOKED 0
+CONSTANT: DIPROPCALIBRATIONMODE_RAW 1
+
+: DIPROP_CALIBRATION ( -- alien ) 11 <alien> ; inline
+: DIPROP_GUIDANDPATH ( -- alien ) 12 <alien> ; inline
+: DIPROP_INSTANCENAME ( -- alien ) 13 <alien> ; inline
+: DIPROP_PRODUCTNAME ( -- alien ) 14 <alien> ; inline
+: DIPROP_JOYSTICKID ( -- alien ) 15 <alien> ; inline
+: DIPROP_GETPORTDISPLAYNAME ( -- alien ) 16 <alien> ; inline
+: DIPROP_PHYSICALRANGE ( -- alien ) 18 <alien> ; inline
+: DIPROP_LOGICALRANGE ( -- alien ) 19 <alien> ; inline
+: DIPROP_KEYNAME ( -- alien ) 20 <alien> ; inline
+: DIPROP_CPOINTS ( -- alien ) 21 <alien> ; inline
+: DIPROP_APPDATA ( -- alien ) 22 <alien> ; inline
+: DIPROP_SCANCODE ( -- alien ) 23 <alien> ; inline
+: DIPROP_VIDPID ( -- alien ) 24 <alien> ; inline
+: DIPROP_USERNAME ( -- alien ) 25 <alien> ; inline
+: DIPROP_TYPENAME ( -- alien ) 26 <alien> ; inline
+
+CONSTANT: GUID_XAxis GUID: {A36D02E0-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_YAxis GUID: {A36D02E1-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_ZAxis GUID: {A36D02E2-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_RxAxis GUID: {A36D02F4-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_RyAxis GUID: {A36D02F5-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_RzAxis GUID: {A36D02E3-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_Slider GUID: {A36D02E4-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_Button GUID: {A36D02F0-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_Key GUID: {55728220-D33C-11CF-BFC7-444553540000}
+CONSTANT: GUID_POV GUID: {A36D02F2-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_Unknown GUID: {A36D02F3-C9F3-11CF-BFC7-444553540000}
+CONSTANT: GUID_SysMouse GUID: {6F1D2B60-D5A0-11CF-BFC7-444553540000}
+CONSTANT: GUID_SysKeyboard GUID: {6F1D2B61-D5A0-11CF-BFC7-444553540000}
+CONSTANT: GUID_Joystick GUID: {6F1D2B70-D5A0-11CF-BFC7-444553540000}
+CONSTANT: GUID_SysMouseEm GUID: {6F1D2B80-D5A0-11CF-BFC7-444553540000}
+CONSTANT: GUID_SysMouseEm2 GUID: {6F1D2B81-D5A0-11CF-BFC7-444553540000}
+CONSTANT: GUID_SysKeyboardEm GUID: {6F1D2B82-D5A0-11CF-BFC7-444553540000}
+CONSTANT: GUID_SysKeyboardEm2 GUID: {6F1D2B83-D5A0-11CF-BFC7-444553540000}