Index: ams-0.03/ams.c
===================================================================
--- ams-0.03.orig/ams.c	2006-05-18 19:30:31.000000000 -0300
+++ ams-0.03/ams.c	2006-05-18 19:34:00.000000000 -0300
@@ -205,15 +205,23 @@
 
 static int ams_mouse_kthread(void *data)
 {
-	s8 x, y, z;
+	s8 x, y, z, oldx, oldy;
+
+	oldx = oldy = 0;
 
 	while (!kthread_should_stop()) {
 		ams_sensors(&x, &y, &z);
 
-		input_report_abs(ams.idev, ABS_X, x - ams.xcalib);
-		input_report_abs(ams.idev, ABS_Y, y - ams.ycalib);
-
-		input_sync(ams.idev);
+		if (oldx != x)
+			input_report_abs(ams.idev, ABS_X, x - ams.xcalib);
+		if (oldy != y)
+			input_report_abs(ams.idev, ABS_Y, y - ams.ycalib);
+
+		if (oldx != x || oldy != y) {
+			oldx = x;
+			oldy = y;
+			input_sync(ams.idev);
+		}
 
 		msleep(25);
 	}

