diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-08-14 09:05:42 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-08-14 09:06:31 +0200 |
commit | 5c23199d4e8ff21661dfa5aacc13149178e78cab (patch) | |
tree | 322aee61581d7c85f1ccb65e47d1e79eba1ba6c9 /src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp | |
parent | 252bad7c589e03d3e12df02354b00a84d8e3159a (diff) | |
parent | c8d9b17367cfdcb034d11f8a168ca4ae3993e7c3 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
configure
mkspecs/macx-xcode/Info.plist.app
mkspecs/macx-xcode/Info.plist.lib
qmake/doc/qmake.qdocconf
src/corelib/global/qglobal.h
tests/auto/other/exceptionsafety/exceptionsafety.pro
tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
Change-Id: I3c769a4a82dc2e99a12c69123fbf17613fd2ac2a
Diffstat (limited to 'src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp')
-rw-r--r-- | src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp index 26dc116f91..b97923c4b6 100644 --- a/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp +++ b/src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp @@ -235,6 +235,8 @@ QEvdevKeyboardHandler::KeycodeAction QEvdevKeyboardHandler::processKeycode(quint const QEvdevKeyboardMap::Mapping *map_plain = 0; const QEvdevKeyboardMap::Mapping *map_withmod = 0; + quint8 modifiers = m_modifiers; + // get a specific and plain mapping for the keycode and the current modifiers for (int i = 0; i < m_keymap_size && !(map_plain && map_withmod); ++i) { const QEvdevKeyboardMap::Mapping *m = m_keymap + i; @@ -250,9 +252,12 @@ QEvdevKeyboardHandler::KeycodeAction QEvdevKeyboardHandler::processKeycode(quint } } + if (m_locks[0] /*CapsLock*/ && map_withmod && (map_withmod->flags & QEvdevKeyboardMap::IsLetter)) + modifiers ^= QEvdevKeyboardMap::ModShift; + #ifdef QT_QPA_KEYMAP_DEBUG qWarning("Processing key event: keycode=%3d, modifiers=%02x pressed=%d, autorepeat=%d | plain=%d, withmod=%d, size=%d", \ - keycode, m_modifiers, pressed ? 1 : 0, autorepeat ? 1 : 0, \ + keycode, modifiers, pressed ? 1 : 0, autorepeat ? 1 : 0, \ map_plain ? map_plain - m_keymap : -1, \ map_withmod ? map_withmod - m_keymap : -1, \ m_keymap_size); @@ -263,7 +268,7 @@ QEvdevKeyboardHandler::KeycodeAction QEvdevKeyboardHandler::processKeycode(quint if (!it) { #ifdef QT_QPA_KEYMAP_DEBUG // we couldn't even find a plain mapping - qWarning("Could not find a suitable mapping for keycode: %3d, modifiers: %02x", keycode, m_modifiers); + qWarning("Could not find a suitable mapping for keycode: %3d, modifiers: %02x", keycode, modifiers); #endif return result; } @@ -285,7 +290,7 @@ QEvdevKeyboardHandler::KeycodeAction QEvdevKeyboardHandler::processKeycode(quint lock ^= 1; switch (qtcode) { - case Qt::Key_CapsLock : result = lock ? CapsLockOn : CapsLockOff; m_modifiers ^= QEvdevKeyboardMap::ModShift; break; + case Qt::Key_CapsLock : result = lock ? CapsLockOn : CapsLockOff; break; case Qt::Key_NumLock : result = lock ? NumLockOn : NumLockOff; break; case Qt::Key_ScrollLock: result = lock ? ScrollLockOn : ScrollLockOff; break; default : break; @@ -347,7 +352,7 @@ QEvdevKeyboardHandler::KeycodeAction QEvdevKeyboardHandler::processKeycode(quint // so just report the plain mapping with additional modifiers. if ((it == map_plain && it != map_withmod) || (map_withmod && !(map_withmod->qtcode & modmask))) { - qtcode |= QEvdevKeyboardHandler::toQtModifiers(m_modifiers); + qtcode |= QEvdevKeyboardHandler::toQtModifiers(modifiers); } if (m_composing == 2 && first_press && !(it->flags & QEvdevKeyboardMap::IsModifier)) { |