--- gksu-2.0.2/gksu/gksu.c-orig	2011-01-05 16:53:59.322662397 -0600
+++ gksu-2.0.2/gksu/gksu.c	2011-01-05 16:54:01.300784043 -0600
@@ -27,7 +27,7 @@
 
 /* GLOBALS */
 gboolean print_pass = FALSE;
-gboolean force_grab = FALSE;
+gboolean force_grab = TRUE;
 gboolean prompt = FALSE;
 gboolean elevated_privilege = TRUE;
 gboolean elevated_role = TRUE;
@@ -540,6 +540,11 @@ main (int argc, char **argv)
 
   int c = 0;
 
+  char **gconf_argv;
+  char *gconf_cmd;
+  char *std_output;
+  char *std_error;
+
   setlocale (LC_ALL, "");
   bindtextdomain(PACKAGE_NAME, LOCALEDIR);
   bind_textdomain_codeset (PACKAGE_NAME, "UTF-8");
@@ -676,8 +681,42 @@ main (int argc, char **argv)
     g_free (myname);
   }
 
-  if (force_grab)
-    gksu_context_set_grab (context, TRUE);
+  /*
+   * Disable the grab if accessibility is on, since it causes issues
+   * for GOK, dasher and other AT programs where the user may need to interact
+   * with other GUI programs.  Note that we call gconftool-2 instead of using
+   * GConf interfaces since it seems using GConf in gksu causes problems for
+   * a11y if you run a program with gksu that has a GUI.  The launched program
+   * will not work with a11y if gksu uses GConf, but calling gconftool-2 works.
+   */
+  gconf_cmd = g_strdup ("/usr/bin/gconftool-2 --get /desktop/gnome/interface/accessibility");
+  error = NULL;
+  std_output = NULL;
+  std_error = NULL;
+
+  g_shell_parse_argv (gconf_cmd, NULL, &gconf_argv, &error);
+
+  error = NULL;
+
+  g_spawn_sync (NULL,
+                gconf_argv,
+                NULL,
+                0,
+                NULL,
+                NULL,
+                &std_output,
+                &std_error,
+                NULL,
+                &error);
+
+  g_strchomp (std_output);
+
+  if (std_output != NULL && strcmp (std_output, "true") == 0)
+    {
+      force_grab = FALSE;
+    }
+
+  gksu_context_set_grab (context, force_grab);
 
   if (prompt)
     {