From: Dmitry Torokhov <dtor_core@ameritech.net>

correctly perform PS/2 (mousedev) emulation for touchpads generating
absolute events (do not stop with the first client)



 drivers/input/mousedev.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff -puN drivers/input/mousedev.c~input-mousedev-ps2-emulation-fix drivers/input/mousedev.c
--- 25/drivers/input/mousedev.c~input-mousedev-ps2-emulation-fix	2003-12-25 01:40:22.000000000 -0800
+++ 25-akpm/drivers/input/mousedev.c	2003-12-25 01:40:22.000000000 -0800
@@ -148,14 +148,16 @@ static void mousedev_event(struct input_
 					break;
 
 				case EV_KEY:
+					if (code == BTN_TOUCH && test_bit(BTN_TOOL_FINGER, handle->dev->keybit)) {
+						/* Handle touchpad data */
+						list->touch = value;
+						if (!list->touch)
+							list->pkt_count = 0;
+						break;
+					}
+
 					switch (code) {
-						case BTN_TOUCH: /* Handle touchpad data */
-							if (test_bit(BTN_TOOL_FINGER, handle->dev->keybit)) {
-								list->touch = value;
-								if (!list->touch)
-									list->pkt_count = 0;
-								return;
-							}
+						case BTN_TOUCH:
 						case BTN_0:
 						case BTN_FORWARD:
 						case BTN_LEFT:   index = 0; break;

_