[Bf-blender-cvs] [f5c6029cc51] master: Keymap: preference for keys to set the active tool
Campbell Barton
noreply at git.blender.org
Tue Sep 21 10:25:44 CEST 2021
Commit: f5c6029cc51d69b39e39038cf22716ef8c50a947
Author: Campbell Barton
Date: Tue Sep 21 17:55:45 2021 +1000
Branches: master
https://developer.blender.org/rBf5c6029cc51d69b39e39038cf22716ef8c50a947
Keymap: preference for keys to set the active tool
With "Keys Activate Tools" preference enabled, keys such as G/R/S
activate the move/rotate/scale tool instead of the modal operator.
Addresses T83692.
===================================================================
M release/scripts/presets/keyconfig/Blender.py
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
===================================================================
diff --git a/release/scripts/presets/keyconfig/Blender.py b/release/scripts/presets/keyconfig/Blender.py
index 5ecb67d99ba..15cc6097979 100644
--- a/release/scripts/presets/keyconfig/Blender.py
+++ b/release/scripts/presets/keyconfig/Blender.py
@@ -54,6 +54,15 @@ class Prefs(bpy.types.KeyConfigPreferences):
default='PLAY',
update=update_fn,
)
+ use_key_activate_tools: BoolProperty(
+ name="Keys Activate Tools",
+ description=(
+ "Key shortcuts such as G, R, and S activate the tool instead of running it immediately"
+ ),
+ default=False,
+ update=update_fn,
+ )
+
rmb_action: EnumProperty(
name="Right Mouse Select Action",
items=(
@@ -212,6 +221,7 @@ class Prefs(bpy.types.KeyConfigPreferences):
row.prop(self, "use_alt_tool")
row = sub.row()
row.prop(self, "use_select_all_toggle")
+ row.prop(self, "use_key_activate_tools", text="Key Activates Tools")
# 3DView settings.
col = layout.column()
@@ -248,6 +258,7 @@ def load():
prefs.inputs.mouse_emulate_3_button_modifier == 'ALT'
),
spacebar_action=kc_prefs.spacebar_action,
+ use_key_activate_tools=kc_prefs.use_key_activate_tools,
v3d_tilde_action=kc_prefs.v3d_tilde_action,
use_v3d_mmb_pan=(kc_prefs.v3d_mmb_action == 'PAN'),
v3d_alt_mmb_drag_action=kc_prefs.v3d_alt_mmb_drag_action,
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 1f20f493505..4120006edad 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -56,6 +56,8 @@ class Params:
"use_v3d_mmb_pan",
# Alt click to access tools.
"use_alt_click_leader",
+ # Transform keys G/S/R activate tools instead of immediately transforming.
+ "use_key_activate_tools",
# Optionally use a modifier to access tools.
"tool_modifier",
# Experimental option.
@@ -83,6 +85,7 @@ class Params:
# User preferences.
spacebar_action='TOOL',
+ use_key_activate_tools=False,
use_select_all_toggle=False,
use_gizmo_drag=True,
use_fallback_tool=False,
@@ -149,6 +152,7 @@ class Params:
# User preferences
self.spacebar_action = spacebar_action
+ self.use_key_activate_tools = use_key_activate_tools
self.use_gizmo_drag = use_gizmo_drag
self.use_select_all_toggle = use_select_all_toggle
@@ -208,6 +212,16 @@ def op_tool_cycle(tool, kmi_args):
return ("wm.tool_set_by_id", kmi_args, {"properties": [("name", tool), ("cycle", True)]})
+# Utility to select between an operator and a tool,
+# without having to duplicate key map item arguments.
+def op_tool_optional(op_args, tool_pair, params):
+ if params.use_key_activate_tools:
+ kmi_args = op_args[1]
+ op_tool_fn, tool_id = tool_pair
+ return op_tool_fn(tool_id, kmi_args)
+ return op_args
+
+
# ------------------------------------------------------------------------------
# Keymap Templates
@@ -982,10 +996,16 @@ def km_uv_editor(params):
op_menu("IMAGE_MT_uvs_select_mode", {"type": 'TAB', "value": 'PRESS', "ctrl": True}),
*_template_items_proportional_editing(
params, connected=False, toggle_data_path='tool_settings.use_proportional_edit'),
- ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
- ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
- ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
+ op_tool_optional(
+ ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.move"), params),
+ op_tool_optional(
+ ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.rotate"), params),
+ op_tool_optional(
+ ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.scale"), params),
("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True},
@@ -1262,13 +1282,23 @@ def km_view3d(params):
("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
# Transform.
- ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
- ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
- ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
+ op_tool_optional(
+ ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.move"), params),
+ op_tool_optional(
+ ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.rotate"), params),
+ op_tool_optional(
+ ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.scale"), params),
+ op_tool_optional(
+ ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
+ (op_tool_cycle, "builtin.to_sphere"), params),
+ op_tool_optional(
+ ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
+ (op_tool_cycle, "builtin.shear"), params),
("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None),
- ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
- ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
("object.transform_axis_target", {"type": 'T', "value": 'PRESS', "shift": True}, None),
("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
@@ -3297,14 +3327,18 @@ def km_grease_pencil_stroke_edit_mode(params):
items.extend([
# Interpolation
- ("gpencil.interpolate", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
+ op_tool_optional(
+ ("gpencil.interpolate", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
+ (op_tool_cycle, "builtin.interpolate"), params),
("gpencil.interpolate_sequence", {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True}, None),
# Selection
*_grease_pencil_selection(params),
# Duplicate and move selected points
("gpencil.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
# Extrude and move selected points
- ("gpencil.extrude_move", {"type": 'E', "value": 'PRESS'}, None),
+ op_tool_optional(
+ ("gpencil.extrude_move", {"type": 'E', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.extrude"), params),
# Delete
op_menu("VIEW3D_MT_edit_gpencil_delete", {"type": 'X', "value": 'PRESS'}),
op_menu("VIEW3D_MT_edit_gpencil_delete", {"type": 'DEL', "value": 'PRESS'}),
@@ -3349,16 +3383,30 @@ def km_grease_pencil_stroke_edit_mode(params):
# Merge Layer
("gpencil.layer_merge", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None),
# Transform tools
- ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
- ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
- ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
+ op_tool_optional(
+ ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.move"), params),
+ op_tool_optional(
+ ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.rotate"), params),
+ op_tool_optional(
+ ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
+ (op_tool_cycle, "builtin.scale"), params),
+ op_tool_optional(
+ ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
+ (op_tool_cycle, "builtin.to_sphere"), params),
+ op_tool_optional(
+ ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
+ (op_tool_cycle, "builtin.shear"), params),
("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
- ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None),
- ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
- ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
- ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True},
- {"properties": [("mode", 'GPENCIL_SHRINKFATTEN')]}),
+ op_tool_optional(
+ ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None),
+ (op_tool_cycle, "builtin.bend"), params),
+ op_tool_optional(
+ ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True},
+ {"properties": [("mode", 'GPENCIL_SHRINKFATTEN')]}),
+ (op_tool_cycle, "builtin.radius"), params),
("transform.transform", {"type": 'F', "value": 'PRESS', "shift": True},
{"properties": [("mode", 'GPENCIL_OPACITY')]}),
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list