Use Synaptics Touchpad Scroll in VMware Guest

17

12

I would like to use Synaptics "Two-Finger Scrolling" inside a VMware guest.

It works as expected on the host but VMware does not seem to support it. The mouse cursor changes to indicate that scrolling is active but the VMware guest will not respond to it.

  • VMware Workstation 7.1
  • Host and Guest OS: Windows 7 (64bit)
  • Synaptics Driver 15.0.9.0
  • Device is shown as "Synaptics LuxPad V7.4"

Is it possible to make this work somehow? (e.g. modify .vmx, change Synaptics options or with a driver that emulates "mouse wheel scrolling")

Update: I have already tried several options in the Synaptics driver but the only change was that it displayed a different mouse cursor when trying to scroll.

laktak

Posted 2010-04-15T13:53:25.090

Reputation: 2 223

check my solution @ http://superuser.com/a/439474/106787

– mreq – 2012-06-21T11:03:07.540

@hcris Consider checking my answer as correct, please :-) – Andrew Zabavnikov – 2014-05-25T15:50:21.967

Answers

3

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.

laktak

Posted 2010-04-15T13:53:25.090

Reputation: 2 223

22

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.

Andrew Zabavnikov

Posted 2010-04-15T13:53:25.090

Reputation: 321

I guess it's 'instead of me'. Never crossed my mind. – Andrew Zabavnikov – 2014-12-02T19:33:42.500

@AndrewZabavnikov i am not able to follow it . can you please elloborate step by and step. when i run vmware_scroll_start.exe. i get vmware_start_scroll result 1 – Amerrnath – 2015-09-02T17:54:07.953

@Amerrnath Sorry, right now away from my Windows development machine. Could you first try https://bitbucket.org/DouglasCameron/windows-trackpad-scroller-for-vmware ? That one is not from me but as the recent editor of the answer says, it has a simple user interface :-) If that doesn't work either, I will be glad to inspect the error (and it is one, as the program reports by status code - and I'm sorry I didn't implement comprehensive diagnostics). Best luck! :-)

– Andrew Zabavnikov – 2015-09-02T21:22:01.907

@AndrewZabavnikov thanks for response. sure i will download and i will test it . :-) – Amerrnath – 2015-09-03T04:39:56.237

@AndrewZabavnikov How do I make it work with VMware KVM? – Saravanabalagi Ramachandran – 2016-10-09T09:58:25.767

@ZekeDran As far as I remember, u should play with window class. Modify it in the source code, et voilà, it's working! :-) – Andrew Zabavnikov – 2016-10-09T20:01:21.637

@ZekeDran Note also that the project initially started with kvm, so at the time of initial release it was possible. – Andrew Zabavnikov – 2016-10-09T20:05:38.330

@ZekeDran Maybe there are also commented out source lines corresponding to kvm. – Andrew Zabavnikov – 2016-10-09T20:06:24.367

@AndrewZabavnikov What and where do I add? I opened the src and pretty much didnt understand that: I'm a noob after all :( I require some assistance... And just curious, if it initially started with KVM why is it removed from the release version? – Saravanabalagi Ramachandran – 2016-10-10T10:47:27.633

@ZekeDran Actually, can't help. Don't even have Windows™ right now installed... Sorry. Maybe you can ask for help from the mentioned people who are (I hope) maintaining it on GitHub and BitBucket? And for last question - do not remember :-) – Andrew Zabavnikov – 2016-10-10T10:51:33.243

@ZekeDran You can try to replace L"VMUIView" with either L"MKSEmbedded" or L"VMware.GuestWindow" in src/vmware_scroll/vmware_scroll_start.cpp and recompile, trying twice with one string and the other. Otherwise you and me have to get into assistance-driven development... XD – Andrew Zabavnikov – 2016-10-10T11:08:30.793

I tried those but it didn't work! And what's result 0 and whats result 1? I get result 0 for two entries! – Saravanabalagi Ramachandran – 2016-10-10T12:02:12.113

Let us continue this discussion in chat.

– Andrew Zabavnikov – 2016-10-10T12:04:58.720

2Just updated it! – Andrew Zabavnikov – 2013-12-04T13:03:32.520

3this deserves an upvote! – xiamx – 2013-12-29T19:34:27.327

