How do i make a mouse scroll wheel inversion possible? I'd like to scroll upwards and have that action scroll downwards and vice versa There's no setting on the mouse control panel that makes this possible

Any pointers to a hack or a particular mouse model that has such a setting would be appreciated I'm using windows 7

Best Answer


Quick answer

  1. Open PowerShell as administrator
  2. Run:
    Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Enum\HID\*\*\Device` Parameters FlipFlopWheel -EA 0 | ForEach-Object { Set-ItemProperty $_.PSPath FlipFlopWheel 1 }
    
  3. Reboot

Detailed explanation

There is a registry setting named FlipFlopWheel that does this!

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID\VID_???\VID_???\Device Parameters .

There might be multiple mouse entries The default value for FlipFlopWheel should already be 0. Change it to 1 to invert scrolling. Reboot or replug mouse for changes to take effect.

To get the VID_??? number you have two options.

  1. Go to the mouse control panel, click the Hardware tab, then click Properties .

Now in the HID-compliant mouse Properties window click the Details tab and select the Device Instance Path property. The registry path is in there. You only have to unplug and plug in your mouse for this to take effect

  1. Run this in PowerShell (from Start » All Programs » Accessories » Windows PowerShell):

     # View registry settings
     Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Enum\HID\*\*\Device` Parameters FlipFlopWheel -EA 0
    
     # Change registry settings
     # Reverse mouse wheel scroll FlipFlopWheel = 1
     # Normal mouse wheel scroll FlipFlopWheel = 0
     Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Enum\HID\*\*\Device` Parameters FlipFlopWheel -EA 0 | ForEach-Object { Set-ItemProperty $_.PSPath FlipFlopWheel 1 }
    

    The command for normal (non-inverted) scrolling has the 0 and 1 swapped.

     # Restore default scroll direction
     Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Enum\HID\*\*\Device` Parameters FlipFlopWheel -EA 1 | ForEach-Object { Set-ItemProperty $_.PSPath FlipFlopWheel 0 }