Default Keymap: Rework Mode Switching on Objects
Open, NormalPublic

Description

Now that we have many different modes in Blender (Object, Edit, Sculpt, etc), the Tab toggle method no longer works well. It becomes very confusing when switching between Object mode, Edit Mode, Weight Paint mode. The user is often left wondering which mode they'll be switched to if they press Tab or CTRL+Tab.

Modes switching ought to be simplified. Probably the simplest way to do this is to simply present a menu with all available modes, allowing the user to choose which one they want, no matter what mode they're switching from.

Proposal
Make the Tab key present a menu with all Modes available to the selected object, allowing user to specify the exact mode they wish to switch to. This menu would be consistent in all modes, allowing for good muscle memory generation.

TAB (on a mesh object):

  • Object Mode
  • Edit Mode
  • Sculpt Mode
  • Vertex Paint
  • Weight Paint
  • Texture Paint

Details

Type
Design
Brecht Van Lommel (brecht) triaged this task as Normal priority.Nov 14 2013, 11:32 AM

I agree completely this is quite broken. However a menu would be way slower than just hitting tab. Menus like this are really slow to operate.

This is a good example of where pie menus would come in handy.

@William Reynish (billrey) I disagree, to a degree. It is slower, but I don't think it's too much slower. Check out Nathan's video here: http://www.youtube.com/watch?v=Heyl8bCv9r4&list=UUJv7wnSEOCQGVr3QW_WtU1g#t=607

He demonstrates exactly this, using a menu for mode switching, and it works very well. Particularly when combined with using hotkeys to jump to menu items.

Pie Menus are indeed a great use for this kind of thing.

@Jonathan Williamson (carter2422) I think we agree, just that pie menus would aleviate the speed issue.

BTW, I believe Modo tackles mode swathing by having a direct key for each mode. Modo uses numbers 1-4 for the different modes. That might also be a possibility. That way you don't loose any speed, but you gain the advantage of removing the current ambiguity.

It would override layer switching though, but perhaps mode switching is more important than layer switching (esp when you consider the possibility of an improved layer manager with unlimited layers anyway)

@William Reynish (billrey)

Yeah, in the video prior to the one that @Jonathan Williamson (carter2422) linked to ( http://www.youtube.com/watch?v=PaB7r_Q47qk ) I mention that I'm intentionally anticipating pie menus with that choice.

Using the number keys directly for mode switching could work, but then we lose those for other things. In particular, in edit mode in my keymap 1, 2, and 3 are for switching between the vertex, edge, and face sub-modes... which is extremely fast and convenient.

Just to add to this topic, you could look into the mode switching of the Clip Editor. There the TAB key toggles a menu, from which you can switch quickly to the modes by clicking or using the number keys. Works reasonably well. Maybe not the best for 3D View, where you switch modes way more often, but at least in Clip Editor you have a working example of TAB for menu which is already used in Blender.

"1, 2, and 3 are for switching between the vertex, edge, and face sub-modes... which is extremely fast and convenient."

It's fast and convenient, and I think it's slowly becoming a standard, thanks to 3ds max, Modo and NVil, probably more. It can also become extended later on by adding more selection modes to higher numbers - linked mesh and material being examples.

May the way alt-TAB (windows) and cmd-TAB (OSX) are used to switch between programs, are a good example for mode switching in Blender using ctlr-TAB. You don't need any other hotkeys. TAB could be used to switch between the current and the last used mode.

A continuation on wimdbs idea:
I think that a user most often switch between 2-3 modes at on time/session. Then maybe tabs as in my picture below could be one solution?


And to make the GUI consisten, one could use the same idea for switching between screen layouts?

@Tobias Johansson (mutze), a tab system is something I'd like to have explored down the road, but it's out of the scope right now. We're short on developers and so need to first focus on those things that don't require much heavy lifting.

I suggest going with @Nathan Vegdahl (cessen) and @Paweł Łyczkowski (plyczkowski)'s method, using Tab for a enumerated menu of modes. This is fast, simple, and very easy to implement. We can then explore extending it further with mesh mode switching with 1, 2, 3 and other things. But that's another task.

I would also advise adding this pie menu only on Tab-Hold, and leaving the Object Mode/Edit Mode toggle on Tab-Press - the reasoning is that Tab-Press is still faster than Tab-Hold + mouse gesture. It will also ease the transition to the new keymap.

@Paweł Łyczkowski (plyczkowski) just updated the text to indicate that it's context sensitive for objects, just like the regular mode menu is. It should only show those modes that are available to the active object.

I also like Nathan's Space + digit mode switching, but only if it wouldn't conflict with normal use of Space. Alternatively, Alt + digit. It's currently mapped to lower layers. But the layer system should be revamped anyway, and also it is broken in current release and no one is reporting it, so it seems that it's not used that much.

I think @Wim den Boer (wimdb) idea of switching between the current and the last used mode with tab-press makes a lot of sense. Right now tab jumps to object mode only if you're on edit, for every other mode it jumps to edit which is not always what you want.

@Tobias Johansson (mutze)

A continuation on wimdbs idea:
I think that a user most often switch between 2-3 modes at on
time/session. Then maybe tabs as in my picture below could
be one solution?

IMO this is one of those things that probably sounds a lot more useful than it really is. Having used my own experimental keymap for some time, my experience thus far indicates that you just get muscle memory for which modes are which keys, and switching between two or three modes is really easy. I suspect having a "quick switch" hot-key would not actually speed up experienced user's workflow hardly at all, and would add another thing that a new user has to understand and might accidentally do without realizing it.

@Jonathan Williamson (carter2422)

I suggest going with @Nathan Vegdahl (cessen) and @Paweł Łyczkowski (plyczkowski)'s method,
using Tab for a enumerated menu of modes.

Regarding tab vs spacebar, one of the reasons I chose spacebar for my keymap instead of tab is due to ergonomics. I originally played with it being on tab, and it felt significantly more awkward, and also took my hand further away from the home-row. Admittedly, mode switching isn't as frequent as e.g. selection, and so I'm not advocating for quibbling over individual keystrokes. But I do think it's done frequently enough in many workflows that it warrants some ergonomic consideration.

There is, of course, benefit to leaving mode-switching on tab for existing user-base familiarity. So I guess it depends on how important we think that is.

@Nathan Vegdahl (cessen)

Regarding tab vs spacebar, one of the reasons I chose spacebar for my keymap instead of tab is due to ergonomics. I originally played with it being on tab, and it felt significantly more awkward, and also took my hand further away from the home-row. Admittedly, mode switching isn't as frequent as e.g. selection, and so I'm not advocating for quibbling over individual keystrokes. But I do think it's done frequently enough in many workflows that it warrants some ergonomic consideration.

There is, of course, benefit to leaving mode-switching on tab for existing user-base familiarity. So I guess it depends on how important we think that is.

The spacebar is i.m.o. the most precious key. I use it for starting and stopping animations. The convention on OSX is that almost any software with a timeline uses the spacebar for start/stop. My muscle memory causes me to hit the spacebar to start/stop, no matter what. But I suppose an artist working most of the time on stills, will see other important uses for the spacebar.

Another broader convention is that modifier-key-TAB is a switcher as I pointed out in my previous comment.

Anyway keymaps are made of tough stuff, a.k.a. difficult decisions :-)

