Formalize Default Selection Behavior and Key-map #78253

Open
opened 2020-06-25 13:17:01 +02:00 by Julian Eisel · 9 comments
Member

Selection should behave as consistent as possible throughout Blender. There should be a formal description for that to help avoiding inconsistencies.

NOTE: This task is WIP, all content is tentative.

We may have to draw distinctions between right-click vs. left-click and 2D vs. 3D editors. For the latter, there are rather different requirements.

2D Editors

Key-map item Action
{key Click} Select item (and activate) an item. Deselect others.
{key Shift Click} Toggle selection (and activate):
* Select (and activate) if item was not selected
* (Activate it item was selected)
* Deselect item (if already active, or) if selected.
... ...

[TODO make table per-tool?]

Selection should behave as consistent as possible throughout Blender. There should be a formal description for that to help avoiding inconsistencies. NOTE: This task is WIP, all content is tentative. We *may* have to draw distinctions between right-click vs. left-click and 2D vs. 3D editors. For the latter, there are rather different requirements. ### 2D Editors | Key-map item | Action | ---------------- | -------- | {key Click} | Select item (and activate) an item. Deselect others. | {key Shift Click} | Toggle selection (and activate): | | * Select (and activate) if item was *not* selected | | * (Activate it item was selected) | | * Deselect item (if already active, or) if selected. | ... | ... [TODO make table per-tool?]
Author
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Author
Member

Added subscriber: @JulianEisel

Added subscriber: @JulianEisel

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos

Glad to see this issue come up.
Unlike many users I have always liked Blender's key map consistency across the board, despite some exceptions. One of the few things that always bothered however me was how selection was neither internally consistent, nor matched other more broad guidelines.
What I'd like to see as outcome from this task is end up with a consistent use of modifier keys throughout selection modes.

At the moment modifier keys don't trigger the same selection behavior across the different selection modes, click-select, box-select, paint-select and lasso.
For example in the left-click keymap, the click-select and box-select Shift key is set for adding to or extending selection, but it deselects in paint-select and lasso.
The Ctrl modifier replaces selection without extension for click-select, but is set for remove for box-select. It does nothing under paint select, and to remove from selection in paint mode you have to use middle-click, which may be hard to discover.

What I had proposed before is to use these modifier keys consistently across all modes, so they are easier to work with and one as to memorize less possible combinations.
We already have in place a very good convention for modifier keys, where Shift augments or extends an operator, and Alt key reverses or negates it (H for hid/unhide, P for parent/unparent, etc ), I was hoping we could extend this behavior to selection as well.

Modifier Key Mode Object Behavior Description
None Click-Select Object Mode Select Replace Don't extend current selection
Shift Click-Select Object Mode Extend Select Add to current selection
Ctrl Click-Select Object Mode Toggle Select Toggle items in or out of selection
Alt Click-Select Object Mode Deselect Only deselect don't replace current selection
Ctrl + Shift Click-Select Object Mode Enum Extend Extend selection with enum popup menu for overlapping objects
Ctrl + Alt Click-Select Object Mode Enum Deselect Deselect with enum popup menu for overlapping objects
Shift+ Alt Click-Select Object Mode Enum Replace Select without extending with enum popup menu for overlapping objects
Shift + Ctrl + Alt Click-Select Object Mode ? Select Hierarchy ? Select objects with children
None Box, Lasso, Paint Object/Edit Mode Select Replace Don't extend current selection
Shift Box, Lasso, Paint Object/Edit Mode Extend Select Add to current selection
Ctrl Box, Lasso, Paint Object/Edit Mode Toggle Select Toggle items in or out of selection
Alt Box, Lasso, Paint Object/Edit Mode Deselect Only deselect don't replace current selection
Ctrl + Shift Box, Lasso, Paint Object/Edit Mode ? ?
Ctrl + Alt Box, Lasso, Paint Object/Edit Mode ? ?
Shift+ Alt Box, Lasso, Paint Object/Edit Mode ? ?
Shift + Ctrl + Alt Box, Lasso, Paint Object/Edit Mode ? ?
None Click-Select Mesh Edit Mode Select Replace Don't extend current selection
Shift Click-Select Mesh Edit Mode Extend Select Add to current selection
Ctrl Click-Select Mesh Edit Mode Toggle Select Toggle items in or out of selection
Alt Click-Select Mesh Edit Mode Deselect Only deselect don't replace current selection
Ctrl + Shift Click-Select Mesh Edit Mode Loop Select Extend selection to edge loop (toggle)
Ctrl + Alt Click-Select Mesh Edit Mode Ring Select Extend selection to edge ring (toggle)
Shift+ Alt Click-Select Mesh Edit Mode Shortest Path Select shortest path
Shift + Ctrl + Alt Click-Select Mesh Edit Mode Shortest Path Fill Select shortest path fill mode

Whichever specific keys end up assigned to each mode I leave to you, I generally like to customize my keymap to my taste anyway so it is not so relevant, what I'd like to see is a consistent use across all modes.

