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

Mouse buttons

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