aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-03-29 23:29:01 +0800
committercrupest <crupest@outlook.com>2020-03-29 23:29:01 +0800
commit725d296ff1d58451010295b2dff1a95a18623c44 (patch)
treebb6b58d2a9e6f4fd37f4310b982b08480f27982c /src
parent85322feaa9f646bf9e6f35f57f6d08244b298a46 (diff)
downloadcru-725d296ff1d58451010295b2dff1a95a18623c44.tar.gz
cru-725d296ff1d58451010295b2dff1a95a18623c44.tar.bz2
cru-725d296ff1d58451010295b2dff1a95a18623c44.zip
...
Diffstat (limited to 'src')
-rw-r--r--src/win/native/keyboard.cpp8
-rw-r--r--src/win/native/window.cpp11
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) {