package ru.dbotthepony.kstarbound.client.input

import org.lwjgl.glfw.GLFW

@Suppress("unused")
interface IUserInput {
	val KEY_SPACE_DOWN: Boolean
	val KEY_SPACE_DURATION: Double
	val KEY_APOSTROPHE_DOWN: Boolean
	val KEY_APOSTROPHE_DURATION: Double
	val KEY_COMMA_DOWN: Boolean
	val KEY_COMMA_DURATION: Double
	val KEY_MINUS_DOWN: Boolean
	val KEY_MINUS_DURATION: Double
	val KEY_PERIOD_DOWN: Boolean
	val KEY_PERIOD_DURATION: Double
	val KEY_SLASH_DOWN: Boolean
	val KEY_SLASH_DURATION: Double
	val KEY_0_DOWN: Boolean
	val KEY_0_DURATION: Double
	val KEY_1_DOWN: Boolean
	val KEY_1_DURATION: Double
	val KEY_2_DOWN: Boolean
	val KEY_2_DURATION: Double
	val KEY_3_DOWN: Boolean
	val KEY_3_DURATION: Double
	val KEY_4_DOWN: Boolean
	val KEY_4_DURATION: Double
	val KEY_5_DOWN: Boolean
	val KEY_5_DURATION: Double
	val KEY_6_DOWN: Boolean
	val KEY_6_DURATION: Double
	val KEY_7_DOWN: Boolean
	val KEY_7_DURATION: Double
	val KEY_8_DOWN: Boolean
	val KEY_8_DURATION: Double
	val KEY_9_DOWN: Boolean
	val KEY_9_DURATION: Double
	val KEY_SEMICOLON_DOWN: Boolean
	val KEY_SEMICOLON_DURATION: Double
	val KEY_EQUAL_DOWN: Boolean
	val KEY_EQUAL_DURATION: Double
	val KEY_A_DOWN: Boolean
	val KEY_A_DURATION: Double
	val KEY_B_DOWN: Boolean
	val KEY_B_DURATION: Double
	val KEY_C_DOWN: Boolean
	val KEY_C_DURATION: Double
	val KEY_D_DOWN: Boolean
	val KEY_D_DURATION: Double
	val KEY_E_DOWN: Boolean
	val KEY_E_DURATION: Double
	val KEY_F_DOWN: Boolean
	val KEY_F_DURATION: Double
	val KEY_G_DOWN: Boolean
	val KEY_G_DURATION: Double
	val KEY_H_DOWN: Boolean
	val KEY_H_DURATION: Double
	val KEY_I_DOWN: Boolean
	val KEY_I_DURATION: Double
	val KEY_J_DOWN: Boolean
	val KEY_J_DURATION: Double
	val KEY_K_DOWN: Boolean
	val KEY_K_DURATION: Double
	val KEY_L_DOWN: Boolean
	val KEY_L_DURATION: Double
	val KEY_M_DOWN: Boolean
	val KEY_M_DURATION: Double
	val KEY_N_DOWN: Boolean
	val KEY_N_DURATION: Double
	val KEY_O_DOWN: Boolean
	val KEY_O_DURATION: Double
	val KEY_P_DOWN: Boolean
	val KEY_P_DURATION: Double
	val KEY_Q_DOWN: Boolean
	val KEY_Q_DURATION: Double
	val KEY_R_DOWN: Boolean
	val KEY_R_DURATION: Double
	val KEY_S_DOWN: Boolean
	val KEY_S_DURATION: Double
	val KEY_T_DOWN: Boolean
	val KEY_T_DURATION: Double
	val KEY_U_DOWN: Boolean
	val KEY_U_DURATION: Double
	val KEY_V_DOWN: Boolean
	val KEY_V_DURATION: Double
	val KEY_W_DOWN: Boolean
	val KEY_W_DURATION: Double
	val KEY_X_DOWN: Boolean
	val KEY_X_DURATION: Double
	val KEY_Y_DOWN: Boolean
	val KEY_Y_DURATION: Double
	val KEY_Z_DOWN: Boolean
	val KEY_Z_DURATION: Double
	val KEY_LEFT_BRACKET_DOWN: Boolean
	val KEY_LEFT_BRACKET_DURATION: Double
	val KEY_BACKSLASH_DOWN: Boolean
	val KEY_BACKSLASH_DURATION: Double
	val KEY_RIGHT_BRACKET_DOWN: Boolean
	val KEY_RIGHT_BRACKET_DURATION: Double
	val KEY_GRAVE_ACCENT_DOWN: Boolean
	val KEY_GRAVE_ACCENT_DURATION: Double
	val KEY_WORLD_1_DOWN: Boolean
	val KEY_WORLD_1_DURATION: Double
	val KEY_WORLD_2_DOWN: Boolean
	val KEY_WORLD_2_DURATION: Double
	val KEY_ESCAPE_DOWN: Boolean
	val KEY_ESCAPE_DURATION: Double
	val KEY_ENTER_DOWN: Boolean
	val KEY_ENTER_DURATION: Double
	val KEY_TAB_DOWN: Boolean
	val KEY_TAB_DURATION: Double
	val KEY_BACKSPACE_DOWN: Boolean
	val KEY_BACKSPACE_DURATION: Double
	val KEY_INSERT_DOWN: Boolean
	val KEY_INSERT_DURATION: Double
	val KEY_DELETE_DOWN: Boolean
	val KEY_DELETE_DURATION: Double
	val KEY_RIGHT_DOWN: Boolean
	val KEY_RIGHT_DURATION: Double
	val KEY_LEFT_DOWN: Boolean
	val KEY_LEFT_DURATION: Double
	val KEY_DOWN_DOWN: Boolean
	val KEY_DOWN_DURATION: Double
	val KEY_UP_DOWN: Boolean
	val KEY_UP_DURATION: Double
	val KEY_PAGE_UP_DOWN: Boolean
	val KEY_PAGE_UP_DURATION: Double
	val KEY_PAGE_DOWN_DOWN: Boolean
	val KEY_PAGE_DOWN_DURATION: Double
	val KEY_HOME_DOWN: Boolean
	val KEY_HOME_DURATION: Double
	val KEY_END_DOWN: Boolean
	val KEY_END_DURATION: Double
	val KEY_CAPS_LOCK_DOWN: Boolean
	val KEY_CAPS_LOCK_DURATION: Double
	val KEY_SCROLL_LOCK_DOWN: Boolean
	val KEY_SCROLL_LOCK_DURATION: Double
	val KEY_NUM_LOCK_DOWN: Boolean
	val KEY_NUM_LOCK_DURATION: Double
	val KEY_PRINT_SCREEN_DOWN: Boolean
	val KEY_PRINT_SCREEN_DURATION: Double
	val KEY_PAUSE_DOWN: Boolean
	val KEY_PAUSE_DURATION: Double
	val KEY_F1_DOWN: Boolean
	val KEY_F1_DURATION: Double
	val KEY_F2_DOWN: Boolean
	val KEY_F2_DURATION: Double
	val KEY_F3_DOWN: Boolean
	val KEY_F3_DURATION: Double
	val KEY_F4_DOWN: Boolean
	val KEY_F4_DURATION: Double
	val KEY_F5_DOWN: Boolean
	val KEY_F5_DURATION: Double
	val KEY_F6_DOWN: Boolean
	val KEY_F6_DURATION: Double
	val KEY_F7_DOWN: Boolean
	val KEY_F7_DURATION: Double
	val KEY_F8_DOWN: Boolean
	val KEY_F8_DURATION: Double
	val KEY_F9_DOWN: Boolean
	val KEY_F9_DURATION: Double
	val KEY_F10_DOWN: Boolean
	val KEY_F10_DURATION: Double
	val KEY_F11_DOWN: Boolean
	val KEY_F11_DURATION: Double
	val KEY_F12_DOWN: Boolean
	val KEY_F12_DURATION: Double
	val KEY_F13_DOWN: Boolean
	val KEY_F13_DURATION: Double
	val KEY_F14_DOWN: Boolean
	val KEY_F14_DURATION: Double
	val KEY_F15_DOWN: Boolean
	val KEY_F15_DURATION: Double
	val KEY_F16_DOWN: Boolean
	val KEY_F16_DURATION: Double
	val KEY_F17_DOWN: Boolean
	val KEY_F17_DURATION: Double
	val KEY_F18_DOWN: Boolean
	val KEY_F18_DURATION: Double
	val KEY_F19_DOWN: Boolean
	val KEY_F19_DURATION: Double
	val KEY_F20_DOWN: Boolean
	val KEY_F20_DURATION: Double
	val KEY_F21_DOWN: Boolean
	val KEY_F21_DURATION: Double
	val KEY_F22_DOWN: Boolean
	val KEY_F22_DURATION: Double
	val KEY_F23_DOWN: Boolean
	val KEY_F23_DURATION: Double
	val KEY_F24_DOWN: Boolean
	val KEY_F24_DURATION: Double
	val KEY_F25_DOWN: Boolean
	val KEY_F25_DURATION: Double
	val KEY_KP_0_DOWN: Boolean
	val KEY_KP_0_DURATION: Double
	val KEY_KP_1_DOWN: Boolean
	val KEY_KP_1_DURATION: Double
	val KEY_KP_2_DOWN: Boolean
	val KEY_KP_2_DURATION: Double
	val KEY_KP_3_DOWN: Boolean
	val KEY_KP_3_DURATION: Double
	val KEY_KP_4_DOWN: Boolean
	val KEY_KP_4_DURATION: Double
	val KEY_KP_5_DOWN: Boolean
	val KEY_KP_5_DURATION: Double
	val KEY_KP_6_DOWN: Boolean
	val KEY_KP_6_DURATION: Double
	val KEY_KP_7_DOWN: Boolean
	val KEY_KP_7_DURATION: Double
	val KEY_KP_8_DOWN: Boolean
	val KEY_KP_8_DURATION: Double
	val KEY_KP_9_DOWN: Boolean
	val KEY_KP_9_DURATION: Double
	val KEY_KP_DECIMAL_DOWN: Boolean
	val KEY_KP_DECIMAL_DURATION: Double
	val KEY_KP_DIVIDE_DOWN: Boolean
	val KEY_KP_DIVIDE_DURATION: Double
	val KEY_KP_MULTIPLY_DOWN: Boolean
	val KEY_KP_MULTIPLY_DURATION: Double
	val KEY_KP_SUBTRACT_DOWN: Boolean
	val KEY_KP_SUBTRACT_DURATION: Double
	val KEY_KP_ADD_DOWN: Boolean
	val KEY_KP_ADD_DURATION: Double
	val KEY_KP_ENTER_DOWN: Boolean
	val KEY_KP_ENTER_DURATION: Double
	val KEY_KP_EQUAL_DOWN: Boolean
	val KEY_KP_EQUAL_DURATION: Double
	val KEY_LEFT_SHIFT_DOWN: Boolean
	val KEY_LEFT_SHIFT_DURATION: Double
	val KEY_LEFT_CONTROL_DOWN: Boolean
	val KEY_LEFT_CONTROL_DURATION: Double
	val KEY_LEFT_ALT_DOWN: Boolean
	val KEY_LEFT_ALT_DURATION: Double
	val KEY_LEFT_SUPER_DOWN: Boolean
	val KEY_LEFT_SUPER_DURATION: Double
	val KEY_RIGHT_SHIFT_DOWN: Boolean
	val KEY_RIGHT_SHIFT_DURATION: Double
	val KEY_RIGHT_CONTROL_DOWN: Boolean
	val KEY_RIGHT_CONTROL_DURATION: Double
	val KEY_RIGHT_ALT_DOWN: Boolean
	val KEY_RIGHT_ALT_DURATION: Double
	val KEY_RIGHT_SUPER_DOWN: Boolean
	val KEY_RIGHT_SUPER_DURATION: Double
	val KEY_MENU_DOWN: Boolean
	val KEY_MENU_DURATION: Double
	val KEY_LAST_DOWN: Boolean
	val KEY_LAST_DURATION: Double
	val MOUSE_BUTTON_1_DOWN: Boolean
	val MOUSE_BUTTON_1_DURATION: Double
	val MOUSE_BUTTON_2_DOWN: Boolean
	val MOUSE_BUTTON_2_DURATION: Double
	val MOUSE_BUTTON_3_DOWN: Boolean
	val MOUSE_BUTTON_3_DURATION: Double
	val MOUSE_BUTTON_4_DOWN: Boolean
	val MOUSE_BUTTON_4_DURATION: Double
	val MOUSE_BUTTON_5_DOWN: Boolean
	val MOUSE_BUTTON_5_DURATION: Double
	val MOUSE_BUTTON_6_DOWN: Boolean
	val MOUSE_BUTTON_6_DURATION: Double
	val MOUSE_BUTTON_7_DOWN: Boolean
	val MOUSE_BUTTON_7_DURATION: Double
	val MOUSE_BUTTON_8_DOWN: Boolean
	val MOUSE_BUTTON_8_DURATION: Double

