Skip to content

Scan Codes

Narta Xaymar Dirks edited this page Nov 1, 2026 · 1 revision

Scan Codes

A key has two kinds of codes, and which one a command takes says which table is for it:

  • KeyDown and KeyHit take the codes of the original, which are the DirectInput scancodes (1 to 237). A key has the same code as in the original. Keys that the original had a code for are all reported, including F13 to F15, Pause, Print Screen, the Windows keys, the menu key, the media keys and the international keys. Keys that DirectInput has no code for (F16 and above, Help, Undo and others) cannot be asked with them.
  • VKeyDown and VKeyHit take the scancode of SDL (0 to 511), which is a USB HID usage and the position of the key, not the letter on it. Every key that the system reports has one, on every platform, and it does not change with the keyboard layout. F16 is 107, F24 is 115, Help is 117 and Undo is 122. Use these when a program has to know about every key.

Both kinds work with the Device argument for one keyboard, and both ask for the same key state. The key events $101 and $102 of BlitzPlus and HotKeyEvent use the DirectInput codes, as in the original. Some keys are taken by the system before a program sees them (Alt+F4, the Windows key on some systems, power and sleep keys). Those arrive when the system lets them through. GetKey is not affected by any of this: it still gives the characters that were typed.

DirectInput scancodes (KeyDown, KeyHit)

Code Key (SDL name)
1 ESCAPE
2 1
3 2
4 3
5 4
6 5
7 6
8 7
9 8
10 9
11 0
12 MINUS
13 EQUALS
14 BACKSPACE
15 TAB
16 Q
17 W
18 E
19 R
20 T
21 Y
22 U
23 I
24 O
25 P
26 LEFTBRACKET
27 RIGHTBRACKET
28 RETURN
29 LCTRL
30 A
31 S
32 D
33 F
34 G
35 H
36 J
37 K
38 L
39 SEMICOLON
40 APOSTROPHE
41 GRAVE
42 LSHIFT
43 BACKSLASH
44 Z
45 X
46 C
47 V
48 B
49 N
50 M
51 COMMA
52 PERIOD
53 SLASH
54 RSHIFT
55 KP_MULTIPLY
56 LALT
57 SPACE
58 CAPSLOCK
59 F1
60 F2
61 F3
62 F4
63 F5
64 F6
65 F7
66 F8
67 F9
68 F10
69 NUMLOCKCLEAR
70 SCROLLLOCK
71 KP_7
72 KP_8
73 KP_9
74 KP_MINUS
75 KP_4
76 KP_5
77 KP_6
78 KP_PLUS
79 KP_1
80 KP_2
81 KP_3
82 KP_0
83 KP_PERIOD
86 NONUSBACKSLASH
87 F11
88 F12
100 F13
101 F14
102 F15
112 INTERNATIONAL2
115 INTERNATIONAL1
121 INTERNATIONAL4
123 INTERNATIONAL5
125 INTERNATIONAL3
141 KP_EQUALS
144 MEDIA_PREVIOUS_TRACK
153 MEDIA_NEXT_TRACK
156 KP_ENTER
157 RCTRL
160 MUTE
162 MEDIA_PLAY_PAUSE
164 MEDIA_STOP
174 VOLUMEDOWN
176 VOLUMEUP
178 AC_HOME
179 KP_COMMA
181 KP_DIVIDE
183 PRINTSCREEN
184 RALT
197 PAUSE
199 HOME
200 UP
201 PAGEUP
203 LEFT
205 RIGHT
207 END
208 DOWN
209 PAGEDOWN
210 INSERT
211 DELETE
219 LGUI
220 RGUI
221 APPLICATION
222 POWER
223 SLEEP
227 WAKE
229 AC_SEARCH
230 AC_BOOKMARKS
231 AC_REFRESH
232 AC_STOP
233 AC_FORWARD
234 AC_BACK
237 MEDIA_SELECT

SDL scancodes (VKeyDown, VKeyHit)

