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