Page MenuHome

Keymaps: left click select changes for the default Blender keymap.

Authored by Brecht Van Lommel (brecht) on Nov 15 2018, 8:57 PM.
"Love" token, awarded by 0o00o0oo."Love" token, awarded by manitwo."Love" token, awarded by undo."Love" token, awarded by Okavango."Love" token, awarded by jendrzych."Love" token, awarded by billreynish.



Both the active tools and selection are now on LMB, which leads to various
conflicts. For that reason the LMB keymap now has a couple of differences
compared to before. These changes do not affect the RMB keymap.

  • Context Menu: W -> RMB
  • Select Tool activate ("drop tool"): None -> W
  • Set Cursor: RMB -> Shift+RMB
  • Loop Select: Alt+LMB -> double click LMB
  • Mask Feather Vertex Slide: Shift+RMB -> Ctrl+Shift+RMB
  • Node Select: only with LMB now, no RMB

The idea behind the W key Select Tool shortcut is that various tools can't be
combined with selection, unlike the RMB keymap. So this works as a quick
shortcut to drop a tool and go back to selection.

Tools: set Select Box tool as default, rather than Cursor.

This goes along with coming LMB select keymap changes, where we want the
user to be able to LMB click to select by default, rather than set the cursor.
The cursor will still be directly setabble with shift+RMB.

Depends on D3946.

Diff Detail

rB Blender
km (branched from blender2.8)
Build Status
Buildable 2483
Build 2483: arc lint + arc unit

Event Timeline

This revision is now accepted and ready to land.Nov 15 2018, 9:12 PM

The LMB keymap is looking like a fairly different keymap.

I'm wary of having multiple core keys modified within the same keymap, it's getting doubtful if we can reasonably maintain left/right which are almost separate maps + legacy (possibly other options).

Checking over the changes and think it's worth a try. Just noting that with these changes it's quite easy to break one of the maps.

@Campbell Barton (campbellbarton): This was described in the design task here:

As is outlined there, LMB select cannot work like in 2.7x because it conflicts with using active tools. For this reason, to support left click together with active tools, the left click option must work more differently.

However, we don't want to maintain it as a completely different keymap, because all the shortcuts continue to be the same. G for move, R for rotate, E for extrude and so on. It would be highly impractical if this was a fully indenpendent keymap and maintained separately.

This is why we now have the ability to have the keymap as a script, because we can add logic to support this kind of thing

@William Reynish (billreynish) in principle it's fine (was suggesting to share data between keymaps from the beginning),
it's just there is a limit to how configurable things can be while keeping maintainable, each change has knock-on effects.

Even though we _could_ simplify the keymap later on, it tends to be the case that things get more complicated - not less.

If we try keep the keymap minimal maybe it goes OK. :)

Worst case we can rewind some changes if they prove to be unmaintainable.

@Campbell Barton (campbellbarton): Yes, I agree - you are right to raise this concern.

But this is the best way I can think of to make LMB selection work well, without having an entirely separate keymap, where every added or changed shortcut has to maintained separately.

yep, think we're all on the same page.

Testing the default keymap after these changes.

One of the issues with making box select default was that lasso cant be easily used.

@William Reynish (billreynish) mentioned that he discussed this with @Brecht Van Lommel (brecht) and Ctrl-RMB-Tweak could be used for lasso.

This does conflict with object center selection (maybe why it wasn't applied in this patch?)

If users like to use keyboard to access selection they can still use the cursor tool, so think this isn't blocker.
Think it would still be nice to allow though.

Committed rBbf7af31e9f7c0177c1d390ab77804f8d556e0e56

Made minor changes:

  • double-space doesn't set border select since this already has a key binding - where none existed for the cursor tool.
  • also renamed select_click -> select_mouse_value, since it reads confusingly if something called click is in fact press.

Thinking of all the interacting cases when making changes here is indeed complicated, I don't have good solutions to avoid that.

Loop Select could be made double click for RMB to improve consistency (in addition to Alt or exclusively).

We already have the ability to toggle between loop-select and boundary select (loop select twice on a boundary selects the entire boundary, not just the loop).

To boundary-loop select would then needs 4x clicks

First let me congratulate you at tackling this task. I'm happy to see a step in this direction.

Now to the first impressions.
Just tried the new keymap. Frankly does not feel optimal at all. Feels a RMBner made it. No offense :)
Guys why not use the example that Paweł Łyczkowski had made ages ago for the 2.6x as a base? He had a very functional example with his rSelect addon.
I believe that my setup is also very functional. I seriosly hope you guys will try my 2,8 setup before commiting to what you are making here! A lot of functionality can coexist on that single LMB already!

My 2.8 Setup was still a WIP (now is broken with the latest buildbot, but you can try it on a slightly older version, works on: blender-2.80.0-git.c94f806dc73-windows64), but has main functionalities in there.
My 2.7x Setup is pretty "complete".

Disclaimer, I use maya ALT-navigation

You can grab both the 2.8 and 2.7x setup files here (documentation covers only 2.7x):

Please at least try the 2.8 setup before you commit to reinventing the wheel. Feel free to contact me for feedback.

@0rAngE (undo): This is still a variation on the Blender keymap. What you are proposing is a completely different keymap with completely different shortcuts. The purpose of this keymap is that it should still work like Blender with the same basic Blender hotkeys.

What you are suggesting is very similar to the Industry Standard Keymap (Now called 'Compatible Keymap'). The basics of this has been done and should be included also.