diff options
Diffstat (limited to 'src/win/native')
-rw-r--r-- | src/win/native/keyboard.cpp | 8 | ||||
-rw-r--r-- | src/win/native/window.cpp | 11 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/win/native/keyboard.cpp b/src/win/native/keyboard.cpp index b73d0ffb..98a95778 100644 --- a/src/win/native/keyboard.cpp +++ b/src/win/native/keyboard.cpp @@ -63,4 +63,12 @@ KeyCode VirtualKeyToKeyCode(int virtual_key) { } } } + +KeyModifier RetrieveKeyMofifier() { + KeyModifier result{0}; + if (::GetKeyState(VK_SHIFT) < 0) result |= key_modifiers::shift; + if (::GetKeyState(VK_CONTROL) < 0) result |= key_modifiers::ctrl; + if (::GetKeyState(VK_MENU) < 0) result |= key_modifiers::alt; + return result; +} } // namespace cru::platform::native::win diff --git a/src/win/native/window.cpp b/src/win/native/window.cpp index c7bb1b9d..fea269d2 100644 --- a/src/win/native/window.cpp +++ b/src/win/native/window.cpp @@ -5,6 +5,7 @@ #include "cru/platform/check.hpp" #include "cru/win/native/cursor.hpp" #include "cru/win/native/exception.hpp" +#include "cru/win/native/keyboard.hpp" #include "cru/win/native/ui_application.hpp" #include "cru/win/native/window_class.hpp" #include "cru/win/native/window_render_target.hpp" @@ -383,13 +384,13 @@ void WinNativeWindow::OnMouseLeaveInternal() { void WinNativeWindow::OnMouseDownInternal(platform::native::MouseButton button, POINT point) { const auto dip_point = PiToDip(point); - mouse_down_event_.Raise({button, dip_point}); + mouse_down_event_.Raise({button, dip_point, RetrieveKeyMofifier()}); } void WinNativeWindow::OnMouseUpInternal(platform::native::MouseButton button, POINT point) { const auto dip_point = PiToDip(point); - mouse_up_event_.Raise({button, dip_point}); + mouse_up_event_.Raise({button, dip_point, RetrieveKeyMofifier()}); } void WinNativeWindow::OnMouseWheelInternal(short delta, POINT point) { @@ -398,11 +399,13 @@ void WinNativeWindow::OnMouseWheelInternal(short delta, POINT point) { } void WinNativeWindow::OnKeyDownInternal(int virtual_code) { - key_down_event_.Raise(virtual_code); + key_down_event_.Raise( + {VirtualKeyToKeyCode(virtual_code), RetrieveKeyMofifier()}); } void WinNativeWindow::OnKeyUpInternal(int virtual_code) { - key_up_event_.Raise(virtual_code); + key_up_event_.Raise( + {VirtualKeyToKeyCode(virtual_code), RetrieveKeyMofifier()}); } void WinNativeWindow::OnCharInternal(wchar_t c) { |