← easystroke

Always just translate keycode into a keysym

1765bfcaf246b667c5152572104773fbb4a5bdef · Thomas Jaeger · Sep 6, 2012 17:51

This is less robust to layout changes, but it's the only way to make
things like Shift+Space work.

Fixes https://sourceforge.net/tracker/?func=detail&aid=3468406&group_id=229797&atid=1078454

+2 −8 · 1 file changed

  • actions.cc +2 −8
diff --git a/actions.cc b/actions.cc
index 543eae0..b20d7b3 100644
--- a/actions.cc
+++ b/actions.cc
@@ -19,6 +19,7 @@
 #include "main.h"
 #include "prefdb.h"
 #include <glibmm/i18n.h>
+#include <X11/XKBlib.h>
 #include "grabber.h"
 
 #include <typeinfo>
@@ -89,14 +90,7 @@ protected:
 				return true;
 		}
 		guint mods = event->state & gtk_accelerator_get_default_mod_mask();
-		guint key;
-		if (mods & ~GDK_SHIFT_MASK) {
-			key = XKeycodeToKeysym(dpy, event->hardware_keycode, 0);
-		} else {
-			key = gdk_keyval_to_lower(event->keyval);
-			if (key == event->keyval)
-				mods = 0;
-		}
+		guint key = XkbKeycodeToKeysym(dpy, event->hardware_keycode, 0, 0);
 
 		editing_done();
 		remove_widget();