	val KEY_SPACE_PRESSED: Boolean
	val KEY_APOSTROPHE_PRESSED: Boolean
	val KEY_COMMA_PRESSED: Boolean
	val KEY_MINUS_PRESSED: Boolean
	val KEY_PERIOD_PRESSED: Boolean
	val KEY_SLASH_PRESSED: Boolean
	val KEY_0_PRESSED: Boolean
	val KEY_1_PRESSED: Boolean
	val KEY_2_PRESSED: Boolean
	val KEY_3_PRESSED: Boolean
	val KEY_4_PRESSED: Boolean
	val KEY_5_PRESSED: Boolean
	val KEY_6_PRESSED: Boolean
	val KEY_7_PRESSED: Boolean
	val KEY_8_PRESSED: Boolean
	val KEY_9_PRESSED: Boolean
	val KEY_SEMICOLON_PRESSED: Boolean
	val KEY_EQUAL_PRESSED: Boolean
	val KEY_A_PRESSED: Boolean
	val KEY_B_PRESSED: Boolean
	val KEY_C_PRESSED: Boolean
	val KEY_D_PRESSED: Boolean
	val KEY_E_PRESSED: Boolean
	val KEY_F_PRESSED: Boolean
	val KEY_G_PRESSED: Boolean
	val KEY_H_PRESSED: Boolean
	val KEY_I_PRESSED: Boolean
	val KEY_J_PRESSED: Boolean
	val KEY_K_PRESSED: Boolean
	val KEY_L_PRESSED: Boolean
	val KEY_M_PRESSED: Boolean
	val KEY_N_PRESSED: Boolean
	val KEY_O_PRESSED: Boolean
	val KEY_P_PRESSED: Boolean
	val KEY_Q_PRESSED: Boolean
	val KEY_R_PRESSED: Boolean
	val KEY_S_PRESSED: Boolean
	val KEY_T_PRESSED: Boolean
	val KEY_U_PRESSED: Boolean
	val KEY_V_PRESSED: Boolean
	val KEY_W_PRESSED: Boolean
	val KEY_X_PRESSED: Boolean
	val KEY_Y_PRESSED: Boolean
	val KEY_Z_PRESSED: Boolean
	val KEY_LEFT_BRACKET_PRESSED: Boolean
	val KEY_BACKSLASH_PRESSED: Boolean
	val KEY_RIGHT_BRACKET_PRESSED: Boolean
	val KEY_GRAVE_ACCENT_PRESSED: Boolean
	val KEY_WORLD_1_PRESSED: Boolean
	val KEY_WORLD_2_PRESSED: Boolean

	val KEY_ESCAPE_PRESSED: Boolean
	val KEY_ENTER_PRESSED: Boolean
	val KEY_TAB_PRESSED: Boolean
	val KEY_BACKSPACE_PRESSED: Boolean
	val KEY_INSERT_PRESSED: Boolean
	val KEY_DELETE_PRESSED: Boolean
	val KEY_RIGHT_PRESSED: Boolean
	val KEY_LEFT_PRESSED: Boolean
	val KEY_DOWN_PRESSED: Boolean
	val KEY_UP_PRESSED: Boolean
	val KEY_PAGE_UP_PRESSED: Boolean
	val KEY_PAGE_DOWN_PRESSED: Boolean
	val KEY_HOME_PRESSED: Boolean
	val KEY_END_PRESSED: Boolean
	val KEY_CAPS_LOCK_PRESSED: Boolean
	val KEY_SCROLL_LOCK_PRESSED: Boolean
	val KEY_NUM_LOCK_PRESSED: Boolean
	val KEY_PRINT_SCREEN_PRESSED: Boolean
	val KEY_PAUSE_PRESSED: Boolean
	val KEY_F1_PRESSED: Boolean
	val KEY_F2_PRESSED: Boolean
	val KEY_F3_PRESSED: Boolean
	val KEY_F4_PRESSED: Boolean
	val KEY_F5_PRESSED: Boolean
	val KEY_F6_PRESSED: Boolean
	val KEY_F7_PRESSED: Boolean
	val KEY_F8_PRESSED: Boolean
	val KEY_F9_PRESSED: Boolean
	val KEY_F10_PRESSED: Boolean
	val KEY_F11_PRESSED: Boolean
	val KEY_F12_PRESSED: Boolean
	val KEY_F13_PRESSED: Boolean
	val KEY_F14_PRESSED: Boolean
	val KEY_F15_PRESSED: Boolean
	val KEY_F16_PRESSED: Boolean
	val KEY_F17_PRESSED: Boolean
	val KEY_F18_PRESSED: Boolean
	val KEY_F19_PRESSED: Boolean
	val KEY_F20_PRESSED: Boolean
	val KEY_F21_PRESSED: Boolean
	val KEY_F22_PRESSED: Boolean
	val KEY_F23_PRESSED: Boolean
	val KEY_F24_PRESSED: Boolean
	val KEY_F25_PRESSED: Boolean
	val KEY_KP_0_PRESSED: Boolean
	val KEY_KP_1_PRESSED: Boolean
	val KEY_KP_2_PRESSED: Boolean
	val KEY_KP_3_PRESSED: Boolean
	val KEY_KP_4_PRESSED: Boolean
	val KEY_KP_5_PRESSED: Boolean
	val KEY_KP_6_PRESSED: Boolean
	val KEY_KP_7_PRESSED: Boolean
	val KEY_KP_8_PRESSED: Boolean
	val KEY_KP_9_PRESSED: Boolean
	val KEY_KP_DECIMAL_PRESSED: Boolean
	val KEY_KP_DIVIDE_PRESSED: Boolean
	val KEY_KP_MULTIPLY_PRESSED: Boolean
	val KEY_KP_SUBTRACT_PRESSED: Boolean
	val KEY_KP_ADD_PRESSED: Boolean
	val KEY_KP_ENTER_PRESSED: Boolean
	val KEY_KP_EQUAL_PRESSED: Boolean
	val KEY_LEFT_SHIFT_PRESSED: Boolean
	val KEY_LEFT_CONTROL_PRESSED: Boolean
	val KEY_LEFT_ALT_PRESSED: Boolean
	val KEY_LEFT_SUPER_PRESSED: Boolean
	val KEY_RIGHT_SHIFT_PRESSED: Boolean
	val KEY_RIGHT_CONTROL_PRESSED: Boolean
	val KEY_RIGHT_ALT_PRESSED: Boolean
	val KEY_RIGHT_SUPER_PRESSED: Boolean
	val KEY_MENU_PRESSED: Boolean
	val KEY_LAST_PRESSED: Boolean