@Wim den Boer (wimdb)

I agree on Spacebar Press being changed to play/pause, that's a standard. Search is too much of an obscure function for Space. With Press vs Press-and-Hold detection, the Spacebar could be used for both play/pause and Mode change.

I personally have it on View Selected, but I don't do animation.

@Wim den Boer (wimdb)

The spacebar is i.m.o. the most precious key.

Absolutely. My original concept for the spacebar was (and is) "context management". In the 3d view, the mode you're in is the most important/influential aspect of your context, and changes everything about what you're doing and how you do it, and so managing that is assigned to spacebar. In other editors, it would be used for similarly primary context management.

That was the idea, anyway.

I use it for starting and stopping animations. The convention on
OSX is that almost any software with a timeline uses the
spacebar for start/stop. My muscle memory causes me to hit
the spacebar to start/stop, no matter what. But I suppose an artist
working most of the time on stills, will see other important uses
for the spacebar.

Speaking as someone who does a lot of animation in Blender, I can certainly see where you're coming from. However, there are so many different tasks in Blender (modeling, texturing, lighting, rigging, animation, compositing, etc.) and play/stop is really only relevant to one or two of them. Whereas context management is relevant and important to almost all of them.

Also, although spacebar is indeed frequently used for play/stop in many applications, it is not used for that in any of the other 3d applications I've used or played with (Maya, XSI, Houdini...). And, again, I think it comes down to the generality of such applications, where animation is one of many possible tasks a person might do.

(Houdini has an interesting approach, which is that left/right arrows are frame stepping, and up/down arrows are play forward/backward. But that's getting a little off-topic.)

@Paweł Łyczkowski (plyczkowski)

I certainly agree that operator search is too obscure for spacebar. I think it's very useful, though, and IMO it fits very well on tab. But, then again, I'm probably biased since that's how I have things set up on my keymap. ;-)

@Nathan Vegdahl (cessen) I really like your point about context management being on the Spacebar. Without a doubt it is an incredibly important, if not the most important aspect to manage in Blender. However, I think that Tab and Spacebar are about equally good when it comes to Mode Switching. Spacebar is better ergonomically, but Tab is better for familiarity.

With the new keymap I do not want to lock ourselves into familiarity, but unless there's a really good reason to switch something away from familiarity I don't think we should. In this case I feel the reasons are about balanced.

@Diego Gangl (januz) @Wim den Boer (wimdb), regarding Tab to toggle between the last and current modes. I think this just adds unnecessary complexity and really doesn't give much of an advantage once you've built up muscle memory. One of the goals with the new keymap is to keep it much more simple. This seems like a great thing for users to add to their own custom keymap rather than to ship default. We've always had a problem in Blender of having too many ways to do the same thing. This really ought to change with this keymap.

@Nathan Vegdahl (cessen)

However, there are so many different tasks in Blender (modeling, texturing, lighting, rigging, animation, compositing, etc.) and play/stop is really only relevant to one or two of them.

I agree. Its just my personal preference. My guess is, there are a lot of strong and different ideas for spacebar usage. Maybe it should be left without a default assignment :-)

