Key codes
Every key and mouse button the engine knows has a #define in natiny.h, so
nothing has to be written as a bare number:
C
if (natiny_input_get_key_down(NATINY_INPUT_KEY_W)) {
y -= speed * dt;
}
if (natiny_input_get_mouse_button_pressed(NATINY_INPUT_MOUSE_BUTTON_LEFT)) {
fire();
}
The constants are what natiny_input_get_key_down,
natiny_input_get_key_pressed,
natiny_input_get_key_released and the
mouse button functions take. Values run to 348, well
inside the 512 keys the engine tracks; a code outside that range reads as not
pressed rather than an error. The Lua binding exposes the same numbers under
the shorter natiny.input.KEY_W.
Printable keys - the value is the character's ASCII code
| Constant |
Value |
Key |
NATINY_INPUT_KEY_SPACE |
32 |
Space |
NATINY_INPUT_KEY_APOSTROPHE |
39 |
' |
NATINY_INPUT_KEY_COMMA |
44 |
, |
NATINY_INPUT_KEY_MINUS |
45 |
- |
NATINY_INPUT_KEY_PERIOD |
46 |
. |
NATINY_INPUT_KEY_SLASH |
47 |
/ |
NATINY_INPUT_KEY_0 |
48 |
0 |
NATINY_INPUT_KEY_1 |
49 |
1 |
NATINY_INPUT_KEY_2 |
50 |
2 |
NATINY_INPUT_KEY_3 |
51 |
3 |
NATINY_INPUT_KEY_4 |
52 |
4 |
NATINY_INPUT_KEY_5 |
53 |
5 |
NATINY_INPUT_KEY_6 |
54 |
6 |
NATINY_INPUT_KEY_7 |
55 |
7 |
NATINY_INPUT_KEY_8 |
56 |
8 |
NATINY_INPUT_KEY_9 |
57 |
9 |
NATINY_INPUT_KEY_SEMICOLON |
59 |
; |
NATINY_INPUT_KEY_EQUAL |
61 |
= |
NATINY_INPUT_KEY_A |
65 |
A |
NATINY_INPUT_KEY_B |
66 |
B |
NATINY_INPUT_KEY_C |
67 |
C |
NATINY_INPUT_KEY_D |
68 |
D |
NATINY_INPUT_KEY_E |
69 |
E |
NATINY_INPUT_KEY_F |
70 |
F |
NATINY_INPUT_KEY_G |
71 |
G |
NATINY_INPUT_KEY_H |
72 |
H |
NATINY_INPUT_KEY_I |
73 |
I |
NATINY_INPUT_KEY_J |
74 |
J |
NATINY_INPUT_KEY_K |
75 |
K |
NATINY_INPUT_KEY_L |
76 |
L |
NATINY_INPUT_KEY_M |
77 |
M |
NATINY_INPUT_KEY_N |
78 |
N |
NATINY_INPUT_KEY_O |
79 |
O |
NATINY_INPUT_KEY_P |
80 |
P |
NATINY_INPUT_KEY_Q |
81 |
Q |
NATINY_INPUT_KEY_R |
82 |
R |
NATINY_INPUT_KEY_S |
83 |
S |
NATINY_INPUT_KEY_T |
84 |
T |
NATINY_INPUT_KEY_U |
85 |
U |
NATINY_INPUT_KEY_V |
86 |
V |
NATINY_INPUT_KEY_W |
87 |
W |
NATINY_INPUT_KEY_X |
88 |
X |
NATINY_INPUT_KEY_Y |
89 |
Y |
NATINY_INPUT_KEY_Z |
90 |
Z |
NATINY_INPUT_KEY_LEFT_BRACKET |
91 |
[ |
NATINY_INPUT_KEY_BACKSLASH |
92 |
\ |
NATINY_INPUT_KEY_RIGHT_BRACKET |
93 |
] |
NATINY_INPUT_KEY_GRAVE_ACCENT |
96 |
` |
NATINY_INPUT_KEY_WORLD_1 |
161 |
Non-US key #1 |
NATINY_INPUT_KEY_WORLD_2 |
162 |
Non-US key #2 |
Editing and navigation
| Constant |
Value |
Key |
NATINY_INPUT_KEY_ESCAPE |
256 |
Escape |
NATINY_INPUT_KEY_ENTER |
257 |
Enter / Return |
NATINY_INPUT_KEY_TAB |
258 |
Tab |
NATINY_INPUT_KEY_BACKSPACE |
259 |
Backspace |
NATINY_INPUT_KEY_INSERT |
260 |
Insert |
NATINY_INPUT_KEY_DELETE |
261 |
Delete |
NATINY_INPUT_KEY_RIGHT |
262 |
Arrow right |
NATINY_INPUT_KEY_LEFT |
263 |
Arrow left |
NATINY_INPUT_KEY_DOWN |
264 |
Arrow down |
NATINY_INPUT_KEY_UP |
265 |
Arrow up |
NATINY_INPUT_KEY_PAGE_UP |
266 |
Page Up |
NATINY_INPUT_KEY_PAGE_DOWN |
267 |
Page Down |
NATINY_INPUT_KEY_HOME |
268 |
Home |
NATINY_INPUT_KEY_END |
269 |
End |
Locks and system keys
| Constant |
Value |
Key |
NATINY_INPUT_KEY_CAPS_LOCK |
280 |
Caps Lock |
NATINY_INPUT_KEY_SCROLL_LOCK |
281 |
Scroll Lock |
NATINY_INPUT_KEY_NUM_LOCK |
282 |
Num Lock |
NATINY_INPUT_KEY_PRINT_SCREEN |
283 |
Print Screen |
NATINY_INPUT_KEY_PAUSE |
284 |
Pause / Break |
Function keys
| Constant |
Value |
Key |
NATINY_INPUT_KEY_F1 |
290 |
F1 |
NATINY_INPUT_KEY_F2 |
291 |
F2 |
NATINY_INPUT_KEY_F3 |
292 |
F3 |
NATINY_INPUT_KEY_F4 |
293 |
F4 |
NATINY_INPUT_KEY_F5 |
294 |
F5 |
NATINY_INPUT_KEY_F6 |
295 |
F6 |
NATINY_INPUT_KEY_F7 |
296 |
F7 |
NATINY_INPUT_KEY_F8 |
297 |
F8 |
NATINY_INPUT_KEY_F9 |
298 |
F9 |
NATINY_INPUT_KEY_F10 |
299 |
F10 |
NATINY_INPUT_KEY_F11 |
300 |
F11 |
NATINY_INPUT_KEY_F12 |
301 |
F12 |
NATINY_INPUT_KEY_F13 |
302 |
F13 |
NATINY_INPUT_KEY_F14 |
303 |
F14 |
NATINY_INPUT_KEY_F15 |
304 |
F15 |
NATINY_INPUT_KEY_F16 |
305 |
F16 |
NATINY_INPUT_KEY_F17 |
306 |
F17 |
NATINY_INPUT_KEY_F18 |
307 |
F18 |
NATINY_INPUT_KEY_F19 |
308 |
F19 |
NATINY_INPUT_KEY_F20 |
309 |
F20 |
NATINY_INPUT_KEY_F21 |
310 |
F21 |
NATINY_INPUT_KEY_F22 |
311 |
F22 |
NATINY_INPUT_KEY_F23 |
312 |
F23 |
NATINY_INPUT_KEY_F24 |
313 |
F24 |
NATINY_INPUT_KEY_F25 |
314 |
F25 |
Keypad
| Constant |
Value |
Key |
NATINY_INPUT_KEY_KP_0 |
320 |
Keypad 0 |
NATINY_INPUT_KEY_KP_1 |
321 |
Keypad 1 |
NATINY_INPUT_KEY_KP_2 |
322 |
Keypad 2 |
NATINY_INPUT_KEY_KP_3 |
323 |
Keypad 3 |
NATINY_INPUT_KEY_KP_4 |
324 |
Keypad 4 |
NATINY_INPUT_KEY_KP_5 |
325 |
Keypad 5 |
NATINY_INPUT_KEY_KP_6 |
326 |
Keypad 6 |
NATINY_INPUT_KEY_KP_7 |
327 |
Keypad 7 |
NATINY_INPUT_KEY_KP_8 |
328 |
Keypad 8 |
NATINY_INPUT_KEY_KP_9 |
329 |
Keypad 9 |
NATINY_INPUT_KEY_KP_DECIMAL |
330 |
Keypad . |
NATINY_INPUT_KEY_KP_DIVIDE |
331 |
Keypad / |
NATINY_INPUT_KEY_KP_MULTIPLY |
332 |
Keypad * |
NATINY_INPUT_KEY_KP_SUBTRACT |
333 |
Keypad - |
NATINY_INPUT_KEY_KP_ADD |
334 |
Keypad + |
NATINY_INPUT_KEY_KP_ENTER |
335 |
Keypad Enter |
NATINY_INPUT_KEY_KP_EQUAL |
336 |
Keypad = |
Modifiers
| Constant |
Value |
Key |
NATINY_INPUT_KEY_LEFT_SHIFT |
340 |
Left Shift |
NATINY_INPUT_KEY_LEFT_CONTROL |
341 |
Left Ctrl |
NATINY_INPUT_KEY_LEFT_ALT |
342 |
Left Alt |
NATINY_INPUT_KEY_LEFT_SUPER |
343 |
Left Super / Win / Cmd |
NATINY_INPUT_KEY_RIGHT_SHIFT |
344 |
Right Shift |
NATINY_INPUT_KEY_RIGHT_CONTROL |
345 |
Right Ctrl |
NATINY_INPUT_KEY_RIGHT_ALT |
346 |
Right Alt / AltGr |
NATINY_INPUT_KEY_RIGHT_SUPER |
347 |
Right Super / Win / Cmd |
NATINY_INPUT_KEY_MENU |
348 |
Menu / context |
| Constant |
Value |
Key |
NATINY_INPUT_MOUSE_BUTTON_LEFT |
0 |
Left button |
NATINY_INPUT_MOUSE_BUTTON_RIGHT |
1 |
Right button |
NATINY_INPUT_MOUSE_BUTTON_MIDDLE |
2 |
Middle button - the wheel |
NATINY_INPUT_MOUSE_BUTTON_4 |
3 |
Fourth button |
NATINY_INPUT_MOUSE_BUTTON_5 |
4 |
Fifth button |
NATINY_INPUT_MOUSE_BUTTON_6 |
5 |
Sixth button |
NATINY_INPUT_MOUSE_BUTTON_7 |
6 |
Seventh button |
NATINY_INPUT_MOUSE_BUTTON_8 |
7 |
Eighth button |
Notes
- The printable keys carry their own ASCII code, which is why
NATINY_INPUT_KEY_A is 65 and not 0. That is a physical key on a US
layout, not the character it types - for text, read
natiny_input_get_char_at instead, which gives what the keyboard's
own layout produced.
- The values follow GLFW, which is what the desktop backends report. On the
web the browser's
keyCode is translated to the same numbers, so a
constant means the same key everywhere.
- Four constants never arrive from a browser, which has no
keyCode of its
own for them: NATINY_INPUT_KEY_KP_EQUAL, NATINY_INPUT_KEY_F25,
NATINY_INPUT_KEY_WORLD_1 and NATINY_INPUT_KEY_WORLD_2.
- A browser also reports one code for each modifier pair, so on the web the
left-hand constant stands for both:
NATINY_INPUT_KEY_LEFT_SHIFT is true
for either Shift, and NATINY_INPUT_KEY_RIGHT_SHIFT never fires.
NATINY_INPUT_KEY_KP_ENTER arrives as NATINY_INPUT_KEY_ENTER for the
same reason.
NATINY_INPUT_KEY_PRINT_SCREEN reaches a desktop window on release only,
which is what the operating system passes on.
See also