Index: plugins/common/gsd-keygrab.c
===================================================================
--- plugins/common/gsd-keygrab.c	(revision 321)
+++ plugins/common/gsd-keygrab.c	(working copy)
@@ -122,6 +122,26 @@
 gboolean
 match_key (Key *key, XEvent *event)
 {
+	GdkKeymap *keymap;
+	guint keyval;
+	GdkModifierType consumed;
+
+	if (key == NULL)
+		return FALSE;
+
+	keymap = gdk_keymap_get_default ();
+	/* Check if we find a keysym that matches our current state */
+	if (gdk_keymap_translate_keyboard_state (keymap, event->xkey.keycode,
+					     event->xkey.state, 0, //FIXME
+					     &keyval, NULL, NULL, &consumed)) {
+		if (keyval == key->keysym
+		    && (key->state & ~consumed & GSD_USED_MODS) == key->state) {
+		    	return TRUE;
+		}
+		return FALSE;
+	}
+
+	/* The key we passed doesn't have a keysym, so try with just the keycode */
         return (key != NULL
                 && key->keycode == event->xkey.keycode
                 && key->state == (event->xkey.state & GSD_USED_MODS));
