diff --git a/Telegram/SourceFiles/settings/settings_shortcuts.cpp b/Telegram/SourceFiles/settings/settings_shortcuts.cpp
index a28d22af7..b2df7fab7 100644
--- a/Telegram/SourceFiles/settings/settings_shortcuts.cpp
+++ b/Telegram/SourceFiles/settings/settings_shortcuts.cpp
@@ -21,6 +21,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 #include "styles/style_menu_icons.h"
 #include "styles/style_settings.h"
 
+#include <qpa/qplatformintegration.h>
+#include <private/qguiapplication_p.h>
+
 namespace Settings {
 namespace {
 
@@ -381,6 +384,7 @@ struct Labeled {
 			}
 			const auto key = static_cast<QKeyEvent*>(e.get());
 			const auto m = key->modifiers();
+			const auto integration = QGuiApplicationPrivate::platformIntegration();
 			const auto k = key->key();
 			const auto clear = !m
 				&& (k == Qt::Key_Backspace || k == Qt::Key_Delete);
@@ -396,7 +400,19 @@ struct Labeled {
 				}
 				return base::EventFilterResult::Cancel;
 			}
-			stopRecording(clear ? QKeySequence() : QKeySequence(k | m));
+			const auto r = [&] {
+				auto result = k;
+				if (m & Qt::ShiftModifier) {
+					const auto keys = integration->possibleKeys(key);
+					for (const auto possible : keys) {
+						if (possible > m) {
+							return possible - m;
+						}
+					}
+				}
+				return result;
+			}();
+			stopRecording(clear ? QKeySequence() : QKeySequence(r | m));
 			return base::EventFilterResult::Cancel;
 		} else if (type == QEvent::KeyPress && state->recording.current()) {
 			if (!content->window()->isActiveWindow()) {