This page proposes a consistant and predictable usage of the mouse and mouse-buttons in Blender.

Most of what you can see below already works that way in Blender.

Definitions

First, we define two basic methods for mouse handling;

 

Global

Global mouse handling works potentially in any location of the editor. Examples are view-rotating, or the 3d cursor. Selection also belongs to this category, since selection can be done on solid objects or faces as well (e.g. there's no predefined fixed hotspot).

 

Local

Local mouse handling is restricted to clearly defined sub regions or hotspots in the UI. These are buttons, scroll bars, widgets, menus, toolbars or headers.

 

It is apparant that "Global" mouse methods should not conflict with each other, and be totally consistant. They can be defined separately from the "Local" methods though. Actually, the Local methods spatially override the Global methods, typically indicated with a hilite (for buttons, headers).

 

Within temporal modes, such as while rotating something, mouse methods can temporally change. The MMB constraint chooser is an example for that.

 

Mouse click types

 

Further we distinguish three types of mouse clicks;

<typolist>

Click: pressing the button and release immediately

Click-Drag: pressing the button, move mouse, and release

Click-Hold: pressing the button, don't move mouse, and release after while

</typolist>

The latter method is hardly used in Blender, with as exception the LMB click-hold toolbox popup.

 

And we have three modifier keys, to change mouse click meanings;

<typolist>

Control

Alt

Shift

</typolist>

(For Mac OSX users also the Apple ("Command") is used, this for the poor people using a laptop or single-button mouse, to denote the RMB.)

 

All of these variables can be put in a diagram.

The image below illustrates the current mouse methods the 3D window.

("c" = control, "a" = alt, "s" = shift key modifier)

LMB vs RMB

Even whilst the 'rationale' - and Blender past - defines that RMB selection fits very well with the perception and mental model for mouse usage in general (read Raskin's Humane Interface!), market conventions (history) have convinced us to make this a user option. This means that we define actually 5 mouse buttons, with the "Select button" or "Action button" be at choice mapped to Left or Right mouse button.

To not give up design constancy, we can further restrict this 'freedom' to only the Global mouse handling, as illustrated in the image above.

 

As a further design decision, we can also keep the choices for "Select-MB" pre-defined, optimally designed for general usage, but the choices for "Action-MB" become user-defined, optimized for specific tasks or preferred working methods.

 

If you look closely at the relationship between the "modifiers" and the mouse clicks, a new and very interesting diagram can be constructed:

By keeping track of the order of modifiers pressed, this gives us 10 different options for each click, click-drag and click-hold respectively. For three mouse buttons that adds up to a potentional 90 different actions assigned.

 

By design, we can fill in such a table pre-defined for the "Select-MB" , but create an interface within Blender for defining the actions you like to make to the "Action-MB".

 

Currently assignable actions are;

<typolist>

Border select (click and click-hold)

Lasso select (click-hold)

3D Cursor (click)

Gestures (click-drag)

View mode (click-drag)

Toolbox (click)

Knife cut (click drag)

</typolist>