Use Synaptics Touchpad Scroll in VMware Guest

Okay, so I did a research and managed to succeed.

After some thinking I came to conclusion I do not know how it works :-) It just does! :-)

Previously on «Useful :) Fun»:

In brief, Synaptics touchpad sends (SendMessage() or PostMessage(), didn't bother to pinpoint that) right window messages (WM_MOUSEWHEEL) to VMware window, but what it actually should do is using SendInput(), directly emulating physical mouse. It seems that there was an option to control behavior of drivers (or, more precisely, user-mode program SynTPEnh.exe) with file tp4table.dat. Unfortunately, this option is somehow not enabled in my drivers (though there is such a string in an executable).

So, I did the following - just injected a .dll into VMware's window process (I hope it's safe and also hope it's not the same process that executes a VM), subclassed window procedure (meaning intercepted window messages) and translated the "wrong" ones using SendInput().

Also, it had been noted that the following fix is worth applying even with my solution: http://blog.alexou.net/2010/07/scrolling-in-gtk-apps-with-synaptics-driver/.

So, the source code and executables (they are only supporting Workstation, read further for Player, in "UPDATE") - ask in comment if you didn't find something - are on https://www.dropbox.com/s/gucmyo35heha6g2/vmware_scroll.zip?dl=0.

MAJOR REMARK: run the corresponding executable when a VM is running.

ANOTHER MAJOR REMARK: Don't move hook.dll and *.exe's after the scrolling has been turned on. If you start vmware_scroll_stop.exe from other location it won't unlload .dll (i.e. disable scrolling).

UPDATE: There is an enhanced version (it was enhanced by Anthony Prieur, big thanks to him!), which also supports VMware Player. A program derived from that called VMWareTrackPadScroller with a simple user interface is also available.

NOTE: There will be no version that supports horizontal scrolling, unfortunately. The thing is, there is a solution idea, but I rejected it as too dirty. To accomplish the task, one need to hook (in SynTPEnh.exe) GetClassNameW() API to modify VMware window classes' names (they are "VMware.GuestWindow" and "MKSEmbedded") or wcsicmp() to always return "not equal" when one of the argument is one of the mentioned strings. I think it's dirty solution from performance point of view, at least (that is actually a weak argument since performance penalty would be minimal). Anyway, current solution is acceptable, I think, since you don't always have device with horizontal scrolling capability and it's better to be accustomed to live without that luxury than to get suffering in poverty. BTW, in Chrome/Chromium you have Shift+Vertical Scroll to do horizontal scroll.


Many people have complained regarding this problem, and feature requests have been submitted to Synaptics.

I have found one success report here. Although it is for Ubuntu, it seems to show that there is a solution to this problem.

I suggest that you try out the solutions outlined in the article below, for both host and guest:
Fixing Firefox Scrolling Problems with Dell Synaptics Touchpad

The article mentions two fixes:

  1. Remove Circular Scrolling option from the mouse properties
  2. Replace the Dell touchpad drivers by the Synaptics drivers

As the article says for the second one:

you can remove the Dell touchpad drivers and install the generic Synaptics ones, which work better for a lot of people — but they are missing some of the extra Dell features. As long as your touchpad does what you are expecting, it could be worth it.

I suggest to create a system restore point before changing the drivers, just in case.
You can also always rollback the driver from the Device Manager.

EDIT1

Some people report success when using the ALPS driver rather than Synaptics.
As says Alps Touchpad Driver for Windows 7 :

some Dell laptops do not have touchpads made by Synaptics. They have Alps touchpads. If you are not sure about what kind of touchpad you have, please see this post about identifying the correct model.

When I helped my user to upgrade his Inspiron 1420 to Windows 7, I used the driver for Vista. Here is the link to the download. This driver is for 32bit only. If this does not work for you, you can also try the driver for Windows 7. Here is the link. The second link provides both 32bit and 64bit drivers.

EDIT2

The following thread has some interesting info:
Problems with Synaptics touchpad not able to scroll in Guest OS (Windows XP)

The last entry in the thread says:

I have several colleagues who would like to use Vmware on laptops for support purposes. A few are trying Sun's Virtualbox, and others are trying Vmware. Scrolling works fine with Virtualbox, but SUN's committment to this type of product has burned folks in the past.

It seems like VMware simply doesn't care much about Synaptics, and your device is not well supported by it. Although this doesn't directly answer your question, I think that you will need to move to Virtualbox in order to get the touchpad working.

To sweeten the pill, see How to Convert a VMware to Virtualbox.


As there is currently no solution the only thing to do is to fill out a feature request at

http://www.vmware.com/contact/contactus.html?department=prod_request

Just paste the first two paragrahps from the question into the text field.