A computer mouse is a small device that comes standard with most modern computers. It is a type of pointing device, or something used to move a cursor around a computer screen, usually as part of the desktop metaphor. It is usually a small plastic device the right size to fit into the palm of your hand.

The man credited with inventing the computer mouse is Doug Engelbart, who had more than a little to do with defining how we use computers today. He first demonstrated the device (called, at the time, an "X-Y Position Indicator for a Display System") at a computer conference in San Francisco in 1968.

Xerox's Palo Alto Research Center, or PARC, would later develop the Alto personal computer in 1973, but never release it commercially. It featured a mouse, along with the graphical user interface to support it.

Apple Computer released the first commercial computer that used a mouse in 1983 with the Apple Lisa. However, this first try was a little too expensive for most businesses, and Apple's second try, 1984's Macintosh, was far more successful (and much cheaper). It showed the world that the mouse could be used to make computing easier for the general public. Microsoft, the maker of MS-DOS, the dominant operating system for PC's, would follow up with its own GUI the next year. Today, practically every desktop computer made uses a mouse.


The most common type of mouse has a small rubber ball on the bottom. When the mouse is moved over a flat, horizontal surface (usually a mouse pad), the ball turns two wheels inside the device. The wheels are at right angles to one another, and their direction and speed of rotation are transmitted via a cable (usually with a PS/2 connector, though sometimes with USB or serial) to the computer, which translates this information into the cursor's location on the screen. On the top of the mouse are one or more buttons. Macintosh computers usually have one button, and PC's used to mostly have two. Newer mice for PC's have a wheel between the two buttons which can act as a third button when pressed down upon. Some mice simply have three or more buttons (and sometimes a wheel in addition to the additional buttons).

A slightly less-common type of mouse is an optical mouse. The old version of these used a laser on the bottom and a special reflective mouse pad with a fixed grid on it. The laser would reflect off the pad and be recieved into a sensor. The grid on the pad would break the laser when the mouse passed over it, thus allowing it to detect movement. However, these mice were not very reliable and would get confused if you moved it too fast.

The modern versions use a small digital camera on the bottom of the mouse with a small light. This camera takes relatively high resolution pictures at a high rate of speed, comparing each picture to the next and generating movement information from the result. These mice fix the problem of the rubber ball on conventional mice getting dirty and gumming up the works, but tend to get confused in things like FPS games, where the mouse is moved in many different directions very quickly.

The two most important things when purchasing a mouse are, of course, the mouse and the mouse pad. You get what you pay for. Cheap mice will wear out quickly, but a decent mouse will last you forever. In my personal experience, Microsoft mice have a horrible track record, but Logitech mice work pretty well. Also, don't get mouse pads with cloth covers. These tend to gather and cling to dirt, which then gets caught in the mouse ball. A better solution is a pad with a soft plastic top. Of course, there are also the aforementioned optical mice, which completely remove the need for a mouse pad and tend to last longer. They are, on the other hand, a little more spendy for a decent model.

One common alternative to a mouse is a trackball, which is essentially an upside-down mouse with a larger ball.


Sources:
http://web.mit.edu/invent/www/inventorsA-H/engelbart.html
http://www.parc.xerox.com/company/history/
http://www.blinkenlights.com/pc.shtml
http://www.apple-history.com/lisa.html