Files
86Box/src/mouse_prot.txt

208 lines
8.9 KiB
Plaintext

Serial 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.
Serial mouse detection (identification bytes before optional PnP data)
----------------------------------------------------------------------
In Mouse Systems mode, mouse sends nothing.
In Microsoft mode, mouse sends 'M' after dropping and raising RTS.
In Logitech mode, mouse sends 'M3' after dropping and raising RTS.
In wheel mode, mouse sends 'MZ@',0,0,0 after dropping and raising RTS.
PS/2 pointing device ID (reported after 0F2h command)
-----------------------------------------------------
In standard mode, the device reports 0.
In wheel mode, the device reports 3. This mode is enabled by sending a
Select Report Rate 200, a Rate 100 and finally a Rate 80 command sequence.
In extended mode, the device reports 4. This mode is enabled by sending a
Select Report Rate 200, a Rate 200 and finally a Rate 80 command sequence.
===========================================================================
Serial 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 movement Ya movement
| | |
| | | 4th byte 5th byte
Left Button ------+ | | +---------------+ +---------------+
Middle Button --------+ | |X|X|X|X|X|X|X|X| |Y|Y|Y|Y|Y|Y|Y|Y|
Right Button ----------+ +---------------+ +---------------+
(0 if pressed) Xb movement Yb movement
Xa/Ya - movement of the mouse since last packet.
Xb/Yb - movement of the mouse since Xa/Ya.
Movement values are 8-bit signed twos complement integers.
Positive movement value indicates motion to the right/upward.
===========================================================================
Serial 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 ---+ +---------------+ +---------------+
(1 if pressed) X movement Y movement
Movement values are 8-bit signed twos complement integers.
Positive movement value indicates motion to the right/downward.
===========================================================================
Serial Logitech 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 ---+ +---------------+ +---------------+
(1 if pressed) X movement Y movement
The extra byte (only when middle button is pressed)
---------------------------------------------------
4th byte
+---------------+
|0|0|M|0|0|0|0|0|
+---------------+
|
Middle Button (1 if pressed)
First three bytes are equal to Mouse mode packet.
Movement values are 8-bit signed twos complement integers.
Positive movement value indicates motion to the right/downward.
===========================================================================
Serial Microsoft wheel mode: 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|
+---------------+ +---------------+ +---------------+ +---------------+
| | \ / \ / \----+----/ \----+----/ | \--+--/
| | | | | | | |
| | +---|-------------|---------+ | | |
| | +-----+ | | | | Wheel
| | / \ /----+----\ / \ /----+----\ | Movement
| | +---------------+ +---------------+ |
Left Button -+ | | | | | | | | | | | | | | | | | | | |
Right Button ---+ +---------------+ +---------------+ Middle Button
(1 if pressed) X movement Y movement (1 if pressed)
First three bytes are equal to Mouse mode packet.
Movement values are 8-bit signed twos complement integers.
Positive movement value indicates motion to the right/downward.
Wheel movement is a 4-bit signed twos complement integer.
Positive wheel movement value indicates rotation downward.
===========================================================================
PS/2 standard mode protocol:
1st byte 2nd byte 3rd byte
+---------------+ +---------------+ +---------------+
|?|?|Y|X|1|M|R|L| |X|X|X|X|X|X|X|X| |Y|Y|Y|Y|Y|Y|Y|Y|
+---------------+ +---------------+ +---------------+
| | | | | \------+------/ \------+------/
| | | | | | |
+-|---|-|-|----------|-----------+ |
+---|-|-|--+ | | |
| | | | /-----+-------\ | /---+---------\
Middle Button ------+ | | +-----------------+ +-----------------+
Right Button --------+ | | | | | | | | | | | | | | | | | | | | |
Left Button ----------+ +-----------------+ +-----------------+
(1 if pressed) X movement Y movement
Two most significant bits in first byte indicate overflow (more than 9 bits
of movement) in each direction. Usually ignored.
Movement values are 9-bit signed twos complement integers.
Positive movement value indicates motion to the right/upward.
===========================================================================
PS/2 wheel mode protocol:
1st byte 2nd byte 3rd byte 4th byte
+---------------+ +---------------+ +---------------+ +---------------+
|?|?|Y|X|1|M|R|L| |X|X|X|X|X|X|X|X| |Y|Y|Y|Y|Y|Y|Y|Y| |w|w|w|w|W|W|W|W|
+---------------+ +---------------+ +---------------+ +---------------+
| | | | | \------+------/ \------+------/ \-------+-----/
| | | | | | | |
+-|---|-|-|----------|-----------+ | |
+---|-|-|--+ | | | |
| | | | /-----+-------\ | /---+---------\ |
Middle Button ------+ | | +-----------------+ +-----------------+ |
Right Button --------+ | | | | | | | | | | | | | | | | | | | | | |
Left Button ----------+ +-----------------+ +-----------------+ Wheel
(1 if pressed) X movement Y movement Movement
First three bytes are equal to PS/2 standard mode packet.
Two most significant bits in first byte indicate overflow (more than 9 bits
of movement) in each direction. Usually ignored.
Movement values are 9-bit signed twos complement integers.
Positive movement value indicates motion to the right/upward.
Wheel movement is a 8-bit signed twos complement integer and usually
limited by -8..+7 range (4-bit value).
Positive wheel movement value indicates rotation downward.
===========================================================================
PS/2 extended mode protocol:
1st byte 2nd byte 3rd byte 4th byte
+---------------+ +---------------+ +---------------+ +---------------+
|?|?|Y|X|1|M|R|L| |X|X|X|X|X|X|X|X| |Y|Y|Y|Y|Y|Y|Y|Y| |0|0|B|F|W|W|W|W|
+---------------+ +---------------+ +---------------+ +---------------+
| | | | | \------+------/ \------+------/ | | \--+--/
| | | | | | | | | |
+-|---|-|-|----------|-----------+ | | | |
+---|-|-|--+ | | | | | Wheel
| | | | /-----+-------\ | /---+---------\ | | Movement
Middle Button ------+ | | +-----------------+ +-----------------+ | |
Right Button --------+ | | | | | | | | | | | | | | | | | | | | | | +- Forward Button
Left Button ----------+ +-----------------+ +-----------------+ +--- Back Button
(1 if pressed) X movement Y movement (1 if pressed)
First three bytes are equal to PS/2 standard mode packet.
Two most significant bits in first byte indicate overflow (more than 9 bits
of movement) in each direction. Usually ignored.
Movement values are 9-bit signed twos complement integers.
Positive movement value indicates motion to the right/upward.
Wheel movement is a 4-bit signed twos complement integer.
Positive wheel movement value indicates rotation downward.