PowerToys icon indicating copy to clipboard operation
PowerToys copied to clipboard

Mouse Button remapper

Open TobiasSekan opened this issue 4 years ago • 14 comments

Summary of the new feature/enhancement

The problem

  • Windows only support switch left and right mouse button (since many many years)
  • Each mouse with more that three buttons come with a different configuration tool
    • not all but the most (from known companies)
    • when only buy mouses from one company you can use one tool
    • but these tool are only support a few of generation mouses of the from the same comapnie

The Solution

Introduce a new module witch allows the user to remap the mouse buttons

Key features

  • Support remap the typical five mouse buttons
    • left, right, middle, forward, backward
  • Support remap to another mouse button
  • Support remap to keyboard keys
  • Support remap to keyboard keys with modifiers

Nice to have

  • Support remap all mouse buttons
  • Support remap to multimedia key (play, pause, next track, etc.)

No-Goals (or after first version)

  • Support hardcore/esoteric mouses with more then 10 buttons.

Possible problems

  • Inaccessibly of the mouse buttons from OS
  • Different APIs (inside the different drivers from the different companies)
  • Loops (when press a remapped mouse button)

Current alternatives

Windows

TobiasSekan avatar Mar 06 '20 09:03 TobiasSekan

I have a mouse with a touch surface -- unfortunately the driver doesn't work with Windows 10 :-( .... I can use all kinds of movements: scrolling up/down works, but other things do crazy things by accident which I'd like to deactivate or change. In fact the mouse receiver seems to emulate two things: a regular "mouse device" and a "keyboard device" with which certain actions on the mouse simulate certain keystrokes. It would be great to be able to reconfigure all of that ....

dstango avatar Jun 18 '20 20:06 dstango

+1 My mouse’s driver is bugged that it reads the middle button as the left button every time I wake my computer up from sleep.


For contribution, do mouse buttons have a similar codebase as keyboard keys at some low-level? If so, we can achieve this by simply supporting mouse buttons in our keyboard remapper.

ParadoxV5 avatar Jan 08 '21 01:01 ParadoxV5

+1 on this. I recently got a new (vertical) mouse for work and the company's software is pretty trashy, it doesn't actually work at all. All I want is just remapping 1 button to Control+W which is what I'm used to from my Corsair mouse on my personal desktop.

favna avatar Sep 15 '21 15:09 favna

+1. I use two mice, and need them to have different mappings: The one on the left of the keyboard should have the left and right buttons swapped. (I'm not using multiple pointers; I just use whichever hand is free, holding the mouse on that side of the keyboard)

The mapping should also work sensibly across remote desktop. That means Powertoys doesn't need to be running on the server, and if it is running, it won't interfere with the remapping done on the client. (So I can remote to a shared account on a VM, or to my other PC that also has two mice, or to my PC from someone else's PC that just has a right-handed mouse, etcetera - and get the expected mappings)

IntelliPoint does this nicely, but only if the left-hand mouse is a model that it supports. That's a problem because it is no longer maintained. Windows' "swap button" setting does not support per-mouse settings, and does not work with remote desktop.

acorey0 avatar Oct 29 '21 01:10 acorey0

+1 my trackball mouse has 10 extra buttons, but the driver is conflicted with wintab driver, so I can't use it

goolyuyi avatar May 05 '22 03:05 goolyuyi

Forgive me if cross-posting is not allowed.

From https://github.com/microsoft/PowerToys/issues/20993#issuecomment-1594514195

I, too, would like this capability. I have an AutoHotkey script that can do this, however, it does not work when connecting to remote desktops nor VMware Horizon VDI remote desktops. I assume it's because the Remote session software grabs the keyboard and 'owns' it so other hooks don't get fired. I tried MouseKeys. It works ok. I can live with it. Again, however, it does not have the ability to scroll. I need a mapping that works at the lowest level possible so that I can use the keyboard to navigate universally across tools. I am suffering massive RSI and found that using keyboard alone is alleviating much of my issues. PgUp and PgDown keys are not good enough as they move the cursor and aren't truly equivalent to scrolling. E.g. using PgUp and PgDown in Outlook doesn't scroll. I should be able to just hover over my email list and 'scroll' with the keyboard in this use case. Just like a mouse would.

I think this ticket should be reopened. I'm soooo close to having a keyboard-only setup working and this one is the remaining nagging pain point.

I've even used Gopher360 with the Xbox One controller for PC and it works for scrolling. What's interesting is that it also works in all the apps I've tried, even Remote Desktop software. I don't have any skill with driver code so I wouldn't be able to take the Gopher code and do something myself. But the Gopher code shows this should be doable.

brandonwsaxe avatar Jun 16 '23 11:06 brandonwsaxe

Any progress on this one?

samrobley avatar Aug 09 '23 13:08 samrobley

Fun fact: if somebody happens to have a compatible keyboard and mouse, then the MS Mouse and Keyboard app allows for many customizations.

Jay-o-Way avatar Feb 07 '24 16:02 Jay-o-Way

+1 same here please mouse: logitech mxmaster

menawi avatar Mar 18 '24 05:03 menawi

+1 ... especially if it enables my favorite use case:

  • A) modify mouse buttons (similar to Ctrl + Scroll Up/Dn)
  • B) use mouse buttons as modifiers

This could transform basic 5-button mice into 20-button mice, 20-button mice into 380-button mice -- up to n! buttons in theory, but maybe ~n(n-1) buttons in practice.

Examples:

  • [Tap] right click = right click (normal behavior)
  • [Hold] right click + [tap] <any key> = <any>
    • [hold] Right click + [tap] scroll up/dn = zoom in/out, volume up/dn, cycle tabs, cycle windows, or...
    • [hold] mouse button 4 + drag cursor (create selection box) = take screenshot (rectangle), extract text from selection, etc...

JEFF-LIU-me avatar Mar 22 '24 16:03 JEFF-LIU-me

I use powertoys for just about all my enhancements except CAD with a touchpad. It would be INCREDIBLE to be able to use the 'right alt' as a substitute for the mouse middle click, seeing how a laptop touchpad has no middle click and middle click to pan/orbit on drawings is a HUGE time saver. It literally saves me 10-15 seconds per iteration, and sometimes that can be upwards of 10 iterations per modification, depending on the mod and drawing size, just to rotate and pan perspectives to confirm the drawing addition or mod is acceptable.

So all I really need is the ability to turn this feature on (say with a shortcut like Win-Shift-R/Alt), then have my R/Alt key available as a middle mouse click, until I disable it again thru the power toy panel or that cool shortcut like Win-Shift-R/Alt.

I HATE to install another 'powertoy' app to handle this feature (aka AutoHotKey) when I believe that the Keyboard Manager feature of PowerToys, which I've already got installed and use, would be capable. I know... icing on the cake. I am not opposed to a small dev fee in order for this, need be. IDK about anyone else but that seems reasonable to me.

auriuman78 avatar Apr 25 '24 03:04 auriuman78