Mouse reset:
------------
  1: Set UART to 'break line' state (set bit 6 in the LCR)
  2: Clear the RTS and DTR (bits 0-1) in the MCR, wait a while
  3: Set the RTS and DTR bits again

Mouse detection (identification bytes before optional PNP data):
----------------------------------------------------------------
  Microsoft mice send 'M' after dropping and raising RTS
  Logitech mice send 'M3' after dropping and raising RTS
  Microsoft Intellimouse/Wheel mice send 'MZ@',0,0,0 after
	dropping and raising RTS

===========================================================================
Microsoft mode: 1200 bps, 7 data bits, 1 stop bit, no parity

	      1st byte		2nd byte	  3rd byte
	 +---------------+ +---------------+ +---------------+
	 |0|1|L|R|Y|Y|X|X| |0|0|X|X|X|X|X|X| |0|0|Y|Y|Y|Y|Y|Y|
	 +---------------+ +---------------+ +---------------+
	      | | \ / \ /	\----+----/	  \----+----/
	      | |  |   |	     |		       |
	      | |  +---|-------------|---------+       |
	      | |      +-----+	     |	       |       |
	      | |	    / \ /----+----\   / \ /----+----\
	      | |	   +---------------+ +---------------+
	      | |	   | | | | | | | | | | | | | | | | | |
 Left Button -+ |	   +---------------+ +---------------+
Right Button ---+	      X increment	Y increment
 (1 if pressed)

The X and Y increment values are in 2's compliment signed char format.

===========================================================================
Microsoft IntelliMouse: 1200 bps, 7 data bits, 1 stop bit, no parity

	      1st byte		2nd byte	  3rd byte	    4th byte
	 +---------------+ +---------------+ +---------------+ +---------------+
	 |0|1|L|R|Y|Y|X|X| |0|0|X|X|X|X|X|X| |0|0|Y|Y|Y|Y|Y|Y| |0|0|0|M|w|w|w|w|
	 +---------------+ +---------------+ +---------------+ +---------------+
	      | | \ / \ /	\----+----/	  \----+----/	      | \--+--/
	      | |  |   |	     |		       |	      |	   |
	      | |  +---|-------------|---------+       |      Middle -+	   |
	      | |      +-----+	     |	       |       |      Button	   |
	      | |	    / \ /----+----\   / \ /----+----\		   |
	      | |	   +---------------+ +---------------+		   |
	      | |	   | | | | | | | | | | | | | | | | | |		 Wheel
 Left Button -+ |	   +---------------+ +---------------+		Movement
Right Button ---+	      X increment	Y increment
 (1 if pressed)

The X and Y increment values are in 2's compliment signed char format.

===========================================================================
Logitech MouseMan mode: 1200 bps, 7 data bits, 1 stop bit, no parity

  3 bytes (left or right button is pressed):
  ------------------------------------------

	      1st byte		2nd byte	  3rd byte
	 +---------------+ +---------------+ +---------------+
	 |0|1|L|R|Y|Y|X|X| |0|0|X|X|X|X|X|X| |0|0|Y|Y|Y|Y|Y|Y|
	 +---------------+ +---------------+ +---------------+
	      | | \ / \ /	\----+----/	  \----+----/
	      | |  |   |	     |		       |
	      | |  +---|-------------|---------+       |
	      | |      +-----+	     |	       |       |
	      | |	    / \ /----+----\   / \ /----+----\
	      | |	   +---------------+ +---------------+
	      | |	   | | | | | | | | | | | | | | | | | |
 Left Button -+ |	   +---------------+ +---------------+
Right Button ---+	      X increment	Y increment
 (1 if pressed)

  The extra byte (when middle button is pressed):
  -----------------------------------------------

			     4th byte
			+---------------+
			|0|0|M|0|0|0|0|0|
			+---------------+
			     |
			Middle button

===========================================================================
Mouse Systems mode: 1200 bps, 8 data bits, 1 stop bit, no parity

	     1st byte	       2nd byte 	 3rd byte
	+---------------+ +---------------+ +---------------+
	|1|0|0|0|0|L|M|R| |X|X|X|X|X|X|X|X| |Y|Y|Y|Y|Y|Y|Y|Y|
	+---------------+ +---------------+ +---------------+
		   | | |   \------+------/   \------+------/
		   | | |	  |		    |
		   | | |     Xa increment      Ya increment
		   | | |
		   | | |       4th byte 	 5th byte
		   | | |  +---------------+ +---------------+
     Left Button --+ | |  |X|X|X|X|X|X|X|X| |Y|Y|Y|Y|Y|Y|Y|Y|
   Middle Button ----+ |  +---------------+ +---------------+
    Right Button ------+   \------+------/   \------+------/
     (0 if pressed)		  |		    |
			     Xb increment      Yb increment

Note: Mouse Systems mouse sends two independent bytes for each direction
in each packet.

Xa/Ya - movement of the mouse since last packet (+ right/up)
Xb/Yb - movement of the mouse since Xa/Ya
