One of the major issues with the tool system, is that switching tools isn't easy enough using the keyboard with the default keymap.
We would like to introduce a way to make the keyboard shortcuts switch tools, without having to click on the toolbar, or opening menus. Here's how we think we can solve it:
We want to leverage muscle memory for shortcuts users already know, such as G, R, S for the transform tools, as well as K for Knife, Alt-S for Move Along Normals, and so on.
##Leader Keys
To do this, we use the concept of //leader keys// (also known as //chained keys//). This makes it so that tapping (but not holding) a modifier will change the following shortcut. In this case we think we will use Alt to switch tools.
In practice, this means users will tap Alt, then G to switch to the Move tool, and so forth.
##Visual Feedback
We want to make it obvious that a leader key has been entered, so that users know that the following key stroke will differ from normal. We do this in a few ways:
####Status Bar
Here we can see the leader key, plus the shortcuts:
{F7753731, size=full}
####Toolbar
After the leader key is pressed, we can also display the hotkeys inside the toolbar buttons. This gives a more direct association with the tools in the toolbar and their corresponding shortcut.
{F7753735, size=full}
##Implementation
- Pressing Alt and releasing (without pressing another key) would prompt for input.
- Pressing any of the mapped keys would activate the tool immediately.
- Pressing any key not mapped - such as painting or using mouse buttons to pan the view - would cancel the prompt and perform the action (preventing unintended leader key press from Blocking other actions).
##Precedents
- Firefox supports accessing menu this way (Tapping Alt, then F opens the file menu).
- Typing in accent characters on macOS uses [[ https://www.idownloadblog.com/2019/01/03/type-accents-on-mac-keyboard/ | leader-key like functionality. ]]
- Spacemacs relies heavily on a [[ http://spacemacs.org/doc/QUICK_START.html#the-leader-keys | leader key ]].