I'm designing an editing program (Mac/Windows) that has a slightly unusual scheme for zooming and controlling the mouse cursor: a normal mode in which the cursor works normally, and a special mode in which the mouse cursor remains in the centre of the window and moving the mouse moves everything else, allowing you to move indefinitely for miles, and the mouse scroll wheel in this mode allows to zoom in and out by increments of 1.41x with the centred cursor as the focus. If this is confusing this video shows the special mode in action. This is managed with the following:

  • A short middle mouse button click switches between those two modes
  • A long middle mouse button click resets the view to the default zoom, focus, and normal cursor mode
  • The scroll wheel zooms in and out, but only in the special mode

Obviously none of this works on a laptop without a mouse, which is a big problem, so I need to find key combinations on the keyboard that allow all this smoothly. By smoothly I mean you should be able to zoom in/out and switch modes all while your other hand is operating the trackpad, you want to be able to zoom at the same time as moving around. So using the arrow keys as part of the key combos probably wouldn't be convenient for users who prefer to operate the trackpad with their right hand (probably most of them), and obviously the usual combos for text editing are taken. I'm pretty free to use exotic kinds of combos (e.g. not using Ctrl or Cmd), although it's probably best if it doesn't get too weird.

If you were a user of a program with such modes of operation, what would you prefer as key combos when a typical mouse isn't available?

Edit: I just need an answer to the actual question, opinions on what is already done just make me have to explain why my approach is advantageous. I know it might be hard to appreciate when you never got to use this approach, but I can tell you that for certain things it's much better than anything else, this much cannot be overstated.


Some random notes:

  • First of all, you should change the cursor to have a different visual representation in both modes to make clear which one is active. (I suggest a cross hair cursor the user likely knows from first person games since the camera handling is similar there)
  • I'd also at least include a common keyboard way of moving it (wasd, arrows) because it's easy and intuitive.
  • Also, don't call it special mode, but more something like "lock cursor". It's more precise.
  • Let the user change all key bindings for this
  • Allow the use of custom mouse buttons, your users will like this. Bonus: detect them if present and automatically change key mapping to make use of them
  • I also don't understand why zooming is not allowed in normal mode (if I understand it right). It might be annoying to switch mode just to zoom in or out a bit and then back to normal.

I know such answers are not popular, but here are some ideas to achieve similar results without that special mode:

  • Make dragging normal but with a twist: if the mouse goes out of screen, it pops back in on the other side. Blender does this and it works great.
  • If the mouse gets too close of the border, the background starts moving in that direction. The nearer the mouse is to the edge of the screen, the faster it will move. I know of several top-down games that do this and it works well too (Cities Skylines, The Settlers)
  • Perhaps you can change the representation of your data to something treelike where all data currently needed fits on one screen. The user could then use keys to navigate that tree to the correct page.

Here's the controls I'd go with:

  • Mouse: a button for dragging (normal), move the mouse for dragging (special), mouse wheel for zooming. Mouse wheel click for switching between both.
  • Trackpad with multitouch: like google maps on a smartphone.
  • Trackpad without multitouch: move the mouse to the edge to drag (normal), move the mouse to drag (special). Don't know for zooming, perhaps left and right trackpad button? There are too many different models
  • Keyboard (left hand): wasd for dragging, space/shift or q/e for zooming
  • Keyboard (right hand): numpad if available, otherwise arrow keys
  • No need for different cursors, it's hard to mistake modes, trust me I've used this for a couple of years. Why would zoom be allowed in normal mode? Doesn't make sense, also trust me on this, the switching is seamless and not a problem. Don't take this the wrong way, I knew people might fail to see the advantages, but your alternative suggestions are clearly inferior, which I realise only I would know because only I have used this mode. And for your actual answer to the question, no, wasd/qe won't do at all because the program contains text editing, it's not a game. And pinch zooming sucks. – Michel Rouzic Oct 5 '17 at 14:25
  • You didn't suggest a key binding for switching modes btw, which is needed, unlike wasd dragging keys which are not needed. – Michel Rouzic Oct 5 '17 at 14:34
  • No, I didn't suggest a specific key. I still go with the third mouse button to switch and the possibility for the user to change it. If the touchpad has an integrated button (like on macbooks I think), use that. – piegames Oct 5 '17 at 14:36
  • As a Blender user I'm used to switch modes with <tab> (also in combination with CTRL, ALT and SHIFT) by the way, if that fits you keyboard scheme – piegames Oct 5 '17 at 14:37
  • 5
    @Michel-Rouzic "i have used this for years" and "i'm designing this program" mean you have a highly biased view that is miles away from the general user. – PixelSnader Oct 5 '17 at 18:25

Z key as a switch-like toggle

No combo modifier, just this key as a mode switch. Once to enter the zoom mode, one more time to exit the zoom mode back to normal mode. A toggle switch.

It's not unusual, 3ds Max and AutoCAD type programs have been using this sort of switch toggling for decades. As do many trackers and other creative software that's not made by Adobe ;)

ps I like what you're doing. It's COOL!

  • 2
    Thanks! I eventually went with Alt-Z for toggling and Alt-Shift-Z for resetting the view. The reason why I don't want a single key though is because I don't want the behaviour to change or be absent while using a text editing control (in which case Z just enters the letter "z"). – Michel Rouzic Nov 30 '18 at 23:07
  • 2
    Probably not applicable to this project, but since you think carefully and well about UX, I'd like to introduce double taps in case you've not seen them.,Double tap key shortcuts are awesome in the few apps they're used. One of the best is UU in After Effects, this highlights only those properties in the timeline that are modified. And there's a bunch of others: helpx.adobe.com/au/after-effects/using/… – Confused Nov 30 '18 at 23:29
  • @MichelRouzic generally speaking, don't worry about conventions when you have your combinations of high levels of creativity and consideration for users. – Confused Nov 30 '18 at 23:30
  • Cool, I'd never heard or thought of double taps before, I like the idea. – Michel Rouzic Dec 1 '18 at 21:38

Your Answer

