Index: plugins/mouse/gsd-mouse-manager.c
===================================================================
--- plugins/mouse/gsd-mouse-manager.c	(revision 725)
+++ plugins/mouse/gsd-mouse-manager.c	(working copy)
@@ -450,10 +450,7 @@ filter (GdkXEvent *xevent,
         guint keyval;
         gint group;
 
-        GdkScreen *screen = (GdkScreen *)data;
-
-        if (xev->type == KeyPress ||
-            xev->type == KeyRelease) {
+        if (xev->type == KeyPress) {
                 /* get the keysym */
                 group = (xev->xkey.state & KEYBOARD_GROUP_MASK) >> KEYBOARD_GROUP_SHIFT;
                 gdk_keymap_translate_keyboard_state (gdk_keymap_get_default (),
@@ -463,23 +460,9 @@ filter (GdkXEvent *xevent,
                                                      &keyval,
                                                      NULL, NULL, NULL);
                 if (keyval == GDK_Control_L || keyval == GDK_Control_R) {
-                        if (xev->type == KeyPress) {
-                                XAllowEvents (xev->xkey.display,
-                                              SyncKeyboard,
-                                              xev->xkey.time);
-                        } else {
-                                XAllowEvents (xev->xkey.display,
-                                              AsyncKeyboard,
-                                              xev->xkey.time);
-                                gsd_locate_pointer (screen);
-                        }
-                } else {
-                        XAllowEvents (xev->xkey.display,
-                                      ReplayKeyboard,
-                                      xev->xkey.time);
-                        XUngrabKeyboard (gdk_x11_get_default_xdisplay (),
-                                         xev->xkey.time);
+                        gsd_locate_pointer (data);
                 }
+                XAllowEvents (xev->xkey.display, ReplayKeyboard, xev->xkey.time);
         }
         return GDK_FILTER_CONTINUE;
 }
