Fix virtual key mapping on MS Windows
authorJuan Luis Boya García <ntrrgc@gmail.com>
Wed, 16 Oct 2013 15:34:52 +0000 (17:34 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 25 Oct 2013 12:51:30 +0000 (14:51 +0200)
commitfcebbaeba37422780afd58a1a63954bdbf1a67e2
tree19af7bec2ed4573cf49fa33364cad6d4876d8412
parentc3f6a5d93b2439fc7a821e1b9d83f0aa996805bf
Fix virtual key mapping on MS Windows

In order to map MS Windows virtual keys to Qt keys without messing with
dead keys now I use the built-in keyMap structure of QWindowsKeyMapper
and assert every cell in the keymap is properly updated.

In order to guarantee this even when the user changes the keyboard
layout, WndProc now manages the WM_INPUTLANGCHANGE message, which is
handled by QWindowsKeyMapper, resetting the layout structure.

I don't fully understand yet some things about QWindowsKeyMapper, i.e.
how QWindowsKeyMapper::updatePossibleKeyCodes workarounds the dead key
issue with ToAscii; but it seems to work fine in all the tests I've
done. Any further testing is highly appreciated, though.

[ChangeLog][[QtGui][Platform Specific Changes][Windows] Fixed virtual key
mapping on Windows.

Task-number: QTBUG-33409
Task-number: QTBUG-8764
Task-number: QTBUG-10032

Change-Id: I4f7709a90906b03f4504deea1ff5c361e9f94b3f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
src/corelib/kernel/qcoreapplication_win.cpp
src/plugins/platforms/windows/qtwindowsglobal.h
src/plugins/platforms/windows/qwindowscontext.cpp
src/plugins/platforms/windows/qwindowskeymapper.cpp