diff -uNr a/plugins/mouse/gsd-mouse-manager.c b/plugins/mouse/gsd-mouse-manager.c
--- a/plugins/mouse/gsd-mouse-manager.c
+++ b/plugins/mouse/gsd-mouse-manager.c
@@ -63,6 +63,7 @@
 #define KEY_DWELL_ENABLE        GCONF_MOUSE_A11Y_DIR "/dwell_enable"
 #define KEY_DELAY_ENABLE        GCONF_MOUSE_A11Y_DIR "/delay_enable"
 #define KEY_TOUCHPAD_DISABLE_W_TYPING    GCONF_TOUCHPAD_DIR "/disable_while_typing"
+#define KEY_TOUCHPAD_DISABLE_W_TYPING_IDLE_TIME GCONF_TOUCHPAD_DIR "/disable_while_typing_time"
 #ifdef HAVE_X11_EXTENSIONS_XINPUT_H
 #define KEY_TAP_TO_CLICK        GCONF_TOUCHPAD_DIR "/tap_to_click"
 #define KEY_SCROLL_METHOD       GCONF_TOUCHPAD_DIR "/scroll_method"
@@ -548,16 +549,27 @@
 
         if (state) {
                 GError *error = NULL;
-                char *args[5];
+                char *args[6];
 
                 if (manager->priv->syndaemon_spawned)
                         return 0;
 
+                gdouble syndaemon_idle_time;
+                GConfClient *client;
+                client = gconf_client_get_default ();
+                syndaemon_idle_time = gconf_client_get_float (client, KEY_TOUCHPAD_DISABLE_W_TYPING_IDLE_TIME, NULL);
+                g_object_unref (client);
+
                 args[0] = "syndaemon";
-                args[1] = "-i";
-                args[2] = "0.5";
-                args[3] = "-k";
-                args[4] = NULL;
+                args[1] = "-k";
+                args[2] = "-R";
+                
+                if (syndaemon_idle_time < 0.1) {
+                    args[3] = "-i";
+                    args[4] = g_strdup_printf("%.1f",syndaemon_idle_time);
+                    args[5] = NULL;
+                } else
+                    args[3] = NULL;                        
 
                 if (!g_find_program_in_path (args[0]))
                         return 0;
