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