Compatibility of Type 2 Pointing Devices with MS IntelliMouse
Updated: December 4, 2001
This article explains the operation of Microsoft IntelliMouse-compatible devices connected to PS/2-compatible mouse ports and describes the packet formats for Microsoft IntelliMouse Explorer pointing devices with IntelliEye optical tracking technology. It also explains how to ensure that hardware such as a Type 2 internal pointing device can be compatible with IntelliMouse devices. This information is provided to help vendors create compatible devices.
IntelliMouse pointing devices include a wheel control that is both a wheel and a button. The wheel features discrete, evenly spaced notches. As you rotate the wheel, a wheel message is sent as each notch is encountered. The wheel button operates as a typical middle (third) button with the Microsoft Windows operating systems. When you press the wheel button, a middle-button message in Windows is sent. The wheel is unbounded; it can be rotated continuously in either direction. That means input received from it is relative. Accordingly, the message generated by rotating the wheel provides a plus or minus value that corresponds to the amount of rotation.
Using the wheel, you can smoothly scroll through screens of information and zoom in to view data. The wheel works in Microsoft Office applications--such as Microsoft Excel, Word, and the PowerPoint presentation graphics program--and many other third-party applications for Windows 98/Me and Windows 2000/Windows XP.
For more information about IntelliMouse features, visit http://www.microsoft.com/hardware/default.mspx.
On This Page
PS/2 Mouse Port Mouse Motion Report Formats
Standard Packet Format
Microsoft "3-Button" IntelliMouse Z-Mode Report Format
Microsoft "5-Button" IntelliMouse Z-Mode Report Format
Feature Select (Mouse Mode Select)
PS/2 Device IDs
Compatibility Problems
PS/2 Mouse Port Mouse Motion Report Formats
Microsoft IntelliMouse Explorer pointing devices with IntelliEye optical tracking technology support three different PS/2-compatible packet formats, depending upon the following operational modes:
-
Standard mode
-
Z wheel + 3-button mode
-
Z wheel + 5-button mode
Standard Packet Format
A standard PS/2-compatible mouse motion report consists of a 3-byte packet defined as shown in Table 1.
Table 1. Standard 3-Byte PS/2 Mouse Packet
|
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
|
Byte 1
|
Yov
|
Xov
|
Y8
|
X8
|
1
|
MB
|
RB
|
LB
|
|
Byte 2
|
X7
|
X6
|
X5
|
X4
|
X3
|
X2
|
X1
|
X0
|
|
Byte 3
|
Y7
|
Y6
|
Y5
|
Y4
|
Y3
|
Y2
|
Y1
|
Y0
|
Symbol definition:
LB: State of the left button. Pressed = 1.
RB: State of the right button. Pressed = 1.
MB: State of the middle button. Pressed = 1 (if present).
Xov, Yov: Overflow. Indicates more than 9 bits of movement detected. X8-X0 or Y8-Y0 should be set to maximum magnitude in the appropriate direction.
X8-X0: 9-bit signed twos complement integer that presents the relative displacement of the device in the X direction since the last data transmission. A positive value indicates motion to the right; a negative value indicates motion to the left.
Y8-Y0: Same as X8-X0. A positive value indicates device motion upward; a negative value indicates motion downward.
Microsoft "3-Button" IntelliMouse Z-Mode Report Format
A Microsoft IntelliMouse 3-Button Z-mode motion report consists of a 4-byte packet defined as shown in Table 2.
Table 2. PS/2 4-Byte Mouse Packets
|
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
|
Byte 1
|
Yov
|
Xov
|
Y8
|
X8
|
1
|
MB
|
RB
|
LB
|
|
Byte 2
|
X7
|
X6
|
X5
|
X4
|
X3
|
X2
|
X1
|
X0
|
|
Byte 3
|
Y7
|
Y6
|
Y5
|
Y4
|
Y3
|
Y2
|
Y1
|
Y0
|
|
Byte 4
|
Zse
|
Zse
|
Zse
|
Zse
|
Zs
|
Z2
|
Z1
|
Z0
|
Symbol definition:
LB: State of the left button. Pressed = 1.
RB: State of the right button. Pressed = 1.
MB: State of the middle button. Pressed = 1.
Xov, Yov: Overflow. Indicates more than 9 bits of movement detected. X8-X0 or Y8-Y0 should be set to maximum magnitude in the appropriate direction.
X8-X0: 9-bit signed twos complement integer that presents the relative displacement of the device in the X direction since the last data transmission. A positive value indicates motion to the right; a negative value indicates motion to the left.
Y8-Y0: Same as X8-X0. A positive value indicates device motion upward; a negative value indicates motion downward.
Z2-Z0: Z-wheel motion. Twos complement with Z3, the sign bit (+7 and -8 counts maximum).
Zs: Z-wheel twos complement sign bit.
Zse: Z-wheel sign extension bits. Always the same as Z3. Used for compatibility with old drivers.
MS Extension: Many Microsoft mice use 8-bit internal counters and sign extend the values into X8 and Y8. Microsoft mice do not use the Yov or Xov bits, and they set them to 0.
Microsoft "5-Button" IntelliMouse Z-Mode Report Format
A 5-button IntelliMouse Z-mode motion report consists of a 4-byte packet defined as shown in Table 3.
Table 3. PS/2 5 Button Four Byte Mouse Packet
|
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
|
Byte 1
|
Yov
|
Xov
|
Y8
|
X8
|
1
|
MB
|
RB
|
LB
|
|
Byte 2
|
X7
|
X6
|
X5
|
X4
|
X3
|
X2
|
X1
|
X0
|
|
Byte 3
|
Y7
|
Y6
|
Y5
|
Y4
|
Y3
|
Y2
|
Y1
|
Y0
|
|
Byte 4
|
0
|
0
|
BB
|
FB
|
Zs
|
Z2
|
Z1
|
Z0
|
Symbol definition:
LB: State of the left button. Pressed = 1.
RB: State of the right button. Pressed = 1.
MB: State of the middle button. Pressed = 1.
FB: State of the forward button. Pressed = 1.
BB: State of the back button. Pressed = 1.
Xov, Yov: Overflow. Indicates more than 9 bits of movement detected. X8-X0 or Y8-Y0 should be set to maximum magnitude in the appropriate direction.
X8-X0: 9-bit signed twos complement integer that presents the relative displacement of the device in the X direction since the last data transmission. A positive value indicates motion to the right; a negative value indicates motion to the left.
Y8-Y0: Same as X8-X0. A positive value indicates device motion upward; negative value indicates motion downward.
Z2-Z0: Z-wheel motion. Twos complement with Z3, the sign bit (+7 and -8 counts maximum).
Zs: Z-wheel twos complement sign bit.
Z6-Z7: Reserved. Set to zero for this version of the specification.
Feature Select (Mouse Mode Select)
The Select Report Ratecommand is used to select (set) the device operating mode. After Reset, the device will be in standard 2-button device mode. By sending theSelect Report Rate command series as follows, the Device is set to Z wheel + 3-button mode:
Select Report Rate 200
Select Report Rate 100
Select Report Rate 80
By sending theSelect Report Rate command series as follows, the device will be set to Z wheel + 5-button mode:
Select Report Rate 200
Select Report Rate 200
Select Report Rate 80
Notice that theSelect Report Rate commands are valid, and the device report rate will be the value of the last command; that is, 80 after this series of commands.
PS/2 Device IDs
The Device ID is available through the PS/2 SendID command (0xF2). The Device responds with 0x00, 0x03, or 0x04, as shown in Table 4.
Table 4. PS/2 Device IDs
|
MODE
|
ID
|
|
2 Button
|
0x00
|
|
3 Button + Z
|
0x03
|
|
5 Button + Z
|
0x04
|
All Microsoft mice report an ID of 0x00 after a reset or power-up and behave as a standard PS/2-compatible device until the extended mode is explicitly set by the Microsoft driver software. This is because most BIOS programs will not recognize the device unless this standard ID is sent during power-up device enumeration.
For a device in Microsoft Extended 3-button Z-mode, the device will report an ID of 0x03. For a Corona-PS/2 device in Microsoft Extended 5-button Z-mode, the device will report an ID of 0x04.
Compatibility Problems
Typically, compatibility problems do not exist with desktop PCs unless the end user is using special equipment (for example, switch boxes). However, during compatibility testing with notebook PCs, Microsoft has discovered several problems related to incompatible BIOSs and Type 2 internal pointing devices. Following is a partial list of the problems encountered in testing:
-
Type 2 internal pointing device or BIOS that blocks part or all the SET_SAMPLING_RATE sequence, thus not allowing the IntelliMouse device to enter the extended mode.
-
Type 2 internal pointing device or BIOS that issues spontaneous commands, thus interspersing commands in the middle of the SET_SAMPLING_RATE sequence, preventing the IntelliMouse device from entering the extended mode.
-
Notebooks that do not allow the end user to disable the Type 2 internal pointing device. In this case, if the end user is using an external IntelliMouse device in extended mode and attempts to use the internal device, the driver can become confused because the internal device will be sending 3-byte data packets while the IntelliMouse device will be sending 4-byte data packets.
-
Type 2 internal pointing device or BIOS that filters out wheel button events.
-
Type 2 internal pointing device or BIOS that sends RESET to the IntelliMouse device, which returns it to default mode but blocks the IntelliMouse device from responding so that the driver is unaware. In this case, the IntelliMouse device will be issuing 3-byte data packets while the driver is expecting 4-byte packets.
-
Type 2 device that intercepts READ_DEVICE_TYPE commands and automatically returns a 0x00, thus preventing the driver from detecting the IntelliMouse-compatible device.
Call to action for IntelliMouse compatibility: