Standardized Keymap for Blender

(rawalanche) #1

Hi,

for the past ~9 days I’ve been working on a complete overhaul of Blender’s input mapping, to make it more consistent with all the other software out there, while preserving vast majority of the functionality that’s mapped in the Blender’s default keymap.

I’ve came up with what I call a “Standardized Keymap for Blender”.

It is intended to:

  • Reduce learning curve by making elementary actions work as expected by both new users and user coming from other packages.
  • Prioritize consistency, so that the same basic actions like interaction and selections are as consistent between Blender’s different editors as possible.
  • Promote confidence, so that once you learn the basics of interaction with the software, you will feel confident to interact with the editors other than 3D View without any worries that a wrong key press or a mouse click will make things go haywire.

I did succeed from the most part, however due to a few bugs and input editor architecture limitations, I had to do some compromises here and there, so things are not as consistent as they could be.

Who is this keymap for:

  • A new Blender users, who are seeking to learn Blender and have hard time doing so because of the unfriendly default keymap.
  • Existing Blender users, who use Blender alongside other tools, especially other 3D packages, and don’t like having to switch their muscle memory to a significant degree when switching between the software.
  • Existing Blender users, who do use Blender’s default keymap, but do not like it. Those, who probably tried to customize it, but have failed because it is too time consuming and/or frustrating process.

Who is this keymap not for:

  • Blender users who are already used to a default Blender’s keymap, and like it, or have customized it to their liking. If you voluntarily use Blender’s default keymap, then using this one will probably drop your productivity down to nearly zero and cause you a lot of frustration. It takes about ~2 weeks for muscle memory to be rebuilt, and by 2 weeks I mean really 8+ hours of work a day. So if you are to try this keymap, you need to consider if re-learning all your Blender muscle memory from scratch is worth 2 weeks of significantly hindered productivity.

Just the customization part has taken me over 80 hours to get finished, which speaks a lot about deficiencies of Blender’s input editor, which needs some serious cleanup and unification. On top of that, there are numerous bug which will corrupt your keymap for apparently no reason. I have spent all this time and undergone all this troubleshooting so that you do not have to :slight_smile:

I do hope that alongside helping 3D newbies as well as users migrating from other packages to get into Blender, it will also prove the importance of a good defaults, which Blender development has neglected in the past.

So, here is the link to a series of video tutorials showcasing this new keymap in action:

Here is a link to the keymap itself:
https://drive.google.com/file/d/1qozxfQW_TKQvQGWmWaR2NhngEKybVKAV/view

And here is a link to a reference sheet for all the customized hotkeys:

You will find that not all key bindings are listed in the sheet, that is for several reasons:

  • Some mappings are not there because they do not differ from Blender’s default. I did not change everything just for the sake of changing it. If something worked well, I left it alone. I really changed only things that were ergonomically wrong, or things that required to be changed to be consistent with things on other places.
  • Below the sheet are tabs for different editors. Some of the editors contains only hotkeys unique to them, which means rest of the hotkeys are derived from/work the same as global hotkeys.
  • Some editors are not even listed because they did not require any changes at all. For example, Blender adheres very well to the standards when it comes to text editing or Python console input.

Also, on the leftmost column of the Global tab, you can see a few unsupported features:

  • Circle select: I wanted to originally include it but it has this weird modal system, which can not be customized, so it did not set in very well with the rest of the keymap
  • Hotkeys for switching layers: I needed number keys for a lot more frequent and important actions than switching layers. Furthermore, I noticed that majority of even the most experienced blender user still interact with layers by clicking the UI icons. Lastly, 2.8 will completely change the layer management, so this system is doomed anyway. If you are someone who relies on rapid, hotkey based layer switching, this keymap may not be for you.
  • NDOF (3D mouse): I don’t own one, so I could not test if, and how it works, therefore I’ve disabled all the NDOF bindings to make sure it won’t conflict with anything. If you own a 3D mouse, this keymap won’t work with it :frowning:

If you find any bug, or a conflict, let me know, and I will do my best to fix it :slight_smile:

Thanks :slight_smile:

1 Like
A Simple Keymap for Blender
Blender 2.8 development thread
(cgstrive) #2

Keyset does indeed looks very familiar and logically structured! Subjective note - If you’d be animating you do not want to lift your hand up and move half across keyboard every time you need to press K to set keyframe. For example it’s “S” in maya and Unreal, right under the rest position of your left hand. Overall good job!

(rawalanche) #3

K is actually for Keying set, which is not as frequent action, but setting keyframe is on I, which is equally as far away indeed :slight_smile:

I do animate occasionally, but it’s not what I primarily do, so this did not occur to me. K and I keys are actually same as Blender’s default. I did not change them because they kind of made sense in terms of phonetic association, e.g. K for Keying sets and I for Insert keyframe.

I will wait for some more feedback and give it some more time using it myself, and if it becomes too much of an issue, I’ll definitely try to do something about it :slight_smile:

(rboxman) #4

