diff options
Diffstat (limited to 'src/platform/gui/sdl/Input.cpp')
| -rw-r--r-- | src/platform/gui/sdl/Input.cpp | 111 |
1 files changed, 110 insertions, 1 deletions
diff --git a/src/platform/gui/sdl/Input.cpp b/src/platform/gui/sdl/Input.cpp index 1c7b4475..c985928c 100644 --- a/src/platform/gui/sdl/Input.cpp +++ b/src/platform/gui/sdl/Input.cpp @@ -1,4 +1,5 @@ #include "cru/platform/gui/sdl/Input.h" +#include "cru/platform/gui/Input.h" namespace cru::platform::gui::sdl { MouseButton ConvertMouseButton(Uint8 button) { @@ -13,6 +14,114 @@ MouseButton ConvertMouseButton(Uint8 button) { return MouseButtons::Unknown; } +KeyCode ConvertKeyCode(SDL_Keycode keycode) { + switch (keycode) { +#define CRU_SDL_DEFINE_KEY_CODE_CONVERT(cru_key_code, sdl_key_code) \ + case SDLK_##sdl_key_code: \ + return KeyCode::cru_key_code; + + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Grave, GRAVE) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Escape, ESCAPE) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F1, F1) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F2, F2) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F3, F3) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F4, F4) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F5, F5) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F6, F6) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F7, F7) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F8, F8) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F9, F9) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F10, F10) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F11, F11) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F12, F12) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N0, 0) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N1, 1) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N2, 2) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N3, 3) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N4, 4) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N5, 5) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N6, 6) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N7, 7) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N8, 8) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N9, 9) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(A, A) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(B, B) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(C, C) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(D, D) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(E, E) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(F, F) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(G, G) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(H, H) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(I, I) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(J, J) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(K, K) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(L, L) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(M, M) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(N, N) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(O, O) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(P, P) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Q, Q) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(R, R) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(S, S) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(T, T) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(U, U) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(V, V) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(W, W) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(X, X) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Y, Y) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Z, Z) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Tab, TAB) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(CapsLock, CAPSLOCK) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(LeftShift, LSHIFT) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(LeftCtrl, LCTRL) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(LeftSuper, LGUI) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(LeftAlt, LALT) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Minus, MINUS) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Equal, EQUALS) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Backspace, BACKSPACE) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(LeftSquareBracket, LEFTBRACKET) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(RightSquareBracket, RIGHTBRACKET) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(BackSlash, BACKSLASH) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Semicolon, SEMICOLON) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Quote, APOSTROPHE) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Comma, COMMA) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Period, PERIOD) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Slash, SLASH) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(RightShift, RSHIFT) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(RightCtrl, RCTRL) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(RightSuper, RGUI) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(RightAlt, RALT) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Insert, INSERT) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Delete, DELETE) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Home, HOME) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(End, END) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(PageUp, PAGEUP) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(PageDown, PAGEDOWN) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Up, UP) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Left, LEFT) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Down, DOWN) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Right, RIGHT) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(PrintScreen, PRINTSCREEN) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(ScrollLock, SCROLLLOCK) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Pause, PAUSE) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad0, KP_0) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad1, KP_1) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad2, KP_2) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad3, KP_3) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad4, KP_4) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad5, KP_5) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad6, KP_6) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad7, KP_7) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad8, KP_8) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(NumPad9, KP_9) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Return, RETURN) + CRU_SDL_DEFINE_KEY_CODE_CONVERT(Space, SPACE) +#undef CRU_SDL_DEFINE_KEY_CODE_CONVERT + default: + return KeyCode::Unknown; + } +} + KeyModifier ConvertKeyModifier(SDL_Keymod keymod) { KeyModifier result; if (keymod & SDL_KMOD_SHIFT) result |= KeyModifiers::Shift; @@ -22,4 +131,4 @@ KeyModifier ConvertKeyModifier(SDL_Keymod keymod) { } KeyModifier GetKeyModifier() { return ConvertKeyModifier(SDL_GetModState()); } -} // namespace cru::cru::platform::gui::sdl +} // namespace cru::platform::gui::sdl |
