Use Synaptics Touchpad Scroll in VMware Guest

54,939

Solution 1

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.

Solution 2

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.

Solution 3

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.

Solution 4

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.

Solution 5

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.

Share:
54,939

Related videos on Youtube

laktak
Author by

laktak

Updated on September 17, 2022

Comments

  • laktak
    laktak almost 2 years

    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.

    • Admin
      Admin about 12 years
      check my solution @ superuser.com/a/439474/106787
    • Admin
      Admin about 10 years
      @hcris Consider checking my answer as correct, please :-)
  • laktak
    laktak almost 14 years
    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?
  • harrymc
    harrymc almost 14 years
    @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.
  • laktak
    laktak almost 14 years
    @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
    laktak almost 14 years
    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!
  • harrymc
    harrymc almost 14 years
    @chris: Having nothing to lose, did you try the ALPS driver? See also this driver drivercure.com/driver/… and support.dell.com/support/downloads/…
  • laktak
    laktak almost 14 years
    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. :(
  • harrymc
    harrymc almost 14 years
    @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
    harrymc almost 14 years
    @chris: See my Edit2 for some final info.
  • laktak
    laktak almost 14 years
    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.
  • harrymc
    harrymc almost 14 years
    @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 en.wikipedia.org/wiki/Xen.
  • harrymc
    harrymc almost 14 years
    I also think that you will be keeping your bounty, as I don't believe that there is a solution using VMware.
  • laktak
    laktak almost 14 years
    Of course I awarded the bounty, thanks for your help! Maybe you want to fill out a feature request? :)
  • laktak
    laktak over 11 years
    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).
  • Andrew Zabavnikov
    Andrew Zabavnikov over 10 years
    Just updated it!
  • xiamx
    xiamx over 10 years
    this deserves an upvote!
  • Andrew Zabavnikov
    Andrew Zabavnikov over 10 years
    @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 blog.alexou.net/2010/07/…
  • xiamx
    xiamx over 10 years
    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
  • Andrew Zabavnikov
    Andrew Zabavnikov over 10 years
    @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
    Andrew Zabavnikov about 10 years
    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
    Andrew Zabavnikov over 9 years
    I guess it's 'instead of me'. Never crossed my mind.
  • Eran Medan
    Eran Medan almost 9 years
    This is the fastest solution so far for me. Installed it and it works!
  • Amerrnath
    Amerrnath almost 9 years
    @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
  • Andrew Zabavnikov
    Andrew Zabavnikov almost 9 years
    @Amerrnath Sorry, right now away from my Windows development machine. Could you first try bitbucket.org/DouglasCameron/… ? 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! :-)
  • Amerrnath
    Amerrnath almost 9 years
    @AndrewZabavnikov thanks for response. sure i will download and i will test it . :-)
  • Saravanabalagi Ramachandran
    Saravanabalagi Ramachandran over 7 years
    @AndrewZabavnikov How do I make it work with VMware KVM?
  • Andrew Zabavnikov
    Andrew Zabavnikov over 7 years
    @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
    Andrew Zabavnikov over 7 years
    @ZekeDran Note also that the project initially started with kvm, so at the time of initial release it was possible.
  • Andrew Zabavnikov
    Andrew Zabavnikov over 7 years
    @ZekeDran Maybe there are also commented out source lines corresponding to kvm.
  • Saravanabalagi Ramachandran
    Saravanabalagi Ramachandran over 7 years
    @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?
  • Andrew Zabavnikov
    Andrew Zabavnikov over 7 years
    @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
    Andrew Zabavnikov over 7 years
    @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
  • Saravanabalagi Ramachandran
    Saravanabalagi Ramachandran over 7 years
    I tried those but it didn't work! And what's result 0 and whats result 1? I get result 0 for two entries!
  • Andrew Zabavnikov
    Andrew Zabavnikov over 7 years