How to map modifier keys to mouse buttons?

Hey all, I'm looking to make my mouse's scroll left / right into CMD / ALT. This can be achieved via Logitech's app, but I want to keep everything within BTT for the sake of organization. Keyboard inputs in BTT only accept the combination of a regular key+modifier and BTT preset actions only have the option of either doing modifier down or up.

I need the modifier to remain active (pressed down) until I release it. Any way I can achieve that? Many thanks.

Maybe it works like this

That’s what I meant with the preset actions only allowing for up or down. Maybe I am missing something ? How would I go about setting this up so the mouse key behaves like a regular modifier key?

Mhh, I have no experience with it because I don't have a mouse.

But probably you need two actions set up with these actions

  1. mouse button pressed and hold = modifier down

  2. mouse button released = modifier released (Up).

This is what the manual says

Trigger on key-down / key up

BetterTouchTool allows you to select whether you want a shortcut to trigger on key down or on key up. This can be useful if you want to e.g. trigger one action on key down (e.g. middle-mouse down using the custom click predefined action) and another action on key up (e.g. middle-mouse up).

In such a case you would just configure two shortcuts with the same keys. Then you would check the "Trigger on down" checkbox for one of them.

I tried this but the modifier gets permanently stuck and I have to force quit BTT.

Did you copy/paste an action and then change the modifier up/down? Or did you delete a modifier that you inserted by mistake? I don't know why, but that often doesn't work.

Delete both actions and set both up again. Sometimes this helps. :man_shrugging:

Indeed I had duplicated it before, but I tried again just now all manual in one straight go and I am getting the same behavior - modifier will not release on key up :confused:

I thought maybe I was just using these in the wrong way, but as you pointed out in the documentation, this is pretty much the exact example given. I suppose this is a bug then.