diff --git a/Hazel/src/Hazel/Core/KeyCodes.h b/Hazel/src/Hazel/Core/KeyCodes.h index 9c812f3..95d29df 100644 --- a/Hazel/src/Hazel/Core/KeyCodes.h +++ b/Hazel/src/Hazel/Core/KeyCodes.h @@ -10,9 +10,9 @@ namespace Hazel { - using KeyCode = SDL_Scancode; + // using KeyCode = SDL_Scancode; - typedef enum MouseButton + typedef enum class MouseButton { BUTTON_LEFT = SDL_BUTTON_LEFT, BUTTON_MIDDLE = SDL_BUTTON_MIDDLE, @@ -22,6 +22,295 @@ namespace Hazel }MouseButton; //TODO: use self keycode, not use sdl directly + + typedef enum class KeyCode + { + A = 4, + B = 5, + C = 6, + D = 7, + E = 8, + F = 9, + G = 10, + H = 11, + I = 12, + J = 13, + K = 14, + L = 15, + M = 16, + N = 17, + O = 18, + P = 19, + Q = 20, + R = 21, + S = 22, + T = 23, + U = 24, + V = 25, + W = 26, + X = 27, + Y = 28, + Z = 29, + + NUM1 = 30, + NUM2 = 31, + NUM3 = 32, + NUM4 = 33, + NUM5 = 34, + NUM6 = 35, + NUM7 = 36, + NUM8 = 37, + NUM9 = 38, + NUM0 = 39, + + RETURN = 40, + ESCAPE = 41, + BACKSPACE = 42, + TAB = 43, + SPACE = 44, + + MINUS = 45, + EQUALS = 46, + LEFTBRACKET = 47, + RIGHTBRACKET = 48, + BACKSLASH = 49, + + NONUSHASH = 50, + + SEMICOLON = 51, + APOSTROPHE = 52, + GRAVE = 53, + + + COMMA = 54, + PERIOD = 55, + SLASH = 56, + + CAPSLOCK = 57, + + F1 = 58, + F2 = 59, + F3 = 60, + F4 = 61, + F5 = 62, + F6 = 63, + F7 = 64, + F8 = 65, + F9 = 66, + F10 = 67, + F11 = 68, + F12 = 69, + + PRINTSCREEN = 70, + SCROLLLOCK = 71, + PAUSE = 72, + INSERT = 73, + + HOME = 74, + PAGEUP = 75, + DELETE = 76, + END = 77, + PAGEDOWN = 78, + RIGHT = 79, + LEFT = 80, + DOWN = 81, + UP = 82, + + NUMLOCKCLEAR = 83, + + KP_DIVIDE = 84, + KP_MULTIPLY = 85, + KP_MINUS = 86, + KP_PLUS = 87, + KP_ENTER = 88, + KP_1 = 89, + KP_2 = 90, + KP_3 = 91, + KP_4 = 92, + KP_5 = 93, + KP_6 = 94, + KP_7 = 95, + KP_8 = 96, + KP_9 = 97, + KP_0 = 98, + KP_PERIOD = 99, + + NONUSBACKSLASH = 100, + + + APPLICATION = 101, + POWER = 102, + + KP_EQUALS = 103, + F13 = 104, + F14 = 105, + F15 = 106, + F16 = 107, + F17 = 108, + F18 = 109, + F19 = 110, + F20 = 111, + F21 = 112, + F22 = 113, + F23 = 114, + F24 = 115, + EXECUTE = 116, + HELP = 117, + MENU = 118, + SELECT = 119, + STOP = 120, + AGAIN = 121, + UNDO = 122, + CUT = 123, + COPY = 124, + PASTE = 125, + FIND = 126, + MUTE = 127, + VOLUMEUP = 128, + VOLUMEDOWN = 129, + DE_LOCKINGCAPSLOCK = 130, + DE_LOCKINGNUMLOCK = 131, + DE_LOCKINGSCROLLLOCK = 132, + KP_COMMA = 133, + KP_EQUALSAS400 = 134, + + INTERNATIONAL1 = 135, + + INTERNATIONAL2 = 136, + INTERNATIONAL3 = 137, + INTERNATIONAL4 = 138, + INTERNATIONAL5 = 139, + INTERNATIONAL6 = 140, + INTERNATIONAL7 = 141, + INTERNATIONAL8 = 142, + INTERNATIONAL9 = 143, + LANG1 = 144, + LANG2 = 145, + LANG3 = 146, + LANG4 = 147, + LANG5 = 148, + LANG6 = 149, + LANG7 = 150, + LANG8 = 151, + LANG9 = 152, + + ALTERASE = 153, + SYSREQ = 154, + CANCEL = 155, + CLEAR = 156, + PRIOR = 157, + RETURN2 = 158, + SEPARATOR = 159, + OUT = 160, + OPER = 161, + CLEARAGAIN = 162, + CRSEL = 163, + EXSEL = 164, + + KP_00 = 176, + KP_000 = 177, + THOUSANDSSEPARATOR = 178, + DECIMALSEPARATOR = 179, + CURRENCYUNIT = 180, + CURRENCYSUBUNIT = 181, + KP_LEFTPAREN = 182, + KP_RIGHTPAREN = 183, + KP_LEFTBRACE = 184, + KP_RIGHTBRACE = 185, + KP_TAB = 186, + KP_BACKSPACE = 187, + KP_A = 188, + KP_B = 189, + KP_C = 190, + KP_D = 191, + KP_E = 192, + KP_F = 193, + KP_XOR = 194, + KP_POWER = 195, + KP_PERCENT = 196, + KP_LESS = 197, + KP_GREATER = 198, + KP_AMPERSAND = 199, + KP_DBLAMPERSAND = 200, + KP_VERTICALBAR = 201, + KP_DBLVERTICALBAR = 202, + KP_COLON = 203, + KP_HASH = 204, + KP_SPACE = 205, + KP_AT = 206, + KP_EXCLAM = 207, + KP_MEMSTORE = 208, + KP_MEMRECALL = 209, + KP_MEMCLEAR = 210, + KP_MEMADD = 211, + KP_MEMSUBTRACT = 212, + KP_MEMMULTIPLY = 213, + KP_MEMDIVIDE = 214, + KP_PLUSMINUS = 215, + KP_CLEAR = 216, + KP_CLEARENTRY = 217, + KP_BINARY = 218, + KP_OCTAL = 219, + KP_DECIMAL = 220, + KP_HEXADECIMAL = 221, + + LCTRL = 224, + LSHIFT = 225, + LALT = 226, + LGUI = 227, + RCTRL = 228, + RSHIFT = 229, + RALT = 230, + RGUI = 231, + + MODE = 257, + + SLEEP = 258, + WAKE = 259, + + CHANNEL_INCREMENT = 260, + CHANNEL_DECREMENT = 261, + + MEDIA_PLAY = 262, + MEDIA_PAUSE = 263, + MEDIA_RECORD = 264, + MEDIA_FAST_FORWARD = 265, + MEDIA_REWIND = 266, + MEDIA_NEXT_TRACK = 267, + MEDIA_PREVIOUS_TRACK = 268, + MEDIA_STOP = 269, + MEDIA_EJECT = 270, + MEDIA_PLAY_PAUSE = 271, + MEDIA_SELECT = 272, + + AC_NEW = 273, + AC_OPEN = 274, + AC_CLOSE = 275, + AC_EXIT = 276, + AC_SAVE = 277, + AC_PRINT = 278, + AC_PROPERTIES = 279, + + AC_SEARCH = 280, + AC_HOME = 281, + AC_BACK = 282, + AC_FORWARD = 283, + AC_STOP = 284, + AC_REFRESH = 285, + AC_BOOKMARKS = 286, + + SOFTLEFT = 287, + + SOFTRIGHT = 288, + + CALL = 289, + ENDCALL = 290, + + RESERVED = 400, /**< 400-500 reserved for dynamic keycodes */ + + COUNT = 512 /**< not a key, just marks the number of scancodes for array bounds */ + }KeyCode; + } diff --git a/Hazel/src/Hazel/Renderer/EditorCamera.cpp b/Hazel/src/Hazel/Renderer/EditorCamera.cpp index b6e92ad..5cde7c0 100644 --- a/Hazel/src/Hazel/Renderer/EditorCamera.cpp +++ b/Hazel/src/Hazel/Renderer/EditorCamera.cpp @@ -64,17 +64,17 @@ namespace Hazel void EditorCamera::OnUpdate(TimeStep ts) { - if (Input::IsKeyPressed(SDL_SCANCODE_LALT)) + if (Input::IsKeyPressed(KeyCode::LALT)) { const glm::vec2& mouse{ Input::GetMouseX(), Input::GetMouseY() }; const glm::vec2 delta = (mouse - m_InitialMousePosition) * 0.003f; m_InitialMousePosition = mouse; - if (Input::IsMouseButtonPressed(BUTTON_MIDDLE)) + if (Input::IsMouseButtonPressed(MouseButton::BUTTON_MIDDLE)) MousePan(delta); - else if (Input::IsMouseButtonPressed(BUTTON_LEFT)) + else if (Input::IsMouseButtonPressed(MouseButton::BUTTON_LEFT)) MouseRotate(delta); - else if (Input::IsMouseButtonPressed(BUTTON_RIGHT)) + else if (Input::IsMouseButtonPressed(MouseButton::BUTTON_RIGHT)) MouseZoom(-delta.y); } diff --git a/Hazel/src/Platform/Windows/WindowInput.cpp b/Hazel/src/Platform/Windows/WindowInput.cpp index 9b4bfcf..c6cfc96 100644 --- a/Hazel/src/Platform/Windows/WindowInput.cpp +++ b/Hazel/src/Platform/Windows/WindowInput.cpp @@ -12,13 +12,13 @@ namespace Hazel { const auto state = SDL_GetKeyboardState(nullptr); - return state[key]; + return state[(SDL_Scancode)key]; } bool Input::IsMouseButtonPressed(const MouseButton button) { const auto mod = SDL_GetMouseState(nullptr, nullptr); - return mod & SDL_BUTTON_MASK(button); + return mod & SDL_BUTTON_MASK((SDL_Scancode)button); } std::pair Input::GetMousePosition()