How to check for a mouse and disable the trackpad

So I love my new massive desktop replacement of a laptop.  It’s fast, has plenty of RAM (for now at least), and plenty of Cores.  But it suffers from some of the same old issues every other laptop with a touchpad causes me.  When typing, it occasionally causes my cursor to end up in really strange places on my screen which results in messed up words or variable names.  On my MacBook Pro and in Windows I could disable the touchpad as soon as a mouse was connected.  I spent days trying to find the same settings on Linux and then ran across a few articles written by people who just wanted to turn off the trackpad for good.  That sounds good until you forget your mouse at home.  So I decided I needed to write my own script.  In a mere 38 lines(without comments) I came up with a script that looked to see if my mouse was connected and if so disable the trackpad.  If the mouse disappears or is removed the trackpad is re-enabled within 30 second.  If you want to use this script you will want to do a few things first:

  1. remove your mouse
  2. run “xinput list” determine what the system thinks your trackpad is called 
  3. plug-in the external mouse/pointer
  4. run “xinput list” again and determine what the system thinks it’s name is

My trackpad comes up as a ALPS GlidePoint.  If yours is different, which it likely will be, then you need to replace ‘ALPS GlidePoint’ in line 5 with the name of your trackpad.  If it is the same name then you don’t have to do anything with line 5.

My mouse comes up as ‘Logitech USB Receiver’ cause that sounds like a mouse right?  Well it is really the name of the wireless receiver for my mouse.  I shorted the name to just ‘USB Receiver’ in the hopes that any future wireless mice I may buy will use that part of the same name.  (Yeah I know there is about a 0% chance of that happening but I can dream can’t I?)  If yours is different, which like above it likely probably be, replace ‘USB Receiver’ in line 6 below.  If it’s the same then you don’t have to do anything with line 6.

The complete script can be found at this link.

One thing I did above that you may want to try in your scripts was to use the logger command instead of echo.  Logger uses the syslog subsystem and lets you write whatever you want to the default log for syslog.  Where to write is of course configurable if you need it to go somewhere else.  A word of warning though, logger will not move on if there is nothing to log.  It freezes and waits for you.  So like I did above, check to see if there is something in the variable before using it with logger.  Logger is available on most *nix versions.  If it’s missing you can normally find it as part of a syslog related package.


Brian Wagner

Brian started working with *nix in while a student at Kent State University in the early 90's. In 1995, as an E-Mail Administrator for Caliber Technology (now part of Fedex) he was tasked with administering Sendmail on both Slackware Linux and Solaris Systems. His first home install of Linux was MkLinux DR1 in 1996 on his 60 Mhz PowerMac. Since then Brian has been working and consulting on Linux and it's uses in the Enterprise to support everything from E-Mail, Firewalls, Web and File serving to custom cluster solutions and grid solutions. Brian has had the opportunity to work in both Fortune 500 companies and small 2 person organizations. This has given him the unique insight into the differences every size business faces.