--- /usr/src/linux-2.4.20/Documentation/Configure.help Fri Nov 29 00:53:08 2002 +++ /usr/src/linux/Documentation/Configure.help Thu May 1 02:12:04 2003 @@ -17752,6 +17752,16 @@ ) solves this problem, or you can get the "mconv2" utility from . +Disable trackpad while typing +CONFIG_DISABLE_TRACKPAD_WHILE_TYPING + For people with a notebook that have a build in trackpad. + + It prevents unintended mouse moves and mouse taps while typing on + the notebook keyboard. + + The majority of notebooks on the market have a PS/2 trackpad. + So you will probably say "Y" if you have a notebook with a trackpad. + C&T 82C710 mouse port support (as on TI Travelmate) CONFIG_82C710_MOUSE This is a certain kind of PS/2 mouse used on the TI Travelmate. If --- /usr/src/linux-2.4.20/drivers/char/Config.in Fri Nov 29 00:53:12 2002 +++ /usr/src/linux/drivers/char/Config.in Thu May 1 02:30:45 2003 @@ -170,6 +170,13 @@ tristate 'Mouse Support (not serial and bus mice)' CONFIG_MOUSE if [ "$CONFIG_MOUSE" != "n" ]; then bool ' PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE + + if [ "$CONFIG_PSMOUSE" = "y" ] + then + bool ' Disable Trackpad while typing on Notebooks' CONFIG_DISABLE_TRACKPAD_WHILE_TYPING + fi + + tristate ' C&T 82C710 mouse port support (as on TI Travelmate)' CONFIG_82C710_MOUSE tristate ' PC110 digitizer pad support' CONFIG_PC110_PAD tristate ' MK712 touch screen support' CONFIG_MK712_MOUSE --- /usr/src/linux-2.4.20/drivers/char/pc_keyb.c Fri Nov 29 00:53:12 2002 +++ /usr/src/linux/drivers/char/pc_keyb.c Fri May 9 15:17:45 2003 @@ -13,6 +13,11 @@ * Code fixes to handle mouse ACKs properly. * C. Scott Ananian 1999-01-29. * + * Implemented the "disable trackpad while typing" feature. This prevents + * unintended mouse moves and mouse taps while typing on the keyboard on + * notebooks with a PS/2 trackpad. + * Hans-Georg Thien <1682-600@onlinehome.de> 2003-04-30. + * */ #include @@ -67,6 +72,11 @@ static void aux_write_ack(int val); static void __aux_write_ack(int val); static int aux_reconnect = 0; + +#ifdef CONFIG_DISABLE_TRACKPAD_WHILE_TYPING +static int last_kbd_event = 0; /* used to hold timestamp of last kbd event */ +#endif + #endif #ifndef kbd_controller_present @@ -449,6 +459,11 @@ return; } +#ifdef CONFIG_DISABLE_TRACKPAD_WHILE_TYPING + /* do nothing if time since last kbd event is less then 1Sec */ + if ( abs(jiffies - last_kbd_event) < HZ ) return; +#endif + prev_code = scancode; add_mouse_randomness(scancode); if (aux_count) { @@ -469,6 +484,17 @@ static inline void handle_keyboard_event(unsigned char scancode) { + +#ifdef CONFIG_DISABLE_TRACKPAD_WHILE_TYPING + static unsigned char prev_scancode=0; + + if (scancode != prev_scancode) + { + last_kbd_event = jiffies; + prev_scancode=scancode; + } +#endif + #ifdef CONFIG_VT kbd_exists = 1; if (do_acknowledge(scancode))