*** linux-2.6.23-rc7/drivers/input/mouse/appletouch.c 2007-09-20 01:01:13.000000000 +0200 --- linux/drivers/input/mouse/appletouch.c 2007-09-22 18:26:29.000000000 +0200 *************** *** 469,474 **** --- 469,477 ---- y = atp_calculate_abs(dev->xy_acc + ATP_XSENSORS, ATP_YSENSORS, ATP_YFACT, &y_z, &y_f); + int key= dev->data[dev->datalen - 1] & 1; + input_report_key(dev->input, BTN_LEFT, key); + if (x && y) { if (dev->x_old != -1) { x = (dev->x_old * 3 + x) >> 2; *************** *** 505,511 **** the first touch unless reinitialised. Do so if it's been idle for a while in order to avoid waking the kernel up several hundred times a second */ ! if (atp_is_geyser_3(dev)) { dev->idlecount++; if (dev->idlecount == 10) { dev->valid = 0; --- 508,514 ---- the first touch unless reinitialised. Do so if it's been idle for a while in order to avoid waking the kernel up several hundred times a second */ ! if (atp_is_geyser_3(dev) && (!key)) { dev->idlecount++; if (dev->idlecount == 10) { dev->valid = 0; *************** *** 514,520 **** } } - input_report_key(dev->input, BTN_LEFT, dev->data[dev->datalen - 1] & 1); input_sync(dev->input); exit: --- 517,522 ----