I don't think it's possible to recognise more gestures on the Magic Mouse. But I can add more modifier keys (currently it scrolls without modifier keys and zooms with the Command key). I haven't played with Magic Mouse for a long time, I'll see what can be done to improve usability.
Do you mean it's not possible for your plugin, or just in general?
Because it's definitely possible in general - check out the tool
BetterTouchTool, it does amazing things with the Magic Mouse. One, two, three, four finger taps, swipes, pinch in/out, multi-taps (press two fingers then release one and re-tap it) etc etc. It's awesome
It's not open source but it does show it's possible - and I think possibly he uses some OS code, for example I think his Live View mode (shows exactly what fingers are pressed/where on the magic mouse and trackpad) is based on open source code:
But yeah if it's not possible from the plugin, modifier keys are good too. And thanks for the details on Command.
One thing I would definitely like to see changed: I think right now you have hardcoded Cmd+Up/Down = Zoom? I ask because I have re-bound Up/Down Z to the mouse wheel (Mouse button 4/5), and unbound those buttons from Zoom, but Cmd+up/down still zooms. I was hoping that it sent the key command, but I guess it doesn't?
If you could change that, that would be excellent, as for me I don't care about zooming with the mouse (I do it rarely, so it's fine to use keyboard) but I would love to go up/down Z with magic mouse. And maybe other people will want to do other things. So if Multiscroll can send the appropriate keyboard command, which can then be rebound - or at least, have some kind of plugin config - then it can work best for everyone.
What would be perfect would be some kind of config (with DFHack plugin commands), where we can define Actions:
multiscroll <add|remove> <mouse action> <num fingers> <DF key> [modifier key(s)]
eg:
multiscroll add|remove up|down|left|right 1|2|3 <DF key> [Cmd|Control|Shift|Option (or Cmd+Control, Shift+Option, Cmd+Control+Option, etc)]
multiscroll add up 1 SCROLL_UP
multiscroll add down 1 SCROLL_DOWN
multiscroll add left 1 SCROLL_LEFT
multiscroll add right 1 SCROLL_RIGHT
multiscroll add up 2 CURSOR_UP_Z
multiscroll add down 2 CURSOR_DOWN_Z
multiscroll add up 1 ZOOM_IN Command
multiscroll add down 1 ZOOM_OUT Command
Which would configure:
1. One finger Up/down/left/right = move around map
2. Two finger up/down = Z level
3. One finger up/down + Command = zoom
I realise that is the most advanced way, and maybe a lot more than you are interested to do. But that would be the perfect design in my view, if it is possible
And maybe I can help with some of the basic stuff and testing, if you are interested to do any of it.
Thanks again! Really love it.