@xiamx Is it working for you? I just received a feedback that it is not working for Player (maybe little modification is required). Maybe it is question of also applying this fix http://blog.alexou.net/2010/07/scrolling-in-gtk-apps-with-synaptics-driver/

– Andrew Zabavnikov – 2013-12-30T09:23:14.787

yeh it's working perfectly. And it also works for other input devices with userland drivers (logitech T650). Although I recompiled it myself since I only have v110 toolset. Can you put it on github? so those who needs to have it to work with Player can modify it themselves – xiamx – 2013-12-30T16:13:27.127

@xiamx ok, i'll do it in a few days. Just didn't bother to deal with GitHub while working on version that will support horizontal scrolling. – Andrew Zabavnikov – 2013-12-30T21:25:46.387

Well, I never set it up, as you see. Anthony Prieur did it for me as you see if you read my answer. :-) – Andrew Zabavnikov – 2014-04-11T18:00:17.020

7

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.

harrymc

Posted 2010-04-15T13:53:25.090

Reputation: 306 093

I already have the Synaptics driver (see above). The article is for one-finger scrolling (which also does not work and disabling Circular/Chiral has no effect) but I would be happy if I could use either option. The Ubuntu settings sound promising but how can I apply them in Windows? – laktak – 2010-08-06T08:18:06.307

@chris: Most posts that I have found say that VMware simply does not support the Synaptics Touchpad as device, so that what you ask is impossible. I have anyway edited above one more approach that worked for some people. If it doesn't work, you can also try using another VM product than VMware. – harrymc – 2010-08-06T08:46:40.243

@harrymc I'm pretty sure it's a Synaptics device but I can't find it on pcidatabase.com. The HW ids are "ACPI\DLL02EF" and "*DLL02EF". – laktak – 2010-08-09T14:45:17.270

OK, maybe I am asking for the impossible but this has been annoying me for a long time. I was hoping there was a way to get this to work the same way a mousewheel is working (maybe with emulation). In any case if there is no solution I'll award you the points for all your help! – laktak – 2010-08-09T14:51:10.080

I uninstalled Synaptics and tried the ALPS driver - it installed but it offered only basic functionality. It didn't offer scrolling on the host and there was no way to configure it via the mouse dialog or a tray icon. :( – laktak – 2010-08-10T07:24:35.773

@chris: I'm starting to be somewhat pessimistic about your chances of success, and especially since your device id can't be googled anywhere, except for these drivers in my previous comment. – harrymc – 2010-08-10T07:52:06.073

@chris: See my Edit2 for some final info. – harrymc – 2010-08-11T15:44:37.803

Thanks for the tip but I can't switch. We are using VMware's desktop and server products and AFAIK Virtualbox has no server support. Also there is the issue that Sun has been bought by Oracle which does not help at all. – laktak – 2010-08-11T17:42:42.583

@chris: It does have the comparable xVM VirtualBox (now Oracle VM VirtualBox, with in addition Oracle Enterprise Manager Ops Center). There are other such products, almost all based on the open source Xen hypervisor. See "Commercial implementations" in http://en.wikipedia.org/wiki/Xen.

– harrymc – 2010-08-11T18:06:22.853

I also think that you will be keeping your bounty, as I don't believe that there is a solution using VMware. – harrymc – 2010-08-11T18:07:16.053

Of course I awarded the bounty, thanks for your help! Maybe you want to fill out a feature request? :) – laktak – 2010-08-11T20:35:46.153

3

This solution seems good.

http://code.google.com/p/two-finger-scroll/

I've tested it, and it gives a whole lot of options to configure 1,2,3 figure touch and scroll.

Deba Saha

Posted 2010-04-15T13:53:25.090

Reputation: 31

This is the fastest solution so far for me. Installed it and it works! – Eran Medan – 2015-08-27T22:29:45.613

Thanks. I hope this helps someone else as I have moved to a MacBook with VMware Fusion where everything works out of the box (and it has a better trackpad too). – laktak – 2013-01-28T09:37:28.553

1

Synaptics' two-finger scrolling works with VMware's Unity mode (Player > Unity). I'm using this to run VS2013 in VMware Player with Windows 7 x64 as both host and guest OS.

user2361830

Posted 2010-04-15T13:53:25.090

Reputation: 143