aboutsummaryrefslogtreecommitdiff
path: root/src/platform/gui/sdl/Input.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-28 15:30:58 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-28 15:30:58 +0800
commit268b396afe2f09abfa8813c5f1edc1641a7c0a9f (patch)
treecc1b1887c68287c74df7239b94c24335ad3ca9e1 /src/platform/gui/sdl/Input.cpp
parentb7c4620007274844669337df703aba206ea6c4d3 (diff)
downloadcru-268b396afe2f09abfa8813c5f1edc1641a7c0a9f.tar.gz
cru-268b396afe2f09abfa8813c5f1edc1641a7c0a9f.tar.bz2
cru-268b396afe2f09abfa8813c5f1edc1641a7c0a9f.zip
Add event handling of sdl native window.
Diffstat (limited to 'src/platform/gui/sdl/Input.cpp')
-rw-r--r--src/platform/gui/sdl/Input.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/platform/gui/sdl/Input.cpp b/src/platform/gui/sdl/Input.cpp
new file mode 100644
index 00000000..1c7b4475
--- /dev/null
+++ b/src/platform/gui/sdl/Input.cpp
@@ -0,0 +1,25 @@
+#include "cru/platform/gui/sdl/Input.h"
+
+namespace cru::platform::gui::sdl {
+MouseButton ConvertMouseButton(Uint8 button) {
+ switch (button) {
+ case SDL_BUTTON_LEFT:
+ return MouseButtons::Left;
+ case SDL_BUTTON_MIDDLE:
+ return MouseButtons::Middle;
+ case SDL_BUTTON_RIGHT:
+ return MouseButtons::Right;
+ }
+ return MouseButtons::Unknown;
+}
+
+KeyModifier ConvertKeyModifier(SDL_Keymod keymod) {
+ KeyModifier result;
+ if (keymod & SDL_KMOD_SHIFT) result |= KeyModifiers::Shift;
+ if (keymod & SDL_KMOD_CTRL) result |= KeyModifiers::Ctrl;
+ if (keymod & SDL_KMOD_ALT) result |= KeyModifiers::Alt;
+ return result;
+}
+
+KeyModifier GetKeyModifier() { return ConvertKeyModifier(SDL_GetModState()); }
+} // namespace cru::cru::platform::gui::sdl