Glad to see this issue come up. Unlike many users I have always liked Blender's key map consistency across the board, despite some exceptions. One of the few things that always bothered however me was how selection was neither internally consistent, nor matched other more broad guidelines. What I'd like to see as outcome from this task is end up with a consistent use of modifier keys throughout selection modes. At the moment modifier keys don't trigger the same selection behavior across the different selection modes, click-select, box-select, paint-select and lasso. For example in the left-click keymap, the click-select and box-select `Shift` key is set for adding to or extending selection, but it deselects in paint-select and lasso. The `Ctrl` modifier replaces selection without extension for click-select, but is set for remove for box-select. It does nothing under paint select, and to remove from selection in paint mode you have to use middle-click, which may be hard to discover. What I had proposed before is to use these modifier keys consistently across all modes, so they are easier to work with and one as to memorize less possible combinations. We already have in place a very good convention for modifier keys, where `Shift` augments or extends an operator, and `Alt` key reverses or negates it (`H` for hid/unhide, `P` for parent/unparent, etc ), I was hoping we could extend this behavior to selection as well. | Modifier Key | Mode | Object | Behavior | Description | -------------- | ------ | --------| ----------|------------- | ~~None~~ | Click-Select | Object Mode | Select Replace | Don't extend current selection | `Shift` | Click-Select | Object Mode | Extend Select | Add to current selection | `Ctrl` | Click-Select| Object Mode | Toggle Select | Toggle items in or out of selection | `Alt` | Click-Select| Object Mode | Deselect | Only deselect don't replace current selection | `Ctrl` + `Shift` | Click-Select | Object Mode | Enum Extend | Extend selection with enum popup menu for overlapping objects | `Ctrl` + `Alt` | Click-Select | Object Mode | Enum Deselect | Deselect with enum popup menu for overlapping objects | `Shift`+ `Alt` | Click-Select | Object Mode | Enum Replace | Select without extending with enum popup menu for overlapping objects | `Shift` + `Ctrl` + `Alt` | Click-Select | Object Mode | ? Select Hierarchy | ? Select objects with children | ~~None~~ | Box, Lasso, Paint | Object/Edit Mode | Select Replace | Don't extend current selection | -- | -- | -- | -- | -- | | `Shift` | Box, Lasso, Paint | Object/Edit Mode | Extend Select | Add to current selection | `Ctrl` | Box, Lasso, Paint | Object/Edit Mode | Toggle Select | Toggle items in or out of selection | `Alt` | Box, Lasso, Paint | Object/Edit Mode | Deselect | Only deselect don't replace current selection | `Ctrl` + `Shift` | Box, Lasso, Paint | Object/Edit Mode | ? | ? | `Ctrl` + `Alt` | Box, Lasso, Paint | Object/Edit Mode | ? | ? | `Shift`+ `Alt` | Box, Lasso, Paint | Object/Edit Mode | ? | ? | `Shift` + `Ctrl` + `Alt` | Box, Lasso, Paint | Object/Edit Mode | ? | ? | ~~None~~ | Click-Select | Mesh Edit Mode | Select Replace | Don't extend current selection | -- | -- | -- | -- | -- | | `Shift` | Click-Select | Mesh Edit Mode | Extend Select | Add to current selection | `Ctrl` | Click-Select| Mesh Edit Mode | Toggle Select | Toggle items in or out of selection | `Alt` | Click-Select| Mesh Edit Mode | Deselect | Only deselect don't replace current selection | `Ctrl` + `Shift` | Click-Select | Mesh Edit Mode | Loop Select | Extend selection to edge loop (toggle) | `Ctrl` + `Alt` | Click-Select | Mesh Edit Mode | Ring Select | Extend selection to edge ring (toggle) | `Shift`+ `Alt` | Click-Select | Mesh Edit Mode | Shortest Path | Select shortest path | | `Shift` + `Ctrl` + `Alt` | Click-Select | Mesh Edit Mode | Shortest Path Fill | Select shortest path fill mode | Whichever specific keys end up assigned to each mode I leave to you, I generally like to customize my keymap to my taste anyway so it is not so relevant, what I'd like to see is a **consistent use across all modes**.

Added subscriber: @xan2622

Added subscriber: @xan2622

I hope this is not off-topic but here is a suggestion for a new hotkey:

Since ALT is usually the opposite of a hotkey, I wish Alt+i could directly create an outset (instead of an inset).
(add-on: https://blenderartists.org/t/offset-edges)

I hope this is not off-topic but here is a suggestion for a new hotkey: Since ALT is usually the opposite of a hotkey, I wish **Alt+i** could directly create an **outset** (instead of an inset). (add-on: https://blenderartists.org/t/offset-edges)

Added subscriber: @1D_Inc

Added subscriber: @1D_Inc

Selection should behave as consistent as possible throughout Blender.

Actually, no. Usability in workflow design is defined as "perfect balance between consistency and relevancy solutions", where consistency solutions are easier to learn and relevancy solutions allow to perfom actions faster during hard work in further.
Blender is one of the fastest software because discovered this way, it shown that it is impossible to create competitive fast solution following only consistency way.

> Selection should behave as consistent as possible throughout Blender. Actually, no. Usability in workflow design is defined as "perfect balance between consistency and relevancy solutions", where consistency solutions are easier to learn and relevancy solutions allow to perfom actions faster during hard work in further. Blender is one of the fastest software because discovered this way, it shown that it is impossible to create competitive fast solution following only consistency way.

Alt for deselect instead of selecting loop.

What is the point? To put the most complex shortcuts to the most relevant actions to perform they as slow as possible, following 3dsmax way, vanishing all the advantages over it?
Edit mode and object mode are two different worlds with completely different requirements to selection and operations, they cannot be equalized by definition)

> Alt for deselect instead of selecting loop. What is the point? To put the most complex shortcuts to the most relevant actions to perform they as slow as possible, following 3dsmax way, vanishing all the advantages over it? Edit mode and object mode are two different worlds with completely different requirements to selection and operations, they cannot be equalized by definition)
Philipp Oeser removed the
Interest
User Interface
label 2023-02-10 09:24:21 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#78253
No description provided.