Index: xserver-xorg-input-synaptics-1.3.99+git20110116.0e27ce3a/src/properties.c =================================================================== --- xserver-xorg-input-synaptics-1.3.99+git20110116.0e27ce3a.orig/src/properties.c 2011-05-28 09:56:48.760036226 +0200 +++ xserver-xorg-input-synaptics-1.3.99+git20110116.0e27ce3a/src/properties.c 2011-05-28 10:01:10.517334207 +0200 @@ -520,12 +520,6 @@ SetProperty(DeviceIntPtr dev, Atom prope return BadValue; para->touchpad_off = off; - if (!checkonly && para->has_led && - para->led_status != para->touchpad_off) { - para->led_status = para->touchpad_off; - if (priv->proto_ops && priv->proto_ops->UpdateLED) - priv->proto_ops->UpdateLED(pInfo); - } } else if (property == prop_led_double_tap) { if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER) Index: xserver-xorg-input-synaptics-1.3.99+git20110116.0e27ce3a/src/synaptics.c =================================================================== --- xserver-xorg-input-synaptics-1.3.99+git20110116.0e27ce3a.orig/src/synaptics.c 2011-05-28 09:56:48.760036226 +0200 +++ xserver-xorg-input-synaptics-1.3.99+git20110116.0e27ce3a/src/synaptics.c 2011-05-28 10:02:22.633691816 +0200 @@ -1162,13 +1162,14 @@ handle_toggle_led(InputInfoPtr pInfo, st } if (priv->led_tapped) { /* double-tapped? */ - diff = TIME_DIFF(priv->led_tap_millis + para->tap_time_2, hw->millis); + diff = TIME_DIFF(priv->led_tap_millis + 400, hw->millis); if (diff >= 0) { para->touchpad_off = !para->touchpad_off; para->led_status = para->touchpad_off; if (priv->proto_ops && priv->proto_ops->UpdateLED) priv->proto_ops->UpdateLED(pInfo); priv->prop_change_pending = 1; + SynapticsToggleOffProperty(pInfo->dev, para->touchpad_off); priv->led_tapped = FALSE; } } else Index: xserver-xorg-input-synaptics-1.3.99+git20110116.0e27ce3a/tools/syndaemon.c =================================================================== --- xserver-xorg-input-synaptics-1.3.99+git20110116.0e27ce3a.orig/tools/syndaemon.c 2011-05-28 10:16:45.538004805 +0200 +++ xserver-xorg-input-synaptics-1.3.99+git20110116.0e27ce3a/tools/syndaemon.c 2011-05-28 10:26:37.172971456 +0200 @@ -110,17 +110,17 @@ static void toggle_touchpad(Bool enable) { unsigned char data; + store_current_touchpad_state(); if (pad_disabled && enable) { - data = previous_state; + data = 0; pad_disabled = False; if (verbose) printf("Enable\n"); } else if (!pad_disabled && !enable && previous_state != disable_state && previous_state != TouchpadOff) { - store_current_touchpad_state(); pad_disabled = True; - data = disable_state; + data = 1; if (verbose) printf("Disable\n"); } else