Re: [PATCH] to "Disable Trackpad while typing" patch

Disconnect (kernel@gotontheinter.net)
20 Jun 2003 12:54:40 -0400


Is this a patch against a patch (instead of against modified pc_keyb.c)
or did the mailer just chew it up badly?

That is exactly the problem I had with that patch; what are the chances
of resending it as an attachment, patched against the modified
pc_keyb.c? That'd seriously speed its integration with -dis5 ;)

On Fri, 2003-06-20 at 12:18, Torsten Foertsch wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> see http://marc.theaimsgroup.com/?l=linux-kernel&m=105182586512456&w=2
>
> I have encountered problems with that patch. If the mouse is sending events
> while the delay timeout is being reached X11 reports spurious mouse events.
> I.e. you are moving the mouse continuously after hitting a key. My mouse
> often jumps to the right upper corner of the screen and reports some clicks
> there.
>
> Mouse events consist of sequences of 3-4 bytes (normal PS/2 mouses 3 bytes,
> wheel mouses 4 bytes) see
> http://panda.cs.ndsu.nodak.edu/%7Eachapwes/PICmicro/mouse/mouse.html
>
> But with the original patch the first accepted bytes after the timeout can be
> out of that order. So, X11 reads the 2nd or 3rd byte of the actual mouse
> movement as 1st byte.
>
> The patch below implements 2 solutions for the problem:
>
> 1. If TRACKPAD_RESET_IF_ACTIVITY_DURING_DELAY is defined it sends a RESET
> command to the mouse after the timeout if there were mouse events during the
> delay interval.
>
> 2. If TRACKPAD_RESET_IF_ACTIVITY_DURING_DELAY is not defined it skips chunks
> of 3*4=12 bytes of mouse input.
>
> I am not certain what the "right" solution is. Case 2 is the better one in my
> opinion because after a RESET even a wheel mouse will be in "normal" mode
> sending 3 bytes per event. Further case 2 seems to be more responsive.
>
> Torsten
>
> - --- drivers/char/pc_keyb.c.orig 2003-06-20 08:10:41.000000000 +0000
> +++ drivers/char/pc_keyb.c 2003-06-20 15:45:01.000000000 +0000
> @@ -18,6 +18,9 @@
> * notebooks with a PS/2 trackpad.
> * Hans-Georg Thien <1682-600@onlinehome.de> 2003-04-30.
> *
> + * Improvements to the "disable trackpad while typing" feature.
> + * Torsten Förtsch <torsten.foertsch@gmx.net> 2003-06-20.
> + *
> */
>
> #include <linux/config.h>
> @@ -109,6 +112,11 @@
>
> #ifdef CONFIG_DISABLE_TRACKPAD_WHILE_TYPING
>
> +# ifdef TRACKPAD_RESET_IF_ACTIVITY_DURING_DELAY
> +static int trackpad_activity_during_delay = 0;
> +# else
> +static int trackpad_skipped_events = 0;
> +# endif
> static int last_kbd_event = 0; /* timestamp of last kbd event */
> static int last_kbd_scancode = 0;
> static int trackpad_disable = 0;
> @@ -566,7 +574,12 @@
> mouse_reply_expected = 0;
> }
> else if(scancode == AUX_RECONNECT2 && prev_code == AUX_RECONNECT1
> - - && aux_reconnect) {
> +# ifdef TRACKPAD_RESET_IF_ACTIVITY_DURING_DELAY
> + && (aux_reconnect||trackpad_activity_during_delay)
> +# else
> + && aux_reconnect
> +# endif
> + ) {
> printk (KERN_INFO "PS/2 mouse reconnect detected\n");
> queue->head = queue->tail = 0; /* Flush input queue */
> __aux_write_ack(AUX_ENABLE_DEV); /* ping the mouse :) */
> @@ -577,8 +590,25 @@
> if (trackpad_disable) return;
>
> if (!test_bit(last_kbd_scancode, trackpad_escape)) {
> - - /* do nothing if time since last kbd event is less then
> trackpad_delay */
> - - if (abs(jiffies - last_kbd_event) < trackpad_delay) return;
> + /* do nothing if time since last kbd event is less then trackpad_delay */
> +# ifdef TRACKPAD_RESET_IF_ACTIVITY_DURING_DELAY
> + if (abs(jiffies - last_kbd_event) < trackpad_delay) {
> + trackpad_activity_during_delay=1;
> + return;
> + }
> + if( trackpad_activity_during_delay ) {
> + trackpad_activity_during_delay=0;
> + aux_write_ack(AUX_RESET);
> + return;
> + }
> +# else
> + if (abs(jiffies - last_kbd_event) < trackpad_delay ||
> + trackpad_skipped_events%12) {
> + trackpad_skipped_events++;
> + return;
> + }
> + trackpad_skipped_events=0;
> +# endif
> }
> #endif
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.0.7 (GNU/Linux)
>
> iD8DBQE+8zPgwicyCTir8T4RAnK4AJ47UCVKgWHl9lBCbgXxTQFa96wkhgCfSxLj
> g4kfxOe+q3hpCzaqkm4m2Cg=
> =8/AI
> -----END PGP SIGNATURE-----
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/