From c72ca7dee8b186c4e38db304fd1ab3a9293a0eea Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 27 Jan 2018 09:31:43 +0000 Subject: [PATCH] CtrlCore: Fixed issue with Ctrl+Shift+1 in GTK git-svn-id: svn://ultimatepp.org/upp/trunk@11732 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlCore/GtkEvent.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/uppsrc/CtrlCore/GtkEvent.cpp b/uppsrc/CtrlCore/GtkEvent.cpp index f309dc55a..a10ee7b92 100644 --- a/uppsrc/CtrlCore/GtkEvent.cpp +++ b/uppsrc/CtrlCore/GtkEvent.cpp @@ -446,8 +446,26 @@ void Ctrl::Proc() Tuple2 *x = FindTuple(cv, __countof(cv), kv); if(x) kv = x->b; - else + else { + if(GetCtrl() | GetAlt()) {// fix Ctrl+Shift+1 etc... + static VectorMap hwkv; + ONCELOCK { + for(int k : { GDKEY(0), GDKEY(1), GDKEY(2), GDKEY(3), GDKEY(4), + GDKEY(5), GDKEY(6), GDKEY(7), GDKEY(8), GDKEY(9) }) { + GdkKeymapKey *keys; + gint n_keys; + if(gdk_keymap_get_entries_for_keyval(NULL, k, &keys, &n_keys)) { + for(int j = 0; j < n_keys; j++) + if(keys[j].group == 0) + hwkv.Add(keys[j].keycode, k); + g_free(keys); + } + } + }; + kv = hwkv.Get(hw, kv); + } kv += K_DELTA; + } if(GetShift() && kv != K_SHIFT_KEY) kv |= K_SHIFT; if(GetCtrl() && kv != K_CTRL_KEY)