#pragma once

// From glfw3.h
#define RGS_KEY_SPACE              32
#define RGS_KEY_APOSTROPHE         39  /* ' */
#define RGS_KEY_COMMA              44  /* , */
#define RGS_KEY_MINUS              45  /* - */
#define RGS_KEY_PERIOD             46  /* . */
#define RGS_KEY_SLASH              47  /* / */
#define RGS_KEY_0                  48
#define RGS_KEY_1                  49
#define RGS_KEY_2                  50
#define RGS_KEY_3                  51
#define RGS_KEY_4                  52
#define RGS_KEY_5                  53
#define RGS_KEY_6                  54
#define RGS_KEY_7                  55
#define RGS_KEY_8                  56
#define RGS_KEY_9                  57
#define RGS_KEY_SEMICOLON          59  /* ; */
#define RGS_KEY_EQUAL              61  /* = */
#define RGS_KEY_A                  65
#define RGS_KEY_B                  66
#define RGS_KEY_C                  67
#define RGS_KEY_D                  68
#define RGS_KEY_E                  69
#define RGS_KEY_F                  70
#define RGS_KEY_G                  71
#define RGS_KEY_H                  72
#define RGS_KEY_I                  73
#define RGS_KEY_J                  74
#define RGS_KEY_K                  75
#define RGS_KEY_L                  76
#define RGS_KEY_M                  77
#define RGS_KEY_N                  78
#define RGS_KEY_O                  79
#define RGS_KEY_P                  80
#define RGS_KEY_Q                  81
#define RGS_KEY_R                  82
#define RGS_KEY_S                  83
#define RGS_KEY_T                  84
#define RGS_KEY_U                  85
#define RGS_KEY_V                  86
#define RGS_KEY_W                  87
#define RGS_KEY_X                  88
#define RGS_KEY_Y                  89
#define RGS_KEY_Z                  90
#define RGS_KEY_LEFT_BRACKET       91  /* [ */
#define RGS_KEY_BACKSLASH          92  /* \ */
#define RGS_KEY_RIGHT_BRACKET      93  /* ] */
#define RGS_KEY_GRAVE_ACCENT       96  /* ` */
#define RGS_KEY_WORLD_1            161 /* non-US #1 */
#define RGS_KEY_WORLD_2            162 /* non-US #2 */

/* Function keys */
#define RGS_KEY_ESCAPE             256
#define RGS_KEY_ENTER              257
#define RGS_KEY_TAB                258
#define RGS_KEY_BACKSPACE          259
#define RGS_KEY_INSERT             260
#define RGS_KEY_DELETE             261
#define RGS_KEY_RIGHT              262
#define RGS_KEY_LEFT               263
#define RGS_KEY_DOWN               264
#define RGS_KEY_UP                 265
#define RGS_KEY_PAGE_UP            266
#define RGS_KEY_PAGE_DOWN          267
#define RGS_KEY_HOME               268
#define RGS_KEY_END                269
#define RGS_KEY_CAPS_LOCK          280
#define RGS_KEY_SCROLL_LOCK        281
#define RGS_KEY_NUM_LOCK           282
#define RGS_KEY_PRINT_SCREEN       283
#define RGS_KEY_PAUSE              284
#define RGS_KEY_F1                 290
#define RGS_KEY_F2                 291
#define RGS_KEY_F3                 292
#define RGS_KEY_F4                 293
#define RGS_KEY_F5                 294
#define RGS_KEY_F6                 295
#define RGS_KEY_F7                 296
#define RGS_KEY_F8                 297
#define RGS_KEY_F9                 298
#define RGS_KEY_F10                299
#define RGS_KEY_F11                300
#define RGS_KEY_F12                301
#define RGS_KEY_F13                302
#define RGS_KEY_F14                303
#define RGS_KEY_F15                304
#define RGS_KEY_F16                305
#define RGS_KEY_F17                306
#define RGS_KEY_F18                307
#define RGS_KEY_F19                308
#define RGS_KEY_F20                309
#define RGS_KEY_F21                310
#define RGS_KEY_F22                311
#define RGS_KEY_F23                312
#define RGS_KEY_F24                313
#define RGS_KEY_F25                314
#define RGS_KEY_KP_0               320
#define RGS_KEY_KP_1               321
#define RGS_KEY_KP_2               322
#define RGS_KEY_KP_3               323
#define RGS_KEY_KP_4               324
#define RGS_KEY_KP_5               325
#define RGS_KEY_KP_6               326
#define RGS_KEY_KP_7               327
#define RGS_KEY_KP_8               328
#define RGS_KEY_KP_9               329
#define RGS_KEY_KP_DECIMAL         330
#define RGS_KEY_KP_DIVIDE          331
#define RGS_KEY_KP_MULTIPLY        332
#define RGS_KEY_KP_SUBTRACT        333
#define RGS_KEY_KP_ADD             334
#define RGS_KEY_KP_ENTER           335
#define RGS_KEY_KP_EQUAL           336
#define RGS_KEY_LEFT_SHIFT         340
#define RGS_KEY_LEFT_CONTROL       341
#define RGS_KEY_LEFT_ALT           342
#define RGS_KEY_LEFT_SUPER         343
#define RGS_KEY_RIGHT_SHIFT        344
#define RGS_KEY_RIGHT_CONTROL      345
#define RGS_KEY_RIGHT_ALT          346
#define RGS_KEY_RIGHT_SUPER        347
#define RGS_KEY_MENU               348
#define RGS_KEY_MAX_COUNT          512



#define RGS_BUTTON_LEFT            0
#define RGS_BUTTON_RIGHT           1
#define RGS_BUTTON_MAX_COUNT       8

#define RGS_RELEASE                0
#define RGS_PRESS                  1