Warning, /graphics/krita/3rdparty/ext_qt/0112-Fix-shortcuts-assigned-to-special-keys-on-non-latin-.patch is written in an unsupported language. File is not indexed.

0001 From 8201d799d94c6265b404c58e578f31cc5f367e16 Mon Sep 17 00:00:00 2001
0002 From: Dmitry Kazakov <dimula73@gmail.com>
0003 Date: Mon, 15 Feb 2021 10:43:53 +0300
0004 Subject: [PATCH 08/43] Fix shortcuts assigned to special keys on non-latin
0005  layouts
0006 
0007 When the user has non-latin layout we still consider latin
0008 meaning of the keys to be a priorty. This behavior is already
0009 in Qt (and is disputable), but this patch doesn't change that.
0010 The patch only adds proper handling of special keys:
0011 
0012 * '\' --- backslash/bar key
0013 * '/' --- slash/question key
0014 * ';' --- semicolon/colon key
0015 * '`' --- backqoute/tilde key
0016 * ''' --- quote/doublequote key
0017 * '[' --- left bracket key
0018 * ']' --- right bracket key
0019 * ',' --- comma/< key
0020 * '.' --- period/> key
0021 * '-' --- minus/underscore key
0022 * '=' --- equal/plus key
0023 
0024 See https://bugs.kde.org/show_bug.cgi?id=430479
0025 ---
0026  .../platforms/windows/qwindowskeymapper.cpp   | 31 +++++++++++++++++--
0027  1 file changed, 28 insertions(+), 3 deletions(-)
0028 
0029 diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp
0030 index c5af4d8042..b392894dd9 100644
0031 --- a/src/plugins/platforms/windows/qwindowskeymapper.cpp
0032 +++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp
0033 @@ -753,11 +753,36 @@ void QWindowsKeyMapper::updatePossibleKeyCodes(unsigned char *kbdBuffer, quint32
0034      keyLayout[vk_key].deadkeys |= isDeadKey ? 0x80 : 0;
0035      // Add a fall back key for layouts which don't do composition and show non-latin1 characters
0036      quint32 fallbackKey = winceKeyBend(vk_key);
0037 +
0038      if (!fallbackKey || fallbackKey == Qt::Key_unknown) {
0039          fallbackKey = 0;
0040 -        if (vk_key != keyLayout[vk_key].qtKey[0] && vk_key != keyLayout[vk_key].qtKey[1]
0041 -            && vk_key < 0x5B && vk_key > 0x2F)
0042 -            fallbackKey = vk_key;
0043 +        if (vk_key != keyLayout[vk_key].qtKey[0] && vk_key != keyLayout[vk_key].qtKey[1]) {
0044 +            if (vk_key < 0x5B && vk_key > 0x2F) {
0045 +                fallbackKey = vk_key;
0046 +            } else if (vk_key == VK_OEM_1) {
0047 +                fallbackKey = Qt::Key_Semicolon;
0048 +            } else if (vk_key == VK_OEM_2) {
0049 +                fallbackKey = Qt::Key_Slash;
0050 +            } else if (vk_key == VK_OEM_3) {
0051 +                fallbackKey = Qt::Key_QuoteLeft;
0052 +            } else if (vk_key == VK_OEM_4) {
0053 +                fallbackKey = Qt::Key_BracketLeft;
0054 +            } else if (vk_key == VK_OEM_5) {
0055 +                fallbackKey = Qt::Key_Backslash;
0056 +            } else if (vk_key == VK_OEM_6) {
0057 +                fallbackKey = Qt::Key_BracketRight;
0058 +            } else if (vk_key == VK_OEM_7) {
0059 +                fallbackKey = Qt::Key_Apostrophe;
0060 +            } else if (vk_key == VK_OEM_PLUS) {
0061 +                fallbackKey = Qt::Key_Plus;
0062 +            } else if (vk_key == VK_OEM_COMMA) {
0063 +                fallbackKey = Qt::Key_Comma;
0064 +            } else if (vk_key == VK_OEM_MINUS) {
0065 +                fallbackKey = Qt::Key_Minus;
0066 +            } else if (vk_key == VK_OEM_PERIOD) {
0067 +                fallbackKey = Qt::Key_Period;
0068 +            }
0069 +        }
0070      }
0071      keyLayout[vk_key].qtKey[8] = fallbackKey;
0072  
0073 -- 
0074 2.20.1.windows.1
0075