Updated MOUSEVKD.386 and Resynchronizing the Mouse

ID: Q97883


The information in this article applies to:


SUMMARY

MOUSEVKD.386 updates the auxiliary device support contained within the virtual keyboard device (VKD) that ships with Microsoft Windows.


MORE INFORMATION

The VKD is composed of two functionally separate portions. The first handles the keyboard (VKD) and the second handles the auxiliary input device (virtual auxiliary device, or VAD). These are combined into one device because of hardware design. Both keyboard and auxiliary device input and output are routed through the 8042 keyboard controller; therefore, the VKD and VAD portions are tightly coupled into a single virtual device.

MOUSEVKD.386 is an updated version of the virtual device that ships with Windows. The VKD portion is unchanged; only the VAD portion has been updated. The added functionality in the VAD includes support for resynchronizing the mouse and compatibility with updated versions of the MS-DOS-based mouse driver.

A pointing device on the auxiliary input port sends information to the computer in the form of a multiple-byte packet. Unfortunately, the packet does not allow the mouse driver to determine if a particular byte is the first one of a packet or not. If an interrupt is missed and a byte is lost, the mouse driver interprets the bytes incorrectly, resulting in a jumping cursor with random button clicks.

Mouse Synchronization with the Windows-Based Driver

In 386 enhanced mode Windows, MOUSEVKD.386 ensures that the packets are kept in order by timing the interval between successive bytes. If the interval is too large, it assumes that the byte just received is the first one of a packet. This method works because the bytes of a packet are sent one right after another, and the interval between bytes of a packet is always small. Note, however, that it is possible that the interval between successive packets is also small.

If you notice that your mouse cursor movement is erratic, you should stop moving the mouse for a few seconds to allow MOUSEVKD.386 to resynchronize.

Mouse Synchronization with the MS-DOS-Based Driver

The MS-DOS-based mouse driver uses the BIOS to communicate with the mouse. When the BIOS receives a full packet from the mouse, it notifies the mouse driver and passes it the three bytes that make up the packet (three-byte protocol). Three-byte protocol does not allow the MS-DOS driver to time the interval between the bytes of the packet, and the driver cannot determine if the mouse is out of sync. Therefore, the MS-DOS-based driver tells the BIOS that mouse packets are only one-byte long, and the BIOS sends each byte of a packet separately (single-byte protocol). The single-byte protocol permits the MS-DOS-based driver to time the interval between successive bytes, and thus determine when the mouse is out of sync.

If you use an MS-DOS-based driver that uses the single-byte protocol with the VKD that ships with Windows, the mouse is unusable in MS-DOS sessions within Windows. This is because the VKD assumes that you are using the three-byte protocol.

MOUSEVKD.386 has been updated to detect if a mouse driver is using a single-byte or a three-byte protocol and then respond appropriately.

Additional query words: 9.00 mice wincomm


Keywords          : 
Version           : 9.00
Platform          : MS-DOS 
Issue type        : 

Last Reviewed: August 9, 1999