#include <Satoshi/stpch.hpp>
#include "GLFWInputMapper.hpp"

#include <GLFW/glfw3.h>

std::unordered_map<uint16_t, uint16_t> Satoshi::GLFWInputMapper::s_Codes =
{
	{ ST_MOUSEBUTTON_LEFT, GLFW_MOUSE_BUTTON_1 },
	{ ST_MOUSEBUTTON_MIDDLE, GLFW_MOUSE_BUTTON_3 },
	{ ST_MOUSEBUTTON_RIGHT, GLFW_MOUSE_BUTTON_2 },
	{ ST_MOUSEBUTTON_VUP, GLFW_MOUSE_BUTTON_5 },
	{ ST_MOUSEBUTTON_VDOWN, GLFW_MOUSE_BUTTON_4 },

	{ ST_KEY_ESCAPE, GLFW_KEY_ESCAPE },
	{ ST_KEY_SPACE, GLFW_KEY_SPACE },
	{ ST_KEY_ENTER, GLFW_KEY_ENTER },
	{ ST_KEY_CAPSLOCK, GLFW_KEY_CAPS_LOCK },
	{ ST_KEY_BACKSPACE, GLFW_KEY_BACKSPACE },
	{ ST_KEY_TAB, GLFW_KEY_TAB },

	{ ST_KEY_A, GLFW_KEY_A },
	{ ST_KEY_B, GLFW_KEY_B },
	{ ST_KEY_C, GLFW_KEY_C },
	{ ST_KEY_D, GLFW_KEY_D },
	{ ST_KEY_E, GLFW_KEY_E },
	{ ST_KEY_F, GLFW_KEY_F },
	{ ST_KEY_G, GLFW_KEY_G },
	{ ST_KEY_H, GLFW_KEY_H },
	{ ST_KEY_I, GLFW_KEY_I },
	{ ST_KEY_J, GLFW_KEY_J },
	{ ST_KEY_K, GLFW_KEY_K },
	{ ST_KEY_L, GLFW_KEY_L },
	{ ST_KEY_M, GLFW_KEY_M },
	{ ST_KEY_N, GLFW_KEY_N },
	{ ST_KEY_O, GLFW_KEY_O },
	{ ST_KEY_P, GLFW_KEY_P },
	{ ST_KEY_Q, GLFW_KEY_Q },
	{ ST_KEY_R, GLFW_KEY_R },
	{ ST_KEY_S, GLFW_KEY_S },
	{ ST_KEY_T, GLFW_KEY_T },
	{ ST_KEY_U, GLFW_KEY_U },
	{ ST_KEY_V, GLFW_KEY_V },
	{ ST_KEY_W, GLFW_KEY_W },
	{ ST_KEY_X, GLFW_KEY_X },
	{ ST_KEY_Y, GLFW_KEY_Y },
	{ ST_KEY_Z, GLFW_KEY_Z },

	{ ST_KEY_PLUS, GLFW_KEY_EQUAL },
	{ ST_KEY_COMMA, GLFW_KEY_COMMA },
	{ ST_KEY_MINUS, GLFW_KEY_MINUS },
	{ ST_KEY_PERIOD, GLFW_KEY_PERIOD },

	{ ST_KEY_US_SEMICOLON, GLFW_KEY_SEMICOLON },
	{ ST_KEY_US_QUESTION, GLFW_KEY_SLASH },
	{ ST_KEY_US_TILDE, GLFW_KEY_GRAVE_ACCENT },
	{ ST_KEY_US_LBRACKET, GLFW_KEY_LEFT_BRACKET },
	{ ST_KEY_US_BACKSLASH, GLFW_KEY_BACKSLASH },
	{ ST_KEY_US_RBRACKET, GLFW_KEY_RIGHT_BRACKET },
	{ ST_KEY_US_QUOTE, GLFW_KEY_APOSTROPHE },
	{ ST_KEY_US_SLASH, GLFW_KEY_WORLD_1 },
	{ ST_KEY_US_ALTBACKSLASH, GLFW_KEY_WORLD_2 },

	{ ST_KEY_0, GLFW_KEY_0 },
	{ ST_KEY_1, GLFW_KEY_1 },
	{ ST_KEY_2, GLFW_KEY_2 },
	{ ST_KEY_3, GLFW_KEY_3 },
	{ ST_KEY_4, GLFW_KEY_4 },
	{ ST_KEY_5, GLFW_KEY_5 },
	{ ST_KEY_6, GLFW_KEY_6 },
	{ ST_KEY_7, GLFW_KEY_7 },
	{ ST_KEY_8, GLFW_KEY_8 },
	{ ST_KEY_9, GLFW_KEY_9 },

	{ ST_KEY_NUMPAD_0, GLFW_KEY_KP_0 },
	{ ST_KEY_NUMPAD_1, GLFW_KEY_KP_1 },
	{ ST_KEY_NUMPAD_2, GLFW_KEY_KP_2 },
	{ ST_KEY_NUMPAD_3, GLFW_KEY_KP_3 },
	{ ST_KEY_NUMPAD_4, GLFW_KEY_KP_4 },
	{ ST_KEY_NUMPAD_5, GLFW_KEY_KP_5 },
	{ ST_KEY_NUMPAD_6, GLFW_KEY_KP_6 },
	{ ST_KEY_NUMPAD_7, GLFW_KEY_KP_7 },
	{ ST_KEY_NUMPAD_8, GLFW_KEY_KP_8 },
	{ ST_KEY_NUMPAD_9, GLFW_KEY_KP_9 },

	{ ST_KEY_DIVIDE, GLFW_KEY_KP_DIVIDE },
	{ ST_KEY_MULTIPLY, GLFW_KEY_KP_MULTIPLY },
	{ ST_KEY_SUBTRACT, GLFW_KEY_KP_SUBTRACT },
	{ ST_KEY_ADD, GLFW_KEY_KP_ADD },
	{ ST_KEY_DECIMAL, GLFW_KEY_KP_DECIMAL },
	{ ST_KEY_CLEAR, GLFW_KEY_DELETE },

	{ ST_KEY_ARROW_RIGHT, GLFW_KEY_RIGHT },
	{ ST_KEY_ARROW_UP, GLFW_KEY_UP },
	{ ST_KEY_ARROW_LEFT, GLFW_KEY_LEFT },
	{ ST_KEY_ARROW_DOWN, GLFW_KEY_DOWN },

	{ ST_KEY_INSERT, GLFW_KEY_INSERT },
	{ ST_KEY_DELETE, GLFW_KEY_DELETE },
	{ ST_KEY_HOME, GLFW_KEY_HOME },
	{ ST_KEY_END, GLFW_KEY_END },
	{ ST_KEY_PAGE_UP, GLFW_KEY_PAGE_UP },
	{ ST_KEY_PAGE_DOWN, GLFW_KEY_PAGE_DOWN },

	{ ST_KEY_F1, GLFW_KEY_F1, },
	{ ST_KEY_F2, GLFW_KEY_F2, },
	{ ST_KEY_F3, GLFW_KEY_F3, },
	{ ST_KEY_F4, GLFW_KEY_F4, },
	{ ST_KEY_F5, GLFW_KEY_F5, },
	{ ST_KEY_F6, GLFW_KEY_F6, },
	{ ST_KEY_F7, GLFW_KEY_F7, },
	{ ST_KEY_F8, GLFW_KEY_F8, },
	{ ST_KEY_F9, GLFW_KEY_F9, },
	{ ST_KEY_F10, GLFW_KEY_F10, },
	{ ST_KEY_F11, GLFW_KEY_F11, },
	{ ST_KEY_F12, GLFW_KEY_F12, },
	{ ST_KEY_F13, GLFW_KEY_F13, },
	{ ST_KEY_F14, GLFW_KEY_F14, },
	{ ST_KEY_F15, GLFW_KEY_F15, },
	{ ST_KEY_F16, GLFW_KEY_F16, },
	{ ST_KEY_F17, GLFW_KEY_F17, },
	{ ST_KEY_F18, GLFW_KEY_F18, },
	{ ST_KEY_F19, GLFW_KEY_F19, },
	{ ST_KEY_F20, GLFW_KEY_F20, },
	{ ST_KEY_F21, GLFW_KEY_F21, },
	{ ST_KEY_F22, GLFW_KEY_F22, },
	{ ST_KEY_F23, GLFW_KEY_F23, },
	{ ST_KEY_F24, GLFW_KEY_F24, },

	{ ST_KEY_LSHIFT, GLFW_KEY_LEFT_SHIFT },
	{ ST_KEY_LCTRL, GLFW_KEY_LEFT_CONTROL },
	{ ST_KEY_LALT, GLFW_KEY_LEFT_ALT },
	{ ST_KEY_RSHIFT, GLFW_KEY_RIGHT_SHIFT },
	{ ST_KEY_RCTRL, GLFW_KEY_RIGHT_CONTROL },
	{ ST_KEY_RALT, GLFW_KEY_RIGHT_ALT }

};
#include <Satoshi/stpch.hpp>
#include "GLFWInputMapper.hpp"

