diff options
author | sanikoyes <sanikoyes@163.com> | 2014-03-11 13:21:18 +0800 |
---|---|---|
committer | sanikoyes <sanikoyes@163.com> | 2014-03-11 13:21:18 +0800 |
commit | 101112d6fddee3d6dc4abd8b3f43de24a91cb0a7 (patch) | |
tree | 7a595681636f634bdd27221a37dbcbb78d2726a6 /platform | |
parent | 98a970585a14b63731d98cf26641045800bf2dcc (diff) |
fix-multi-char-ime-input-chinese
Diffstat (limited to 'platform')
-rw-r--r-- | platform/windows/os_windows.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 090fe64b19..801bb9332a 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -608,6 +608,28 @@ void OS_Windows::process_key_events() { switch(ke.uMsg) { case WM_CHAR: { + if ((i==0 && ke.uMsg==WM_CHAR) || (i>0 && key_event_buffer[i-1].uMsg==WM_CHAR)) + { + InputEvent event; + event.type=InputEvent::KEY; + event.ID=++last_id; + InputEventKey &k=event.key; + + + k.mod=ke.mod_state; + k.pressed=true; + k.scancode=KeyMappingWindows::get_keysym(ke.wParam); + k.unicode=ke.wParam; + if (k.unicode && gr_mem) { + k.mod.alt=false; + k.mod.control=false; + } + + if (k.unicode<32) + k.unicode=0; + + input->parse_input_event(event); + } //do nothing } break; |