summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc/mouse/README
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libmisc/mouse/README')
-rw-r--r--cpukit/libmisc/mouse/README214
1 files changed, 214 insertions, 0 deletions
diff --git a/cpukit/libmisc/mouse/README b/cpukit/libmisc/mouse/README
new file mode 100644
index 0000000000..ab684a6d0b
--- /dev/null
+++ b/cpukit/libmisc/mouse/README
@@ -0,0 +1,214 @@
+#
+# $Id$
+#
+
+SOURCE: http://www.kryslix.com/nsfaq/Q.12.html
+
+Subject: What protocol do mice use?
+Date: 09/16/97
+Updated: 11/16/00 This document was adapated from a web page produced by
+Tomi Engdahl <then@delta.hut.fi>
+Microsoft serial mouse
+Description
+
+The Microsoft serial mouse is the most popular 2 button mouse. It is
+supported by all major operating systems. The maximum tracking rate for
+a Microsoft mouse is 40 reports/second * 127 counts per report, in other
+words, 5080 counts per second. The most common range for mice is is 100
+to 400 CPI (counts per inch) but can be up to 1000 CPI. A 100CPI mouse
+can discriminate motion up to 50.8 inches/second while a 400 CPI mouse
+can only discriminate motion up to 12.7 inches/second.
+Pinout
+
+9 pin 25 pin Line Comments
+shell 1 GND
+3 2 TD Serial data from host to mouse (only for power)
+2 3 RD Serial data from mouse to host
+7 4 RTS Positive voltage to mouse
+8 5 CTS
+6 6 DSR
+5 7 SGND
+4 20 DTR Positive voltage to mouse and reset/detection
+
+RTS = Request to Send CTS = Clear to Send
+DSR = Data Set Ready DTR = Data Terminal Ready
+GND = Protective Ground SGND = Signal Ground
+
+To function correctly, both the RTS and DTR lines must be
+positive. DTR/DSR and RTS/CTS must NOT be shorted. RTS may be toggled
+negative for at least 100ms to reset the mouse. (After a cold boot, the
+RTS line is usually negative. This provides an automatic toggle when
+RTS is brought positive). When DTR is toggled the mouse should send a
+single byte 0x45 (ASCII 'M').
+
+Serial data parameters:
+1200bps, 7 databits, 1 stop-bit
+
+Data packet format:
+
+Data is sent in 3 byte packets for each event (a button is pressed or
+released or the mouse moves):
+
+ D7 D6 D5 D4 D3 D2 D1 D0
+
+Byte 1 X 1 LB RB Y7 Y6 X7 X6
+Byte 2 X 0 X5 X4 X3 X2 X1 X0
+Byte 3 X 0 Y5 Y4 Y3 Y2 Y1 Y0
+
+LB is the state of the left button (1 means down)
+RB is the state of the right button (1 means down)
+X7-X0 movement in X direction since last packet (signed byte)
+Y7-Y0 movement in Y direction since last packet (signed byte)
+
+The high order bit of each byte (D7) is ignored. Bit D6 indicates the start of an event, which allows the software to synchronize with the mouse.
+
+Graphical representation of a packet
+
+ 1st byte 2nd byte 3rd byte
+ ================ =============== ================
+ - 1 ? ? Y Y X X - 0 X X X X X X - 0 Y Y Y Y Y Y
+ ================ =============== ================
+ | | \ / \ / \---------/ \---------/
+ | | | | | |
+ | | | \----\ | |
+ | | \--------|-------|--------\ |
+ | | / \ /---------\ / \ /---------\
+ | | ================ =================
+ | | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ Left Button --/ | ================ =================
+Right Button ----/ X increment Y increment
+
+3 Button Logitech extension
+
+Logitech extended the 2 button mouse protocol to support 3 button mice
+by adding a 4th byte when the middle button is pressed (and the first
+packet after it is released). If a 4th byte is encountered (i.e., an
+extra byte with D6 set to 0) then D5 of that byte (0x20) indicates the
+status of the middle mouse button.
+
+Mouse systems mouse
+
+Serial data parameters:
+
+1200bps, 8 databits, 1 stop-bit
+
+5 byte Mouse Systems packet
+
+ D7 D6 D5 D4 D3 D2 D1 D0
+
+Byte 1 1 0 0 0 0 LB CB RB
+Byte 2 X7 X6 X5 X4 X3 X2 X1 X0
+Byte 3 Y7 Y6 Y5 Y4 Y3 Y4 Y1 Y0
+Byte 4 X7' X6' X5' X4' X3' X2' X1' X0'
+Byte 5 Y7' Y6' Y5' Y4' Y3' Y4' Y1' Y0'
+
+LB is left button state (0=pressed, 1=released)
+CB is center button state (0=pressed, 1=released)
+RB is right button state (0=pressed, 1=released)
+X7-X0 movement in X direction since last packet in signed byte
+ format (-128..+127), positive direction right
+Y7-Y0 movement in Y direction since last packet in signed byte
+ format (-128..+127), positive direction up
+X7'-X0' movement in X direction since sending of X7-X0 packet in signed byte
+ format (-128..+127), positive direction right
+Y7'-Y0' movement in Y direction since sending of Y7-Y0 in signed byte
+ format (-128..+127), positive direction up
+
+The last two bytes in the packet (bytes 4 and 5) contain information
+about movement data changes which have occured after data bytes 2 and
+3 have been sent.
+
+PS/2 mouse
+
+The standard PS/2 mouse (such as the Logitech mouse) defaults to 160 CPI
+and can be switched to 40, 80, 160 or 320 CPI via software. The Microsoft
+mouse driver for Windows 3.x and Windows 95 defaults to 160 counts per
+inch. The maximum tracking rate for PS/2 mouse is 40 reports/second *
+255 counts per report, or 10200 counts per second. A 100 CPI mouse could
+discriminate motion up to 102 inches per second while a 400 CPI mouse
+could discriminate motion up to 25.2 inches per second.
+
+Connector pinout
+
+Pin Wire Name
+1 DATA
+2 Reserved
+3 Ground
+4 +5V Supply
+5 CLK
+6 Reserved
+Shield Chassis
+
+Packet Format
+
+ D7 D6 D5 D4 D3 D2 D1 D0
+Byte 1 XV XV YS XS 1 M R L
+Byte 2 X7 X6 X5 X4 X3 X2 X1 X0
+Byte 3 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
+
+L Left button state (1 = pressed down)
+M Middle button state (1 = pressed down)
+R Right button state (1 = pressed down)
+X0-X7 Movement in X direction
+Y0-Y7 Movement in Y direction
+XS,YS Movement data sign bits (1 = negative)
+XV,YV Movement data overflow bits (1 = overflow has occured)
+
+Physical connector
+
+The PS/2 mouse connector has the following pinout when looking at the
+connector on the back of the computer:
+
+ 4 u 6
+ 1 . 2
+ 3 5
+
+1. GND
+2. +5V
+3. DATA
+4. CLOCK
+5. Not used
+6. Not used
+
+Bi-directional transmission is controlled by the CLK and DATA lines. Both
+are fed by an open collector device which lets either host or mouse force
+the line to "0". During non-transmission, CLK is at "1" and DATA can be at
+"0" or "1".
+
+The host can inhibit mouse transmission by forcing CLK to "0". If the
+host inhibits the mouse while it is transmitting, the byte must be
+retransmitted (if the inhibit state arrived before the 11th clock).
+
+Receiving data: Check 'clock'. If inactive, there is a bit on the 'data'
+line. Each transmission unit is one start bit, eight data bits, odd
+parity and one stop bit. Start bits are low, stop bits high. Each clock
+active or inactive period is 30 to 50 microseconds. Data transition to
+falling edge of clock is 5 to 25 microseconds.
+
+Sending: Check that both clock and data are high. Pull down data for
+start bit, and start clocking.
+
+NOTE: Logitech has made the extension to this protocol to allow three
+buttons (the M bit is always 0 on 2 button mice).
+
+References
+
+* Original PC mouse info page by Tomi Engdahl
+ http://www.hut.fi/~then/mytexts/mouse.html
+
+* PC Magazine May 28, 1991
+
+* Programmer's Reference to Genius Mouse
+ ftp://x2ftp.oulu.fi/pub/msdos/programming/docs/gmouse.doc
+
+* Logitech Pointing Device Hardware Information Product Support Document # 1410
+ ftp://ftp.logitech.com/pub/TechSupport/MOUSE/HELP/1410.txt
+
+* Mice: How do they work? by Richard Torrens
+ http://box.argonet.co.uk/users/4qd/meece.html
+
+* In Pursuit Of The Perfect Portable Pointer by Intelink Electronics
+from EDN Products Edition April 16, 1977 pages 43-45
+
+* Programming the Microsoft Mouse
+ http://www.geocities.com/SiliconValley/2151/mouse.html