diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-28 15:43:52 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-28 18:20:17 +0800 |
| commit | 9e596ff10782455615f69b9b54ce22176145b020 (patch) | |
| tree | e910b6d6ac2037a9c2c4cd50d15005c71690665b /src/platform/gui/sdl/Window.cpp | |
| parent | 0ef919c18108112d6c35c5a4f6a00440059cbc1a (diff) | |
| download | cru-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.cpp | 19 |
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; } |
