diff --git a/src/totem-fullscreen.c b/src/totem-fullscreen.c
index b64f4d2..33b4f12 100644
--- a/src/totem-fullscreen.c
+++ b/src/totem-fullscreen.c
@@ -256,15 +256,26 @@ gboolean
 totem_fullscreen_motion_notify (GtkWidget *widget, GdkEventMotion *event,
 				TotemFullscreen *fs)
 {
+	totem_fullscreen_show_popups (fs);
+
+	/* Show the mouse cursor */
+	totem_fullscreen_set_cursor (fs, TRUE);
+
+	return FALSE;
+}
+
+void
+totem_fullscreen_show_popups (TotemFullscreen *fs)
+{
 	GtkWidget *item;
 
 	g_assert (fs->is_fullscreen != FALSE);
 
 	if (fs->priv->popup_in_progress != FALSE)
-		return FALSE;
+		return;
 
 	if (gtk_window_is_active (GTK_WINDOW (fs->priv->parent_window)) == FALSE)
-		return FALSE;
+		return;
 
 	fs->priv->popup_in_progress = TRUE;
 
@@ -281,15 +292,10 @@ totem_fullscreen_motion_notify (GtkWidget *widget, GdkEventMotion *event,
 	gtk_widget_show_all (fs->priv->exit_popup);
 	gtk_widget_show_all (fs->priv->control_popup);
 
-	/* Show the mouse cursor */
-	totem_fullscreen_set_cursor (fs, TRUE);
-
 	/* Reset the popup timeout */
 	totem_fullscreen_popup_timeout_add (fs);
 
 	fs->priv->popup_in_progress = FALSE;
-
-	return FALSE;
 }
 
 void
diff --git a/src/totem-fullscreen.h b/src/totem-fullscreen.h
index c2e0dfa..62a3355 100644
--- a/src/totem-fullscreen.h
+++ b/src/totem-fullscreen.h
@@ -75,6 +75,7 @@ void     totem_fullscreen_set_parent_window  (TotemFullscreen *fs,
 gboolean totem_fullscreen_motion_notify      (GtkWidget *widget,
 					      GdkEventMotion *event,
 					      TotemFullscreen *fs);
+void     totem_fullscreen_show_popups        (TotemFullscreen *fs);
 gboolean totem_fullscreen_is_fullscreen      (TotemFullscreen *fs);
 void     totem_fullscreen_set_fullscreen     (TotemFullscreen *fs,
 					      gboolean fullscreen);
diff --git a/src/totem.c b/src/totem.c
index 4827e08..0e1c1dd 100644
--- a/src/totem.c
+++ b/src/totem.c
@@ -2804,16 +2804,19 @@ totem_action_handle_key_press (Totem *totem, GdkEventKey *event)
 			totem_action_fullscreen (totem, FALSE);
 		break;
 	case GDK_Left:
-		if (gtk_widget_get_direction (totem->win) == GTK_TEXT_DIR_RTL)
-			totem_action_handle_seek (totem, event, TRUE);
-		else
-			totem_action_handle_seek (totem, event, FALSE);
-		break;
 	case GDK_Right:
-		if (gtk_widget_get_direction (totem->win) == GTK_TEXT_DIR_RTL)
-			totem_action_handle_seek (totem, event, FALSE);
-		else
-			totem_action_handle_seek (totem, event, TRUE);
+		{
+			gboolean is_forward;
+
+			if (totem_is_fullscreen (totem) != FALSE)
+				totem_fullscreen_show_popups (totem->fs);
+
+			is_forward = (event->keyval == GDK_Right);
+			/* Switch direction in RTL environment */
+			if (gtk_widget_get_direction (totem->win) == GTK_TEXT_DIR_RTL)
+				is_forward = !is_forward;
+			totem_action_handle_seek (totem, event, is_forward);
+		}
 		break;
 	case GDK_space:
 		if (totem_is_fullscreen (totem) != FALSE || gtk_widget_is_focus (GTK_WIDGET (totem->bvw)) != FALSE)
@@ -2891,6 +2894,16 @@ totem_action_handle_key_press (Totem *totem, GdkEventKey *event)
 	case GDK_KP_5:
 		bacon_video_widget_dvd_event (totem->bvw,
 					      BVW_DVD_ROOT_MENU_SELECT);
+		break;
+	case GDK_Shift_L:
+	case GDK_Shift_R:
+	case GDK_Control_L:
+	case GDK_Control_R:
+		if (totem_is_fullscreen (totem) != FALSE)
+			totem_fullscreen_show_popups (totem->fs);
+		else
+			retval = FALSE;
+		break;
 	default:
 		retval = FALSE;
 	}
