README revision d075918c
19bd41f2cSmrgVMMouse
29bd41f2cSmrg-------
39bd41f2cSmrg
49bd41f2cSmrgThe VMMouse driver enables support for the special VMMouse protocol
59bd41f2cSmrgthat is provided by VMware virtual machines to give absolute pointer
69bd41f2cSmrgpositioning. 
79bd41f2cSmrg
89bd41f2cSmrgInstalling the driver will improve the user experience when using the 
99bd41f2cSmrgmouse to interact with the guest operating system. In particular, use of 
109bd41f2cSmrgthe driver improves mouse "lag", provides mouse speed and acceleration 
119bd41f2cSmrgconsistent with the user's host operating system, and enables the 
129bd41f2cSmrgauto-grab/ungrab feature in VMware products without requiring the VMware 
139bd41f2cSmrgtoolbox application.
149bd41f2cSmrg
159bd41f2cSmrgUsing the driver
169bd41f2cSmrg----------------
179bd41f2cSmrg
189bd41f2cSmrgAssuming you have built and installed the driver in the standard way
199bd41f2cSmrgfor autotools based packages (see INSTALL), or the driver was already
209bd41f2cSmrginstalled by your distro, using it is simply a matter of changing the
219bd41f2cSmrgdriver used for the mouse input device from "mouse" to "vmmouse".
229bd41f2cSmrg
239bd41f2cSmrgThe vmmouse driver is capable of falling back to the standard "mouse"
249bd41f2cSmrgdriver if a VMware virtual machine is not detected. This allows for
259bd41f2cSmrgdual-booting of an operating system from a virtual machine to real hardware
269bd41f2cSmrgwithout having to edit xorg.conf every time.
279bd41f2cSmrg
289bd41f2cSmrgImplementation
299bd41f2cSmrg--------------
309bd41f2cSmrg
319bd41f2cSmrgThe following is not necessary reading for anyone who wants to use the
329bd41f2cSmrgdriver, but should help anyone who wants to understand how it works or
339bd41f2cSmrgwho wants to write a driver for a different target, whether it's another
349bd41f2cSmrgoperating system, a linux kernel input driver or even gpm.
359bd41f2cSmrg
369bd41f2cSmrgThe driver is composed of three different layers:
379bd41f2cSmrg
389bd41f2cSmrg1) The vmmouse protocol layer (vmmouse_proto.[c|h])
399bd41f2cSmrg   - This provides the call to read and write the port over which 
409bd41f2cSmrg     the vmmouse packets are transfered.
419bd41f2cSmrg
429bd41f2cSmrg2) The vmmouse client layer (vmmouse_client.[c|h])
439bd41f2cSmrg   - This builds on top of the protocol layer to provide higher
449bd41f2cSmrg     level calls for enabling/disabling the vmmouse mechanism
459bd41f2cSmrg     and for reading data.
469bd41f2cSmrg   - A new driver for a different target would use this interface.
479bd41f2cSmrg
489bd41f2cSmrg3) The Xorg vmmouse driver (vmmouse.c)
499bd41f2cSmrg   - This is the actual Xorg specific part of the driver.
509bd41f2cSmrg   - Note that interrupts indicating the presence of mouse data
519bd41f2cSmrg     are still transmitted on the PS/2 port so it is necessary
529bd41f2cSmrg     to be set up to receive those interrupts like a standard
539bd41f2cSmrg     PS/2 driver, but the actual data on the PS/2 port is ignored.
54d075918cSmrg
55d075918cSmrgvmmouse_detect
56d075918cSmrg--------------
57d075918cSmrg
58d075918cSmrgA simple program to detect whether the vmmouse device is present.
59d075918cSmrgIt is used by the HAL callout script to automatically detect a
60d075918cSmrgvmmouse device.
61d075918cSmrg
62d075918cSmrgReturns 0 if we are running in a virtual machine where the vmmouse
63d075918cSmrgdevice is present.
64d075918cSmrg
65d075918cSmrgReturns 1 otherwise (either we are not in a VM or the vmmouse device
66d075918cSmrgwas disabled).
67