Keymap: use the application key for the context menu

This gives keyboard access to the context menu which can be useful
when using accelerator keys to access items within it.
This commit is contained in:
Campbell Barton 2019-12-10 17:55:29 +11:00
parent b7533f92e5
commit 3ea736fb4d
Notes: blender-bot 2023-02-14 05:37:19 +01:00
Referenced by issue #72364, Sculpt Mode RMB context menu returns an error
Referenced by issue #65919, Support "Menu" key to open the context menu
1 changed files with 40 additions and 31 deletions

View File

@ -161,6 +161,13 @@ def op_tool_cycle(tool, kmi_args):
# ------------------------------------------------------------------------------
# Keymap Templates
def _template_items_context_menu(menu, key_args_primary):
return [
op_menu(menu, kmi_args)
for kmi_args in (key_args_primary, {"type": 'APP', "value": 'PRESS'})
]
def _template_space_region_type_toggle(*, toolbar_key=None, sidebar_key=None):
items = []
if toolbar_key is not None:
@ -841,7 +848,7 @@ def km_uv_editor(params):
{"properties": [("data_path", 'tool_settings.use_snap')]}),
("wm.context_menu_enum", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
{"properties": [("data_path", 'tool_settings.snap_uv_element')]}),
op_menu("IMAGE_MT_uvs_context_menu", params.context_menu_event),
*_template_items_context_menu("IMAGE_MT_uvs_context_menu", params.context_menu_event),
])
# Fallback for MMB emulation
@ -1479,7 +1486,7 @@ def km_graph_editor(params):
op_menu_pie("GRAPH_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
("marker.add", {"type": 'M', "value": 'PRESS'}, None),
("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
op_menu("GRAPH_MT_context_menu", params.context_menu_event),
*_template_items_context_menu("GRAPH_MT_context_menu", params.context_menu_event),
])
if params.select_mouse == 'LEFTMOUSE' and not params.legacy:
@ -1585,7 +1592,7 @@ def km_image(params):
op_menu_pie("IMAGE_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
("image.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
("image.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
op_menu("IMAGE_MT_mask_context_menu", params.context_menu_event),
*_template_items_context_menu("IMAGE_MT_mask_context_menu", params.context_menu_event),
])
if params.legacy:
@ -1737,7 +1744,7 @@ def km_node_editor(params):
{"properties": [("data_path", 'tool_settings.use_snap')]}),
("wm.context_menu_enum", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
{"properties": [("data_path", 'tool_settings.snap_node_element')]}),
op_menu("NODE_MT_context_menu", params.context_menu_event),
*_template_items_context_menu("NODE_MT_context_menu", params.context_menu_event),
])
return keymap
@ -1763,7 +1770,7 @@ def km_info(params):
("info.report_delete", {"type": 'X', "value": 'PRESS'}, None),
("info.report_delete", {"type": 'DEL', "value": 'PRESS'}, None),
("info.report_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
op_menu("INFO_MT_context_menu", params.context_menu_event),
*_template_items_context_menu("INFO_MT_context_menu", params.context_menu_event),
])
return keymap
@ -1811,7 +1818,7 @@ def km_file_browser(params):
{"properties": [("increment", -10)]}),
("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
{"properties": [("increment", -100)]}),
op_menu("FILEBROWSER_MT_context_menu", params.context_menu_event),
*_template_items_context_menu("FILEBROWSER_MT_context_menu", params.context_menu_event),
])
return keymap
@ -2018,7 +2025,7 @@ def km_dopesheet(params):
op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
("marker.add", {"type": 'M', "value": 'PRESS'}, None),
("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
op_menu("DOPESHEET_MT_context_menu", params.context_menu_event),
*_template_items_context_menu("DOPESHEET_MT_context_menu", params.context_menu_event),
])
return keymap
@ -2067,7 +2074,7 @@ def km_nla_channels(params):
{"properties": [("above_selected", True)]}),
("nla.tracks_delete", {"type": 'X', "value": 'PRESS'}, None),
("nla.tracks_delete", {"type": 'DEL', "value": 'PRESS'}, None),
op_menu("NLA_MT_channel_context_menu", params.context_menu_event),
*_template_items_context_menu("NLA_MT_channel_context_menu", params.context_menu_event),
])
return keymap
@ -2143,7 +2150,7 @@ def km_nla_editor(params):
{"properties": [("mode", 'TIME_SCALE')]}),
("marker.add", {"type": 'M', "value": 'PRESS'}, None),
("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
op_menu("NLA_MT_context_menu", params.context_menu_event),
*_template_items_context_menu("NLA_MT_context_menu", params.context_menu_event),
])
return keymap
@ -2443,7 +2450,7 @@ def km_sequencer(params):
{"properties": [("left_right", 'LEFT'), ("linked_time", True)]}),
("sequencer.select", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
{"properties": [("left_right", 'RIGHT'), ("linked_time", True)]}),
op_menu("SEQUENCER_MT_context_menu", params.context_menu_event),
*_template_items_context_menu("SEQUENCER_MT_context_menu", params.context_menu_event),
])
return keymap
@ -2481,7 +2488,7 @@ def km_sequencerpreview(params):
return keymap
def km_console(params):
def km_console(_params):
items = []
keymap = (
"Console",
@ -2539,7 +2546,7 @@ def km_console(params):
{"properties": [("text", '\t')]}),
("console.indent_or_autocomplete", {"type": 'TAB', "value": 'PRESS'}, None),
("console.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None),
op_menu("CONSOLE_MT_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}),
*_template_items_context_menu("CONSOLE_MT_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}),
("console.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
])
@ -2688,7 +2695,7 @@ def km_clip_editor(params):
op_menu_pie("CLIP_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
("clip.copy_tracks", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
("clip.paste_tracks", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
op_menu("CLIP_MT_tracking_context_menu", params.context_menu_event),
*_template_items_context_menu("CLIP_MT_tracking_context_menu", params.context_menu_event),
])
if params.legacy:
@ -2932,7 +2939,7 @@ def km_animation_channels(params):
("anim.channels_group", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
("anim.channels_ungroup", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
# Menus.
op_menu("DOPESHEET_MT_channel_context_menu", params.context_menu_event),
*_template_items_context_menu("DOPESHEET_MT_channel_context_menu", params.context_menu_event),
])
return keymap
@ -3104,7 +3111,7 @@ def km_grease_pencil_stroke_edit_mode(params):
("gpencil.selectmode_toggle", {"type": 'THREE', "value": 'PRESS'},
{"properties": [("mode", 2)]}),
# Context menu
op_menu("VIEW3D_MT_gpencil_edit_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_gpencil_edit_context_menu", params.context_menu_event),
])
if params.legacy:
@ -3147,7 +3154,7 @@ def km_grease_pencil_stroke_paint_mode(params):
("gpencil.hide", {"type": 'H', "value": 'PRESS', "shift": True},
{"properties": [("unselected", True)]}),
# Draw context menu
op_panel("VIEW3D_PT_gpencil_draw_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_PT_gpencil_draw_context_menu", params.context_menu_event),
])
return keymap
@ -3280,7 +3287,7 @@ def km_grease_pencil_stroke_sculpt_mode(params):
# Display
*_grease_pencil_display(),
# Context menu
op_panel("VIEW3D_PT_gpencil_sculpt_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_PT_gpencil_sculpt_context_menu", params.context_menu_event),
])
return keymap
@ -3430,7 +3437,7 @@ def km_pose(params):
for i in range(10)
)
),
op_menu("VIEW3D_MT_pose_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_pose_context_menu", params.context_menu_event),
])
return keymap
@ -3509,7 +3516,7 @@ def km_object_mode(params):
for i in range(10)
)
),
op_menu("VIEW3D_MT_object_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_object_context_menu", params.context_menu_event),
])
if params.legacy:
@ -3612,7 +3619,7 @@ def km_curve(params):
("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
op_menu("VIEW3D_MT_hook", {"type": 'H', "value": 'PRESS', "ctrl": True}),
*_template_items_proportional_editing(connected=True),
op_menu("VIEW3D_MT_edit_curve_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_edit_curve_context_menu", params.context_menu_event),
])
return keymap
@ -3708,7 +3715,7 @@ def km_image_paint(params):
op_menu("VIEW3D_MT_angle_control", {"type": 'R', "value": 'PRESS'}),
("wm.context_menu_enum", {"type": 'E', "value": 'PRESS'},
{"properties": [("data_path", 'tool_settings.image_paint.brush.stroke_method')]}),
op_panel("VIEW3D_PT_paint_texture_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_PT_paint_texture_context_menu", params.context_menu_event),
])
if params.legacy:
@ -3757,7 +3764,7 @@ def km_vertex_paint(params):
op_menu("VIEW3D_MT_angle_control", {"type": 'R', "value": 'PRESS'}),
("wm.context_menu_enum", {"type": 'E', "value": 'PRESS'},
{"properties": [("data_path", 'tool_settings.vertex_paint.brush.stroke_method')]}),
op_panel("VIEW3D_PT_paint_vertex_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_PT_paint_vertex_context_menu", params.context_menu_event),
])
if params.legacy:
@ -3803,7 +3810,7 @@ def km_weight_paint(params):
{"properties": [("data_path", 'weight_paint_object.data.use_paint_mask_vertex')]}),
("wm.context_toggle", {"type": 'S', "value": 'PRESS', "shift": True},
{"properties": [("data_path", 'tool_settings.weight_paint.brush.use_smooth_stroke')]}),
op_panel("VIEW3D_PT_paint_weight_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_PT_paint_weight_context_menu", params.context_menu_event),
])
if params.select_mouse == 'LEFTMOUSE':
@ -3915,7 +3922,7 @@ def km_sculpt(params):
{"properties": [("data_path", 'tool_settings.sculpt.brush.use_smooth_stroke')]}),
op_menu("VIEW3D_MT_angle_control", {"type": 'R', "value": 'PRESS'}),
op_menu_pie("VIEW3D_MT_sculpt_mask_edit_pie", {"type" : 'A', "value": 'PRESS'}),
op_panel("VIEW3D_PT_sculpt_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_PT_sculpt_context_menu", params.context_menu_event),
])
if params.legacy:
@ -4028,7 +4035,7 @@ def km_mesh(params):
op_menu("VIEW3D_MT_edit_mesh_normals", {"type": 'N', "value": 'PRESS', "alt" : True}),
("object.vertex_group_remove_from", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
*_template_items_proportional_editing(connected=True),
op_menu("VIEW3D_MT_edit_mesh_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_edit_mesh_context_menu", params.context_menu_event),
])
if params.use_mouse_emulate_3_button and params.select_mouse == 'LEFTMOUSE':
@ -4135,7 +4142,7 @@ def km_armature(params):
("transform.transform", {"type": 'R', "value": 'PRESS', "ctrl": True},
{"properties": [("mode", 'BONE_ROLL')]}),
# Menus.
op_menu("VIEW3D_MT_armature_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_armature_context_menu", params.context_menu_event),
])
return keymap
@ -4163,7 +4170,7 @@ def km_metaball(params):
*_template_items_select_actions(params, "mball.select_all"),
("mball.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None),
*_template_items_proportional_editing(connected=True),
op_menu("VIEW3D_MT_edit_metaball_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_edit_metaball_context_menu", params.context_menu_event),
])
return keymap
@ -4186,7 +4193,7 @@ def km_lattice(params):
("lattice.flip", {"type": 'F', "value": 'PRESS', "alt": True}, None),
op_menu("VIEW3D_MT_hook", {"type": 'H', "value": 'PRESS', "ctrl": True}),
*_template_items_proportional_editing(connected=False),
op_menu("VIEW3D_MT_edit_lattice_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_edit_lattice_context_menu", params.context_menu_event),
])
return keymap
@ -4231,7 +4238,7 @@ def km_particle(params):
)
),
*_template_items_proportional_editing(connected=False),
op_menu("VIEW3D_MT_particle_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_particle_context_menu", params.context_menu_event),
])
return keymap
@ -4321,7 +4328,7 @@ def km_font(params):
("font.text_insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
("font.text_insert", {"type": 'BACK_SPACE', "value": 'PRESS', "alt": True},
{"properties": [("accent", True)]}),
op_menu("VIEW3D_MT_edit_text_context_menu", params.context_menu_event),
*_template_items_context_menu("VIEW3D_MT_edit_text_context_menu", params.context_menu_event),
])
return keymap
@ -6276,4 +6283,6 @@ def generate_keymaps(params=None):
#
# Command to lint:
#
# pylint release/scripts/presets/keyconfig/keymap_data/blender_default.py --disable=C0111,C0301,C0302,R0902,R0903,R0913
# pylint \
# release/scripts/presets/keyconfig/keymap_data/blender_default.py \
# --disable=C0111,C0301,C0302,C0415,R1705,R0902,R0903,R0913