	val KEY_SPACE_RELEASED: Boolean
	val KEY_APOSTROPHE_RELEASED: Boolean
	val KEY_COMMA_RELEASED: Boolean
	val KEY_MINUS_RELEASED: Boolean
	val KEY_PERIOD_RELEASED: Boolean
	val KEY_SLASH_RELEASED: Boolean
	val KEY_0_RELEASED: Boolean
	val KEY_1_RELEASED: Boolean
	val KEY_2_RELEASED: Boolean
	val KEY_3_RELEASED: Boolean
	val KEY_4_RELEASED: Boolean
	val KEY_5_RELEASED: Boolean
	val KEY_6_RELEASED: Boolean
	val KEY_7_RELEASED: Boolean
	val KEY_8_RELEASED: Boolean
	val KEY_9_RELEASED: Boolean
	val KEY_SEMICOLON_RELEASED: Boolean
	val KEY_EQUAL_RELEASED: Boolean
	val KEY_A_RELEASED: Boolean
	val KEY_B_RELEASED: Boolean
	val KEY_C_RELEASED: Boolean
	val KEY_D_RELEASED: Boolean
	val KEY_E_RELEASED: Boolean
	val KEY_F_RELEASED: Boolean
	val KEY_G_RELEASED: Boolean
	val KEY_H_RELEASED: Boolean
	val KEY_I_RELEASED: Boolean
	val KEY_J_RELEASED: Boolean
	val KEY_K_RELEASED: Boolean
	val KEY_L_RELEASED: Boolean
	val KEY_M_RELEASED: Boolean
	val KEY_N_RELEASED: Boolean
	val KEY_O_RELEASED: Boolean
	val KEY_P_RELEASED: Boolean
	val KEY_Q_RELEASED: Boolean
	val KEY_R_RELEASED: Boolean
	val KEY_S_RELEASED: Boolean
	val KEY_T_RELEASED: Boolean
	val KEY_U_RELEASED: Boolean
	val KEY_V_RELEASED: Boolean
	val KEY_W_RELEASED: Boolean
	val KEY_X_RELEASED: Boolean
	val KEY_Y_RELEASED: Boolean
	val KEY_Z_RELEASED: Boolean
	val KEY_LEFT_BRACKET_RELEASED: Boolean
	val KEY_BACKSLASH_RELEASED: Boolean
	val KEY_RIGHT_BRACKET_RELEASED: Boolean
	val KEY_GRAVE_ACCENT_RELEASED: Boolean
	val KEY_WORLD_1_RELEASED: Boolean
	val KEY_WORLD_2_RELEASED: Boolean

	val KEY_ESCAPE_RELEASED: Boolean
	val KEY_ENTER_RELEASED: Boolean
	val KEY_TAB_RELEASED: Boolean
	val KEY_BACKSPACE_RELEASED: Boolean
	val KEY_INSERT_RELEASED: Boolean
	val KEY_DELETE_RELEASED: Boolean
	val KEY_RIGHT_RELEASED: Boolean
	val KEY_LEFT_RELEASED: Boolean
	val KEY_DOWN_RELEASED: Boolean
	val KEY_UP_RELEASED: Boolean
	val KEY_PAGE_UP_RELEASED: Boolean
	val KEY_PAGE_DOWN_RELEASED: Boolean
	val KEY_HOME_RELEASED: Boolean
	val KEY_END_RELEASED: Boolean
	val KEY_CAPS_LOCK_RELEASED: Boolean
	val KEY_SCROLL_LOCK_RELEASED: Boolean
	val KEY_NUM_LOCK_RELEASED: Boolean
	val KEY_PRINT_SCREEN_RELEASED: Boolean
	val KEY_PAUSE_RELEASED: Boolean
	val KEY_F1_RELEASED: Boolean
	val KEY_F2_RELEASED: Boolean
	val KEY_F3_RELEASED: Boolean
	val KEY_F4_RELEASED: Boolean
	val KEY_F5_RELEASED: Boolean
	val KEY_F6_RELEASED: Boolean
	val KEY_F7_RELEASED: Boolean
	val KEY_F8_RELEASED: Boolean
	val KEY_F9_RELEASED: Boolean
	val KEY_F10_RELEASED: Boolean
	val KEY_F11_RELEASED: Boolean
	val KEY_F12_RELEASED: Boolean
	val KEY_F13_RELEASED: Boolean
	val KEY_F14_RELEASED: Boolean
	val KEY_F15_RELEASED: Boolean
	val KEY_F16_RELEASED: Boolean
	val KEY_F17_RELEASED: Boolean
	val KEY_F18_RELEASED: Boolean
	val KEY_F19_RELEASED: Boolean
	val KEY_F20_RELEASED: Boolean
	val KEY_F21_RELEASED: Boolean
	val KEY_F22_RELEASED: Boolean
	val KEY_F23_RELEASED: Boolean
	val KEY_F24_RELEASED: Boolean
	val KEY_F25_RELEASED: Boolean
	val KEY_KP_0_RELEASED: Boolean
	val KEY_KP_1_RELEASED: Boolean
	val KEY_KP_2_RELEASED: Boolean
	val KEY_KP_3_RELEASED: Boolean
	val KEY_KP_4_RELEASED: Boolean
	val KEY_KP_5_RELEASED: Boolean
	val KEY_KP_6_RELEASED: Boolean
	val KEY_KP_7_RELEASED: Boolean
	val KEY_KP_8_RELEASED: Boolean
	val KEY_KP_9_RELEASED: Boolean
	val KEY_KP_DECIMAL_RELEASED: Boolean
	val KEY_KP_DIVIDE_RELEASED: Boolean
	val KEY_KP_MULTIPLY_RELEASED: Boolean
	val KEY_KP_SUBTRACT_RELEASED: Boolean
	val KEY_KP_ADD_RELEASED: Boolean
	val KEY_KP_ENTER_RELEASED: Boolean
	val KEY_KP_EQUAL_RELEASED: Boolean
	val KEY_LEFT_SHIFT_RELEASED: Boolean
	val KEY_LEFT_CONTROL_RELEASED: Boolean
	val KEY_LEFT_ALT_RELEASED: Boolean
	val KEY_LEFT_SUPER_RELEASED: Boolean
	val KEY_RIGHT_SHIFT_RELEASED: Boolean
	val KEY_RIGHT_CONTROL_RELEASED: Boolean
	val KEY_RIGHT_ALT_RELEASED: Boolean
	val KEY_RIGHT_SUPER_RELEASED: Boolean
	val KEY_MENU_RELEASED: Boolean
	val KEY_LAST_RELEASED: Boolean

	val MOUSE_BUTTON_1_RELEASED: Boolean
	val MOUSE_BUTTON_2_RELEASED: Boolean
	val MOUSE_BUTTON_3_RELEASED: Boolean
	val MOUSE_BUTTON_4_RELEASED: Boolean
	val MOUSE_BUTTON_5_RELEASED: Boolean
	val MOUSE_BUTTON_6_RELEASED: Boolean
	val MOUSE_BUTTON_7_RELEASED: Boolean
	val MOUSE_BUTTON_8_RELEASED: Boolean

	val MOUSE_BUTTON_1_PRESSED: Boolean
	val MOUSE_BUTTON_2_PRESSED: Boolean
	val MOUSE_BUTTON_3_PRESSED: Boolean
	val MOUSE_BUTTON_4_PRESSED: Boolean
	val MOUSE_BUTTON_5_PRESSED: Boolean
	val MOUSE_BUTTON_6_PRESSED: Boolean
	val MOUSE_BUTTON_7_PRESSED: Boolean
	val MOUSE_BUTTON_8_PRESSED: Boolean

