← easystroke

main.cc: replace XKeycodeToKeysym with XGetKeyboardMapping

f2dfa026cf8678e4ec6da80d720bdce282dad7a3 · Thomas Jaeger · Sep 6, 2012 17:26

Since XKeycodeToKeysym has been deprecated.

+7 −4 · 1 file changed

  • main.cc +7 −4
diff --git a/main.cc b/main.cc
index d071e95..e0eca49 100644
--- a/main.cc
+++ b/main.cc
@@ -1616,17 +1616,20 @@ bool fake_char(gunichar c) {
 	if (!keycode)
 		return false;
 	KeyCode modifier = 0;
-	if (XKeycodeToKeysym(dpy, keycode, 0) != keysym) {
+	int n;
+	KeySym *mapping = XGetKeyboardMapping(dpy, keycode, 1, &n);
+	if (mapping[0] != keysym) {
 		int i;
-		for (i = 1; i < 8; i++)
-			if (XKeycodeToKeysym(dpy, keycode, i) == keysym)
+		for (i = 1; i < n; i++)
+			if (mapping[i] == keysym)
 				break;
-		if (i == 8)
+		if (i == n)
 			return false;
 		XModifierKeymap *keymap = XGetModifierMapping(dpy);
 		modifier = keymap->modifiermap[i];
 		XFreeModifiermap(keymap);
 	}
+	XFree(mapping);
 	if (modifier)
 		XTestFakeKeyEvent(dpy, modifier, true, 0);
 	XTestFakeKeyEvent(dpy, keycode, true, 0);