Code Key (SDL name)
4 A
5 B
6 C
7 D
8 E
9 F
10 G
11 H
12 I
13 J
14 K
15 L
16 M
17 N
18 O
19 P
20 Q
21 R
22 S
23 T
24 U
25 V
26 W
27 X
28 Y
29 Z
30 1
31 2
32 3
33 4
34 5
35 6
36 7
37 8
38 9
39 0
40 RETURN
41 ESCAPE
42 BACKSPACE
43 TAB
44 SPACE
45 MINUS
46 EQUALS
47 LEFTBRACKET
48 RIGHTBRACKET
49 BACKSLASH
50 NONUSHASH
51 SEMICOLON
52 APOSTROPHE
53 GRAVE
54 COMMA
55 PERIOD
56 SLASH
57 CAPSLOCK
58 F1
59 F2
60 F3
61 F4
62 F5
63 F6
64 F7
65 F8
66 F9
67 F10
68 F11
69 F12
70 PRINTSCREEN
71 SCROLLLOCK
72 PAUSE
73 INSERT
74 HOME
75 PAGEUP
76 DELETE
77 END
78 PAGEDOWN
79 RIGHT
80 LEFT
81 DOWN
82 UP
83 NUMLOCKCLEAR
84 KP_DIVIDE
85 KP_MULTIPLY
86 KP_MINUS
87 KP_PLUS
88 KP_ENTER
89 KP_1
90 KP_2
91 KP_3
92 KP_4
93 KP_5
94 KP_6
95 KP_7
96 KP_8
97 KP_9
98 KP_0
99 KP_PERIOD
100 NONUSBACKSLASH
101 APPLICATION
102 POWER
103 KP_EQUALS
104 F13
105 F14
106 F15
107 F16
108 F17
109 F18
110 F19
111 F20
112 F21
113 F22
114 F23
115 F24
116 EXECUTE
117 HELP
118 MENU
119 SELECT
120 STOP
121 AGAIN
122 UNDO
123 CUT
124 COPY
125 PASTE
126 FIND
127 MUTE
128 VOLUMEUP
129 VOLUMEDOWN
130 LOCKINGCAPSLOCK
131 LOCKINGNUMLOCK
132 LOCKINGSCROLLLOCK
133 KP_COMMA
134 KP_EQUALSAS400
135 INTERNATIONAL1
136 INTERNATIONAL2
137 INTERNATIONAL3
138 INTERNATIONAL4
139 INTERNATIONAL5
140 INTERNATIONAL6
141 INTERNATIONAL7
142 INTERNATIONAL8
143 INTERNATIONAL9
144 LANG1
145 LANG2
146 LANG3
147 LANG4
148 LANG5
149 LANG6
150 LANG7
151 LANG8
152 LANG9
153 ALTERASE
154 SYSREQ
155 CANCEL
156 CLEAR
157 PRIOR
158 RETURN2
159 SEPARATOR
160 OUT
161 OPER
162 CLEARAGAIN
163 CRSEL
164 EXSEL
165 FRONT
176 KP_00
177 KP_000
178 THOUSANDSSEPARATOR
179 DECIMALSEPARATOR
180 CURRENCYUNIT
181 CURRENCYSUBUNIT
182 KP_LEFTPAREN
183 KP_RIGHTPAREN
184 KP_LEFTBRACE
185 KP_RIGHTBRACE
186 KP_TAB
187 KP_BACKSPACE
188 KP_A
189 KP_B
190 KP_C
191 KP_D
192 KP_E
193 KP_F
194 KP_XOR
195 KP_POWER
196 KP_PERCENT
197 KP_LESS
198 KP_GREATER
199 KP_AMPERSAND
200 KP_DBLAMPERSAND
201 KP_VERTICALBAR
202 KP_DBLVERTICALBAR
203 KP_COLON
204 KP_HASH
205 KP_SPACE
206 KP_AT
207 KP_EXCLAM
208 KP_MEMSTORE
209 KP_MEMRECALL
210 KP_MEMCLEAR
211 KP_MEMADD
212 KP_MEMSUBTRACT
213 KP_MEMMULTIPLY
214 KP_MEMDIVIDE
215 KP_PLUSMINUS
216 KP_CLEAR
217 KP_CLEARENTRY
218 KP_BINARY
219 KP_OCTAL
220 KP_DECIMAL
221 KP_HEXADECIMAL
224 LCTRL
225 LSHIFT
226 LALT
227 LGUI
228 RCTRL
229 RSHIFT
230 RALT
231 RGUI
257 MODE
258 SLEEP
259 WAKE
260 CHANNEL_INCREMENT
261 CHANNEL_DECREMENT
262 MEDIA_PLAY
263 MEDIA_PAUSE
264 MEDIA_RECORD
265 MEDIA_FAST_FORWARD
266 MEDIA_REWIND
267 MEDIA_NEXT_TRACK
268 MEDIA_PREVIOUS_TRACK
269 MEDIA_STOP
270 MEDIA_EJECT
271 MEDIA_PLAY_PAUSE
272 MEDIA_SELECT
273 AC_NEW
274 AC_OPEN
275 AC_CLOSE
276 AC_EXIT
277 AC_SAVE
278 AC_PRINT
279 AC_PROPERTIES
280 AC_SEARCH
281 AC_HOME
282 AC_BACK
283 AC_FORWARD
284 AC_STOP
285 AC_REFRESH
286 AC_BOOKMARKS
287 SOFTLEFT
288 SOFTRIGHT
289 CALL
290 ENDCALL

Home · Command Index



Differences
Language Features
BlitzBasic
Blitz3D
BlitzPlus

Clone this wiki locally