Added the possibility to switch between spaces and use the shift key to invert behavior #82
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Thanks for making Sensible Side Buttons open-source! I think it is important to be able to inspect the code of an app that has access and can modify user inputs.
I tend to use the side buttons to swap between macOS spaces rather than back and forth.
Other tools I tried to customize this behavior are either closed source or buggy (Logitech options, Karabiner Elements).
I added this functionality to your app. The default behavior stays the same as before (emulating swap gestures), but now if people want can re-map the mouse side buttons to swap between spaces. I also added the possibility to press the keyboard "shift key" to dynamically change the behavior back to the two-finger swype. The menu looks like this with my PR:
Anyway, I hope this can be useful to other people as well :)
How it works
The new option for switching spaces works by sending a keyboard event when the mouse side buttons are pressed ("ctrl + arrow right/left"). I tried to also emulate the three-finger gestures to achieve the same, but emulating key presses was easier to implement -- so I went with that.
The "shift" key detection works by monitoring the shift mask flag state of the mouse button event (so the app does not need to monitor for new events).