Pretty cool. Is your desire to eventually replace the existing Max and Maya keymap presets that are shipped with Blender? If so, perhaps 2.8 is the time to do that esp. with the Blender 101 project being worked on.

(Atair) #5

as very long time 3ds max user this looks really nice!
just started your video tutorials, and i think i will adopt it
thanks!

(rawalanche) #6

Being a 3ds Max user, of course the first thing I tried was to set up my Blender like my 3ds Max, but I failed. Blender is not 3ds Max, or Maya for that matter, so doing any kind of 3ds Max or Maya model for Blender does not make much sense and should be abandoned IMHO :slight_smile: Each software has unique way of doing things and needs a keymap tailored for it.

With that being said, those things, which are not unique to a given software have no reason to be radically different from the rest, so my keymap is not a Max or Maya keymap, but a Blender keymap which simply makes features not unique to Blender work the way everyone naturally expects.

However, if this keymap, or something close to this would be adopted as a new default for 2.8, I would be extremely happy about that. The current Blender’s default keymap would of course stay there, it just would not be default. So with all I have said in the text above, I think the most reasonable solution would be that in 2.8, on the splash screen, instead of Blender, Maya and Max input models, you would have just two models: 2.8 and 2.79 & earlier. 2.8 would be similar to my keymap and set as default, and 2.79 & earlier would be just one click away for those who like it :slight_smile:

(cgstrive) #7

Such keymap in Blender startup selection would be welcome addition and something I sorely missed when I started. I have also completely custom keymap that I spent years improving. Based on that experience I can share my subjective opinion:

  • Such presets must be thoroughly tested and optimized. Good example is contexts being synced with same hotkeys (e.g UV editor & viewport(lasso select, proportional falloff, 3d cursor placement, selecting linked etc)).
  • Most used keys must be accessible fast and within reach. Keyframing was an example “S”(set key) vs “I” which is in middle of keyboard. Modeling is even more important as common keys are spammed.
    Here’s a not so glamorous example of my previous keyboard which highlights where most used keys, best real-estate resides (not requiring hand to be raised, moved across keyboard):

  • Feedback from other max, maya, modo users should be gathered. Maya based navigation and hotkeys are in every 3D program as option so it’s most likely to have widest appeal. I have identical maya navigation hotkeys + rightclick for pivot. Works perfectly. Modo modeling keys are also extremely well thought out and worth borrowing from.
  • Hotkeys alone wont cut it. Pie menus are important in consolidating functionality in logical simplified subblocks.
  • Some people work with Wacom (myself, pitiwazou included). Hotkeys should work regardless of input device (1 more reason maya navigation is perfect as it’s also done with tablet in mind).
  • There is the issue of video tutorials for newcomers showing each hotkey pressed which has spooked many new users from using custom hotkeys. You need to find most ideal way of presenting your hotkeys and also how they relate to Blender default. Google docs is not solution here. Something like that: http://waldobronchart.github.io/ShortcutMapper/ which would allow searching by Blender Original hotkey, yours. Would allow Isolating Contexts (e.g just modeling ) and ideally would have visual reference.

A lot of this feedback is generic as I do not have time to analyse and test your solution right now, which looks very good and polished as it is. Hopefully we can see such a solution in the startup dropdown menu, but for that I think there are corners to be polished by engaging community and pinning down the best ways, instead of “my personal way”.

(rawalanche) #8

Yes, they are fair points, however it would indeed be a good idea to try the keymap out first before posting a feedback on it :slight_smile:

I do agree that proximity to the natural hand resting position is important. I have this method of quantifying hotkey value based on the distance from the resting hand position (around the S key) as well as the number of modifier keys needed to be pressed. So the further away the key is, the lower value it has, and the values are further reduced by need of a modifier key to be pressed.

For example:
Any keys from the left end of the keyboard up to the vertical row of 3, E, D, C have value of 1.0. 4, R, F, V row up to the 6, Y, H, N row have value of 0.8, keys from 7, U, J, M row to the right have value of 0.6, which remains consistent because then they start to become reachable by the mouse hand (assuming you are right handed).

Having each modifier key pressed multiplies the value by 0.5, so two modifier keys mean multiplying the value of the hotkey twice by 0.5, etc…

Mouse buttons have value of 2.0, they are most valuable buttons.

So in practice:
Q key has value of 1.0

Ctrl+Q key has value of 0.5*1.0=0.5

L key has value of 0.6

Ctrl+Shift+L key is 0.5*(0.5*0.6)=0.15

So for example Ctrl+Shift+L is much less valuable hotkey combination than Q or even Ctrl+Q.

It applies to mouse keys too. Pressing RMB has value of 2.0, but adding modifier key to it, Ctrl+RMB for example results in the value of 1.0, which means that pressing mouse button with modifier key is about as valuable as pressing a key close to hand resting position without any modifier key.

And so on… :slight_smile:

