diff --git a/data/desktop_gnome_peripherals_touchpad.schemas.in b/data/desktop_gnome_peripherals_touchpad.schemas.in
index 381dc24..dbc9e2a 100644
--- a/data/desktop_gnome_peripherals_touchpad.schemas.in
+++ b/data/desktop_gnome_peripherals_touchpad.schemas.in
@@ -50,5 +50,17 @@
       </locale>
     </schema>
 
+    <schema>
+      <key>/schemas/desktop/gnome/peripherals/touchpad/touchpad_delay</key>
+      <applyto>/desktop/gnome/peripherals/touchpad/touchpad_delay</applyto>
+      <owner>gnome</owner>
+      <type>float</type>
+      <default>1.2</default>
+      <locale name="C">
+        <short>Time disabled while typing</short>
+        <long>Time in seconds that the touchpad will spend disabled after the last key was pressed.</long>
+      </locale>
+    </schema>
+
   </schemalist>
 </gconfschemafile>
diff --git a/data/gnome-settings-daemon.desktop.in b/data/gnome-settings-daemon.desktop.in
index fc70f74..d5df5b5 100644
--- a/data/gnome-settings-daemon.desktop.in
+++ b/data/gnome-settings-daemon.desktop.in
@@ -1,7 +1,7 @@
 [Desktop Entry]
 Type=Application
 _Name=GNOME Settings Daemon
-Exec=/opt/extra/libexec/gnome-settings-daemon
+Exec=/home/heluani/root/libexec/gnome-settings-daemon
 OnlyShowIn=GNOME;
 X-GNOME-Autostart-Phase=Initialization
 X-GNOME-Autostart-Notify=true
diff --git a/plugins/mouse/gsd-mouse-manager.c b/plugins/mouse/gsd-mouse-manager.c
index 4c463eb..ba5c499 100644
--- 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_DELAY       GCONF_TOUCHPAD_DIR "/touchpad_delay"
 #define KEY_TAP_TO_CLICK        GCONF_TOUCHPAD_DIR "/tap_to_click"
 #define KEY_SCROLL_METHOD       GCONF_TOUCHPAD_DIR "/scroll_method"
 #define KEY_PAD_HORIZ_SCROLL    GCONF_TOUCHPAD_DIR "/horiz_scroll_enabled"
@@ -496,19 +497,27 @@ device_is_touchpad (XDeviceInfo deviceinfo)
 }
 
 static int
-set_disable_w_typing (GsdMouseManager *manager, gboolean state)
+set_disable_w_typing (GsdMouseManager *manager, gboolean state, 
+						gfloat touchpad_delay)
 {
 
         if (state) {
                 GError *error = NULL;
                 char *args[5];
+		char delay_str[20];
+		
+		if (manager->priv->syndaemon_spawned)
+		{
+			kill (manager->priv->syndaemon_pid, SIGHUP);
+			g_spawn_close_pid (manager->priv->syndaemon_pid);
+			manager->priv->syndaemon_spawned = FALSE;
+		}
 
-                if (manager->priv->syndaemon_spawned)
-                        return 0;
 
                 args[0] = "syndaemon";
                 args[1] = "-i";
-                args[2] = "0.5";
+		sprintf(delay_str,"%f",touchpad_delay);
+                args[2] = delay_str;
                 args[3] = "-k";
                 args[4] = NULL;
 
@@ -817,7 +826,7 @@ set_mouse_settings (GsdMouseManager *manager)
         set_motion_acceleration (manager, gconf_client_get_float (client, KEY_MOTION_ACCELERATION , NULL));
         set_motion_threshold (manager, gconf_client_get_int (client, KEY_MOTION_THRESHOLD, NULL));
 
-        set_disable_w_typing (manager, gconf_client_get_bool (client, KEY_TOUCHPAD_DISABLE_W_TYPING, NULL));
+        set_disable_w_typing (manager, gconf_client_get_bool (client, KEY_TOUCHPAD_DISABLE_W_TYPING, NULL), gconf_client_get_float (client, KEY_TOUCHPAD_DISABLE_DELAY, NULL));
         set_tap_to_click (gconf_client_get_bool (client, KEY_TAP_TO_CLICK, NULL));
         set_edge_scroll (gconf_client_get_int (client, KEY_SCROLL_METHOD, NULL));
         set_horiz_scroll (gconf_client_get_bool (client, KEY_PAD_HORIZ_SCROLL, NULL));
@@ -845,8 +854,11 @@ mouse_callback (GConfClient        *client,
                 }
         } else if (! strcmp (entry->key, KEY_TOUCHPAD_DISABLE_W_TYPING)) {
                 if (entry->value->type == GCONF_VALUE_BOOL)
-                        set_disable_w_typing (manager, gconf_value_get_bool (entry->value));
-        } else if (! strcmp (entry->key, KEY_TAP_TO_CLICK)) {
+                        set_disable_w_typing (manager, gconf_value_get_bool (entry->value), gconf_client_get_float (client, KEY_TOUCHPAD_DISABLE_DELAY,NULL));
+        } else if (! strcmp (entry->key, KEY_TOUCHPAD_DISABLE_DELAY)) {
+		if (entry->value->type == GCONF_VALUE_FLOAT)
+			set_disable_w_typing ( manager, gconf_client_get_bool (client, KEY_TOUCHPAD_DISABLE_W_TYPING,NULL), gconf_value_get_float (entry->value));
+	} else if (! strcmp (entry->key, KEY_TAP_TO_CLICK)) {
                 if (entry->value->type == GCONF_VALUE_BOOL)
                         set_tap_to_click (gconf_value_get_bool (entry->value));
         } else if (! strcmp (entry->key, KEY_SCROLL_METHOD)) {
@@ -927,7 +939,7 @@ gsd_mouse_manager_idle_cb (GsdMouseManager *manager)
                                 gconf_client_get_bool (client, KEY_DWELL_ENABLE, NULL),
                                 gconf_client_get_bool (client, KEY_DELAY_ENABLE, NULL));
 
-        set_disable_w_typing (manager, gconf_client_get_bool (client, KEY_TOUCHPAD_DISABLE_W_TYPING, NULL));
+        set_disable_w_typing (manager, gconf_client_get_bool (client, KEY_TOUCHPAD_DISABLE_W_TYPING, NULL), gconf_client_get_float (client, KEY_TOUCHPAD_DISABLE_DELAY, NULL));
         set_tap_to_click (gconf_client_get_bool (client, KEY_TAP_TO_CLICK, NULL));
         set_edge_scroll (gconf_client_get_int (client, KEY_SCROLL_METHOD, NULL));
         set_horiz_scroll (gconf_client_get_bool (client, KEY_PAD_HORIZ_SCROLL, NULL));