	/**
	 * Позволяет обратиться к состоянию кнопки по коду
	 *
	 * Возвращает, нажата ли кнопка [code]
	 */
	fun isKeyDown(code: Int): Boolean {
		return when (code) {
			GLFW.GLFW_KEY_SPACE -> KEY_SPACE_DOWN
			GLFW.GLFW_KEY_APOSTROPHE -> KEY_APOSTROPHE_DOWN
			GLFW.GLFW_KEY_COMMA -> KEY_COMMA_DOWN
			GLFW.GLFW_KEY_MINUS -> KEY_MINUS_DOWN
			GLFW.GLFW_KEY_PERIOD -> KEY_PERIOD_DOWN
			GLFW.GLFW_KEY_SLASH -> KEY_SLASH_DOWN
			GLFW.GLFW_KEY_0 -> KEY_0_DOWN
			GLFW.GLFW_KEY_1 -> KEY_1_DOWN
			GLFW.GLFW_KEY_2 -> KEY_2_DOWN
			GLFW.GLFW_KEY_3 -> KEY_3_DOWN
			GLFW.GLFW_KEY_4 -> KEY_4_DOWN
			GLFW.GLFW_KEY_5 -> KEY_5_DOWN
			GLFW.GLFW_KEY_6 -> KEY_6_DOWN
			GLFW.GLFW_KEY_7 -> KEY_7_DOWN
			GLFW.GLFW_KEY_8 -> KEY_8_DOWN
			GLFW.GLFW_KEY_9 -> KEY_9_DOWN
			GLFW.GLFW_KEY_SEMICOLON -> KEY_SEMICOLON_DOWN
			GLFW.GLFW_KEY_EQUAL -> KEY_EQUAL_DOWN
			GLFW.GLFW_KEY_A -> KEY_A_DOWN
			GLFW.GLFW_KEY_B -> KEY_B_DOWN
			GLFW.GLFW_KEY_C -> KEY_C_DOWN
			GLFW.GLFW_KEY_D -> KEY_D_DOWN
			GLFW.GLFW_KEY_E -> KEY_E_DOWN
			GLFW.GLFW_KEY_F -> KEY_F_DOWN
			GLFW.GLFW_KEY_G -> KEY_G_DOWN
			GLFW.GLFW_KEY_H -> KEY_H_DOWN
			GLFW.GLFW_KEY_I -> KEY_I_DOWN
			GLFW.GLFW_KEY_J -> KEY_J_DOWN
			GLFW.GLFW_KEY_K -> KEY_K_DOWN
			GLFW.GLFW_KEY_L -> KEY_L_DOWN
			GLFW.GLFW_KEY_M -> KEY_M_DOWN
			GLFW.GLFW_KEY_N -> KEY_N_DOWN
			GLFW.GLFW_KEY_O -> KEY_O_DOWN
			GLFW.GLFW_KEY_P -> KEY_P_DOWN
			GLFW.GLFW_KEY_Q -> KEY_Q_DOWN
			GLFW.GLFW_KEY_R -> KEY_R_DOWN
			GLFW.GLFW_KEY_S -> KEY_S_DOWN
			GLFW.GLFW_KEY_T -> KEY_T_DOWN
			GLFW.GLFW_KEY_U -> KEY_U_DOWN
			GLFW.GLFW_KEY_V -> KEY_V_DOWN
			GLFW.GLFW_KEY_W -> KEY_W_DOWN
			GLFW.GLFW_KEY_X -> KEY_X_DOWN
			GLFW.GLFW_KEY_Y -> KEY_Y_DOWN
			GLFW.GLFW_KEY_Z -> KEY_Z_DOWN
			GLFW.GLFW_KEY_LEFT_BRACKET -> KEY_LEFT_BRACKET_DOWN
			GLFW.GLFW_KEY_BACKSLASH -> KEY_BACKSLASH_DOWN
			GLFW.GLFW_KEY_RIGHT_BRACKET -> KEY_RIGHT_BRACKET_DOWN
			GLFW.GLFW_KEY_GRAVE_ACCENT -> KEY_GRAVE_ACCENT_DOWN
			GLFW.GLFW_KEY_WORLD_1 -> KEY_WORLD_1_DOWN
			GLFW.GLFW_KEY_WORLD_2 -> KEY_WORLD_2_DOWN
			GLFW.GLFW_KEY_ESCAPE -> KEY_ESCAPE_DOWN
			GLFW.GLFW_KEY_ENTER -> KEY_ENTER_DOWN
			GLFW.GLFW_KEY_TAB -> KEY_TAB_DOWN
			GLFW.GLFW_KEY_BACKSPACE -> KEY_BACKSPACE_DOWN
			GLFW.GLFW_KEY_INSERT -> KEY_INSERT_DOWN
			GLFW.GLFW_KEY_DELETE -> KEY_DELETE_DOWN
			GLFW.GLFW_KEY_RIGHT -> KEY_RIGHT_DOWN
			GLFW.GLFW_KEY_LEFT -> KEY_LEFT_DOWN
			GLFW.GLFW_KEY_DOWN -> KEY_DOWN_DOWN
			GLFW.GLFW_KEY_UP -> KEY_UP_DOWN
			GLFW.GLFW_KEY_PAGE_UP -> KEY_PAGE_UP_DOWN
			GLFW.GLFW_KEY_PAGE_DOWN -> KEY_PAGE_DOWN_DOWN
			GLFW.GLFW_KEY_HOME -> KEY_HOME_DOWN
			GLFW.GLFW_KEY_END -> KEY_END_DOWN
			GLFW.GLFW_KEY_CAPS_LOCK -> KEY_CAPS_LOCK_DOWN
			GLFW.GLFW_KEY_SCROLL_LOCK -> KEY_SCROLL_LOCK_DOWN
			GLFW.GLFW_KEY_NUM_LOCK -> KEY_NUM_LOCK_DOWN
			GLFW.GLFW_KEY_PRINT_SCREEN -> KEY_PRINT_SCREEN_DOWN
			GLFW.GLFW_KEY_PAUSE -> KEY_PAUSE_DOWN
			GLFW.GLFW_KEY_F1 -> KEY_F1_DOWN
			GLFW.GLFW_KEY_F2 -> KEY_F2_DOWN
			GLFW.GLFW_KEY_F3 -> KEY_F3_DOWN
			GLFW.GLFW_KEY_F4 -> KEY_F4_DOWN
			GLFW.GLFW_KEY_F5 -> KEY_F5_DOWN
			GLFW.GLFW_KEY_F6 -> KEY_F6_DOWN
			GLFW.GLFW_KEY_F7 -> KEY_F7_DOWN
			GLFW.GLFW_KEY_F8 -> KEY_F8_DOWN
			GLFW.GLFW_KEY_F9 -> KEY_F9_DOWN
			GLFW.GLFW_KEY_F10 -> KEY_F10_DOWN
			GLFW.GLFW_KEY_F11 -> KEY_F11_DOWN
			GLFW.GLFW_KEY_F12 -> KEY_F12_DOWN
			GLFW.GLFW_KEY_F13 -> KEY_F13_DOWN
			GLFW.GLFW_KEY_F14 -> KEY_F14_DOWN
			GLFW.GLFW_KEY_F15 -> KEY_F15_DOWN
			GLFW.GLFW_KEY_F16 -> KEY_F16_DOWN
			GLFW.GLFW_KEY_F17 -> KEY_F17_DOWN
			GLFW.GLFW_KEY_F18 -> KEY_F18_DOWN
			GLFW.GLFW_KEY_F19 -> KEY_F19_DOWN
			GLFW.GLFW_KEY_F20 -> KEY_F20_DOWN
			GLFW.GLFW_KEY_F21 -> KEY_F21_DOWN
			GLFW.GLFW_KEY_F22 -> KEY_F22_DOWN
			GLFW.GLFW_KEY_F23 -> KEY_F23_DOWN
			GLFW.GLFW_KEY_F24 -> KEY_F24_DOWN
			GLFW.GLFW_KEY_F25 -> KEY_F25_DOWN
			GLFW.GLFW_KEY_KP_0 -> KEY_KP_0_DOWN
			GLFW.GLFW_KEY_KP_1 -> KEY_KP_1_DOWN
			GLFW.GLFW_KEY_KP_2 -> KEY_KP_2_DOWN
			GLFW.GLFW_KEY_KP_3 -> KEY_KP_3_DOWN
			GLFW.GLFW_KEY_KP_4 -> KEY_KP_4_DOWN
			GLFW.GLFW_KEY_KP_5 -> KEY_KP_5_DOWN
			GLFW.GLFW_KEY_KP_6 -> KEY_KP_6_DOWN
			GLFW.GLFW_KEY_KP_7 -> KEY_KP_7_DOWN
			GLFW.GLFW_KEY_KP_8 -> KEY_KP_8_DOWN
			GLFW.GLFW_KEY_KP_9 -> KEY_KP_9_DOWN
			GLFW.GLFW_KEY_KP_DECIMAL -> KEY_KP_DECIMAL_DOWN
			GLFW.GLFW_KEY_KP_DIVIDE -> KEY_KP_DIVIDE_DOWN
			GLFW.GLFW_KEY_KP_MULTIPLY -> KEY_KP_MULTIPLY_DOWN
			GLFW.GLFW_KEY_KP_SUBTRACT -> KEY_KP_SUBTRACT_DOWN
			GLFW.GLFW_KEY_KP_ADD -> KEY_KP_ADD_DOWN
			GLFW.GLFW_KEY_KP_ENTER -> KEY_KP_ENTER_DOWN
			GLFW.GLFW_KEY_KP_EQUAL -> KEY_KP_EQUAL_DOWN
			GLFW.GLFW_KEY_LEFT_SHIFT -> KEY_LEFT_SHIFT_DOWN
			GLFW.GLFW_KEY_LEFT_CONTROL -> KEY_LEFT_CONTROL_DOWN
			GLFW.GLFW_KEY_LEFT_ALT -> KEY_LEFT_ALT_DOWN
			GLFW.GLFW_KEY_LEFT_SUPER -> KEY_LEFT_SUPER_DOWN
			GLFW.GLFW_KEY_RIGHT_SHIFT -> KEY_RIGHT_SHIFT_DOWN
			GLFW.GLFW_KEY_RIGHT_CONTROL -> KEY_RIGHT_CONTROL_DOWN
			GLFW.GLFW_KEY_RIGHT_ALT -> KEY_RIGHT_ALT_DOWN
			GLFW.GLFW_KEY_RIGHT_SUPER -> KEY_RIGHT_SUPER_DOWN
			GLFW.GLFW_KEY_MENU -> KEY_MENU_DOWN
			GLFW.GLFW_MOUSE_BUTTON_1 -> MOUSE_BUTTON_1_DOWN
			GLFW.GLFW_MOUSE_BUTTON_2 -> MOUSE_BUTTON_2_DOWN
			GLFW.GLFW_MOUSE_BUTTON_3 -> MOUSE_BUTTON_3_DOWN
			GLFW.GLFW_MOUSE_BUTTON_4 -> MOUSE_BUTTON_4_DOWN
			GLFW.GLFW_MOUSE_BUTTON_5 -> MOUSE_BUTTON_5_DOWN
			GLFW.GLFW_MOUSE_BUTTON_6 -> MOUSE_BUTTON_6_DOWN
			GLFW.GLFW_MOUSE_BUTTON_7 -> MOUSE_BUTTON_7_DOWN
			GLFW.GLFW_MOUSE_BUTTON_8 -> MOUSE_BUTTON_8_DOWN
			else -> false
		}
	}