#include <GLFW/glfw3.h>

std::unordered_map<uint16_t, uint16_t> Satoshi::GLFWInputMapper::s_Codes =
{
	{ ST_MOUSEBUTTON_LEFT, GLFW_MOUSE_BUTTON_1 },
	{ ST_MOUSEBUTTON_MIDDLE, GLFW_MOUSE_BUTTON_3 },
	{ ST_MOUSEBUTTON_RIGHT, GLFW_MOUSE_BUTTON_2 },
	{ ST_MOUSEBUTTON_VUP, GLFW_MOUSE_BUTTON_5 },
	{ ST_MOUSEBUTTON_VDOWN, GLFW_MOUSE_BUTTON_4 },

	{ ST_KEY_ESCAPE, GLFW_KEY_ESCAPE },
	{ ST_KEY_SPACE, GLFW_KEY_SPACE },
	{ ST_KEY_ENTER, GLFW_KEY_ENTER },
	{ ST_KEY_CAPSLOCK, GLFW_KEY_CAPS_LOCK },
	{ ST_KEY_BACKSPACE, GLFW_KEY_BACKSPACE },
	{ ST_KEY_TAB, GLFW_KEY_TAB },

	{ ST_KEY_A, GLFW_KEY_A },
	{ ST_KEY_B, GLFW_KEY_B },
	{ ST_KEY_C, GLFW_KEY_C },
	{ ST_KEY_D, GLFW_KEY_D },
	{ ST_KEY_E, GLFW_KEY_E },
	{ ST_KEY_F, GLFW_KEY_F },
	{ ST_KEY_G, GLFW_KEY_G },
	{ ST_KEY_H, GLFW_KEY_H },
	{ ST_KEY_I, GLFW_KEY_I },
	{ ST_KEY_J, GLFW_KEY_J },
	{ ST_KEY_K, GLFW_KEY_K },
	{ ST_KEY_L, GLFW_KEY_L },
	{ ST_KEY_M, GLFW_KEY_M },
	{ ST_KEY_N, GLFW_KEY_N },
	{ ST_KEY_O, GLFW_KEY_O },
	{ ST_KEY_P, GLFW_KEY_P },
	{ ST_KEY_Q, GLFW_KEY_Q },
	{ ST_KEY_R, GLFW_KEY_R },
	{ ST_KEY_S, GLFW_KEY_S },
	{ ST_KEY_T, GLFW_KEY_T },
	{ ST_KEY_U, GLFW_KEY_U },
	{ ST_KEY_V, GLFW_KEY_V },
	{ ST_KEY_W, GLFW_KEY_W },
	{ ST_KEY_X, GLFW_KEY_X },
	{ ST_KEY_Y, GLFW_KEY_Y },
	{ ST_KEY_Z, GLFW_KEY_Z },

	{ ST_KEY_PLUS, GLFW_KEY_EQUAL },
	{ ST_KEY_COMMA, GLFW_KEY_COMMA },
	{ ST_KEY_MINUS, GLFW_KEY_MINUS },
	{ ST_KEY_PERIOD, GLFW_KEY_PERIOD },

	{ ST_KEY_US_SEMICOLON, GLFW_KEY_SEMICOLON },
	{ ST_KEY_US_QUESTION, GLFW_KEY_SLASH },
	{ ST_KEY_US_TILDE, GLFW_KEY_GRAVE_ACCENT },
	{ ST_KEY_US_LBRACKET, GLFW_KEY_LEFT_BRACKET },
	{ ST_KEY_US_BACKSLASH, GLFW_KEY_BACKSLASH },
	{ ST_KEY_US_RBRACKET, GLFW_KEY_RIGHT_BRACKET },
	{ ST_KEY_US_QUOTE, GLFW_KEY_APOSTROPHE },
	{ ST_KEY_US_SLASH, GLFW_KEY_WORLD_1 },
	{ ST_KEY_US_ALTBACKSLASH, GLFW_KEY_WORLD_2 },

	{ ST_KEY_0, GLFW_KEY_0 },
	{ ST_KEY_1, GLFW_KEY_1 },
	{ ST_KEY_2, GLFW_KEY_2 },
	{ ST_KEY_3, GLFW_KEY_3 },
	{ ST_KEY_4, GLFW_KEY_4 },
	{ ST_KEY_5, GLFW_KEY_5 },
	{ ST_KEY_6, GLFW_KEY_6 },
	{ ST_KEY_7, GLFW_KEY_7 },
	{ ST_KEY_8, GLFW_KEY_8 },
	{ ST_KEY_9, GLFW_KEY_9 },

	{ ST_KEY_NUMPAD_0, GLFW_KEY_KP_0 },
	{ ST_KEY_NUMPAD_1, GLFW_KEY_KP_1 },
	{ ST_KEY_NUMPAD_2, GLFW_KEY_KP_2 },
	{ ST_KEY_NUMPAD_3, GLFW_KEY_KP_3 },
	{ ST_KEY_NUMPAD_4, GLFW_KEY_KP_4 },
	{ ST_KEY_NUMPAD_5, GLFW_KEY_KP_5 },
	{ ST_KEY_NUMPAD_6, GLFW_KEY_KP_6 },
	{ ST_KEY_NUMPAD_7, GLFW_KEY_KP_7 },
	{ ST_KEY_NUMPAD_8, GLFW_KEY_KP_8 },
	{ ST_KEY_NUMPAD_9, GLFW_KEY_KP_9 },

	{ ST_KEY_DIVIDE, GLFW_KEY_KP_DIVIDE },
	{ ST_KEY_MULTIPLY, GLFW_KEY_KP_MULTIPLY },
	{ ST_KEY_SUBTRACT, GLFW_KEY_KP_SUBTRACT },
	{ ST_KEY_ADD, GLFW_KEY_KP_ADD },
	{ ST_KEY_DECIMAL, GLFW_KEY_KP_DECIMAL },
	{ ST_KEY_CLEAR, GLFW_KEY_DELETE },

	{ ST_KEY_ARROW_RIGHT, GLFW_KEY_RIGHT },
	{ ST_KEY_ARROW_UP, GLFW_KEY_UP },
	{ ST_KEY_ARROW_LEFT, GLFW_KEY_LEFT },
	{ ST_KEY_ARROW_DOWN, GLFW_KEY_DOWN },

	{ ST_KEY_INSERT, GLFW_KEY_INSERT },
	{ ST_KEY_DELETE, GLFW_KEY_DELETE },
	{ ST_KEY_HOME, GLFW_KEY_HOME },
	{ ST_KEY_END, GLFW_KEY_END },
	{ ST_KEY_PAGE_UP, GLFW_KEY_PAGE_UP },
	{ ST_KEY_PAGE_DOWN, GLFW_KEY_PAGE_DOWN },

	{ ST_KEY_F1, GLFW_KEY_F1, },
	{ ST_KEY_F2, GLFW_KEY_F2, },
	{ ST_KEY_F3, GLFW_KEY_F3, },
	{ ST_KEY_F4, GLFW_KEY_F4, },
	{ ST_KEY_F5, GLFW_KEY_F5, },
	{ ST_KEY_F6, GLFW_KEY_F6, },
	{ ST_KEY_F7, GLFW_KEY_F7, },
	{ ST_KEY_F8, GLFW_KEY_F8, },
	{ ST_KEY_F9, GLFW_KEY_F9, },
	{ ST_KEY_F10, GLFW_KEY_F10, },
	{ ST_KEY_F11, GLFW_KEY_F11, },
	{ ST_KEY_F12, GLFW_KEY_F12, },
	{ ST_KEY_F13, GLFW_KEY_F13, },
	{ ST_KEY_F14, GLFW_KEY_F14, },
	{ ST_KEY_F15, GLFW_KEY_F15, },
	{ ST_KEY_F16, GLFW_KEY_F16, },
	{ ST_KEY_F17, GLFW_KEY_F17, },
	{ ST_KEY_F18, GLFW_KEY_F18, },
	{ ST_KEY_F19, GLFW_KEY_F19, },
	{ ST_KEY_F20, GLFW_KEY_F20, },
	{ ST_KEY_F21, GLFW_KEY_F21, },
	{ ST_KEY_F22, GLFW_KEY_F22, },
	{ ST_KEY_F23, GLFW_KEY_F23, },
	{ ST_KEY_F24, GLFW_KEY_F24, },

	{ ST_KEY_LSHIFT, GLFW_KEY_LEFT_SHIFT },
	{ ST_KEY_LCTRL, GLFW_KEY_LEFT_CONTROL },
	{ ST_KEY_LALT, GLFW_KEY_LEFT_ALT },
	{ ST_KEY_RSHIFT, GLFW_KEY_RIGHT_SHIFT },
	{ ST_KEY_RCTRL, GLFW_KEY_RIGHT_CONTROL },
	{ ST_KEY_RALT, GLFW_KEY_RIGHT_ALT }

};


