]> gitweb.factorcode.org Git - factor.git/commitdiff
HID-order keyboard format for DirectInput
authorJoe Groff <arcata@gmail.com>
Mon, 21 Jul 2008 03:18:03 +0000 (20:18 -0700)
committerJoe Groff <arcata@gmail.com>
Mon, 21 Jul 2008 03:18:03 +0000 (20:18 -0700)
extra/game-input/scancodes/scancodes.factor
extra/windows/dinput/constants/constants.factor
extra/windows/dinput/dinput.factor

index 5db11845c480c13a3a6c3639a4612f8f15476e36..36e816e3762931e7eaa046894a7d2b431bc71974 100644 (file)
@@ -50,7 +50,7 @@ IN: game-input.scancodes
 : key-[ HEX: 002f ; inline
 : key-] HEX: 0030 ; inline
 : key-\ HEX: 0031 ; inline
-: key-# HEX: 0032 ; inline
+: key-#-non-us HEX: 0032 ; inline
 : key-; HEX: 0033 ; inline
 : key-' HEX: 0034 ; inline
 : key-` HEX: 0035 ; inline
index f55406395ac16866d04c9912fa406236a62694de..9c1035a31a2a80b5d6b9286b38a97496d73a880e 100755 (executable)
@@ -13,7 +13,7 @@ SYMBOLS:
     GUID_Slider GUID_Button GUID_Key GUID_POV GUID_Unknown
     GUID_SysMouse GUID_SysKeyboard GUID_Joystick GUID_SysMouseEm
     GUID_SysMouseEm2 GUID_SysKeyboardEm GUID_SysKeyboardEm2
-    c_dfDIKeyboard c_dfDIMouse2 c_dfDIJoystick2 ;
+    c_dfDIKeyboard c_dfDIKeyboard_HID c_dfDIMouse2 c_dfDIJoystick2 ;
 
 <PRIVATE
 
@@ -291,6 +291,273 @@ MACRO: (flags) ( array -- )
         } <DIDATAFORMAT>
     ] unless* ] change-at ;
 
+! Not a standard DirectInput format. Included for cross-platform niceness.
+! This format returns the keyboard keys in USB HID order rather than Windows
+! order
+: define-hid-keyboard-format-constant ( -- )
+    c_dfDIKeyboard_HID global [ [
+        DIDF_RELAXIS
+        256
+        f {
+            { GUID_Key f   0 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f   1 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f   2 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f   3 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f   4 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_A DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f   5 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_B DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f   6 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_C DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f   7 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_D DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f   8 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_E DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f   9 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  10 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_G DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  11 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_H DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  12 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_I DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  13 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_J DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  14 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_K DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  15 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_L DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  16 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_M DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  17 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_N DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  18 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_O DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  19 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_P DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  20 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_Q DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  21 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_R DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  22 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_S DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  23 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_T DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  24 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_U DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  25 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_V DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  26 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_W DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  27 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_X DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  28 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_Y DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  29 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_Z DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  30 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_1 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  31 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_2 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  32 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_3 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  33 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_4 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  34 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_5 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  35 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_6 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  36 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_7 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  37 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_8 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  38 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_9 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  39 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  40 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_RETURN DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  41 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_ESCAPE DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  42 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_BACK DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  43 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_TAB DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  44 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_SPACE DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  45 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_MINUS DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  46 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_EQUALS DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  47 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_LBRACKET DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  48 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_RBRACKET DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  49 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_BACKSLASH DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  50 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  51 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_SEMICOLON DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  52 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_APOSTROPHE DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  53 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_GRAVE DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  54 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_COMMA  DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  55 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_PERIOD DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  56 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_SLASH  DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  57 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_CAPITAL DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  58 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F1 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  59 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F2 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  60 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F3 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  61 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F4 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  62 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F5 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  63 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F6 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  64 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F7 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  65 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F8 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  66 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F9 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  67 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F10 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  68 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F11 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  69 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F12 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  70 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_SYSRQ DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  71 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_SCROLL DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  72 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_PAUSE DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  73 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_INSERT DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  74 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_HOME DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  75 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_PRIOR DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  76 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_DELETE DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  77 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_END DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  78 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NEXT DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  79 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_RIGHT DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  80 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_LEFT DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  81 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_DOWN DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  82 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_UP DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  83 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMLOCK DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  84 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_DIVIDE DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  85 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_MULTIPLY DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  86 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_SUBTRACT DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  87 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_ADD DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  88 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPADENTER DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  89 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD1 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  90 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD2 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  91 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD3 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  92 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD4 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  93 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD5 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  94 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD6 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  95 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD7 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  96 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD8 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  97 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD9 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  98 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPAD0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f  99 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_DECIMAL DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 100 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_OEM_102 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 101 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_APPS DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 102 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_POWER DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 103 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NUMPADEQUALS DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 104 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F13 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 105 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F14 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 106 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_F15 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 107 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 108 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 109 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 110 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 111 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 112 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 113 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 114 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 115 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 116 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 117 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 118 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 119 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 120 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 121 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 122 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 123 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 124 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 125 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 126 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 127 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_MUTE DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 128 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_VOLUMEUP DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 129 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_VOLUMEDOWN DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 130 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 131 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 132 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 133 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_ABNT_C2 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 134 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 135 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_ABNT_C1 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 136 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_KANA DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 137 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_YEN DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 138 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_CONVERT DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 139 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_NOCONVERT DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 140 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 141 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 142 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 143 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 144 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 145 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 146 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 147 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 148 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 149 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 150 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 151 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 152 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 153 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 154 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 155 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 156 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 157 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 158 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 159 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 160 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 161 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 162 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 163 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 164 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 165 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 166 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 167 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 168 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 169 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 170 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 171 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 172 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 173 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 174 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 175 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 176 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 177 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 178 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 179 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 180 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 181 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 182 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 183 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 184 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 185 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 186 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 187 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 188 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 189 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 190 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 191 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 192 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 193 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 194 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 195 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 196 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 197 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 198 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 199 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 200 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 201 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 202 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 203 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 204 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 205 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 206 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 207 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 208 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 209 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 210 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 211 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 212 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 213 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 214 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 215 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 216 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 217 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 218 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 219 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 220 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 221 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 222 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 223 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 224 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_LCONTROL DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 225 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_LSHIFT DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 226 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_LMENU DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 227 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_LWIN DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 228 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_RCONTROL DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 229 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_RSHIFT DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 230 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_RMENU DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 231 { DIDFT_OPTIONAL DIDFT_BUTTON [ DIK_RWIN DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 232 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 233 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 234 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 235 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 236 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 237 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 238 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 239 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 240 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 241 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 242 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 243 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 244 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 245 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 246 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 247 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 248 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 249 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 250 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 251 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 252 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 253 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 254 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+            { GUID_Key f 255 { DIDFT_OPTIONAL DIDFT_BUTTON [ 0 DIDFT_MAKEINSTANCE ] } 0 }
+        } <DIDATAFORMAT>
+    ] unless* ] change-at ;
+
 : define-keyboard-format-constant ( -- )
     c_dfDIKeyboard global [ [
         DIDF_RELAXIS
@@ -558,7 +825,8 @@ MACRO: (flags) ( array -- )
 : define-format-constants ( -- )
     define-joystick-format-constant
     define-mouse-format-constant
-    define-keyboard-format-constant ;
+    define-keyboard-format-constant
+    define-hid-keyboard-format-constant ;
 
 : define-constants
     define-guid-constants
@@ -576,7 +844,7 @@ define-constants
         GUID_SysMouseEm2 GUID_SysKeyboardEm GUID_SysKeyboardEm2
     } [ global [ [ free ] when* f ] change-at ] each
     {
-        c_dfDIKeyboard c_dfDIMouse2 c_dfDIJoystick2
+        c_dfDIKeyboard c_dfDIKeyboard_HID c_dfDIMouse2 c_dfDIJoystick2
     } [ global [ [ DIDATAFORMAT-rgodf free ] when* f ] change-at ] each ;
 
 PRIVATE>
index a41f2ed80d3319b7c71e3041d3eb6f5e4083c103..b1a26689eff14982420b5b057bed99739a2725e9 100755 (executable)
@@ -389,6 +389,169 @@ FUNCTION: HRESULT DirectInput8Create ( HINSTANCE hinst, DWORD dwVersion, REFIID
 : 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
+
 SYMBOL: +dinput+
 
 : create-dinput ( -- )