diff options
author | crupest <crupest@outlook.com> | 2020-04-20 01:17:28 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-04-20 01:17:28 +0800 |
commit | 857adcb7ee2d45b2e29d4250fa4246bb8861a8f9 (patch) | |
tree | 2ebe62c58768ded27c5c6b15d1ab04400c9ecf9b /src/win/native/window.cpp | |
parent | 494d2db1c1203acc9d9f2b127b75c6df6160057a (diff) | |
download | cru-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.cpp | 22 |
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); } |