e971512
diff -up gdm-2.20.0/gui/gdmlogin.c.allow-escape gdm-2.20.0/gui/gdmlogin.c
e971512
--- gdm-2.20.0/gui/gdmlogin.c.allow-escape	2007-10-02 10:54:33.000000000 -0400
e971512
+++ gdm-2.20.0/gui/gdmlogin.c	2007-10-02 11:02:08.000000000 -0400
e971512
@@ -2146,6 +2146,20 @@ gdm_set_welcomemsg (void)
e971512
 	g_free (greeting);
e971512
 }
e971512
 
e971512
+static gboolean
e971512
+key_press_event (GtkWidget *widget, GdkEventKey *key, gpointer data)
e971512
+{
e971512
+  if (key->keyval == GDK_Escape)
e971512
+    {
e971512
+      printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_CANCEL);
e971512
+      fflush (stdout);
e971512
+
e971512
+      return TRUE;
e971512
+    }
e971512
+  
e971512
+  return FALSE;
e971512
+}
e971512
+
e971512
 static void
e971512
 gdm_login_gui_init (void)
e971512
 {
e971512
@@ -2182,6 +2196,9 @@ gdm_login_gui_init (void)
e971512
 
e971512
     gtk_widget_set_events (login, GDK_ALL_EVENTS_MASK);
e971512
 
e971512
+    g_signal_connect (G_OBJECT (login), "key_press_event",
e971512
+                      G_CALLBACK (key_press_event), NULL);
e971512
+
e971512
     gtk_window_set_title (GTK_WINDOW (login), _("GDM Login"));
e971512
     /* connect for fingering */
e971512
     if (browser_ok && gdm_config_get_bool (GDM_KEY_BROWSER))
e971512
diff -up gdm-2.20.0/gui/greeter/greeter.c.allow-escape gdm-2.20.0/gui/greeter/greeter.c
e971512
--- gdm-2.20.0/gui/greeter/greeter.c.allow-escape	2007-10-02 10:48:39.000000000 -0400
e971512
+++ gdm-2.20.0/gui/greeter/greeter.c	2007-10-02 10:56:34.000000000 -0400
e971512
@@ -597,10 +597,16 @@ process_operation (guchar       op_code,
e971512
 static gboolean
e971512
 key_press_event (GtkWidget *widget, GdkEventKey *key, gpointer data)
e971512
 {
e971512
-  if (DOING_GDM_DEVELOPMENT && (key->keyval == GDK_Escape))
e971512
+  if (key->keyval == GDK_Escape)
e971512
     {
e971512
-      process_operation (GDM_QUIT, NULL);
e971512
-      
e971512
+      if (DOING_GDM_DEVELOPMENT)
e971512
+        process_operation (GDM_QUIT, NULL);
e971512
+      else
e971512
+      {
e971512
+        printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_CANCEL);
e971512
+        fflush (stdout);
e971512
+      }
e971512
+
e971512
       return TRUE;
e971512
     }
e971512
   
e971512
@@ -1360,11 +1366,9 @@ main (int argc, char *argv[])
e971512
   
e971512
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
e971512
 
e971512
-  if G_UNLIKELY (DOING_GDM_DEVELOPMENT) {
e971512
-     g_signal_connect (G_OBJECT (window), "key_press_event",
e971512
-		       G_CALLBACK (key_press_event), NULL);
e971512
-  }
e971512
-  
e971512
+  g_signal_connect (G_OBJECT (window), "key_press_event",
e971512
+                    G_CALLBACK (key_press_event), NULL);
e971512
+
e971512
   canvas = gnome_canvas_new_aa ();
e971512
   GTK_WIDGET_UNSET_FLAGS (canvas, GTK_CAN_FOCUS);
e971512
   gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas),