Hi,

I am running 2.6.18.5 with mactel-linux patches on a new 17" MacBook Pro (Core2Duo version). The appletouch driver behaves very unprecise. Mainly the ATP_THRESHOLD 5 is too high. If you touch the pad too gently it would ignore the touch. 3 is a better value. It also makes the finger movement unprecise. The 17" book has a wide touchpad. The driver ignores the additional sensors of the pad, making it even more unprecise. Another annoying behaviour is that the cursor jumps when you tap with two fingers. It does that because the driver tries to slowly move towards the new position starting from the last known position. No idea why this logic was inserted. I removed it without noticing any disadvantage. Find my patch attached or on http://www.odi.ch/prog/macbookpro/

Cheers

Ortwin
--- linux/drivers/usb/input/appletouch.c.orig   2007-01-08 22:55:19.000000000 
+0100
+++ linux/drivers/usb/input/appletouch.c        2007-01-08 22:55:42.000000000 
+0100
@@ -47,6 +47,10 @@
 #define GEYSER3_ISO_PRODUCT_ID 0x0218
 #define GEYSER3_JIS_PRODUCT_ID 0x0219
 
+#define GEYSER4_ANSI_PRODUCT_ID 0x021A
+#define GEYSER4_ISO_PRODUCT_ID 0x021B
+#define GEYSER4_JIS_PRODUCT_ID 0x021C
+
 #define ATP_DEVICE(prod)                                       \
        .match_flags = USB_DEVICE_ID_MATCH_DEVICE |             \
                       USB_DEVICE_ID_MATCH_INT_CLASS |          \
@@ -72,6 +76,10 @@
        { ATP_DEVICE(GEYSER3_ISO_PRODUCT_ID) },
        { ATP_DEVICE(GEYSER3_JIS_PRODUCT_ID) },
 
+       { ATP_DEVICE(GEYSER4_ANSI_PRODUCT_ID) },
+       { ATP_DEVICE(GEYSER4_ISO_PRODUCT_ID) },
+       { ATP_DEVICE(GEYSER4_JIS_PRODUCT_ID) },
+
        /* Terminating entry */
        { }
 };
@@ -106,7 +114,7 @@
  * Threshold for the touchpad sensors. Any change less than ATP_THRESHOLD is
  * ignored.
  */
-#define ATP_THRESHOLD   5
+#define ATP_THRESHOLD   3
 
 /* MacBook Pro (Geyser 3) initialization constants */
 #define ATP_GEYSER3_MODE_READ_REQUEST_ID 1
@@ -174,7 +182,10 @@
 
        return (productId == GEYSER3_ANSI_PRODUCT_ID) ||
                (productId == GEYSER3_ISO_PRODUCT_ID) ||
-               (productId == GEYSER3_JIS_PRODUCT_ID);
+               (productId == GEYSER3_JIS_PRODUCT_ID) ||
+               (productId == GEYSER4_ANSI_PRODUCT_ID) ||
+               (productId == GEYSER4_ISO_PRODUCT_ID) ||
+               (productId == GEYSER4_JIS_PRODUCT_ID);
 }
 
 static int atp_calculate_abs(int *xy_sensors, int nb_sensors, int fact,
@@ -311,8 +322,8 @@
                dev->x_old = dev->y_old = -1;
                memcpy(dev->xy_old, dev->xy_cur, sizeof(dev->xy_old));
 
-               if (atp_is_geyser_3(dev)) /* No 17" Macbooks (yet) */
-                       goto exit;
+//             if (atp_is_geyser_3(dev)) /* No 17" Macbooks (yet) */
+//             goto exit;
 
                /* 17" Powerbooks have extra X sensors */
                for (i = (atp_is_geyser_2(dev)?15:16); i < ATP_XSENSORS; i++) {
@@ -357,8 +368,8 @@
 
        if (x && y) {
                if (dev->x_old != -1) {
-                       x = (dev->x_old * 3 + x) >> 2;
-                       y = (dev->y_old * 3 + y) >> 2;
+//                     x = (dev->x_old * 3 + x) >> 2;
+//                     y = (dev->y_old * 3 + y) >> 2;
                        dev->x_old = x;
                        dev->y_old = y;
 
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Mactel-linux-devel mailing list
Mactel-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mactel-linux-devel

Reply via email to