--- syndaemon.c.orig 2011-01-27 04:01:40.000000000 +0200 +++ syndaemon.c 2011-08-20 21:16:26.972795427 +0300 @@ -67,6 +67,7 @@ static Atom touchpad_off_prop; static TouchpadState previous_state; static TouchpadState disable_state = TouchpadOff; +static int isMouse = 0; #define KEYMAP_SIZE 32 static unsigned char keyboard_mask[KEYMAP_SIZE]; @@ -117,7 +118,7 @@ printf("Enable\n"); } else if (!pad_disabled && !enable && previous_state != disable_state && - previous_state != TouchpadOff) { + ( previous_state != TouchpadOff || isMouse) ) { store_current_touchpad_state(); pad_disabled = True; data = disable_state; @@ -457,8 +458,16 @@ int nprops = 0; int error = 0; - touchpad_type = XInternAtom(dpy, XI_TOUCHPAD, True); - touchpad_off_prop = XInternAtom(dpy, SYNAPTICS_PROP_OFF, True); + + if(isMouse){ + touchpad_type = XInternAtom(dpy, XI_MOUSE, True); + touchpad_off_prop = XInternAtom(dpy, "Device Enabled", True); + disable_state = 0; + } else { + touchpad_type = XInternAtom(dpy, XI_TOUCHPAD, True); + touchpad_off_prop = XInternAtom(dpy, SYNAPTICS_PROP_OFF, True); + } + info = XListInputDevices(dpy, &ndevices); while(ndevices--) { @@ -519,7 +528,7 @@ int use_xrecord = 0; /* Parse command line parameters */ - while ((c = getopt(argc, argv, "i:m:dtp:kKR?")) != EOF) { + while ((c = getopt(argc, argv, "i:m:dtp:kKR?vs")) != EOF) { switch(c) { case 'i': idle_time = atof(optarg); @@ -549,6 +558,9 @@ case 'v': verbose = 1; break; + case 's': + isMouse = 1; + break; default: usage(); break; @@ -595,7 +607,11 @@ pad_disabled = False; store_current_touchpad_state(); - + if(previous_state == disable_state){ + pad_disabled=True; + if(isMouse)previous_state=1; + else previous_state=TouchpadOn; + } #ifdef HAVE_X11_EXTENSIONS_RECORD_H if (use_xrecord) {