From cfc6d6ddb7aad50d27663fbdecc1a43d6846b76f Mon Sep 17 00:00:00 2001 From: Philip Zander Date: Sat, 29 Jan 2022 22:36:40 +0100 Subject: [PATCH] gdkkeys-win32: Ignore CTRL bit for key translation Some keymaps on Windows contain bogus mappings for Ctrl+key for certain keys, e.g. Ctrl+Backspace = Delete, or Ctrl+[ = 0x1B. These are never used on Windows, so we should ignore them. Fixes #4667 --- gdk/win32/gdkkeys-win32-impl.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gdk/win32/gdkkeys-win32-impl.c b/gdk/win32/gdkkeys-win32-impl.c index 368f3f6506..74f9615c19 100644 --- a/gdk/win32/gdkkeys-win32-impl.c +++ b/gdk/win32/gdkkeys-win32-impl.c @@ -340,6 +340,13 @@ vk_to_char_fuzzy (GdkWin32KeymapLayoutInfo *info, if (candidate_modbits & ~mod_bits) continue; + /* Some keys have bogus mappings for the control key, e.g. + * Ctrl + Backspace = Delete, or Ctrl + [ = 0x1B. These are + * never used on Windows, so we ignore them. + */ + if (candidate_modbits == KBDCTRL) + continue; + c = entry->wch[level]; if (c == WCH_DEAD || have_sgcaps) {