#pragma once

#pragma clang diagnostic push
#pragma ide diagnostic ignored "OCUnusedMacroInspection"

#if GP_USING_GLFW
#define GP_KEY_UNKNOWN -1

#define GP_KEY_SPACE 32
#define GP_KEY_APOSTROPHE 39
#define GP_KEY_COMMA 44
#define GP_KEY_MINUS 45
#define GP_KEY_PERIOD 46
#define GP_KEY_SLASH 47

#define GP_KEY_0 48
#define GP_KEY_1 49
#define GP_KEY_2 50
#define GP_KEY_3 51
#define GP_KEY_4 52
#define GP_KEY_5 53
#define GP_KEY_6 54
#define GP_KEY_7 55
#define GP_KEY_8 56
#define GP_KEY_9 57

#define GP_KEY_SEMICOLON 59
#define GP_KEY_EQUAL 61

#define GP_KEY_A 65
#define GP_KEY_B 66
#define GP_KEY_C 67
#define GP_KEY_D 68
#define GP_KEY_E 69
#define GP_KEY_F 70
#define GP_KEY_G 71
#define GP_KEY_H 72
#define GP_KEY_I 73
#define GP_KEY_J 74
#define GP_KEY_K 75
#define GP_KEY_L 76
#define GP_KEY_M 77
#define GP_KEY_N 78
#define GP_KEY_O 79
#define GP_KEY_P 80
#define GP_KEY_Q 81
#define GP_KEY_R 82
#define GP_KEY_S 83
#define GP_KEY_T 84
#define GP_KEY_U 85
#define GP_KEY_V 86
#define GP_KEY_W 87
#define GP_KEY_X 88
#define GP_KEY_Y 89
#define GP_KEY_Z 90

#define GP_KEY_LEFT_BRACKET 91
#define GP_KEY_RIGHT_BRACKET 93
#define GP_KEY_BACKSLASH 92
#define GP_KEY_GRAVE_ACCENT 96

#define GP_KEY_WORLD_1 161
#define GP_KEY_WORLD_2 162

#define GP_KEY_ESCAPE 256
#define GP_KEY_ENTER 257
#define GP_KEY_TAB 258
#define GP_KEY_BACKSPACE 259
#define GP_KEY_INSERT 260
#define GP_KEY_DELETE 261

#define GP_KEY_RIGHT 262
#define GP_KEY_LEFT 263
#define GP_KEY_DOWN 264
#define GP_KEY_UP 265

#define GP_KEY_PAGE_UP 266
#define GP_KEY_PAGE_DOWN 267

#define GP_KEY_HOME 268
#define GP_KEY_END 269

#define GP_KEY_CAPS_LOCK 280
#define GP_KEY_SCROLL_LOCK 281
#define GP_KEY_NUM_LOCK 282
#define GP_KEY_PRINT_SCREEN 283
#define GP_KEY_PAUSE 284

#define GP_KEY_F1 290
#define GP_KEY_F2 291
#define GP_KEY_F3 292
#define GP_KEY_F4 293
#define GP_KEY_F5 294
#define GP_KEY_F6 295
#define GP_KEY_F7 296
#define GP_KEY_F8 297
#define GP_KEY_F9 298
#define GP_KEY_F10 299
#define GP_KEY_F11 300
#define GP_KEY_F12 301
#define GP_KEY_F13 302
#define GP_KEY_F14 303
#define GP_KEY_F15 304
#define GP_KEY_F16 305
#define GP_KEY_F17 306
#define GP_KEY_F18 307
#define GP_KEY_F19 308
#define GP_KEY_F20 309
#define GP_KEY_F21 310
#define GP_KEY_F22 311
#define GP_KEY_F23 312
#define GP_KEY_F24 313
#define GP_KEY_F25 314

#define GP_KEY_KP_0 320
#define GP_KEY_KP_1 321
#define GP_KEY_KP_2 322
#define GP_KEY_KP_3 323
#define GP_KEY_KP_4 324
#define GP_KEY_KP_5 325
#define GP_KEY_KP_6 326
#define GP_KEY_KP_7 327
#define GP_KEY_KP_8 328
#define GP_KEY_KP_9 329

#define GP_KEY_KP_DECIMAL 330
#define GP_KEY_KP_DIVIDE 331
#define GP_KEY_KP_MULTIPLY 332
#define GP_KEY_KP_SUBTRACT 333
#define GP_KEY_KP_ADD 334
#define GP_KEY_KP_ENTER 335
#define GP_KEY_KP_EQUAL 336

#define GP_KEY_LEFT_CONTROL 341
#define GP_KEY_LEFT_ALT 342
#define GP_KEY_LEFT_SUPER 343

#define GP_KEY_RIGHT_SHIFT 344
#define GP_KEY_RIGHT_CONTROL 345
#define GP_KEY_RIGHT_ALT 346
#define GP_KEY_RIGHT_SUPER 347

#define GP_KEY_MENU 348
#endif

#pragma clang diagnostic pop