	/**
	 * Позволяет обратиться к состоянию кнопки по коду
	 *
	 * Возвращает, была ли нажата кнопка [code] на данном игровом кадре;
	 * Т.е. если пользователь зажал пробел, то данный метод вернёт true только лишь один раз,
	 * пока пользователь не разожмёт пробел и не нажмёт его снова
	 */
	fun isKeyPressed(code: Int): Boolean {
		return when (code) {
			GLFW.GLFW_KEY_SPACE -> KEY_SPACE_PRESSED
			GLFW.GLFW_KEY_APOSTROPHE -> KEY_APOSTROPHE_PRESSED
			GLFW.GLFW_KEY_COMMA -> KEY_COMMA_PRESSED
			GLFW.GLFW_KEY_MINUS -> KEY_MINUS_PRESSED
			GLFW.GLFW_KEY_PERIOD -> KEY_PERIOD_PRESSED
			GLFW.GLFW_KEY_SLASH -> KEY_SLASH_PRESSED
			GLFW.GLFW_KEY_0 -> KEY_0_PRESSED
			GLFW.GLFW_KEY_1 -> KEY_1_PRESSED
			GLFW.GLFW_KEY_2 -> KEY_2_PRESSED
			GLFW.GLFW_KEY_3 -> KEY_3_PRESSED
			GLFW.GLFW_KEY_4 -> KEY_4_PRESSED
			GLFW.GLFW_KEY_5 -> KEY_5_PRESSED
			GLFW.GLFW_KEY_6 -> KEY_6_PRESSED
			GLFW.GLFW_KEY_7 -> KEY_7_PRESSED
			GLFW.GLFW_KEY_8 -> KEY_8_PRESSED
			GLFW.GLFW_KEY_9 -> KEY_9_PRESSED
			GLFW.GLFW_KEY_SEMICOLON -> KEY_SEMICOLON_PRESSED
			GLFW.GLFW_KEY_EQUAL -> KEY_EQUAL_PRESSED
			GLFW.GLFW_KEY_A -> KEY_A_PRESSED
			GLFW.GLFW_KEY_B -> KEY_B_PRESSED
			GLFW.GLFW_KEY_C -> KEY_C_PRESSED
			GLFW.GLFW_KEY_D -> KEY_D_PRESSED
			GLFW.GLFW_KEY_E -> KEY_E_PRESSED
			GLFW.GLFW_KEY_F -> KEY_F_PRESSED
			GLFW.GLFW_KEY_G -> KEY_G_PRESSED
			GLFW.GLFW_KEY_H -> KEY_H_PRESSED
			GLFW.GLFW_KEY_I -> KEY_I_PRESSED
			GLFW.GLFW_KEY_J -> KEY_J_PRESSED
			GLFW.GLFW_KEY_K -> KEY_K_PRESSED
			GLFW.GLFW_KEY_L -> KEY_L_PRESSED
			GLFW.GLFW_KEY_M -> KEY_M_PRESSED
			GLFW.GLFW_KEY_N -> KEY_N_PRESSED
			GLFW.GLFW_KEY_O -> KEY_O_PRESSED
			GLFW.GLFW_KEY_P -> KEY_P_PRESSED
			GLFW.GLFW_KEY_Q -> KEY_Q_PRESSED
			GLFW.GLFW_KEY_R -> KEY_R_PRESSED
			GLFW.GLFW_KEY_S -> KEY_S_PRESSED
			GLFW.GLFW_KEY_T -> KEY_T_PRESSED
			GLFW.GLFW_KEY_U -> KEY_U_PRESSED
			GLFW.GLFW_KEY_V -> KEY_V_PRESSED
			GLFW.GLFW_KEY_W -> KEY_W_PRESSED
			GLFW.GLFW_KEY_X -> KEY_X_PRESSED
			GLFW.GLFW_KEY_Y -> KEY_Y_PRESSED
			GLFW.GLFW_KEY_Z -> KEY_Z_PRESSED
			GLFW.GLFW_KEY_LEFT_BRACKET -> KEY_LEFT_BRACKET_PRESSED
			GLFW.GLFW_KEY_BACKSLASH -> KEY_BACKSLASH_PRESSED
			GLFW.GLFW_KEY_RIGHT_BRACKET -> KEY_RIGHT_BRACKET_PRESSED
			GLFW.GLFW_KEY_GRAVE_ACCENT -> KEY_GRAVE_ACCENT_PRESSED
			GLFW.GLFW_KEY_WORLD_1 -> KEY_WORLD_1_PRESSED
			GLFW.GLFW_KEY_WORLD_2 -> KEY_WORLD_2_PRESSED
			GLFW.GLFW_KEY_ESCAPE -> KEY_ESCAPE_PRESSED
			GLFW.GLFW_KEY_ENTER -> KEY_ENTER_PRESSED
			GLFW.GLFW_KEY_TAB -> KEY_TAB_PRESSED
			GLFW.GLFW_KEY_BACKSPACE -> KEY_BACKSPACE_PRESSED
			GLFW.GLFW_KEY_INSERT -> KEY_INSERT_PRESSED
			GLFW.GLFW_KEY_DELETE -> KEY_DELETE_PRESSED
			GLFW.GLFW_KEY_RIGHT -> KEY_RIGHT_PRESSED
			GLFW.GLFW_KEY_LEFT -> KEY_LEFT_PRESSED
			GLFW.GLFW_KEY_DOWN -> KEY_DOWN_PRESSED
			GLFW.GLFW_KEY_UP -> KEY_UP_PRESSED
			GLFW.GLFW_KEY_PAGE_UP -> KEY_PAGE_UP_PRESSED
			GLFW.GLFW_KEY_PAGE_DOWN -> KEY_PAGE_DOWN_PRESSED
			GLFW.GLFW_KEY_HOME -> KEY_HOME_PRESSED
			GLFW.GLFW_KEY_END -> KEY_END_PRESSED
			GLFW.GLFW_KEY_CAPS_LOCK -> KEY_CAPS_LOCK_PRESSED
			GLFW.GLFW_KEY_SCROLL_LOCK -> KEY_SCROLL_LOCK_PRESSED
			GLFW.GLFW_KEY_NUM_LOCK -> KEY_NUM_LOCK_PRESSED
			GLFW.GLFW_KEY_PRINT_SCREEN -> KEY_PRINT_SCREEN_PRESSED
			GLFW.GLFW_KEY_PAUSE -> KEY_PAUSE_PRESSED
			GLFW.GLFW_KEY_F1 -> KEY_F1_PRESSED
			GLFW.GLFW_KEY_F2 -> KEY_F2_PRESSED
			GLFW.GLFW_KEY_F3 -> KEY_F3_PRESSED
			GLFW.GLFW_KEY_F4 -> KEY_F4_PRESSED
			GLFW.GLFW_KEY_F5 -> KEY_F5_PRESSED
			GLFW.GLFW_KEY_F6 -> KEY_F6_PRESSED
			GLFW.GLFW_KEY_F7 -> KEY_F7_PRESSED
			GLFW.GLFW_KEY_F8 -> KEY_F8_PRESSED
			GLFW.GLFW_KEY_F9 -> KEY_F9_PRESSED
			GLFW.GLFW_KEY_F10 -> KEY_F10_PRESSED
			GLFW.GLFW_KEY_F11 -> KEY_F11_PRESSED
			GLFW.GLFW_KEY_F12 -> KEY_F12_PRESSED
			GLFW.GLFW_KEY_F13 -> KEY_F13_PRESSED
			GLFW.GLFW_KEY_F14 -> KEY_F14_PRESSED
			GLFW.GLFW_KEY_F15 -> KEY_F15_PRESSED
			GLFW.GLFW_KEY_F16 -> KEY_F16_PRESSED
			GLFW.GLFW_KEY_F17 -> KEY_F17_PRESSED
			GLFW.GLFW_KEY_F18 -> KEY_F18_PRESSED
			GLFW.GLFW_KEY_F19 -> KEY_F19_PRESSED
			GLFW.GLFW_KEY_F20 -> KEY_F20_PRESSED
			GLFW.GLFW_KEY_F21 -> KEY_F21_PRESSED
			GLFW.GLFW_KEY_F22 -> KEY_F22_PRESSED
			GLFW.GLFW_KEY_F23 -> KEY_F23_PRESSED
			GLFW.GLFW_KEY_F24 -> KEY_F24_PRESSED
			GLFW.GLFW_KEY_F25 -> KEY_F25_PRESSED
			GLFW.GLFW_KEY_KP_0 -> KEY_KP_0_PRESSED
			GLFW.GLFW_KEY_KP_1 -> KEY_KP_1_PRESSED
			GLFW.GLFW_KEY_KP_2 -> KEY_KP_2_PRESSED
			GLFW.GLFW_KEY_KP_3 -> KEY_KP_3_PRESSED
			GLFW.GLFW_KEY_KP_4 -> KEY_KP_4_PRESSED
			GLFW.GLFW_KEY_KP_5 -> KEY_KP_5_PRESSED
			GLFW.GLFW_KEY_KP_6 -> KEY_KP_6_PRESSED
			GLFW.GLFW_KEY_KP_7 -> KEY_KP_7_PRESSED
			GLFW.GLFW_KEY_KP_8 -> KEY_KP_8_PRESSED
			GLFW.GLFW_KEY_KP_9 -> KEY_KP_9_PRESSED
			GLFW.GLFW_KEY_KP_DECIMAL -> KEY_KP_DECIMAL_PRESSED
			GLFW.GLFW_KEY_KP_DIVIDE -> KEY_KP_DIVIDE_PRESSED
			GLFW.GLFW_KEY_KP_MULTIPLY -> KEY_KP_MULTIPLY_PRESSED
			GLFW.GLFW_KEY_KP_SUBTRACT -> KEY_KP_SUBTRACT_PRESSED
			GLFW.GLFW_KEY_KP_ADD -> KEY_KP_ADD_PRESSED
			GLFW.GLFW_KEY_KP_ENTER -> KEY_KP_ENTER_PRESSED
			GLFW.GLFW_KEY_KP_EQUAL -> KEY_KP_EQUAL_PRESSED
			GLFW.GLFW_KEY_LEFT_SHIFT -> KEY_LEFT_SHIFT_PRESSED
			GLFW.GLFW_KEY_LEFT_CONTROL -> KEY_LEFT_CONTROL_PRESSED
			GLFW.GLFW_KEY_LEFT_ALT -> KEY_LEFT_ALT_PRESSED
			GLFW.GLFW_KEY_LEFT_SUPER -> KEY_LEFT_SUPER_PRESSED
			GLFW.GLFW_KEY_RIGHT_SHIFT -> KEY_RIGHT_SHIFT_PRESSED
			GLFW.GLFW_KEY_RIGHT_CONTROL -> KEY_RIGHT_CONTROL_PRESSED
			GLFW.GLFW_KEY_RIGHT_ALT -> KEY_RIGHT_ALT_PRESSED
			GLFW.GLFW_KEY_RIGHT_SUPER -> KEY_RIGHT_SUPER_PRESSED
			GLFW.GLFW_KEY_MENU -> KEY_MENU_PRESSED
			GLFW.GLFW_MOUSE_BUTTON_1 -> MOUSE_BUTTON_1_PRESSED
			GLFW.GLFW_MOUSE_BUTTON_2 -> MOUSE_BUTTON_2_PRESSED
			GLFW.GLFW_MOUSE_BUTTON_3 -> MOUSE_BUTTON_3_PRESSED
			GLFW.GLFW_MOUSE_BUTTON_4 -> MOUSE_BUTTON_4_PRESSED
			GLFW.GLFW_MOUSE_BUTTON_5 -> MOUSE_BUTTON_5_PRESSED
			GLFW.GLFW_MOUSE_BUTTON_6 -> MOUSE_BUTTON_6_PRESSED
			GLFW.GLFW_MOUSE_BUTTON_7 -> MOUSE_BUTTON_7_PRESSED
			GLFW.GLFW_MOUSE_BUTTON_8 -> MOUSE_BUTTON_8_PRESSED
			else -> false
		}
	}

