--- psmouse-base.c.orig 2004-06-16 07:19:01.000000000 +0200 +++ psmouse-base.c 2004-08-03 17:21:24.948668832 +0200 @@ -418,28 +418,36 @@ /* * Try Synaptics TouchPad */ - if (max_proto > PSMOUSE_PS2 && synaptics_detect(psmouse)) { - synaptics_hardware = 1; - - if (set_properties) { - psmouse->vendor = "Synaptics"; - psmouse->name = "TouchPad"; - } - - if (max_proto > PSMOUSE_IMEX) { - if (!set_properties || synaptics_init(psmouse) == 0) - return PSMOUSE_SYNAPTICS; + if (max_proto > PSMOUSE_PS2) { + if (synaptics_detect(psmouse)) { + synaptics_hardware = 1; + + if (set_properties) { + psmouse->vendor = "Synaptics"; + psmouse->name = "TouchPad"; + } + + if (max_proto > PSMOUSE_IMEX) { + if (!set_properties || synaptics_init(psmouse) == 0) + return PSMOUSE_SYNAPTICS; /* * Some Synaptics touchpads can emulate extended protocols (like IMPS/2). * Unfortunately Logitech/Genius probes confuse some firmware versions so * we'll have to skip them. */ - max_proto = PSMOUSE_IMEX; - } + max_proto = PSMOUSE_IMEX; + } /* * Make sure that touchpad is in relative mode, gestures (taps) are enabled */ - synaptics_reset(psmouse); + synaptics_reset(psmouse); + } else { +/* + * Reset mouse if synaptics detect failed (KVM switch problem) + */ + psmouse_reset(psmouse); + psmouse_command(psmouse, NULL, PSMOUSE_CMD_RESET_DIS); + } } if (max_proto > PSMOUSE_IMEX && genius_detect(psmouse)) { @@ -459,6 +467,10 @@ int type = ps2pp_init(psmouse, set_properties); if (type > PSMOUSE_PS2) return type; + else { + psmouse_reset(psmouse); + psmouse_command(psmouse, NULL, PSMOUSE_CMD_RESET_DIS); + } } if (max_proto >= PSMOUSE_IMEX && im_explorer_detect(psmouse)) { @@ -589,12 +601,6 @@ psmouse_set_resolution(psmouse); psmouse_command(psmouse, NULL, PSMOUSE_CMD_SETSCALE11); } - -/* - * We set the mouse into streaming mode. - */ - - psmouse_command(psmouse, param, PSMOUSE_CMD_SETSTREAM); } /*