galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
LuaInput.cpp
Go to the documentation of this file.
1
7
8#include <entt/locator/locator.hpp>
9#include <sol/sol.hpp>
10
12// #include "galaxy/input/Input.hpp"
13// #include "galaxy/input/Keyboard.hpp"
14// #include "galaxy/input/Keys.hpp"
15// #include "galaxy/input/Mouse.hpp"
16// #include "galaxy/input/MouseButton.hpp"
17
18#include "../Lua.hpp"
19
20namespace galaxy
21{
22 void Lua::inject_input() noexcept
23 {
24 auto& lua = entt::locator<sol::state>::value();
25
26 lua.set_function("galaxy_clipboard_set", &input::clipboard_set);
27 lua.set_function("galaxy_clipboard_get", &input::clipboard_get);
28 lua.set_function("galaxy_clipboard_clear", &input::clipboard_clear);
29
30 // lua.set_function("input_is_key_mod_down", &input::is_key_mod_down);
31 // lua.set_function("input_is_key_down", &input::is_key_down);
32 // lua.set_function("input_is_mouse_down", &input::is_mouse_down);
33 // lua.set_function("input_get_cursor_pos", &input::get_cursor_pos);
34
35 // auto keyboard_type = lua.new_usertype<Keyboard>("Keyboard", sol::no_constructor);
36 // keyboard_type["begin_text_input"] = &Keyboard::begin_text_input;
37 // keyboard_type["clear_state"] = &Keyboard::clear_state;
38 // keyboard_type["end_text_input"] = &Keyboard::end_text_input;
39 // keyboard_type["has_keyboard"] = &Keyboard::has_keyboard;
40 // keyboard_type["has_onscreen_keyboard"] = &Keyboard::has_onscreen_keyboard;
41 // keyboard_type["onscreen_keyboard_active"] = &Keyboard::onscreen_keyboard_active;
42
43 // auto mouse_type = lua.new_usertype<Mouse>("Mouse", sol::no_constructor);
44 // mouse_type["has_mouse"] = &Mouse::has_mouse;
45 // mouse_type["hide_cursor"] = &Mouse::hide_cursor;
46 // mouse_type["restore_cursor"] = &Mouse::restore_cursor;
47 // mouse_type["set_cursor_custom"] = &Mouse::set_cursor_custom;
48 // mouse_type["set_cursor_system"] = &Mouse::set_cursor_system;
49 // mouse_type["set_mouse_grab"] = &Mouse::set_mouse_grab;
50 // mouse_type["show_cursor"] = &Mouse::show_cursor;
51 // mouse_type["warp_mouse"] = &Mouse::warp_mouse;
52
53 // clang-format off
54 //lua.new_enum<MouseButton>("MouseButton",
55 //{
56 // {"UNKNOWN", MouseButton::UNKNOWN},
57 // {"LEFT", MouseButton::LEFT},
58 // {"MIDDLE", MouseButton::MIDDLE},
59 // {"RIGHT", MouseButton::RIGHT},
60 // {"SIDE_1", MouseButton::SIDE_1},
61 // {"SIDE_2", MouseButton::SIDE_2}
62 //});
63
64 //lua.new_enum<Keys>("Keys",
65 //{
66 // {"KEY_UNKNOWN", Keys::KEY_UNKNOWN},
67 // {"KEY_RETURN", Keys::KEY_RETURN},
68 // {"KEY_ESCAPE", Keys::KEY_ESCAPE},
69 // {"KEY_BACKSPACE", Keys::KEY_BACKSPACE},
70 // {"KEY_TAB", Keys::KEY_TAB},
71 // {"KEY_SPACE", Keys::KEY_SPACE},
72 // {"KEY_EXCLAIM", Keys::KEY_EXCLAIM},
73 // {"KEY_DBLAPOSTROPHE", Keys::KEY_DBLAPOSTROPHE},
74 // {"KEY_HASH", Keys::KEY_HASH},
75 // {"KEY_DOLLAR", Keys::KEY_DOLLAR},
76 // {"KEY_PERCENT", Keys::KEY_PERCENT},
77 // {"KEY_AMPERSAND", Keys::KEY_AMPERSAND},
78 // {"KEY_APOSTROPHE", Keys::KEY_APOSTROPHE},
79 // {"KEY_LEFTPAREN", Keys::KEY_LEFTPAREN},
80 // {"KEY_RIGHTPAREN", Keys::KEY_RIGHTPAREN},
81 // {"KEY_ASTERISK", Keys::KEY_ASTERISK},
82 // {"KEY_PLUS", Keys::KEY_PLUS},
83 // {"KEY_COMMA", Keys::KEY_COMMA},
84 // {"KEY_MINUS", Keys::KEY_MINUS},
85 // {"KEY_PERIOD", Keys::KEY_PERIOD},
86 // {"KEY_SLASH", Keys::KEY_SLASH},
87 // {"KEY_0", Keys::KEY_0},
88 // {"KEY_1", Keys::KEY_1},
89 // {"KEY_2", Keys::KEY_2},
90 // {"KEY_3", Keys::KEY_3},
91 // {"KEY_4", Keys::KEY_4},
92 // {"KEY_5", Keys::KEY_5},
93 // {"KEY_6", Keys::KEY_6},
94 // {"KEY_7", Keys::KEY_7},
95 // {"KEY_8", Keys::KEY_8},
96 // {"KEY_9", Keys::KEY_9},
97 // {"KEY_COLON", Keys::KEY_COLON},
98 // {"KEY_SEMICOLON", Keys::KEY_SEMICOLON},
99 // {"KEY_LESS", Keys::KEY_LESS},
100 // {"KEY_EQUALS", Keys::KEY_EQUALS},
101 // {"KEY_GREATER", Keys::KEY_GREATER},
102 // {"KEY_QUESTION", Keys::KEY_QUESTION},
103 // {"KEY_AT", Keys::KEY_AT},
104 // {"KEY_LEFTBRACKET", Keys::KEY_LEFTBRACKET},
105 // {"KEY_BACKSLASH", Keys::KEY_BACKSLASH},
106 // {"KEY_RIGHTBRACKET", Keys::KEY_RIGHTBRACKET},
107 // {"KEY_CARET", Keys::KEY_CARET},
108 // {"KEY_UNDERSCORE", Keys::KEY_UNDERSCORE},
109 // {"KEY_GRAVE", Keys::KEY_GRAVE},
110 // {"KEY_A", Keys::KEY_A},
111 // {"KEY_B", Keys::KEY_B},
112 // {"KEY_C", Keys::KEY_C},
113 // {"KEY_D", Keys::KEY_D},
114 // {"KEY_E", Keys::KEY_E},
115 // {"KEY_F", Keys::KEY_F},
116 // {"KEY_G", Keys::KEY_G},
117 // {"KEY_H", Keys::KEY_H},
118 // {"KEY_I", Keys::KEY_I},
119 // {"KEY_J", Keys::KEY_J},
120 // {"KEY_K", Keys::KEY_K},
121 // {"KEY_L", Keys::KEY_L},
122 // {"KEY_M", Keys::KEY_M},
123 // {"KEY_N", Keys::KEY_N},
124 // {"KEY_O", Keys::KEY_O},
125 // {"KEY_P", Keys::KEY_P},
126 // {"KEY_Q", Keys::KEY_Q},
127 // {"KEY_R", Keys::KEY_R},
128 // {"KEY_S", Keys::KEY_S},
129 // {"KEY_T", Keys::KEY_T},
130 // {"KEY_U", Keys::KEY_U},
131 // {"KEY_V", Keys::KEY_V},
132 // {"KEY_W", Keys::KEY_W},
133 // {"KEY_X", Keys::KEY_X},
134 // {"KEY_Y", Keys::KEY_Y},
135 // {"KEY_Z", Keys::KEY_Z},
136 // {"KEY_LEFTBRACE", Keys::KEY_LEFTBRACE},
137 // {"KEY_PIPE", Keys::KEY_PIPE},
138 // {"KEY_RIGHTBRACE", Keys::KEY_RIGHTBRACE},
139 // {"KEY_TILDE", Keys::KEY_TILDE},
140 // {"KEY_DELETE", Keys::KEY_DELETE},
141 // {"KEY_PLUSMINUS", Keys::KEY_PLUSMINUS},
142 // {"KEY_CAPSLOCK", Keys::KEY_CAPSLOCK},
143 // {"KEY_F1", Keys::KEY_F1},
144 // {"KEY_F2", Keys::KEY_F2},
145 // {"KEY_F3", Keys::KEY_F3},
146 // {"KEY_F4", Keys::KEY_F4},
147 // {"KEY_F5", Keys::KEY_F5},
148 // {"KEY_F6", Keys::KEY_F6},
149 // {"KEY_F7", Keys::KEY_F7},
150 // {"KEY_F8", Keys::KEY_F8},
151 // {"KEY_F9", Keys::KEY_F9},
152 // {"KEY_F10", Keys::KEY_F10},
153 // {"KEY_F11", Keys::KEY_F11},
154 // {"KEY_F12", Keys::KEY_F12},
155 // {"KEY_PRINTSCREEN", Keys::KEY_PRINTSCREEN},
156 // {"KEY_SCROLLLOCK", Keys::KEY_SCROLLLOCK},
157 // {"KEY_PAUSE", Keys::KEY_PAUSE},
158 // {"KEY_INSERT", Keys::KEY_INSERT},
159 // {"KEY_HOME", Keys::KEY_HOME},
160 // {"KEY_PAGEUP", Keys::KEY_PAGEUP},
161 // {"KEY_END", Keys::KEY_END},
162 // {"KEY_PAGEDOWN", Keys::KEY_PAGEDOWN},
163 // {"KEY_RIGHT", Keys::KEY_RIGHT},
164 // {"KEY_LEFT", Keys::KEY_LEFT},
165 // {"KEY_DOWN", Keys::KEY_DOWN},
166 // {"KEY_UP", Keys::KEY_UP},
167 // {"KEY_NUMLOCKCLEAR", Keys::KEY_NUMLOCKCLEAR},
168 // {"KEY_KP_DIVIDE", Keys::KEY_KP_DIVIDE},
169 // {"KEY_KP_MULTIPLY", Keys::KEY_KP_MULTIPLY},
170 // {"KEY_KP_MINUS", Keys::KEY_KP_MINUS},
171 // {"KEY_KP_PLUS", Keys::KEY_KP_PLUS},
172 // {"KEY_KP_ENTER", Keys::KEY_KP_ENTER},
173 // {"KEY_KP_1", Keys::KEY_KP_1},
174 // {"KEY_KP_2", Keys::KEY_KP_2},
175 // {"KEY_KP_3", Keys::KEY_KP_3},
176 // {"KEY_KP_4", Keys::KEY_KP_4},
177 // {"KEY_KP_5", Keys::KEY_KP_5},
178 // {"KEY_KP_6", Keys::KEY_KP_6},
179 // {"KEY_KP_7", Keys::KEY_KP_7},
180 // {"KEY_KP_8", Keys::KEY_KP_8},
181 // {"KEY_KP_9", Keys::KEY_KP_9},
182 // {"KEY_KP_0", Keys::KEY_KP_0},
183 // {"KEY_KP_PERIOD", Keys::KEY_KP_PERIOD},
184 // {"KEY_APPLICATION", Keys::KEY_APPLICATION},
185 // {"KEY_POWER", Keys::KEY_POWER},
186 // {"KEY_KP_EQUALS", Keys::KEY_KP_EQUALS},
187 // {"KEY_F13", Keys::KEY_F13},
188 // {"KEY_F14", Keys::KEY_F14},
189 // {"KEY_F15", Keys::KEY_F15},
190 // {"KEY_F16", Keys::KEY_F16},
191 // {"KEY_F17", Keys::KEY_F17},
192 // {"KEY_F18", Keys::KEY_F18},
193 // {"KEY_F19", Keys::KEY_F19},
194 // {"KEY_F20", Keys::KEY_F20},
195 // {"KEY_F21", Keys::KEY_F21},
196 // {"KEY_F22", Keys::KEY_F22},
197 // {"KEY_F23", Keys::KEY_F23},
198 // {"KEY_F24", Keys::KEY_F24},
199 // {"KEY_EXECUTE", Keys::KEY_EXECUTE},
200 // {"KEY_HELP", Keys::KEY_HELP},
201 // {"KEY_MENU", Keys::KEY_MENU},
202 // {"KEY_SELECT", Keys::KEY_SELECT},
203 // {"KEY_STOP", Keys::KEY_STOP},
204 // {"KEY_AGAIN", Keys::KEY_AGAIN},
205 // {"KEY_UNDO", Keys::KEY_UNDO},
206 // {"KEY_CUT", Keys::KEY_CUT},
207 // {"KEY_COPY", Keys::KEY_COPY},
208 // {"KEY_PASTE", Keys::KEY_PASTE},
209 // {"KEY_FIND", Keys::KEY_FIND},
210 // {"KEY_MUTE", Keys::KEY_MUTE},
211 // {"KEY_VOLUMEUP", Keys::KEY_VOLUMEUP},
212 // {"KEY_VOLUMEDOWN", Keys::KEY_VOLUMEDOWN},
213 // {"KEY_KP_COMMA", Keys::KEY_KP_COMMA},
214 // {"KEY_KP_EQUALSAS400", Keys::KEY_KP_EQUALSAS400},
215 // {"KEY_ALTERASE", Keys::KEY_ALTERASE},
216 // {"KEY_SYSREQ", Keys::KEY_SYSREQ},
217 // {"KEY_CANCEL", Keys::KEY_CANCEL},
218 // {"KEY_CLEAR", Keys::KEY_CLEAR},
219 // {"KEY_PRIOR", Keys::KEY_PRIOR},
220 // {"KEY_RETURN2", Keys::KEY_RETURN2},
221 // {"KEY_SEPARATOR", Keys::KEY_SEPARATOR},
222 // {"KEY_OUT", Keys::KEY_OUT},
223 // {"KEY_OPER", Keys::KEY_OPER},
224 // {"KEY_CLEARAGAIN", Keys::KEY_CLEARAGAIN},
225 // {"KEY_CRSEL", Keys::KEY_CRSEL},
226 // {"KEY_EXSEL", Keys::KEY_EXSEL},
227 // {"KEY_KP_00", Keys::KEY_KP_00},
228 // {"KEY_KP_000", Keys::KEY_KP_000},
229 // {"KEY_THOUSANDSSEPARATOR", Keys::KEY_THOUSANDSSEPARATOR},
230 // {"KEY_DECIMALSEPARATOR", Keys::KEY_DECIMALSEPARATOR},
231 // {"KEY_CURRENCYUNIT", Keys::KEY_CURRENCYUNIT},
232 // {"KEY_CURRENCYSUBUNIT", Keys::KEY_CURRENCYSUBUNIT},
233 // {"KEY_KP_LEFTPAREN", Keys::KEY_KP_LEFTPAREN},
234 // {"KEY_KP_RIGHTPAREN", Keys::KEY_KP_RIGHTPAREN},
235 // {"KEY_KP_LEFTBRACE", Keys::KEY_KP_LEFTBRACE},
236 // {"KEY_KP_RIGHTBRACE", Keys::KEY_KP_RIGHTBRACE},
237 // {"KEY_KP_TAB", Keys::KEY_KP_TAB},
238 // {"KEY_KP_BACKSPACE", Keys::KEY_KP_BACKSPACE},
239 // {"KEY_KP_A", Keys::KEY_KP_A},
240 // {"KEY_KP_B", Keys::KEY_KP_B},
241 // {"KEY_KP_C", Keys::KEY_KP_C},
242 // {"KEY_KP_D", Keys::KEY_KP_D},
243 // {"KEY_KP_E", Keys::KEY_KP_E},
244 // {"KEY_KP_F", Keys::KEY_KP_F},
245 // {"KEY_KP_XOR", Keys::KEY_KP_XOR},
246 // {"KEY_KP_POWER", Keys::KEY_KP_POWER},
247 // {"KEY_KP_PERCENT", Keys::KEY_KP_PERCENT},
248 // {"KEY_KP_LESS", Keys::KEY_KP_LESS},
249 // {"KEY_KP_GREATER", Keys::KEY_KP_GREATER},
250 // {"KEY_KP_AMPERSAND", Keys::KEY_KP_AMPERSAND},
251 // {"KEY_KP_DBLAMPERSAND", Keys::KEY_KP_DBLAMPERSAND},
252 // {"KEY_KP_VERTICALBAR", Keys::KEY_KP_VERTICALBAR},
253 // {"KEY_KP_DBLVERTICALBAR", Keys::KEY_KP_DBLVERTICALBAR},
254 // {"KEY_KP_COLON", Keys::KEY_KP_COLON},
255 // {"KEY_KP_HASH", Keys::KEY_KP_HASH},
256 // {"KEY_KP_SPACE", Keys::KEY_KP_SPACE},
257 // {"KEY_KP_AT", Keys::KEY_KP_AT},
258 // {"KEY_KP_EXCLAM", Keys::KEY_KP_EXCLAM},
259 // {"KEY_KP_MEMSTORE", Keys::KEY_KP_MEMSTORE},
260 // {"KEY_KP_MEMRECALL", Keys::KEY_KP_MEMRECALL},
261 // {"KEY_KP_MEMCLEAR", Keys::KEY_KP_MEMCLEAR},
262 // {"KEY_KP_MEMADD", Keys::KEY_KP_MEMADD},
263 // {"KEY_KP_MEMSUBTRACT", Keys::KEY_KP_MEMSUBTRACT},
264 // {"KEY_KP_MEMMULTIPLY", Keys::KEY_KP_MEMMULTIPLY},
265 // {"KEY_KP_MEMDIVIDE", Keys::KEY_KP_MEMDIVIDE},
266 // {"KEY_KP_PLUSMINUS", Keys::KEY_KP_PLUSMINUS},
267 // {"KEY_KP_CLEAR", Keys::KEY_KP_CLEAR},
268 // {"KEY_KP_CLEARENTRY", Keys::KEY_KP_CLEARENTRY},
269 // {"KEY_KP_BINARY", Keys::KEY_KP_BINARY},
270 // {"KEY_KP_OCTAL", Keys::KEY_KP_OCTAL},
271 // {"KEY_KP_DECIMAL", Keys::KEY_KP_DECIMAL},
272 // {"KEY_KP_HEXADECIMAL", Keys::KEY_KP_HEXADECIMAL},
273 // {"KEY_LCTRL", Keys::KEY_LCTRL},
274 // {"KEY_LSHIFT", Keys::KEY_LSHIFT},
275 // {"KEY_LALT", Keys::KEY_LALT},
276 // {"KEY_LGUI", Keys::KEY_LGUI},
277 // {"KEY_RCTRL", Keys::KEY_RCTRL},
278 // {"KEY_RSHIFT", Keys::KEY_RSHIFT},
279 // {"KEY_RALT", Keys::KEY_RALT},
280 // {"KEY_RGUI", Keys::KEY_RGUI},
281 // {"KEY_MODE", Keys::KEY_MODE},
282 // {"KEY_SLEEP", Keys::KEY_SLEEP},
283 // {"KEY_WAKE", Keys::KEY_WAKE},
284 // {"KEY_CHANNEL_INCREMENT", Keys::KEY_CHANNEL_INCREMENT},
285 // {"KEY_CHANNEL_DECREMENT", Keys::KEY_CHANNEL_DECREMENT},
286 // {"KEY_MEDIA_PLAY", Keys::KEY_MEDIA_PLAY},
287 // {"KEY_MEDIA_PAUSE", Keys::KEY_MEDIA_PAUSE},
288 // {"KEY_MEDIA_RECORD", Keys::KEY_MEDIA_RECORD},
289 // {"KEY_MEDIA_FAST_FORWARD", Keys::KEY_MEDIA_FAST_FORWARD},
290 // {"KEY_MEDIA_REWIND", Keys::KEY_MEDIA_REWIND},
291 // {"KEY_MEDIA_NEXT_TRACK", Keys::KEY_MEDIA_NEXT_TRACK},
292 // {"KEY_MEDIA_PREVIOUS_TRACK", Keys::KEY_MEDIA_PREVIOUS_TRACK},
293 // {"KEY_MEDIA_STOP", Keys::KEY_MEDIA_STOP},
294 // {"KEY_MEDIA_EJECT", Keys::KEY_MEDIA_EJECT},
295 // {"KEY_MEDIA_PLAY_PAUSE", Keys::KEY_MEDIA_PLAY_PAUSE},
296 // {"KEY_MEDIA_SELECT", Keys::KEY_MEDIA_SELECT},
297 // {"KEY_AC_NEW", Keys::KEY_AC_NEW},
298 // {"KEY_AC_OPEN", Keys::KEY_AC_OPEN},
299 // {"KEY_AC_CLOSE", Keys::KEY_AC_CLOSE},
300 // {"KEY_AC_EXIT", Keys::KEY_AC_EXIT},
301 // {"KEY_AC_SAVE", Keys::KEY_AC_SAVE},
302 // {"KEY_AC_PRINT", Keys::KEY_AC_PRINT},
303 // {"KEY_AC_PROPERTIES", Keys::KEY_AC_PROPERTIES},
304 // {"KEY_AC_SEARCH", Keys::KEY_AC_SEARCH},
305 // {"KEY_AC_HOME", Keys::KEY_AC_HOME},
306 // {"KEY_AC_BACK", Keys::KEY_AC_BACK},
307 // {"KEY_AC_FORWARD", Keys::KEY_AC_FORWARD},
308 // {"KEY_AC_STOP", Keys::KEY_AC_STOP},
309 // {"KEY_AC_REFRESH", Keys::KEY_AC_REFRESH},
310 // {"KEY_AC_BOOKMARKS", Keys::KEY_AC_BOOKMARKS},
311 // {"KEY_SOFTLEFT", Keys::KEY_SOFTLEFT},
312 // {"KEY_SOFTRIGHT", Keys::KEY_SOFTRIGHT},
313 // {"KEY_CALL", Keys::KEY_CALL},
314 // {"KEY_ENDCALL", Keys::KEY_ENDCALL},
315 // {"KEY_LEFT_TAB", Keys::KEY_LEFT_TAB},
316 // {"KEY_LEVEL5_SHIFT", Keys::KEY_LEVEL5_SHIFT},
317 // {"KEY_MULTI_KEY_COMPOSE", Keys::KEY_MULTI_KEY_COMPOSE},
318 // {"KEY_LMETA", Keys::KEY_LMETA},
319 // {"KEY_RMETA", Keys::KEY_RMETA},
320 // {"KEY_LHYPER", Keys::KEY_LHYPER},
321 // {"KEY_RHYPER", Keys::KEY_RHYPER}
322 //});
323 //
324 //lua.new_enum<KeyMods>("KeyMods",
325 //{
326 // {"MOD_NONE", KeyMods::MOD_NONE},
327 // {"MOD_LSHIFT", KeyMods::MOD_LSHIFT},
328 // {"MOD_RSHIFT", KeyMods::MOD_RSHIFT},
329 // {"MOD_LEVEL5", KeyMods::MOD_LEVEL5},
330 // {"MOD_LCTRL", KeyMods::MOD_LCTRL},
331 // {"MOD_RCTRL", KeyMods::MOD_RCTRL},
332 // {"MOD_LALT", KeyMods::MOD_LALT},
333 // {"MOD_RALT", KeyMods::MOD_RALT},
334 // {"MOD_LGUI", KeyMods::MOD_LGUI},
335 // {"MOD_RGUI", KeyMods::MOD_RGUI},
336 // {"MOD_NUM", KeyMods::MOD_NUM},
337 // {"MOD_CAPS", KeyMods::MOD_CAPS},
338 // {"MOD_MODE", KeyMods::MOD_MODE},
339 // {"MOD_SCROLL", KeyMods::MOD_SCROLL},
340 // {"MOD_CTRL", KeyMods::MOD_CTRL},
341 // {"MOD_SHIFT", KeyMods::MOD_SHIFT},
342 // {"MOD_ALT", KeyMods::MOD_ALT},
343 // {"MOD_GUI", KeyMods::MOD_GUI}
344 //});
345 // clang-format on
346 }
347} // namespace galaxy
static void inject_input() noexcept
Injects input handling into Lua.
Definition LuaInput.cpp:22
std::string clipboard_get() noexcept
Get clipboard contents.
Definition Clipboard.cpp:21
bool clipboard_clear() noexcept
Clear the clipboard contents.
Definition Clipboard.cpp:34
void clipboard_set(const std::string &contents) noexcept
Set clipboard contents.
Definition Clipboard.cpp:16
Application.hpp galaxy.