aboutsummaryrefslogtreecommitdiff
path: root/src/win/native/window.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-04-20 01:17:28 +0800
committercrupest <crupest@outlook.com>2020-04-20 01:17:28 +0800
commit857adcb7ee2d45b2e29d4250fa4246bb8861a8f9 (patch)
tree2ebe62c58768ded27c5c6b15d1ab04400c9ecf9b /src/win/native/window.cpp
parent494d2db1c1203acc9d9f2b127b75c6df6160057a (diff)
downloadcru-857adcb7ee2d45b2e29d4250fa4246bb8861a8f9.tar.gz
cru-857adcb7ee2d45b2e29d4250fa4246bb8861a8f9.tar.bz2
cru-857adcb7ee2d45b2e29d4250fa4246bb8861a8f9.zip
...
Diffstat (limited to 'src/win/native/window.cpp')
-rw-r--r--src/win/native/window.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/win/native/window.cpp b/src/win/native/window.cpp
index 7ad63769..30c77659 100644
--- a/src/win/native/window.cpp
+++ b/src/win/native/window.cpp
@@ -290,6 +290,20 @@ bool WinNativeWindow::HandleNativeWindowMessage(HWND hwnd, UINT msg,
OnKeyUpInternal(static_cast<int>(w_param));
*result = 0;
return true;
+ case WM_SYSKEYDOWN:
+ if (l_param & (1 << 29)) {
+ OnKeyDownInternal(static_cast<int>(w_param));
+ *result = 0;
+ return true;
+ }
+ return false;
+ case WM_SYSKEYUP:
+ if (l_param & (1 << 29)) {
+ OnKeyUpInternal(static_cast<int>(w_param));
+ *result = 0;
+ return true;
+ }
+ return false;
case WM_CHAR:
OnCharInternal(static_cast<wchar_t>(w_param));
*result = 0;
@@ -419,13 +433,13 @@ void WinNativeWindow::OnCharInternal(wchar_t c) {
last_wm_char_event_wparam_ = c;
return;
} else if (platform::win::IsSurrogatePairTrailing(c)) {
- wchar_t s[3] = {last_wm_char_event_wparam_, c, 0};
- auto str = platform::win::ToUtf8String(s);
+ wchar_t s[2] = {last_wm_char_event_wparam_, c};
+ auto str = platform::win::ToUtf8String({s, 2});
char_event_.Raise(str);
log::Debug("WinNativeWindow: char event, charactor is {}", str);
} else {
- wchar_t s[2] = {c, 0};
- auto str = platform::win::ToUtf8String(s);
+ wchar_t s[1] = {c};
+ auto str = platform::win::ToUtf8String({s, 1});
char_event_.Raise(str);
log::Debug("WinNativeWindow: char event, charactor is {}", str);
}