Windows – Fix Reversed Mouse Side-Buttons and Keyboard Browser Buttons

button-remappingkeyboardmousemouse-buttonswindows

A local overstock store had a sale on a wireless mouse/keyboard set, so I got one. It is very similar to the (cheap Chinese) kind available on eBay. It works fine except that the two side buttons (XButton1/2) which normally map to Forward/Backward in Windows Explorer and browsers are backwards. The same is true for the browser-back and browser-forward buttons on the keyboard.

This mouse and keyboard has no drivers or manual; the box says “driverless” because Windows automatically detects it as a generic USB HID mouse, so I cannot use drivers or software to configure them.

Research has found this issue coming up very rarely and no solutions. There is one question here which has the same problem, but only for Firefox, not in Windows Explorer like I’m experiencing.

As for the keyboard, I tried using the key remapping available in Windows, but that would affect all keyboards that are plugged in, including normal, correct ones.

I’ve emailed the company (I was a little bit surprised that they even had a website), but their email bounces as undeliverable. ◔_◔

I know there is a built-in option to swap the left and right mouse buttons, but what about the side buttons? Does anyone know of a device-specific way of remapping buttons and keys in Windows?

For the time being, I am using a AutoHotkey script as a (hopefully only temporary) work-around.

Best Answer

Like I said, I tried emailing them (at all of the addresses they have), but unfortunately the emails bounced, so I guess there’s no support.

In light of that, I ended up settling for an AutoHotkey workaround:

  1. Create a plain text file
  2. Type the following

       $Browser_Back::Send {Browser_Forward}
    $Browser_Forward::Send {Browser_Back}
    
  3. Save it (e.g., MK_Rev.ahk; I added these to my existing general-purpose script Misc.ahk)
  4. Run it (e.g., autohotkey MK_Rev.ahk

It—generally—works a treat, but is not perfect and has a few possible issues:

  • Under specific circumstances, AHK may not be able to intercept the keys/buttons and remap them. One such circumstance is when there is a heavy CPU load, though that could easily be resolved by setting AHK to high-priority. Another circumstance is if a program reads the keys in some non-standard way, but those usually won’t be using the browser-navigation buttons anyway.

  • Connecting a normal mouse/keyboard that doesn’t have them reversed would cause AHK to reverse them. That is, the keys would work correctly on the bad set and backwards on the good set! This is madness! MADNESS!!! One way to deal with this is to stop or pause the script when switching to the proper set. Another might be to enhance the script to somehow detect which keyboard/mouse the hotkey initiated from and dynamically make a decision on whether or not to remap. Unfortunately that is not a simple thing and would be a drastic change requiring advanced coding which is theoretically possible (AHK supports DLL system calls), but would generally not be worth the effort of massive research and testing to pull it off—it would be faster, cheaper, and easier to just buy another set without the problem (though I really like this one).

Related Question