However, pure key value is not everything. When it comes to learning curve and information retention, phonetic association is also very important. B key for bevel just makes more sense than A key for bevel, when it comes to remembering the shortcuts, despite being little further away. First letter association is absolute ideal, but that’s not always possible, so it’s at least good practice for the hotkey to be at least one letter of the word, for example D for extruDe or S for inSet. I find that even this helps a little bit. :slight_smile:

(Michael W) #9

Cgstrive:
I once did a keymap for blender that managed to have blender view controls (with emulate middle mouse mode) ie the same as lightwave modeller and Maya viewnav at the same time. Maya view nav isn’t nice for me on a tablet so in like alt, ctrl alt and shift alt system with left clicks…

Viewnav and selection are different in Maya, max and blender. Personally I believe a good program should allow this to be user choice and easily set up.

Max allows this somewhat but they mess up selection and cloning when in Maya viewnav mode.

I appreciate the effort to make a more sane keymap but believe that whatever options there are it would be good to allow max , Maya lightwave etc style view nav and or selection modes and these shouldn’t affect all the other key mappings regardless of what set is picked
I don’t think the entire keymap needs to be changed when switching selection or viewnav

(rawalanche) #10

As I said, purpose of this map was not to make it 3ds Max or Maya style, but a complete, more logical overhaul of the entire Blender’s keymap. It’s a Blender keymap, just a more modern one in my eyes, it is not Maya style or Max style keymap.

With that being said, the reason I said I don’t think having Max or Maya style keymap presets in Blender is that it just doesn’t work, because Blender is not Max or Maya.

I tried that, I changed a few things, left alone the rest, but Blender’s default keymap is so packed, that if you change just a few things, you will break some consistency or make conflicts somewhere else. So then you proceed to fix those few conflicts and inconsistent behaviors somewhere else just to make a few more conflicts and a few more inconsistencies. And ultimately, this small change of a interaction model will either result in something just remaining broken, or it will ripple through the entire keymap like a tsunami wave, leaving it completely different.

Viewport navigation itself can be set to be Maya or Max like, but it ends where anything else than viewport navigation starts. If you give a new user something that says “Maya” or “Max”, they will have some expectations just to be deeply disappointed a few seconds later. If you then go out of bounds of just viewport navigation, into actual selection territory, exactly what I said above will happen. You will start getting conflicts or consistency problems, and your only two choices are to just keep something broken and don’t care, or to fix it but just push the further to a different place :slight_smile:

If you take a look at Blender’s Max and Maya presets, you will notice they do very little to actually make Blender feel like Max or Maya. I don’t think there’s many people using those at all, as they don’t do what they say they do. And the reason they make only very little of a difference is that if you go further than that, the same thing I described above will start to happen, so whoever was trying to do those probably realized it very quickly :slight_smile:

(Michael W) #11

I understood your purpose. I also agree that the max and maya presets should be limited.

i just wish architecturally that it would be easier to set viewnav interaction style, selection style and keyboard shortcuts as seperate mix and match things. I know that’s not how blender works right now but it would avoid the confusion you mention.

(Yamanote) #12

This is something that I wish more digital creation software developers would take into consideration as well.

Using a tablet in conjunction with an Apple Magic Trackpad 2 has made any mouse based workflow obsolete in my case.

(Romanji) #13

Can somebody explain to me why there are certain keys on my keyboard i cannot use with Blender?
Blenders keymap is stuffed to the brim and there are keys which cannot be used? WTF?
Its even worse on Linux.

(rawalanche) #14

I actually had success mapping pretty much all the keyboard keys with Blender’s input editor. Non the less, it would be good to discuss this in an another, new thread, to no derail this one :wink:

(Romanji) #15

I am sorry, i was selfish, because i actually wanted an answer and you seem to be qualified to give one, which you provided. Thank you.

(rawalanche) #16

I was just worried that this thread would end up full of discussion about different topic, which often happens here at BlenderArtists, and then the original post and its contents would become forgotten. I did not realize your question is directly related. Sorry if I sounded harsh :slight_smile:

(Dheim) #17

@rawalanche, is there any reason why this wouldn’t work on the 2.8 code base? I’ve been interested in getting into Blender but the control scheme has been a major turn-off for me. Your modifications seem like they would make my learning of Blender easier since they make more sense than the standard.

(Daniel Waters) #18

Just what I was looking for. Thanks!

(rawalanche) #19

2.8 is still missing crucial entries in input map editor, especially for the tools on the new left toolbar. They are implemented internally, but not exposed to the keymap editor. I can not make most of them work correctly with LMB.

1 Like
(Joseph Beaulieu) #20

I wish to apologize in advance because I am totally new to Blender and this forum, I have tried to find an answer without bothering you, but failed. so here goes.
First, I am really enjoying your keymap. it makes sense to me. being new I need to read/watch tutorials to understand the program. My problem is they all refer to the default keymap so I don’t know what they are doing.
Do you have a cross reference? Perhaps a column in your spreadsheet next to your mapping showing the default settings. It would help clueless people like me a lot.
Thanks in advance.