diff --git a/src/she/win/event_queue.h b/src/she/win/event_queue.h index 381ce1587..d9fd5978a 100644 --- a/src/she/win/event_queue.h +++ b/src/she/win/event_queue.h @@ -38,15 +38,15 @@ public: if (res) { // Avoid transforming WM_KEYDOWN/UP into WM_DEADCHAR/WM_CHAR - // messages when m_translateDeadKeys is disabled. + // messages. Dead keys are converted manually in the + // WM_KEYDOWN processing on our WinWindow class. // // From MSDN TranslateMessage() documentation: // "WM_KEYDOWN and WM_KEYUP combinations produce a WM_CHAR // or WM_DEADCHAR message." // https://msdn.microsoft.com/en-us/library/windows/desktop/ms644955.aspx - if ((m_translateDeadKeys) || - (msg.message != WM_KEYDOWN && - msg.message != WM_KEYUP)) { + if (msg.message != WM_KEYDOWN && + msg.message != WM_KEYUP) { TranslateMessage(&msg); } DispatchMessage(&msg); diff --git a/src/she/win/window.h b/src/she/win/window.h index 5b0810470..07a28aa67 100644 --- a/src/she/win/window.h +++ b/src/she/win/window.h @@ -611,13 +611,15 @@ namespace she { ev.setUnicodeChar(0); ev.setRepeat(MAX(0, (lparam & 0xffff)-1)); - if (!m_translateDeadKeys) { + { VkToUnicode tu; if (tu) { tu.toUnicode(vk, scancode); if (tu.isDeadKey()) { + ev.setDeadKey(true); ev.setUnicodeChar(tu[0]); - tu.toUnicode(vk, scancode); // Call again to remove dead-key + if (!m_translateDeadKeys) + tu.toUnicode(vk, scancode); // Call again to remove dead-key } else if (tu.size() > 0) { sendMsg = false; @@ -650,25 +652,6 @@ namespace she { return 0; } - case WM_DEADCHAR: { - Event ev; - ev.setType(Event::KeyDown); - ev.setDeadKey(true); - ev.setUnicodeChar(wparam); - ev.setRepeat(lparam & 0xffff); - queueEvent(ev); - return 0; - } - - case WM_CHAR: { - Event ev; - ev.setType(Event::KeyDown); - ev.setUnicodeChar(wparam); - ev.setRepeat(lparam & 0xffff); - queueEvent(ev); - return 0; - } - case WM_MENUCHAR: // Avoid playing a sound when Alt+key is pressed and it's not in a native menu return MAKELONG(0, MNC_CLOSE);