	/**
	 * Позволяет обратиться к состоянию кнопки по коду
	 *
	 * Возвращает, была ли отжата кнопка [code] на данном игровом кадре;
	 * Т.е. если пользователь имел зажатый пробел и только что его отжал,
	 * то данный метод вернёт true только лишь на этом игровом кадре
	 */
	fun isKeyReleased(code: Int): Boolean {
		return when (code) {
			GLFW.GLFW_KEY_SPACE -> KEY_SPACE_RELEASED
			GLFW.GLFW_KEY_APOSTROPHE -> KEY_APOSTROPHE_RELEASED
			GLFW.GLFW_KEY_COMMA -> KEY_COMMA_RELEASED
			GLFW.GLFW_KEY_MINUS -> KEY_MINUS_RELEASED
			GLFW.GLFW_KEY_PERIOD -> KEY_PERIOD_RELEASED
			GLFW.GLFW_KEY_SLASH -> KEY_SLASH_RELEASED
			GLFW.GLFW_KEY_0 -> KEY_0_RELEASED
			GLFW.GLFW_KEY_1 -> KEY_1_RELEASED
			GLFW.GLFW_KEY_2 -> KEY_2_RELEASED
			GLFW.GLFW_KEY_3 -> KEY_3_RELEASED
			GLFW.GLFW_KEY_4 -> KEY_4_RELEASED
			GLFW.GLFW_KEY_5 -> KEY_5_RELEASED
			GLFW.GLFW_KEY_6 -> KEY_6_RELEASED
			GLFW.GLFW_KEY_7 -> KEY_7_RELEASED
			GLFW.GLFW_KEY_8 -> KEY_8_RELEASED
			GLFW.GLFW_KEY_9 -> KEY_9_RELEASED
			GLFW.GLFW_KEY_SEMICOLON -> KEY_SEMICOLON_RELEASED
			GLFW.GLFW_KEY_EQUAL -> KEY_EQUAL_RELEASED
			GLFW.GLFW_KEY_A -> KEY_A_RELEASED
			GLFW.GLFW_KEY_B -> KEY_B_RELEASED
			GLFW.GLFW_KEY_C -> KEY_C_RELEASED
			GLFW.GLFW_KEY_D -> KEY_D_RELEASED
			GLFW.GLFW_KEY_E -> KEY_E_RELEASED
			GLFW.GLFW_KEY_F -> KEY_F_RELEASED
			GLFW.GLFW_KEY_G -> KEY_G_RELEASED
			GLFW.GLFW_KEY_H -> KEY_H_RELEASED
			GLFW.GLFW_KEY_I -> KEY_I_RELEASED
			GLFW.GLFW_KEY_J -> KEY_J_RELEASED
			GLFW.GLFW_KEY_K -> KEY_K_RELEASED
			GLFW.GLFW_KEY_L -> KEY_L_RELEASED
			GLFW.GLFW_KEY_M -> KEY_M_RELEASED
			GLFW.GLFW_KEY_N -> KEY_N_RELEASED
			GLFW.GLFW_KEY_O -> KEY_O_RELEASED
			GLFW.GLFW_KEY_P -> KEY_P_RELEASED
			GLFW.GLFW_KEY_Q -> KEY_Q_RELEASED
			GLFW.GLFW_KEY_R -> KEY_R_RELEASED
			GLFW.GLFW_KEY_S -> KEY_S_RELEASED
			GLFW.GLFW_KEY_T -> KEY_T_RELEASED
			GLFW.GLFW_KEY_U -> KEY_U_RELEASED
			GLFW.GLFW_KEY_V -> KEY_V_RELEASED
			GLFW.GLFW_KEY_W -> KEY_W_RELEASED
			GLFW.GLFW_KEY_X -> KEY_X_RELEASED
			GLFW.GLFW_KEY_Y -> KEY_Y_RELEASED
			GLFW.GLFW_KEY_Z -> KEY_Z_RELEASED
			GLFW.GLFW_KEY_LEFT_BRACKET -> KEY_LEFT_BRACKET_RELEASED
			GLFW.GLFW_KEY_BACKSLASH -> KEY_BACKSLASH_RELEASED
			GLFW.GLFW_KEY_RIGHT_BRACKET -> KEY_RIGHT_BRACKET_RELEASED
			GLFW.GLFW_KEY_GRAVE_ACCENT -> KEY_GRAVE_ACCENT_RELEASED
			GLFW.GLFW_KEY_WORLD_1 -> KEY_WORLD_1_RELEASED
			GLFW.GLFW_KEY_WORLD_2 -> KEY_WORLD_2_RELEASED
			GLFW.GLFW_KEY_ESCAPE -> KEY_ESCAPE_RELEASED
			GLFW.GLFW_KEY_ENTER -> KEY_ENTER_RELEASED
			GLFW.GLFW_KEY_TAB -> KEY_TAB_RELEASED
			GLFW.GLFW_KEY_BACKSPACE -> KEY_BACKSPACE_RELEASED
			GLFW.GLFW_KEY_INSERT -> KEY_INSERT_RELEASED
			GLFW.GLFW_KEY_DELETE -> KEY_DELETE_RELEASED
			GLFW.GLFW_KEY_RIGHT -> KEY_RIGHT_RELEASED
			GLFW.GLFW_KEY_LEFT -> KEY_LEFT_RELEASED
			GLFW.GLFW_KEY_DOWN -> KEY_DOWN_RELEASED
			GLFW.GLFW_KEY_UP -> KEY_UP_RELEASED
			GLFW.GLFW_KEY_PAGE_UP -> KEY_PAGE_UP_RELEASED
			GLFW.GLFW_KEY_PAGE_DOWN -> KEY_PAGE_DOWN_RELEASED
			GLFW.GLFW_KEY_HOME -> KEY_HOME_RELEASED
			GLFW.GLFW_KEY_END -> KEY_END_RELEASED
			GLFW.GLFW_KEY_CAPS_LOCK -> KEY_CAPS_LOCK_RELEASED
			GLFW.GLFW_KEY_SCROLL_LOCK -> KEY_SCROLL_LOCK_RELEASED
			GLFW.GLFW_KEY_NUM_LOCK -> KEY_NUM_LOCK_RELEASED
			GLFW.GLFW_KEY_PRINT_SCREEN -> KEY_PRINT_SCREEN_RELEASED
			GLFW.GLFW_KEY_PAUSE -> KEY_PAUSE_RELEASED
			GLFW.GLFW_KEY_F1 -> KEY_F1_RELEASED
			GLFW.GLFW_KEY_F2 -> KEY_F2_RELEASED
			GLFW.GLFW_KEY_F3 -> KEY_F3_RELEASED
			GLFW.GLFW_KEY_F4 -> KEY_F4_RELEASED
			GLFW.GLFW_KEY_F5 -> KEY_F5_RELEASED
			GLFW.GLFW_KEY_F6 -> KEY_F6_RELEASED
			GLFW.GLFW_KEY_F7 -> KEY_F7_RELEASED
			GLFW.GLFW_KEY_F8 -> KEY_F8_RELEASED
			GLFW.GLFW_KEY_F9 -> KEY_F9_RELEASED
			GLFW.GLFW_KEY_F10 -> KEY_F10_RELEASED
			GLFW.GLFW_KEY_F11 -> KEY_F11_RELEASED
			GLFW.GLFW_KEY_F12 -> KEY_F12_RELEASED
			GLFW.GLFW_KEY_F13 -> KEY_F13_RELEASED
			GLFW.GLFW_KEY_F14 -> KEY_F14_RELEASED
			GLFW.GLFW_KEY_F15 -> KEY_F15_RELEASED
			GLFW.GLFW_KEY_F16 -> KEY_F16_RELEASED
			GLFW.GLFW_KEY_F17 -> KEY_F17_RELEASED
			GLFW.GLFW_KEY_F18 -> KEY_F18_RELEASED
			GLFW.GLFW_KEY_F19 -> KEY_F19_RELEASED
			GLFW.GLFW_KEY_F20 -> KEY_F20_RELEASED
			GLFW.GLFW_KEY_F21 -> KEY_F21_RELEASED
			GLFW.GLFW_KEY_F22 -> KEY_F22_RELEASED
			GLFW.GLFW_KEY_F23 -> KEY_F23_RELEASED
			GLFW.GLFW_KEY_F24 -> KEY_F24_RELEASED
			GLFW.GLFW_KEY_F25 -> KEY_F25_RELEASED
			GLFW.GLFW_KEY_KP_0 -> KEY_KP_0_RELEASED
			GLFW.GLFW_KEY_KP_1 -> KEY_KP_1_RELEASED
			GLFW.GLFW_KEY_KP_2 -> KEY_KP_2_RELEASED
			GLFW.GLFW_KEY_KP_3 -> KEY_KP_3_RELEASED
			GLFW.GLFW_KEY_KP_4 -> KEY_KP_4_RELEASED
			GLFW.GLFW_KEY_KP_5 -> KEY_KP_5_RELEASED
			GLFW.GLFW_KEY_KP_6 -> KEY_KP_6_RELEASED
			GLFW.GLFW_KEY_KP_7 -> KEY_KP_7_RELEASED
			GLFW.GLFW_KEY_KP_8 -> KEY_KP_8_RELEASED
			GLFW.GLFW_KEY_KP_9 -> KEY_KP_9_RELEASED
			GLFW.GLFW_KEY_KP_DECIMAL -> KEY_KP_DECIMAL_RELEASED
			GLFW.GLFW_KEY_KP_DIVIDE -> KEY_KP_DIVIDE_RELEASED
			GLFW.GLFW_KEY_KP_MULTIPLY -> KEY_KP_MULTIPLY_RELEASED
			GLFW.GLFW_KEY_KP_SUBTRACT -> KEY_KP_SUBTRACT_RELEASED
			GLFW.GLFW_KEY_KP_ADD -> KEY_KP_ADD_RELEASED
			GLFW.GLFW_KEY_KP_ENTER -> KEY_KP_ENTER_RELEASED
			GLFW.GLFW_KEY_KP_EQUAL -> KEY_KP_EQUAL_RELEASED
			GLFW.GLFW_KEY_LEFT_SHIFT -> KEY_LEFT_SHIFT_RELEASED
			GLFW.GLFW_KEY_LEFT_CONTROL -> KEY_LEFT_CONTROL_RELEASED
			GLFW.GLFW_KEY_LEFT_ALT -> KEY_LEFT_ALT_RELEASED
			GLFW.GLFW_KEY_LEFT_SUPER -> KEY_LEFT_SUPER_RELEASED
			GLFW.GLFW_KEY_RIGHT_SHIFT -> KEY_RIGHT_SHIFT_RELEASED
			GLFW.GLFW_KEY_RIGHT_CONTROL -> KEY_RIGHT_CONTROL_RELEASED
			GLFW.GLFW_KEY_RIGHT_ALT -> KEY_RIGHT_ALT_RELEASED
			GLFW.GLFW_KEY_RIGHT_SUPER -> KEY_RIGHT_SUPER_RELEASED
			GLFW.GLFW_KEY_MENU -> KEY_MENU_RELEASED
			GLFW.GLFW_MOUSE_BUTTON_1 -> MOUSE_BUTTON_1_RELEASED
			GLFW.GLFW_MOUSE_BUTTON_2 -> MOUSE_BUTTON_2_RELEASED
			GLFW.GLFW_MOUSE_BUTTON_3 -> MOUSE_BUTTON_3_RELEASED
			GLFW.GLFW_MOUSE_BUTTON_4 -> MOUSE_BUTTON_4_RELEASED
			GLFW.GLFW_MOUSE_BUTTON_5 -> MOUSE_BUTTON_5_RELEASED
			GLFW.GLFW_MOUSE_BUTTON_6 -> MOUSE_BUTTON_6_RELEASED
			GLFW.GLFW_MOUSE_BUTTON_7 -> MOUSE_BUTTON_7_RELEASED
			GLFW.GLFW_MOUSE_BUTTON_8 -> MOUSE_BUTTON_8_RELEASED
			else -> false
		}
	}

