summaryrefslogtreecommitdiffstats
path: root/src/compositor
diff options
context:
space:
mode:
authorGatis Paeglis <gatis.paeglis@qt.io>2019-02-10 15:26:31 +0100
committerGatis Paeglis <gatis.paeglis@qt.io>2019-08-19 18:02:17 +0000
commitd8b8ecf7281ee34ba4f68283ed7f204b0e2ce3f9 (patch)
treeca3ef3a09f4665dee0949e9239b11699dbadf98e /src/compositor
parentffec8ce782cebd4432c10ad7fb467b89164b6a2d (diff)
compositor: ensure keymap always contains 'us' layout
On X11, this is ensured by keyboard configuration tools bundled with desktop environments. More details and some history is in qtbase/1aec1a2d8df182a9e15906bcfede32a9841586ea. Short version is that 'lookup latin key' algorithm relies on a latin-key-based layout being present in the XKB keymap. Change-Id: Ie985a1e6ad0995c139a51f4dab610d791dfcaf08 Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
Diffstat (limited to 'src/compositor')
-rw-r--r--src/compositor/compositor_api/qwaylandkeyboard.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/compositor/compositor_api/qwaylandkeyboard.cpp b/src/compositor/compositor_api/qwaylandkeyboard.cpp
index 452be4363..c5ec008d7 100644
--- a/src/compositor/compositor_api/qwaylandkeyboard.cpp
+++ b/src/compositor/compositor_api/qwaylandkeyboard.cpp
@@ -366,6 +366,13 @@ void QWaylandKeyboardPrivate::createXKBKeymap()
QByteArray variant = keymap->variant().toLocal8Bit();
QByteArray options = keymap->options().toLocal8Bit();
+ if (!layout.isEmpty() && !layout.contains("us")) {
+ // This is needed for shortucts like "ctrl+c" to function even when
+ // user has selected only non-latin keyboard layouts, e.g. 'ru'.
+ layout.append(",us");
+ variant.append(",");
+ }
+
struct xkb_rule_names rule_names = {
rules.constData(),
model.constData(),