aboutsummaryrefslogtreecommitdiff
path: root/src/platform/gui/sdl/Window.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-28 15:43:52 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-28 18:20:17 +0800
commit9e596ff10782455615f69b9b54ce22176145b020 (patch)
treee910b6d6ac2037a9c2c4cd50d15005c71690665b /src/platform/gui/sdl/Window.cpp
parent0ef919c18108112d6c35c5a4f6a00440059cbc1a (diff)
downloadcru-9e596ff10782455615f69b9b54ce22176145b020.tar.gz
cru-9e596ff10782455615f69b9b54ce22176145b020.tar.bz2
cru-9e596ff10782455615f69b9b54ce22176145b020.zip
Impl key event handling of sdl native window.
Diffstat (limited to 'src/platform/gui/sdl/Window.cpp')
-rw-r--r--src/platform/gui/sdl/Window.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/platform/gui/sdl/Window.cpp b/src/platform/gui/sdl/Window.cpp
index 93c89cbd..b0fcded4 100644
--- a/src/platform/gui/sdl/Window.cpp
+++ b/src/platform/gui/sdl/Window.cpp
@@ -258,6 +258,10 @@ NativeMouseButtonEventArgs ConvertMouseButtonEvent(
return {
ConvertMouseButton(event.button), {event.x, event.y}, GetKeyModifier()};
}
+
+NativeKeyEventArgs ConvertKeyEvent(const SDL_KeyboardEvent& event) {
+ return {ConvertKeyCode(event.key), ConvertKeyModifier(event.mod)};
+}
} // namespace
bool SdlWindow::HandleEvent(const SDL_Event* event) {
@@ -318,14 +322,23 @@ bool SdlWindow::HandleEvent(const SDL_Event* event) {
case SDL_EVENT_MOUSE_WHEEL: {
const auto& we = event->wheel;
if (we.x != 0) {
- MouseWheelEvent_.Raise({we.x, {we.mouse_x, we.mouse_y}, GetKeyModifier(), true});
+ MouseWheelEvent_.Raise(
+ {we.x, {we.mouse_x, we.mouse_y}, GetKeyModifier(), true});
}
if (we.y != 0) {
- MouseWheelEvent_.Raise({we.y, {we.mouse_x, we.mouse_y}, GetKeyModifier(), false});
+ MouseWheelEvent_.Raise(
+ {we.y, {we.mouse_x, we.mouse_y}, GetKeyModifier(), false});
}
return true;
}
- // TODO: Keyboard event.
+ case SDL_EVENT_KEY_DOWN: {
+ KeyDownEvent_.Raise(ConvertKeyEvent(event->key));
+ return true;
+ }
+ case SDL_EVENT_KEY_UP: {
+ KeyUpEvent_.Raise(ConvertKeyEvent(event->key));
+ return true;
+ }
}
return false;
}