How to reverse Windows scrolling direction in both VMware and Boot Camp

bootcampscrollingvmware

On my Mac, I have a Windows partition that I can either directly boot into (with Boot Camp) or run as a virtual machine (with VMWare Fusion). I set up Windows to reverse the scroll direction of my mouse. This works when I'm running Windows in Boot Camp. But when I'm in VMWare, the scroll direction is reversed twice — once by Windows and once by macOS — which puts it back to regular scrolling.

How can I set this up to have natural scrolling in Windows in both Boot Camp and VMWare?

Best Answer

Fortunately the HID device ids used when running bootcamp natively and running it under a VM (at least under the Parallels VM I use) are different. Here is what I did on Windows 10

  1. Boot natively.
  2. Identify the device ID's in use from the Mouse Control Panel
    • Start->Settings. Click on Devices. Click on Mouse. Click "Additional mouse options"
    • Click on the Hardware tab. You should see "HID compliant mouse" You may see more than one if you also have, e.g, a Magic Trackpad. Only the devices in use will appear here. In this case this means only those used when running natively.
    • Select each device and click the Properties button.
    • In the properties windows,, click the Events tab. The device ID is given in the Information box at the bottom.
  3. Find each device in regedit (run it as Administrator). They are at HKLM:\SYSTEM\CurrentControlSet\Enum\HID\*\*\Device` Parameters replacing the *'s with the ID you get from the mouse control panel.

  4. Change the values of the FlipFlopWheel and FlipFlopHScroll properties to 1.

The command you used from https://superuser.com/a/364353 changes all HID devices in the registry having a FlipFlopWheel property. Unfortunately I haven't figured out any automated way to identify just those currently in use hence the manual method above.

If you've already run the script and set all devices to flip-flop, boot in the VM, follow the steps above to identify the "mouse" devices in use and change their FlipFlopWheel and FlipFlopHScroll properties back to 0.