@Jonathan Williamson (carter2422)

We've always had a problem in Blender of having too many ways to do the same thing. This really ought to change with this keymap.

I agree with the general idea. You need TAB however if you want to switch easily between the last two modes and at the same time keep the menu order with ctrl-TAB fixed. (in comparison: program switching with alt-TAB or cmd-TAB changes the order of the popup menu with program entries). It's probably best to first collect the use cases for fast mode switching between the last two modes. Switching between objectmode and edit-mode is one of them.

  • Use Tab press to open the modes menu, assign a number to each mode. While the menu is open, numbers relate to modes instead of layers. So to switch to sculpt you'd do tab+3 or tab+1 for object. The numbers row is close to the tab key and we have 6 modes at most. This way new users can use the mouse, and experienced users can use the keys. The rest of the time, numbers are for layers as usual.
  • +1 use spacebar for the pie menu.
  • Remove default key for search, have it as an option in the pie menu. I know it can slow users down, but if you're using search you're already slowing down to think and type :)

@Diego Gangl (januz), using numbers for menu entries is the way all menus already work in Blender. So that's good to go :)

@Jonathan Williamson (carter2422)

With the new keymap I do not want to lock ourselves into
familiarity, but unless there's a really good reason to switch
something away from familiarity I don't think we should.

Fair enough.

I agree that the familiarity of Tab provides some benefit. However, since we're changing the _behavior_ of the key to something unfamiliar, people will have to rework their muscle-memory anyway. So benefit is intellectual familiarity rather than instinctual/muscle-memory familiarity. And I'm not sure if that really breaks even with ergonomic concerns.

Mind you, I agree that we shouldn't change things just for the sake of changing them, and that we should keep things familiar where they make sense. If it ain't broke, don't fix it. But I think there are significant wins in switching in this case, and limited benefits in leaving it on tab.

Although maybe there is something else even better suited to being put on spacebar.

Does anyone knows what are the standard bindings for the spacebar in other animation packages?

Trying to follow some common ground is another possibility...

Brecht Van Lommel (brecht) renamed this task from Rework Mode Switching on Objects to Default Keymap: Rework Mode Switching on Objects.Nov 24 2013, 5:48 PM

@Marcelo Malheiros (mgmalheiros)

In Maya, holding down spacebar brings up a big multi-menu (Maya calls it the "hotbox menu" IIRC), similar to what Blender used to do pre-2.5. Tapping spacebar maximizes/un-maximizes the currently focused viewport, similar to shift-space or ctrl-up in Blender.

In XSI, at least the last time I used it (quite a while ago), spacebar backs you out of any special modes you might be in, dropping you back into object/selection mode. It's sort of a "panic" button in that respect, that always lets you get back into a common context.

In Houdini, you use spacebar as a modifier key with the mouse buttons to do viewport navigation.

I've not used 3dsMax, Cinema 4d, or any of the other apps before, so I can't speak to that.

In any case, of those three, XSI's use of spacebar is actually pretty similar to what I'm suggesting, though not quite as flexible.

@Nathan Vegdahl (cessen),

"In Maya, holding down spacebar brings up a big multi-menu (Maya calls it the "hotbox menu" IIRC), similar to what Blender used to do pre-2.5. Tapping spacebar maximizes/un-maximizes the currently focused viewport, similar to shift-space or ctrl-up in Blender."

I just want to add that there is another factor involved. Pattern recognition. When I was being trained in Maya, the individual training (a former art lead and character artist from EA) showed me that there's a form of pattern memorization taking place. He could swipe left then up and then down to activate an operation without ever needed to look at the actual menu itself. Its actually easier and more direct to just memorize swipe patterns. I believe the android OS started using this or can use this for quickly calling on certain operations and or applications.

Why I also think this is important is due to the fact that a large segment of the 3d artist out there will have or be using a tablet or cintiq. With only a pen and a limited set of buttons on the tablet itself, being able to access something as important as the edit mode with just the mouse makes all the difference in the world. In Maya, you hold down the right mouse button to get a pie menu in which to select between verts,edges, faces (which all automatically puts it in edit mode), and object mode, which pulls it out of any edit mode is also present on that menu. Once you are used to where the placement is "upper right corner", it becomes a quick rightclick drag upper left movement. You basically stop having to even look at the menu but know what to access by short movements and its all tied to the pen/mouse. Very useful instead of removing one hand to find the tab key.

Just something to consider. It doesnt have to be a replica of maya, but I think its important that maya is able to make use of pattern based menus which cut out the need for even looking at them while being tablet friendly at the same time.