Toast Engine
Loading...
Searching...
No Matches
ui_key_map.hpp
Go to the documentation of this file.
1
8
9#pragma once
10#include <RmlUi/Core/Input.h>
11#include <SDL3/SDL_keycode.h>
12
13namespace ui {
14
15inline auto toRmlModifiers(int sdl_mods) -> int {
16 int mods = 0;
17 if ((sdl_mods & SDL_KMOD_CTRL) != 0) {
18 mods |= Rml::Input::KM_CTRL;
19 }
20 if ((sdl_mods & SDL_KMOD_SHIFT) != 0) {
21 mods |= Rml::Input::KM_SHIFT;
22 }
23 if ((sdl_mods & SDL_KMOD_ALT) != 0) {
24 mods |= Rml::Input::KM_ALT;
25 }
26 if ((sdl_mods & SDL_KMOD_GUI) != 0) {
27 mods |= Rml::Input::KM_META;
28 }
29 if ((sdl_mods & SDL_KMOD_CAPS) != 0) {
30 mods |= Rml::Input::KM_CAPSLOCK;
31 }
32 if ((sdl_mods & SDL_KMOD_NUM) != 0) {
33 mods |= Rml::Input::KM_NUMLOCK;
34 }
35 return mods;
36}
37
38// clang-format off
39inline auto toRmlKey(int sdl_key) -> Rml::Input::KeyIdentifier {
40 using namespace Rml::Input;
41 switch (sdl_key) {
42 case SDLK_A: return KI_A; case SDLK_B: return KI_B;
43 case SDLK_C: return KI_C; case SDLK_D: return KI_D;
44 case SDLK_E: return KI_E; case SDLK_F: return KI_F;
45 case SDLK_G: return KI_G; case SDLK_H: return KI_H;
46 case SDLK_I: return KI_I; case SDLK_J: return KI_J;
47 case SDLK_K: return KI_K; case SDLK_L: return KI_L;
48 case SDLK_M: return KI_M; case SDLK_N: return KI_N;
49 case SDLK_O: return KI_O; case SDLK_P: return KI_P;
50 case SDLK_Q: return KI_Q; case SDLK_R: return KI_R;
51 case SDLK_S: return KI_S; case SDLK_T: return KI_T;
52 case SDLK_U: return KI_U; case SDLK_V: return KI_V;
53 case SDLK_W: return KI_W; case SDLK_X: return KI_X;
54 case SDLK_Y: return KI_Y; case SDLK_Z: return KI_Z;
55 case SDLK_0: return KI_0; case SDLK_1: return KI_1;
56 case SDLK_2: return KI_2; case SDLK_3: return KI_3;
57 case SDLK_4: return KI_4; case SDLK_5: return KI_5;
58 case SDLK_6: return KI_6; case SDLK_7: return KI_7;
59 case SDLK_8: return KI_8; case SDLK_9: return KI_9;
60 case SDLK_SPACE: return KI_SPACE;
61 case SDLK_RETURN: return KI_RETURN;
62 case SDLK_KP_ENTER: return KI_NUMPADENTER;
63 case SDLK_ESCAPE: return KI_ESCAPE;
64 case SDLK_BACKSPACE: return KI_BACK;
65 case SDLK_TAB: return KI_TAB;
66 case SDLK_DELETE: return KI_DELETE;
67 case SDLK_INSERT: return KI_INSERT;
68 case SDLK_HOME: return KI_HOME;
69 case SDLK_END: return KI_END;
70 case SDLK_PAGEUP: return KI_PRIOR;
71 case SDLK_PAGEDOWN: return KI_NEXT;
72 case SDLK_LEFT: return KI_LEFT;
73 case SDLK_RIGHT: return KI_RIGHT;
74 case SDLK_UP: return KI_UP;
75 case SDLK_DOWN: return KI_DOWN;
76 case SDLK_SEMICOLON: return KI_OEM_1;
77 case SDLK_EQUALS: return KI_OEM_PLUS;
78 case SDLK_COMMA: return KI_OEM_COMMA;
79 case SDLK_MINUS: return KI_OEM_MINUS;
80 case SDLK_PERIOD: return KI_OEM_PERIOD;
81 case SDLK_SLASH: return KI_OEM_2;
82 case SDLK_GRAVE: return KI_OEM_3;
83 case SDLK_LEFTBRACKET: return KI_OEM_4;
84 case SDLK_BACKSLASH: return KI_OEM_5;
85 case SDLK_RIGHTBRACKET: return KI_OEM_6;
86 case SDLK_APOSTROPHE: return KI_OEM_7;
87 case SDLK_KP_0: return KI_NUMPAD0; case SDLK_KP_1: return KI_NUMPAD1;
88 case SDLK_KP_2: return KI_NUMPAD2; case SDLK_KP_3: return KI_NUMPAD3;
89 case SDLK_KP_4: return KI_NUMPAD4; case SDLK_KP_5: return KI_NUMPAD5;
90 case SDLK_KP_6: return KI_NUMPAD6; case SDLK_KP_7: return KI_NUMPAD7;
91 case SDLK_KP_8: return KI_NUMPAD8; case SDLK_KP_9: return KI_NUMPAD9;
92 case SDLK_KP_PLUS: return KI_ADD;
93 case SDLK_KP_MINUS: return KI_SUBTRACT;
94 case SDLK_KP_MULTIPLY: return KI_MULTIPLY;
95 case SDLK_KP_DIVIDE: return KI_DIVIDE;
96 case SDLK_KP_PERIOD: return KI_DECIMAL;
97 case SDLK_F1: return KI_F1; case SDLK_F2: return KI_F2;
98 case SDLK_F3: return KI_F3; case SDLK_F4: return KI_F4;
99 case SDLK_F5: return KI_F5; case SDLK_F6: return KI_F6;
100 case SDLK_F7: return KI_F7; case SDLK_F8: return KI_F8;
101 case SDLK_F9: return KI_F9; case SDLK_F10: return KI_F10;
102 case SDLK_F11: return KI_F11; case SDLK_F12: return KI_F12;
103 case SDLK_LSHIFT: return KI_LSHIFT;
104 case SDLK_RSHIFT: return KI_RSHIFT;
105 case SDLK_LCTRL: return KI_LCONTROL;
106 case SDLK_RCTRL: return KI_RCONTROL;
107 case SDLK_LALT: return KI_LMENU;
108 case SDLK_RALT: return KI_RMENU;
109 case SDLK_CAPSLOCK: return KI_CAPITAL;
110 case SDLK_PAUSE: return KI_PAUSE;
111 case SDLK_PRINTSCREEN: return KI_SNAPSHOT;
112 case SDLK_NUMLOCKCLEAR: return KI_NUMLOCK;
113 case SDLK_SCROLLLOCK: return KI_SCROLL;
114 default: return KI_UNKNOWN;
115 }
116}
117
118// clang-format on
119
120}