	fun keyHeldDurationTime(code: Int): Double {
		return when (code) {
			GLFW.GLFW_KEY_SPACE -> KEY_SPACE_DURATION
			GLFW.GLFW_KEY_APOSTROPHE -> KEY_APOSTROPHE_DURATION
			GLFW.GLFW_KEY_COMMA -> KEY_COMMA_DURATION
			GLFW.GLFW_KEY_MINUS -> KEY_MINUS_DURATION
			GLFW.GLFW_KEY_PERIOD -> KEY_PERIOD_DURATION
			GLFW.GLFW_KEY_SLASH -> KEY_SLASH_DURATION
			GLFW.GLFW_KEY_0 -> KEY_0_DURATION
			GLFW.GLFW_KEY_1 -> KEY_1_DURATION
			GLFW.GLFW_KEY_2 -> KEY_2_DURATION
			GLFW.GLFW_KEY_3 -> KEY_3_DURATION
			GLFW.GLFW_KEY_4 -> KEY_4_DURATION
			GLFW.GLFW_KEY_5 -> KEY_5_DURATION
			GLFW.GLFW_KEY_6 -> KEY_6_DURATION
			GLFW.GLFW_KEY_7 -> KEY_7_DURATION
			GLFW.GLFW_KEY_8 -> KEY_8_DURATION
			GLFW.GLFW_KEY_9 -> KEY_9_DURATION
			GLFW.GLFW_KEY_SEMICOLON -> KEY_SEMICOLON_DURATION
			GLFW.GLFW_KEY_EQUAL -> KEY_EQUAL_DURATION
			GLFW.GLFW_KEY_A -> KEY_A_DURATION
			GLFW.GLFW_KEY_B -> KEY_B_DURATION
			GLFW.GLFW_KEY_C -> KEY_C_DURATION
			GLFW.GLFW_KEY_D -> KEY_D_DURATION
			GLFW.GLFW_KEY_E -> KEY_E_DURATION
			GLFW.GLFW_KEY_F -> KEY_F_DURATION
			GLFW.GLFW_KEY_G -> KEY_G_DURATION
			GLFW.GLFW_KEY_H -> KEY_H_DURATION
			GLFW.GLFW_KEY_I -> KEY_I_DURATION
			GLFW.GLFW_KEY_J -> KEY_J_DURATION
			GLFW.GLFW_KEY_K -> KEY_K_DURATION
			GLFW.GLFW_KEY_L -> KEY_L_DURATION
			GLFW.GLFW_KEY_M -> KEY_M_DURATION
			GLFW.GLFW_KEY_N -> KEY_N_DURATION
			GLFW.GLFW_KEY_O -> KEY_O_DURATION
			GLFW.GLFW_KEY_P -> KEY_P_DURATION
			GLFW.GLFW_KEY_Q -> KEY_Q_DURATION
			GLFW.GLFW_KEY_R -> KEY_R_DURATION
			GLFW.GLFW_KEY_S -> KEY_S_DURATION
			GLFW.GLFW_KEY_T -> KEY_T_DURATION
			GLFW.GLFW_KEY_U -> KEY_U_DURATION
			GLFW.GLFW_KEY_V -> KEY_V_DURATION
			GLFW.GLFW_KEY_W -> KEY_W_DURATION
			GLFW.GLFW_KEY_X -> KEY_X_DURATION
			GLFW.GLFW_KEY_Y -> KEY_Y_DURATION
			GLFW.GLFW_KEY_Z -> KEY_Z_DURATION
			GLFW.GLFW_KEY_LEFT_BRACKET -> KEY_LEFT_BRACKET_DURATION
			GLFW.GLFW_KEY_BACKSLASH -> KEY_BACKSLASH_DURATION
			GLFW.GLFW_KEY_RIGHT_BRACKET -> KEY_RIGHT_BRACKET_DURATION
			GLFW.GLFW_KEY_GRAVE_ACCENT -> KEY_GRAVE_ACCENT_DURATION
			GLFW.GLFW_KEY_WORLD_1 -> KEY_WORLD_1_DURATION
			GLFW.GLFW_KEY_WORLD_2 -> KEY_WORLD_2_DURATION
			GLFW.GLFW_KEY_ESCAPE -> KEY_ESCAPE_DURATION
			GLFW.GLFW_KEY_ENTER -> KEY_ENTER_DURATION
			GLFW.GLFW_KEY_TAB -> KEY_TAB_DURATION
			GLFW.GLFW_KEY_BACKSPACE -> KEY_BACKSPACE_DURATION
			GLFW.GLFW_KEY_INSERT -> KEY_INSERT_DURATION
			GLFW.GLFW_KEY_DELETE -> KEY_DELETE_DURATION
			GLFW.GLFW_KEY_RIGHT -> KEY_RIGHT_DURATION
			GLFW.GLFW_KEY_LEFT -> KEY_LEFT_DURATION
			GLFW.GLFW_KEY_DOWN -> KEY_DOWN_DURATION
			GLFW.GLFW_KEY_UP -> KEY_UP_DURATION
			GLFW.GLFW_KEY_PAGE_UP -> KEY_PAGE_UP_DURATION
			GLFW.GLFW_KEY_PAGE_DOWN -> KEY_PAGE_DOWN_DURATION
			GLFW.GLFW_KEY_HOME -> KEY_HOME_DURATION
			GLFW.GLFW_KEY_END -> KEY_END_DURATION
			GLFW.GLFW_KEY_CAPS_LOCK -> KEY_CAPS_LOCK_DURATION
			GLFW.GLFW_KEY_SCROLL_LOCK -> KEY_SCROLL_LOCK_DURATION
			GLFW.GLFW_KEY_NUM_LOCK -> KEY_NUM_LOCK_DURATION
			GLFW.GLFW_KEY_PRINT_SCREEN -> KEY_PRINT_SCREEN_DURATION
			GLFW.GLFW_KEY_PAUSE -> KEY_PAUSE_DURATION
			GLFW.GLFW_KEY_F1 -> KEY_F1_DURATION
			GLFW.GLFW_KEY_F2 -> KEY_F2_DURATION
			GLFW.GLFW_KEY_F3 -> KEY_F3_DURATION
			GLFW.GLFW_KEY_F4 -> KEY_F4_DURATION
			GLFW.GLFW_KEY_F5 -> KEY_F5_DURATION
			GLFW.GLFW_KEY_F6 -> KEY_F6_DURATION
			GLFW.GLFW_KEY_F7 -> KEY_F7_DURATION
			GLFW.GLFW_KEY_F8 -> KEY_F8_DURATION
			GLFW.GLFW_KEY_F9 -> KEY_F9_DURATION
			GLFW.GLFW_KEY_F10 -> KEY_F10_DURATION
			GLFW.GLFW_KEY_F11 -> KEY_F11_DURATION
			GLFW.GLFW_KEY_F12 -> KEY_F12_DURATION
			GLFW.GLFW_KEY_F13 -> KEY_F13_DURATION
			GLFW.GLFW_KEY_F14 -> KEY_F14_DURATION
			GLFW.GLFW_KEY_F15 -> KEY_F15_DURATION
			GLFW.GLFW_KEY_F16 -> KEY_F16_DURATION
			GLFW.GLFW_KEY_F17 -> KEY_F17_DURATION
			GLFW.GLFW_KEY_F18 -> KEY_F18_DURATION
			GLFW.GLFW_KEY_F19 -> KEY_F19_DURATION
			GLFW.GLFW_KEY_F20 -> KEY_F20_DURATION
			GLFW.GLFW_KEY_F21 -> KEY_F21_DURATION
			GLFW.GLFW_KEY_F22 -> KEY_F22_DURATION
			GLFW.GLFW_KEY_F23 -> KEY_F23_DURATION
			GLFW.GLFW_KEY_F24 -> KEY_F24_DURATION
			GLFW.GLFW_KEY_F25 -> KEY_F25_DURATION
			GLFW.GLFW_KEY_KP_0 -> KEY_KP_0_DURATION
			GLFW.GLFW_KEY_KP_1 -> KEY_KP_1_DURATION
			GLFW.GLFW_KEY_KP_2 -> KEY_KP_2_DURATION
			GLFW.GLFW_KEY_KP_3 -> KEY_KP_3_DURATION
			GLFW.GLFW_KEY_KP_4 -> KEY_KP_4_DURATION
			GLFW.GLFW_KEY_KP_5 -> KEY_KP_5_DURATION
			GLFW.GLFW_KEY_KP_6 -> KEY_KP_6_DURATION
			GLFW.GLFW_KEY_KP_7 -> KEY_KP_7_DURATION
			GLFW.GLFW_KEY_KP_8 -> KEY_KP_8_DURATION
			GLFW.GLFW_KEY_KP_9 -> KEY_KP_9_DURATION
			GLFW.GLFW_KEY_KP_DECIMAL -> KEY_KP_DECIMAL_DURATION
			GLFW.GLFW_KEY_KP_DIVIDE -> KEY_KP_DIVIDE_DURATION
			GLFW.GLFW_KEY_KP_MULTIPLY -> KEY_KP_MULTIPLY_DURATION
			GLFW.GLFW_KEY_KP_SUBTRACT -> KEY_KP_SUBTRACT_DURATION
			GLFW.GLFW_KEY_KP_ADD -> KEY_KP_ADD_DURATION
			GLFW.GLFW_KEY_KP_ENTER -> KEY_KP_ENTER_DURATION
			GLFW.GLFW_KEY_KP_EQUAL -> KEY_KP_EQUAL_DURATION
			GLFW.GLFW_KEY_LEFT_SHIFT -> KEY_LEFT_SHIFT_DURATION
			GLFW.GLFW_KEY_LEFT_CONTROL -> KEY_LEFT_CONTROL_DURATION
			GLFW.GLFW_KEY_LEFT_ALT -> KEY_LEFT_ALT_DURATION
			GLFW.GLFW_KEY_LEFT_SUPER -> KEY_LEFT_SUPER_DURATION
			GLFW.GLFW_KEY_RIGHT_SHIFT -> KEY_RIGHT_SHIFT_DURATION
			GLFW.GLFW_KEY_RIGHT_CONTROL -> KEY_RIGHT_CONTROL_DURATION
			GLFW.GLFW_KEY_RIGHT_ALT -> KEY_RIGHT_ALT_DURATION
			GLFW.GLFW_KEY_RIGHT_SUPER -> KEY_RIGHT_SUPER_DURATION
			GLFW.GLFW_KEY_MENU -> KEY_MENU_DURATION
			GLFW.GLFW_MOUSE_BUTTON_1 -> MOUSE_BUTTON_1_DURATION
			GLFW.GLFW_MOUSE_BUTTON_2 -> MOUSE_BUTTON_2_DURATION
			GLFW.GLFW_MOUSE_BUTTON_3 -> MOUSE_BUTTON_3_DURATION
			GLFW.GLFW_MOUSE_BUTTON_4 -> MOUSE_BUTTON_4_DURATION
			GLFW.GLFW_MOUSE_BUTTON_5 -> MOUSE_BUTTON_5_DURATION
			GLFW.GLFW_MOUSE_BUTTON_6 -> MOUSE_BUTTON_6_DURATION
			GLFW.GLFW_MOUSE_BUTTON_7 -> MOUSE_BUTTON_7_DURATION
			GLFW.GLFW_MOUSE_BUTTON_8 -> MOUSE_BUTTON_8_DURATION
			else -> 0.0
		}
	}
}