From 3064da1200a97e4fba08be33dd271b09d65a2fde Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 8 Nov 2018 15:59:51 +1100 Subject: Keymap: move builtin keymaps from C to Python This should be purely an implementation change, for end users there should be no functional difference. The entire key configuration is in one file with ~5000 lines of code. Mostly avoiding code duplication and preserve comments and utility functions from the C code. It's a bit long but for searching and editing it's also convenient to have it all in one file. Notes: - Actual keymap is shared by blender / blender_legacy and stored in `keymap_data/blender_default.py` This only generates JSON-like data to be passed into `keyconfig_import_from_data`, allowing other presets to load and manipulate the default keymap. - Each preset defines 'keyconfig_data' which can be shared between presets. - Some of the utility functions for generating keymap items still need to be ported over to Python. - Some keymap items can be made into loops (marked as TODO). See: D3907 --- release/scripts/modules/bpy/utils/__init__.py | 5 + .../scripts/modules/bpy_extras/keyconfig_utils.py | 1 + .../bpy_extras/keyconfig_utils_experimental.py | 20 + release/scripts/presets/keyconfig/blender.py | 12 + release/scripts/presets/keyconfig/blender_27x.py | 8659 +------------------- .../keyconfig/keymap_data/blender_default.py | 5029 ++++++++++++ release/scripts/startup/bl_ui/space_userpref.py | 5 - .../blender/editors/animation/anim_channels_edit.c | 57 +- source/blender/editors/animation/anim_markers.c | 48 +- source/blender/editors/animation/anim_ops.c | 14 +- source/blender/editors/armature/armature_ops.c | 200 +- source/blender/editors/curve/curve_ops.c | 130 +- source/blender/editors/gpencil/gpencil_ops.c | 457 +- source/blender/editors/include/ED_markers.h | 3 - source/blender/editors/include/ED_object.h | 7 - source/blender/editors/include/ED_transform.h | 2 +- .../editors/interface/interface_eyedropper.c | 18 - source/blender/editors/interface/interface_ops.c | 29 +- source/blender/editors/interface/view2d_ops.c | 82 +- source/blender/editors/lattice/lattice_ops.c | 20 +- source/blender/editors/mask/mask_edit.c | 101 +- source/blender/editors/mesh/editmesh_knife.c | 24 - source/blender/editors/mesh/editmesh_tools.c | 21 - source/blender/editors/mesh/mesh_ops.c | 201 +- source/blender/editors/metaball/mball_ops.c | 26 +- source/blender/editors/object/object_ops.c | 209 - source/blender/editors/physics/physics_ops.c | 54 +- source/blender/editors/screen/screen_ops.c | 179 +- source/blender/editors/sculpt_paint/paint_intern.h | 14 - source/blender/editors/sculpt_paint/paint_ops.c | 371 - source/blender/editors/sculpt_paint/paint_stroke.c | 4 - source/blender/editors/sculpt_paint/sculpt.c | 17 +- source/blender/editors/space_action/action_ops.c | 162 +- source/blender/editors/space_action/space_action.c | 2 - source/blender/editors/space_api/spacetypes.c | 3 + .../blender/editors/space_buttons/space_buttons.c | 10 +- source/blender/editors/space_clip/space_clip.c | 255 +- .../blender/editors/space_console/space_console.c | 82 +- source/blender/editors/space_file/space_file.c | 129 +- source/blender/editors/space_graph/graph_ops.c | 208 +- source/blender/editors/space_image/space_image.c | 83 +- source/blender/editors/space_info/space_info.c | 24 +- source/blender/editors/space_logic/space_logic.c | 11 +- source/blender/editors/space_nla/nla_ops.c | 166 +- source/blender/editors/space_node/node_ops.c | 148 +- .../blender/editors/space_outliner/outliner_ops.c | 85 +- .../editors/space_sequencer/sequencer_ops.c | 227 +- source/blender/editors/space_text/space_text.c | 156 +- source/blender/editors/space_time/time_ops.c | 10 +- source/blender/editors/space_view3d/view3d_edit.c | 15 - source/blender/editors/space_view3d/view3d_fly.c | 50 - source/blender/editors/space_view3d/view3d_ops.c | 294 +- source/blender/editors/space_view3d/view3d_walk.c | 53 - source/blender/editors/transform/transform.c | 56 - source/blender/editors/transform/transform_ops.c | 168 +- source/blender/editors/util/CMakeLists.txt | 2 - source/blender/editors/uvedit/uvedit_ops.c | 99 - source/blender/windowmanager/WM_keymap.h | 2 + .../blender/windowmanager/intern/wm_keymap_utils.c | 4 + source/blender/windowmanager/intern/wm_operators.c | 194 +- 60 files changed, 5161 insertions(+), 13556 deletions(-) create mode 100644 release/scripts/presets/keyconfig/blender.py create mode 100644 release/scripts/presets/keyconfig/keymap_data/blender_default.py diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py index bb1ba5eb719..eb1b93002a9 100644 --- a/release/scripts/modules/bpy/utils/__init__.py +++ b/release/scripts/modules/bpy/utils/__init__.py @@ -261,6 +261,11 @@ def load_scripts(reload_scripts=False, refresh_scripts=False): _addon_utils.reset_all(reload_scripts=reload_scripts) del _initialize + # Load the default key configuration. + filepath = preset_find("blender", "keyconfig") + if filepath: + keyconfig_set(filepath) + # run the active integration preset filepath = preset_find(_user_preferences.inputs.active_keyconfig, "keyconfig") diff --git a/release/scripts/modules/bpy_extras/keyconfig_utils.py b/release/scripts/modules/bpy_extras/keyconfig_utils.py index 3caf45a72af..1cad1c965b0 100644 --- a/release/scripts/modules/bpy_extras/keyconfig_utils.py +++ b/release/scripts/modules/bpy_extras/keyconfig_utils.py @@ -477,4 +477,5 @@ def keyconfig_test(kc): from .keyconfig_utils_experimental import ( keyconfig_export_as_data, keyconfig_import_from_data, + keyconfig_module_from_preset, ) diff --git a/release/scripts/modules/bpy_extras/keyconfig_utils_experimental.py b/release/scripts/modules/bpy_extras/keyconfig_utils_experimental.py index cd82460e8e0..b93da5ec6da 100644 --- a/release/scripts/modules/bpy_extras/keyconfig_utils_experimental.py +++ b/release/scripts/modules/bpy_extras/keyconfig_utils_experimental.py @@ -21,6 +21,7 @@ __all__ = ( "keyconfig_export_as_data", "keyconfig_import_from_data", + "keyconfig_module_from_preset", ) @@ -242,3 +243,22 @@ def keyconfig_import_from_data(name, keyconfig_data): kmi_props = kmi.properties for attr, value in kmi_props_data: kmi_props_setattr(kmi_props, attr, value) + + +def keyconfig_module_from_preset(name, preset_reference_filename=None): + import os + import importlib.util + if preset_reference_filename is not None: + preset_path = os.path.join(os.path.dirname(preset_reference_filename), name + ".py") + else: + preset_path = None + + # External presets may want to re-use other presets too. + if not (preset_path and os.path.exists(preset_path)): + preset_path = bpy.utils.preset_find(name, "keyconfig") + + # module name isn't used or added to 'sys.modules'. + mod_spec = importlib.util.spec_from_file_location("__bl_keymap__", preset_path) + mod = importlib.util.module_from_spec(mod_spec) + mod_spec.loader.exec_module(mod) + return mod diff --git a/release/scripts/presets/keyconfig/blender.py b/release/scripts/presets/keyconfig/blender.py new file mode 100644 index 00000000000..66db91d9186 --- /dev/null +++ b/release/scripts/presets/keyconfig/blender.py @@ -0,0 +1,12 @@ + +import os +from bpy_extras.keyconfig_utils import ( + keyconfig_import_from_data, + keyconfig_module_from_preset, +) + +_mod = keyconfig_module_from_preset(os.path.join("keymap_data", "blender_default"), __file__) +keyconfig_data = _mod.generate_keymaps() + +if __name__ == "__main__": + keyconfig_import_from_data("Blender", keyconfig_data) diff --git a/release/scripts/presets/keyconfig/blender_27x.py b/release/scripts/presets/keyconfig/blender_27x.py index 3cb6388e43e..2d9ea9d8f44 100644 --- a/release/scripts/presets/keyconfig/blender_27x.py +++ b/release/scripts/presets/keyconfig/blender_27x.py @@ -1,8654 +1,11 @@ -keyconfig_data = \ -[("Window", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("wm.window_new", {"type": 'W', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "ctrl": True}, None), - ("wm.save_homefile", {"type": 'U', "value": 'PRESS', "ctrl": True}, None), - ("wm.call_menu", - {"type": 'O', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("name", 'TOPBAR_MT_file_open_recent'), - ], - }, - ), - ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "ctrl": True}, None), - ("wm.open_mainfile", {"type": 'F1', "value": 'PRESS'}, None), - ("wm.link", {"type": 'O', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("wm.append", {"type": 'F1', "value": 'PRESS', "shift": True}, None), - ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True}, None), - ("wm.save_mainfile", {"type": 'W', "value": 'PRESS', "ctrl": True}, None), - ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("wm.save_as_mainfile", {"type": 'F2', "value": 'PRESS'}, None), - ("wm.save_as_mainfile", - {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("copy", True), - ], - }, - ), - ("wm.window_fullscreen_toggle", {"type": 'F11', "value": 'PRESS', "alt": True}, None), - ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "ctrl": True}, None), - ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS', "alt": True}, None), - ("wm.redraw_timer", {"type": 'T', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("wm.debug_menu", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("wm.call_menu", - {"type": 'NDOF_BUTTON_MENU', "value": 'PRESS'}, - {"properties": - [("name", 'USERPREF_MT_ndof_settings'), - ], - }, - ), - ("wm.search_menu", {"type": 'SPACE', "value": 'PRESS'}, None), - ("wm.context_set_enum", - {"type": 'F3', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'NODE_EDITOR'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'F4', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'CONSOLE'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'F5', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'VIEW_3D'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'F6', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'GRAPH_EDITOR'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'F7', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'PROPERTIES'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'F8', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'SEQUENCE_EDITOR'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'F9', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'OUTLINER'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'F10', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'IMAGE_EDITOR'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'F11', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'TEXT_EDITOR'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'F12', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'area.type'), - ("value", 'DOPESHEET_EDITOR'), - ], - }, - ), - ("wm.context_scale_float", - {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS'}, - {"properties": - [("data_path", 'user_preferences.inputs.ndof_sensitivity'), - ("value", 1.1), - ], - }, - ), - ("wm.context_scale_float", - {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS'}, - {"properties": - [("data_path", 'user_preferences.inputs.ndof_sensitivity'), - ("value", 1.0), - ], - }, - ), - ("wm.context_scale_float", - {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'user_preferences.inputs.ndof_sensitivity'), - ("value", 1.5), - ], - }, - ), - ("wm.context_scale_float", - {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'user_preferences.inputs.ndof_sensitivity'), - ("value", 0.6666667), - ], - }, - ), - ("info.reports_display_update", {"type": 'TIMER_REPORT', "value": 'ANY', "any": True}, None), - ], - }, - ), - ("Screen", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("screen.animation_step", {"type": 'TIMER0', "value": 'ANY', "any": True}, None), - ("screen.region_blend", {"type": 'TIMERREGION', "value": 'ANY', "any": True}, None), - ("screen.screen_set", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True}, - {"properties": - [("delta", 1), - ], - }, - ), - ("screen.screen_set", - {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True}, - {"properties": - [("delta", -1), - ], - }, - ), - ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "shift": True}, None), - ("screen.screen_full_area", - {"type": 'SPACE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("use_hide_panels", True), - ], - }, - ), - ("screen.screenshot", {"type": 'F3', "value": 'PRESS', "ctrl": True}, None), - ("screen.screencast", {"type": 'F3', "value": 'PRESS', "alt": True}, None), - ("screen.space_context_cycle", - {"type": 'TAB', "value": 'PRESS', "ctrl": True}, - {"properties": - [("direction", 'NEXT'), - ], - }, - ), - ("screen.space_context_cycle", - {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("direction", 'PREV'), - ], - }, - ), - ("screen.region_quadview", {"type": 'Q', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("screen.repeat_history", {"type": 'F3', "value": 'PRESS'}, None), - ("screen.repeat_last", {"type": 'R', "value": 'PRESS', "shift": True}, None), - ("screen.region_flip", {"type": 'F5', "value": 'PRESS'}, None), - ("screen.redo_last", {"type": 'F6', "value": 'PRESS'}, None), - ("script.reload", {"type": 'F8', "value": 'PRESS'}, None), - ("file.execute", {"type": 'RET', "value": 'PRESS'}, None), - ("file.execute", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), - ("file.cancel", {"type": 'ESC', "value": 'PRESS'}, None), - ("ed.undo", {"type": 'Z', "value": 'PRESS', "ctrl": True}, None), - ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("render.render", - {"type": 'F12', "value": 'PRESS'}, - {"properties": - [("use_viewport", True), - ], - }, - ), - ("render.render", - {"type": 'F12', "value": 'PRESS', "ctrl": True}, - {"properties": - [("animation", True), - ("use_viewport", True), - ], - }, - ), - ("render.view_cancel", {"type": 'ESC', "value": 'PRESS'}, None), - ("render.view_show", {"type": 'F11', "value": 'PRESS'}, None), - ("render.play_rendered_anim", {"type": 'F11', "value": 'PRESS', "ctrl": True}, None), - ("screen.userpref_show", {"type": 'U', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ], - }, - ), - ("User Interface", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("ui.eyedropper_color", {"type": 'E', "value": 'PRESS'}, None), - ("ui.eyedropper_colorband", {"type": 'E', "value": 'PRESS'}, None), - ("ui.eyedropper_colorband_point", {"type": 'E', "value": 'PRESS', "alt": True}, None), - ("ui.eyedropper_id", {"type": 'E', "value": 'PRESS'}, None), - ("ui.eyedropper_depth", {"type": 'E', "value": 'PRESS'}, None), - ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("ui.copy_data_path_button", - {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("full_path", True), - ], - }, - ), - ("anim.keyframe_insert_button", {"type": 'I', "value": 'PRESS'}, None), - ("anim.keyframe_delete_button", {"type": 'I', "value": 'PRESS', "alt": True}, None), - ("anim.keyframe_clear_button", {"type": 'I', "value": 'PRESS', "shift": True, "alt": True}, None), - ("anim.driver_button_add", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), - ("anim.driver_button_remove", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("anim.keyingset_button_add", {"type": 'K', "value": 'PRESS'}, None), - ("anim.keyingset_button_remove", {"type": 'K', "value": 'PRESS', "alt": True}, None), - ], - }, - ), - ("View2D", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), - ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), - ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None), - ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), - ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None), - ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None), - ("view2d.ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None), - ("view2d.zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None), - ("view2d.zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None), - ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), - ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), - ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), - ("view2d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None), - ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), - ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), - ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), - ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), - ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), - ("view2d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None), - ], - }, - ), - ("Header", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("screen.header_toolbox", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), - ], - }, - ), - ("View2D Buttons List", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), - ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), - ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), - ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), - ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), - ("view2d.scroll_down", - {"type": 'PAGE_DOWN', "value": 'PRESS'}, - {"properties": - [("page", True), - ], - }, - ), - ("view2d.scroll_up", - {"type": 'PAGE_UP', "value": 'PRESS'}, - {"properties": - [("page", True), - ], - }, - ), - ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), - ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), - ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), - ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), - ("view2d.reset", {"type": 'HOME', "value": 'PRESS'}, None), - ], - }, - ), - ("Frames", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("screen.frame_offset", - {"type": 'UP_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("delta", 10), - ], - }, - ), - ("screen.frame_offset", - {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("delta", -10), - ], - }, - ), - ("screen.frame_offset", - {"type": 'LEFT_ARROW', "value": 'PRESS'}, - {"properties": - [("delta", -1), - ], - }, - ), - ("screen.frame_offset", - {"type": 'RIGHT_ARROW', "value": 'PRESS'}, - {"properties": - [("delta", 1), - ], - }, - ), - ("screen.frame_offset", - {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("delta", 1), - ], - }, - ), - ("screen.frame_offset", - {"type": 'WHEELUPMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("delta", -1), - ], - }, - ), - ("screen.frame_jump", - {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("end", True), - ], - }, - ), - ("screen.frame_jump", - {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("end", False), - ], - }, - ), - ("screen.frame_jump", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("end", True), - ], - }, - ), - ("screen.frame_jump", - {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("end", False), - ], - }, - ), - ("screen.keyframe_jump", - {"type": 'UP_ARROW', "value": 'PRESS'}, - {"properties": - [("next", True), - ], - }, - ), - ("screen.keyframe_jump", - {"type": 'DOWN_ARROW', "value": 'PRESS'}, - {"properties": - [("next", False), - ], - }, - ), - ("screen.keyframe_jump", - {"type": 'MEDIA_LAST', "value": 'PRESS'}, - {"properties": - [("next", True), - ], - }, - ), - ("screen.keyframe_jump", - {"type": 'MEDIA_FIRST', "value": 'PRESS'}, - {"properties": - [("next", False), - ], - }, - ), - ("screen.animation_play", {"type": 'A', "value": 'PRESS', "alt": True}, None), - ("screen.animation_play", - {"type": 'A', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("reverse", True), - ], - }, - ), - ("screen.animation_cancel", {"type": 'ESC', "value": 'PRESS'}, None), - ("screen.animation_play", {"type": 'MEDIA_PLAY', "value": 'PRESS'}, None), - ("screen.animation_cancel", {"type": 'MEDIA_STOP', "value": 'PRESS'}, None), - ], - }, - ), - ("Property Editor", - {"space_type": 'PROPERTIES', "region_type": 'WINDOW'}, - {"items": - [("buttons.toolbox", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), - ], - }, - ), - ("Info", - {"space_type": 'INFO', "region_type": 'WINDOW'}, - {"items": - [("info.select_pick", {"type": 'SELECTMOUSE', "value": 'PRESS'}, None), - ("info.select_all_toggle", {"type": 'A', "value": 'PRESS'}, None), - ("info.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("info.report_replay", {"type": 'R', "value": 'PRESS'}, None), - ("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), - ], - }, - ), - ("Outliner", - {"space_type": 'OUTLINER', "region_type": 'WINDOW'}, - {"items": - [("outliner.highlight_update", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None), - ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), - ("outliner.item_activate", - {"type": 'LEFTMOUSE', "value": 'CLICK'}, - {"properties": - [("extend", False), - ("recursive", False), - ], - }, - ), - ("outliner.item_activate", - {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True}, - {"properties": - [("extend", True), - ("recursive", False), - ], - }, - ), - ("outliner.item_activate", - {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True}, - {"properties": - [("extend", False), - ("recursive", True), - ], - }, - ), - ("outliner.item_activate", - {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True}, - {"properties": - [("extend", True), - ("recursive", True), - ], - }, - ), - ("outliner.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("outliner.item_openclose", - {"type": 'RET', "value": 'PRESS'}, - {"properties": - [("all", False), - ], - }, - ), - ("outliner.item_openclose", - {"type": 'RET', "value": 'PRESS', "shift": True}, - {"properties": - [("all", True), - ], - }, - ), - ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("outliner.operation", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), - ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("outliner.show_hierarchy", {"type": 'HOME', "value": 'PRESS'}, None), - ("outliner.show_active", {"type": 'PERIOD', "value": 'PRESS'}, None), - ("outliner.show_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("outliner.scroll_page", - {"type": 'PAGE_DOWN', "value": 'PRESS'}, - {"properties": - [("up", False), - ], - }, - ), - ("outliner.scroll_page", - {"type": 'PAGE_UP', "value": 'PRESS'}, - {"properties": - [("up", True), - ], - }, - ), - ("outliner.show_one_level", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), - ("outliner.show_one_level", - {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, - {"properties": - [("open", False), - ], - }, - ), - ("outliner.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("outliner.expanded_toggle", {"type": 'A', "value": 'PRESS', "shift": True}, None), - ("outliner.keyingset_add_selected", {"type": 'K', "value": 'PRESS'}, None), - ("outliner.keyingset_remove_selected", {"type": 'K', "value": 'PRESS', "alt": True}, None), - ("anim.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None), - ("anim.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None), - ("outliner.drivers_add_selected", {"type": 'D', "value": 'PRESS'}, None), - ("outliner.drivers_delete_selected", {"type": 'D', "value": 'PRESS', "alt": True}, None), - ("outliner.collection_new", {"type": 'C', "value": 'PRESS'}, None), - ("outliner.collection_delete", {"type": 'X', "value": 'PRESS'}, None), - ], - }, - ), - ("3D View Generic", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("view3d.properties", {"type": 'N', "value": 'PRESS'}, None), - ("view3d.toolshelf", {"type": 'T', "value": 'PRESS'}, None), - ], - }, - ), - ("Grease Pencil", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("gpencil.draw", - {"type": 'LEFTMOUSE', "value": 'PRESS', "key_modifier": 'D'}, - {"properties": - [("mode", 'DRAW'), - ("wait_for_input", False), - ], - }, - ), - ("gpencil.draw", - {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True, "key_modifier": 'D'}, - {"properties": - [("mode", 'DRAW_STRAIGHT'), - ("wait_for_input", False), - ], - }, - ), - ("gpencil.draw", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "key_modifier": 'D'}, - {"properties": - [("mode", 'DRAW_POLY'), - ("wait_for_input", False), - ], - }, - ), - ("gpencil.draw", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "key_modifier": 'D'}, - {"properties": - [("mode", 'ERASER'), - ("wait_for_input", False), - ], - }, - ), - ("gpencil.draw", - {"type": 'ERASER', "value": 'PRESS'}, - {"properties": - [("mode", 'ERASER'), - ("wait_for_input", False), - ], - }, - ), - ("gpencil.editmode_toggle", {"type": 'TAB', "value": 'PRESS', "key_modifier": 'D'}, None), - ("wm.call_menu_pie", - {"type": 'Q', "value": 'PRESS', "key_modifier": 'D'}, - {"properties": - [("name", 'GPENCIL_MT_pie_tool_palette'), - ], - }, - ), - ("wm.call_menu_pie", - {"type": 'W', "value": 'PRESS', "key_modifier": 'D'}, - {"properties": - [("name", 'GPENCIL_MT_pie_settings_palette'), - ], - }, - ), - ("gpencil.blank_frame_add", {"type": 'B', "value": 'PRESS', "key_modifier": 'D'}, None), - ("gpencil.active_frames_delete_all", {"type": 'X', "value": 'PRESS', "key_modifier": 'D'}, None), - ], - }, - ), - ("Grease Pencil Stroke Edit Mode", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("gpencil.editmode_toggle", {"type": 'TAB', "value": 'PRESS'}, None), - ("wm.call_menu_pie", - {"type": 'E', "value": 'PRESS', "key_modifier": 'D'}, - {"properties": - [("name", 'GPENCIL_MT_pie_sculpt'), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path_primary", 'user_preferences.edit.grease_pencil_eraser_radius'), - ], - }, - ), - ("gpencil.interpolate", {"type": 'E', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("gpencil.interpolate_sequence", {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("gpencil.brush_paint", - {"type": 'LEFTMOUSE', "value": 'PRESS', "key_modifier": 'E'}, - {"properties": - [("wait_for_input", False), - ], - }, - ), - ("gpencil.brush_paint", - {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True, "key_modifier": 'E'}, - {"properties": - [("wait_for_input", False), - ], - }, - ), - ("gpencil.brush_paint", - {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "key_modifier": 'E'}, - {"properties": - [("wait_for_input", False), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path_primary", 'tool_settings.gpencil_sculpt.brush.strength'), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS'}, - {"properties": - [("data_path_primary", 'tool_settings.gpencil_sculpt.brush.size'), - ], - }, - ), - ("gpencil.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("gpencil.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("gpencil.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ("gpencil.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("gpencil.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("gpencil.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("gpencil.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("gpencil.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("gpencil.select", {"type": 'SELECTMOUSE', "value": 'PRESS'}, None), - ("gpencil.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ("toggle", True), - ], - }, - ), - ("gpencil.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("entire_strokes", True), - ], - }, - ), - ("gpencil.select_linked", {"type": 'L', "value": 'PRESS'}, None), - ("gpencil.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), - ("gpencil.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), - ("gpencil.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("gpencil.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("gpencil.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("wm.call_menu", - {"type": 'X', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_gpencil_delete'), - ], - }, - ), - ("wm.call_menu", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_gpencil_delete'), - ], - }, - ), - ("gpencil.dissolve", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), - ("gpencil.dissolve", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None), - ("gpencil.active_frames_delete_all", {"type": 'X', "value": 'PRESS', "shift": True}, None), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("name", 'GPENCIL_MT_gpencil_edit_specials'), - ], - }, - ), - ("gpencil.stroke_join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), - ("gpencil.stroke_join", - {"type": 'J', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'JOINCOPY'), - ], - }, - ), - ("gpencil.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("gpencil.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("wm.call_menu", - {"type": 'S', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'GPENCIL_MT_snap'), - ], - }, - ), - ("gpencil.convert", {"type": 'C', "value": 'PRESS', "alt": True}, None), - ("gpencil.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("gpencil.hide", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("gpencil.hide", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("gpencil.selection_opacity_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, None), - ("gpencil.layer_isolate", {"type": 'NUMPAD_ASTERIX', "value": 'PRESS'}, None), - ("gpencil.move_to_layer", {"type": 'M', "value": 'PRESS'}, None), - ("gpencil.brush_select", - {"type": 'ONE', "value": 'PRESS'}, - {"properties": - [("index", 0), - ], - }, - ), - ("gpencil.brush_select", - {"type": 'TWO', "value": 'PRESS'}, - {"properties": - [("index", 1), - ], - }, - ), - ("gpencil.brush_select", - {"type": 'THREE', "value": 'PRESS'}, - {"properties": - [("index", 2), - ], - }, - ), - ("gpencil.brush_select", - {"type": 'FOUR', "value": 'PRESS'}, - {"properties": - [("index", 3), - ], - }, - ), - ("gpencil.brush_select", - {"type": 'FIVE', "value": 'PRESS'}, - {"properties": - [("index", 4), - ], - }, - ), - ("gpencil.brush_select", - {"type": 'SIX', "value": 'PRESS'}, - {"properties": - [("index", 5), - ], - }, - ), - ("gpencil.brush_select", - {"type": 'SEVEN', "value": 'PRESS'}, - {"properties": - [("index", 6), - ], - }, - ), - ("gpencil.brush_select", - {"type": 'EIGHT', "value": 'PRESS'}, - {"properties": - [("index", 7), - ], - }, - ), - ("gpencil.brush_select", - {"type": 'NINE', "value": 'PRESS'}, - {"properties": - [("index", 8), - ], - }, - ), - ("gpencil.brush_select", - {"type": 'ZERO', "value": 'PRESS'}, - {"properties": - [("index", 9), - ], - }, - ), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("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'), - ], - }, - ), - ("wm.context_cycle_enum", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit_falloff'), - ("wrap", True), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'ENABLED'), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS', "alt": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'CONNECTED'), - ], - }, - ), - ], - }, - ), - ("Face Mask", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("paint.face_select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("paint.face_select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("paint.face_select_hide", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("paint.face_select_hide", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("paint.face_select_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("paint.face_select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), - ("paint.face_select_linked_pick", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("deselect", False), - ], - }, - ), - ("paint.face_select_linked_pick", - {"type": 'L', "value": 'PRESS', "shift": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ], - }, - ), - ("Weight Paint Vertex Selection", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("paint.vert_select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("paint.vert_select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("view3d.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("view3d.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ], - }, - ), - ("Pose", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("object.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), - ("wm.call_menu", - {"type": 'A', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'VIEW3D_MT_add'), - ], - }, - ), - ("pose.hide", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("pose.hide", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("pose.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("wm.call_menu", - {"type": 'A', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_pose_apply'), - ], - }, - ), - ("pose.rot_clear", {"type": 'R', "value": 'PRESS', "alt": True}, None), - ("pose.loc_clear", {"type": 'G', "value": 'PRESS', "alt": True}, None), - ("pose.scale_clear", {"type": 'S', "value": 'PRESS', "alt": True}, None), - ("pose.quaternions_flip", {"type": 'F', "value": 'PRESS', "alt": True}, None), - ("pose.rotation_mode_set", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), - ("pose.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("pose.paste", - {"type": 'V', "value": 'PRESS', "ctrl": True}, - {"properties": - [("flipped", False), - ], - }, - ), - ("pose.paste", - {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("flipped", True), - ], - }, - ), - ("pose.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("pose.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("pose.select_parent", {"type": 'P', "value": 'PRESS', "shift": True}, None), - ("pose.select_hierarchy", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("direction", 'PARENT'), - ("extend", False), - ], - }, - ), - ("pose.select_hierarchy", - {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'PARENT'), - ("extend", True), - ], - }, - ), - ("pose.select_hierarchy", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("direction", 'CHILD'), - ("extend", False), - ], - }, - ), - ("pose.select_hierarchy", - {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'CHILD'), - ("extend", True), - ], - }, - ), - ("pose.select_linked", {"type": 'L', "value": 'PRESS'}, None), - ("pose.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), - ("pose.select_mirror", {"type": 'F', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("pose.constraint_add_with_targets", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("pose.constraints_clear", {"type": 'C', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("pose.ik_add", {"type": 'I', "value": 'PRESS', "shift": True}, None), - ("pose.ik_clear", {"type": 'I', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("wm.call_menu", - {"type": 'G', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_pose_group'), - ], - }, - ), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'VIEW3D_MT_bone_options_toggle'), - ], - }, - ), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_bone_options_enable'), - ], - }, - ), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS', "alt": True}, - {"properties": - [("name", 'VIEW3D_MT_bone_options_disable'), - ], - }, - ), - ("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None), - ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None), - ("pose.bone_layers", {"type": 'M', "value": 'PRESS'}, None), - ("wm.context_toggle", - {"type": 'Z', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.overlay.show_bone_select'), - ], - }, - ), - ("transform.transform", - {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("mode", 'BONE_SIZE'), - ], - }, - ), - ("anim.keyframe_insert_menu", {"type": 'I', "value": 'PRESS'}, None), - ("anim.keyframe_delete_v3d", {"type": 'I', "value": 'PRESS', "alt": True}, None), - ("anim.keying_set_active_set", {"type": 'I', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ("poselib.browse_interactive", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), - ("poselib.pose_add", {"type": 'L', "value": 'PRESS', "shift": True}, None), - ("poselib.pose_remove", {"type": 'L', "value": 'PRESS', "alt": True}, None), - ("poselib.pose_rename", {"type": 'L', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("pose.push", {"type": 'E', "value": 'PRESS', "ctrl": True}, None), - ("pose.relax", {"type": 'E', "value": 'PRESS', "alt": True}, None), - ("pose.breakdown", {"type": 'E', "value": 'PRESS', "shift": True}, None), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_pose_specials'), - ], - }, - ), - ("wm.call_menu", - {"type": 'P', "value": 'PRESS', "alt": True}, - {"properties": - [("name", 'VIEW3D_MT_pose_propagate'), - ], - }, - ), - ], - }, - ), - ("Object Mode", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("wm.context_cycle_enum", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit_falloff'), - ("wrap", True), - ], - }, - ), - ("wm.context_toggle", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.use_proportional_edit_objects'), - ], - }, - ), - ("object.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("object.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("object.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("object.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("object.select_linked", {"type": 'L', "value": 'PRESS', "shift": True}, None), - ("object.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), - ("object.select_mirror", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("object.select_hierarchy", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("direction", 'PARENT'), - ("extend", False), - ], - }, - ), - ("object.select_hierarchy", - {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'PARENT'), - ("extend", True), - ], - }, - ), - ("object.select_hierarchy", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("direction", 'CHILD'), - ("extend", False), - ], - }, - ), - ("object.select_hierarchy", - {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'CHILD'), - ("extend", True), - ], - }, - ), - ("object.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), - ("object.parent_no_inverse_set", {"type": 'P', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("object.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None), - ("object.track_set", {"type": 'T', "value": 'PRESS', "ctrl": True}, None), - ("object.track_clear", {"type": 'T', "value": 'PRESS', "alt": True}, None), - ("object.constraint_add_with_targets", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("object.constraints_clear", {"type": 'C', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("object.location_clear", - {"type": 'G', "value": 'PRESS', "alt": True}, - {"properties": - [("clear_delta", False), - ], - }, - ), - ("object.rotation_clear", - {"type": 'R', "value": 'PRESS', "alt": True}, - {"properties": - [("clear_delta", False), - ], - }, - ), - ("object.scale_clear", - {"type": 'S', "value": 'PRESS', "alt": True}, - {"properties": - [("clear_delta", False), - ], - }, - ), - ("object.origin_clear", {"type": 'O', "value": 'PRESS', "alt": True}, None), - ("object.delete", - {"type": 'X', "value": 'PRESS'}, - {"properties": - [("use_global", False), - ], - }, - ), - ("object.delete", - {"type": 'X', "value": 'PRESS', "shift": True}, - {"properties": - [("use_global", True), - ], - }, - ), - ("object.delete", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("use_global", False), - ], - }, - ), - ("object.delete", - {"type": 'DEL', "value": 'PRESS', "shift": True}, - {"properties": - [("use_global", True), - ], - }, - ), - ("wm.call_menu", - {"type": 'A', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'VIEW3D_MT_add'), - ], - }, - ), - ("object.duplicates_make_real", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("wm.call_menu", - {"type": 'A', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_object_apply'), - ], - }, - ), - ("wm.call_menu", - {"type": 'U', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_make_single_user'), - ], - }, - ), - ("wm.call_menu", - {"type": 'L', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_make_links'), - ], - }, - ), - ("object.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("object.duplicate_move_linked", {"type": 'D', "value": 'PRESS', "alt": True}, None), - ("object.join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), - ("object.convert", {"type": 'C', "value": 'PRESS', "alt": True}, None), - ("object.proxy_make", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("object.make_local", {"type": 'L', "value": 'PRESS'}, None), - ("anim.keyframe_insert_menu", {"type": 'I', "value": 'PRESS'}, None), - ("anim.keyframe_delete_v3d", {"type": 'I', "value": 'PRESS', "alt": True}, None), - ("anim.keying_set_active_set", {"type": 'I', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ("collection.create", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), - ("collection.objects_remove", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("collection.objects_remove_all", {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ("collection.objects_add_active", {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("collection.objects_remove_active", {"type": 'G', "value": 'PRESS', "shift": True, "alt": True}, None), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_object_specials'), - ], - }, - ), - ("object.data_transfer", {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("object.subdivision_set", - {"type": 'ZERO', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 0), - ], - }, - ), - ("object.subdivision_set", - {"type": 'ONE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 1), - ], - }, - ), - ("object.subdivision_set", - {"type": 'TWO', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 2), - ], - }, - ), - ("object.subdivision_set", - {"type": 'THREE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 3), - ], - }, - ), - ("object.subdivision_set", - {"type": 'FOUR', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 4), - ], - }, - ), - ("object.subdivision_set", - {"type": 'FIVE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 5), - ], - }, - ), - ("object.move_to_collection", {"type": 'M', "value": 'PRESS'}, None), - ], - }, - ), - ("Paint Curve", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("paintcurve.add_point_slide", {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("paintcurve.select", {"type": 'SELECTMOUSE', "value": 'PRESS'}, None), - ("paintcurve.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("paintcurve.slide", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("paintcurve.slide", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("align", True), - ], - }, - ), - ("paintcurve.select", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("toggle", True), - ], - }, - ), - ("paintcurve.cursor", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("paintcurve.delete_point", {"type": 'X', "value": 'PRESS'}, None), - ("paintcurve.delete_point", {"type": 'DEL', "value": 'PRESS'}, None), - ("paintcurve.draw", {"type": 'RET', "value": 'PRESS'}, None), - ("paintcurve.draw", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ], - }, - ), - ("Curve", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("wm.call_menu", - {"type": 'A', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'TOPBAR_MT_edit_curve_add'), - ], - }, - ), - ("curve.handle_type_set", {"type": 'V', "value": 'PRESS'}, None), - ("curve.vertex_add", {"type": 'ACTIONMOUSE', "value": 'CLICK', "ctrl": True}, None), - ("curve.draw", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("wait_for_input", False), - ], - }, - ), - ("curve.draw", - {"type": 'PEN', "value": 'PRESS', "shift": True}, - {"properties": - [("wait_for_input", False), - ], - }, - ), - ("curve.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("curve.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("curve.select_row", {"type": 'R', "value": 'PRESS', "shift": True}, None), - ("curve.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("curve.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("curve.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), - ("curve.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None), - ("curve.select_linked_pick", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("deselect", False), - ], - }, - ), - ("curve.select_linked_pick", - {"type": 'L', "value": 'PRESS', "shift": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("curve.shortest_path_pick", {"type": 'SELECTMOUSE', "value": 'CLICK', "ctrl": True}, None), - ("curve.separate", {"type": 'P', "value": 'PRESS'}, None), - ("curve.split", {"type": 'Y', "value": 'PRESS'}, None), - ("curve.extrude_move", {"type": 'E', "value": 'PRESS'}, None), - ("curve.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("curve.make_segment", {"type": 'F', "value": 'PRESS'}, None), - ("curve.cyclic_toggle", {"type": 'C', "value": 'PRESS', "alt": True}, None), - ("wm.call_menu", - {"type": 'X', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_curve_delete'), - ], - }, - ), - ("wm.call_menu", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_curve_delete'), - ], - }, - ), - ("curve.dissolve_verts", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), - ("curve.dissolve_verts", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None), - ("curve.tilt_clear", {"type": 'T', "value": 'PRESS', "alt": True}, None), - ("transform.tilt", {"type": 'T', "value": 'PRESS', "ctrl": True}, None), - ("transform.transform", - {"type": 'S', "value": 'PRESS', "alt": True}, - {"properties": - [("mode", 'CURVE_SHRINKFATTEN'), - ], - }, - ), - ("curve.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("curve.hide", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("curve.hide", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("curve.normals_make_consistent", {"type": 'N', "value": 'PRESS', "ctrl": True}, None), - ("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_curve_specials'), - ], - }, - ), - ("wm.call_menu", - {"type": 'H', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_hook'), - ], - }, - ), - ("wm.context_cycle_enum", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit_falloff'), - ("wrap", True), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'ENABLED'), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS', "alt": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'CONNECTED'), - ], - }, - ), - ], - }, - ), - ("Image Paint", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("paint.image_paint", - {"type": 'LEFTMOUSE', "value": 'PRESS'}, - {"properties": - [("mode", 'NORMAL'), - ], - }, - ), - ("paint.image_paint", - {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'INVERT'), - ], - }, - ), - ("paint.brush_colors_flip", {"type": 'X', "value": 'PRESS'}, None), - ("paint.grab_clone", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), - ("paint.sample_color", {"type": 'S', "value": 'PRESS'}, None), - ("brush.active_index_set", - {"type": 'ONE', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 0), - ], - }, - ), - ("brush.active_index_set", - {"type": 'TWO', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 1), - ], - }, - ), - ("brush.active_index_set", - {"type": 'THREE', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 2), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FOUR', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 3), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FIVE', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 4), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SIX', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 5), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SEVEN', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 6), - ], - }, - ), - ("brush.active_index_set", - {"type": 'EIGHT', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 7), - ], - }, - ), - ("brush.active_index_set", - {"type": 'NINE', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 8), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ZERO', "value": 'PRESS'}, - {"properties": - [("mode", 'image_paint'), - ("index", 9), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ONE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 10), - ], - }, - ), - ("brush.active_index_set", - {"type": 'TWO', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 11), - ], - }, - ), - ("brush.active_index_set", - {"type": 'THREE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 12), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FOUR', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 13), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FIVE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 14), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SIX', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 15), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SEVEN', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 16), - ], - }, - ), - ("brush.active_index_set", - {"type": 'EIGHT', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 17), - ], - }, - ), - ("brush.active_index_set", - {"type": 'NINE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 18), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ZERO', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'image_paint'), - ("index", 19), - ], - }, - ), - ("brush.scale_size", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 0.9), - ], - }, - ), - ("brush.scale_size", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 1.1111112), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS'}, - {"properties": - [("data_path_primary", 'tool_settings.image_paint.brush.size'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.size'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'), - ("rotation_path", 'tool_settings.image_paint.brush.mask_texture_slot.angle'), - ("color_path", 'tool_settings.image_paint.brush.cursor_color_add'), - ("fill_color_path", 'tool_settings.image_paint.brush.color'), - ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'), - ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'), - ("zoom_path", 'space_data.zoom'), - ("image_id", 'tool_settings.image_paint.brush'), - ("secondary_tex", True), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path_primary", 'tool_settings.image_paint.brush.strength'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'), - ("rotation_path", 'tool_settings.image_paint.brush.mask_texture_slot.angle'), - ("color_path", 'tool_settings.image_paint.brush.cursor_color_add'), - ("fill_color_path", 'tool_settings.image_paint.brush.color'), - ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'), - ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'), - ("zoom_path", ''), - ("image_id", 'tool_settings.image_paint.brush'), - ("secondary_tex", True), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path_primary", 'tool_settings.image_paint.brush.texture_slot.angle'), - ("data_path_secondary", ''), - ("use_secondary", ''), - ("rotation_path", 'tool_settings.image_paint.brush.texture_slot.angle'), - ("color_path", 'tool_settings.image_paint.brush.cursor_color_add'), - ("fill_color_path", 'tool_settings.image_paint.brush.color'), - ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'), - ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'), - ("zoom_path", ''), - ("image_id", 'tool_settings.image_paint.brush'), - ("secondary_tex", False), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("data_path_primary", 'tool_settings.image_paint.brush.mask_texture_slot.angle'), - ("data_path_secondary", ''), - ("use_secondary", ''), - ("rotation_path", 'tool_settings.image_paint.brush.mask_texture_slot.angle'), - ("color_path", 'tool_settings.image_paint.brush.cursor_color_add'), - ("fill_color_path", 'tool_settings.image_paint.brush.color'), - ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'), - ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'), - ("zoom_path", ''), - ("image_id", 'tool_settings.image_paint.brush'), - ("secondary_tex", True), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS'}, - {"properties": - [("mode", 'TRANSLATION'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'SCALE'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'ROTATION'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("mode", 'TRANSLATION'), - ("texmode", 'SECONDARY'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("mode", 'SCALE'), - ("texmode", 'SECONDARY'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("mode", 'ROTATION'), - ("texmode", 'SECONDARY'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'M', "value": 'PRESS'}, - {"properties": - [("data_path", 'image_paint_object.data.use_paint_mask'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'S', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.image_paint.brush.use_smooth_stroke'), - ], - }, - ), - ("wm.call_menu", - {"type": 'R', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_angle_control'), - ], - }, - ), - ("wm.context_menu_enum", - {"type": 'E', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.image_paint.brush.stroke_method'), - ], - }, - ), - ], - }, - ), - ("Vertex Paint", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("paint.vertex_paint", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("paint.brush_colors_flip", {"type": 'X', "value": 'PRESS'}, None), - ("paint.sample_color", {"type": 'S', "value": 'PRESS'}, None), - ("paint.vertex_color_set", {"type": 'K', "value": 'PRESS', "shift": True}, None), - ("brush.active_index_set", - {"type": 'ONE', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 0), - ], - }, - ), - ("brush.active_index_set", - {"type": 'TWO', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 1), - ], - }, - ), - ("brush.active_index_set", - {"type": 'THREE', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 2), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FOUR', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 3), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FIVE', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 4), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SIX', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 5), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SEVEN', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 6), - ], - }, - ), - ("brush.active_index_set", - {"type": 'EIGHT', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 7), - ], - }, - ), - ("brush.active_index_set", - {"type": 'NINE', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 8), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ZERO', "value": 'PRESS'}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 9), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ONE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 10), - ], - }, - ), - ("brush.active_index_set", - {"type": 'TWO', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 11), - ], - }, - ), - ("brush.active_index_set", - {"type": 'THREE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 12), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FOUR', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 13), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FIVE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 14), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SIX', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 15), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SEVEN', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 16), - ], - }, - ), - ("brush.active_index_set", - {"type": 'EIGHT', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 17), - ], - }, - ), - ("brush.active_index_set", - {"type": 'NINE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 18), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ZERO', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'vertex_paint'), - ("index", 19), - ], - }, - ), - ("brush.scale_size", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 0.9), - ], - }, - ), - ("brush.scale_size", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 1.1111112), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS'}, - {"properties": - [("data_path_primary", 'tool_settings.vertex_paint.brush.size'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.size'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'), - ("rotation_path", 'tool_settings.vertex_paint.brush.texture_slot.angle'), - ("color_path", 'tool_settings.vertex_paint.brush.cursor_color_add'), - ("fill_color_path", 'tool_settings.vertex_paint.brush.color'), - ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'), - ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'), - ("zoom_path", ''), - ("image_id", 'tool_settings.vertex_paint.brush'), - ("secondary_tex", False), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path_primary", 'tool_settings.vertex_paint.brush.strength'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'), - ("rotation_path", 'tool_settings.vertex_paint.brush.texture_slot.angle'), - ("color_path", 'tool_settings.vertex_paint.brush.cursor_color_add'), - ("fill_color_path", 'tool_settings.vertex_paint.brush.color'), - ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'), - ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'), - ("zoom_path", ''), - ("image_id", 'tool_settings.vertex_paint.brush'), - ("secondary_tex", False), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path_primary", 'tool_settings.vertex_paint.brush.texture_slot.angle'), - ("data_path_secondary", ''), - ("use_secondary", ''), - ("rotation_path", 'tool_settings.vertex_paint.brush.texture_slot.angle'), - ("color_path", 'tool_settings.vertex_paint.brush.cursor_color_add'), - ("fill_color_path", 'tool_settings.vertex_paint.brush.color'), - ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'), - ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'), - ("zoom_path", ''), - ("image_id", 'tool_settings.vertex_paint.brush'), - ("secondary_tex", False), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS'}, - {"properties": - [("mode", 'TRANSLATION'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'SCALE'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'ROTATION'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("mode", 'TRANSLATION'), - ("texmode", 'SECONDARY'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("mode", 'SCALE'), - ("texmode", 'SECONDARY'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("mode", 'ROTATION'), - ("texmode", 'SECONDARY'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'M', "value": 'PRESS'}, - {"properties": - [("data_path", 'vertex_paint_object.data.use_paint_mask'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'S', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.vertex_paint.brush.use_smooth_stroke'), - ], - }, - ), - ("wm.call_menu", - {"type": 'R', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_angle_control'), - ], - }, - ), - ("wm.context_menu_enum", - {"type": 'E', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.vertex_paint.brush.stroke_method'), - ], - }, - ), - ], - }, - ), - ("Weight Paint", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("paint.weight_paint", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("paint.weight_sample", {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("paint.weight_sample_group", {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True}, None), - ("paint.weight_gradient", - {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("type", 'LINEAR'), - ], - }, - ), - ("paint.weight_gradient", - {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("type", 'RADIAL'), - ], - }, - ), - ("paint.weight_set", {"type": 'K', "value": 'PRESS', "shift": True}, None), - ("brush.active_index_set", - {"type": 'ONE', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 0), - ], - }, - ), - ("brush.active_index_set", - {"type": 'TWO', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 1), - ], - }, - ), - ("brush.active_index_set", - {"type": 'THREE', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 2), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FOUR', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 3), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FIVE', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 4), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SIX', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 5), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SEVEN', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 6), - ], - }, - ), - ("brush.active_index_set", - {"type": 'EIGHT', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 7), - ], - }, - ), - ("brush.active_index_set", - {"type": 'NINE', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 8), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ZERO', "value": 'PRESS'}, - {"properties": - [("mode", 'weight_paint'), - ("index", 9), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ONE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 10), - ], - }, - ), - ("brush.active_index_set", - {"type": 'TWO', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 11), - ], - }, - ), - ("brush.active_index_set", - {"type": 'THREE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 12), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FOUR', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 13), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FIVE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 14), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SIX', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 15), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SEVEN', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 16), - ], - }, - ), - ("brush.active_index_set", - {"type": 'EIGHT', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 17), - ], - }, - ), - ("brush.active_index_set", - {"type": 'NINE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 18), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ZERO', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'weight_paint'), - ("index", 19), - ], - }, - ), - ("brush.scale_size", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 0.9), - ], - }, - ), - ("brush.scale_size", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 1.1111112), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS'}, - {"properties": - [("data_path_primary", 'tool_settings.weight_paint.brush.size'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.size'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'), - ("rotation_path", 'tool_settings.weight_paint.brush.texture_slot.angle'), - ("color_path", 'tool_settings.weight_paint.brush.cursor_color_add'), - ("fill_color_path", ''), - ("fill_color_override_path", ''), - ("fill_color_override_test_path", ''), - ("zoom_path", ''), - ("image_id", 'tool_settings.weight_paint.brush'), - ("secondary_tex", False), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path_primary", 'tool_settings.weight_paint.brush.strength'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'), - ("rotation_path", 'tool_settings.weight_paint.brush.texture_slot.angle'), - ("color_path", 'tool_settings.weight_paint.brush.cursor_color_add'), - ("fill_color_path", ''), - ("fill_color_override_path", ''), - ("fill_color_override_test_path", ''), - ("zoom_path", ''), - ("image_id", 'tool_settings.weight_paint.brush'), - ("secondary_tex", False), - ], - }, - ), - ("wm.radial_control", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("data_path_primary", 'tool_settings.weight_paint.brush.weight'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.weight'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_weight'), - ("rotation_path", 'tool_settings.weight_paint.brush.texture_slot.angle'), - ("color_path", 'tool_settings.weight_paint.brush.cursor_color_add'), - ("fill_color_path", ''), - ("fill_color_override_path", ''), - ("fill_color_override_test_path", ''), - ("zoom_path", ''), - ("image_id", 'tool_settings.weight_paint.brush'), - ("secondary_tex", False), - ], - }, - ), - ("wm.context_menu_enum", - {"type": 'E', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.vertex_paint.brush.stroke_method'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'M', "value": 'PRESS'}, - {"properties": - [("data_path", 'weight_paint_object.data.use_paint_mask'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'V', "value": 'PRESS'}, - {"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'), - ], - }, - ), - ], - }, - ), - ("Sculpt", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("sculpt.brush_stroke", - {"type": 'LEFTMOUSE', "value": 'PRESS'}, - {"properties": - [("mode", 'NORMAL'), - ], - }, - ), - ("sculpt.brush_stroke", - {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'INVERT'), - ], - }, - ), - ("sculpt.brush_stroke", - {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'SMOOTH'), - ], - }, - ), - ("paint.hide_show", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("action", 'SHOW'), - ("area", 'INSIDE'), - ], - }, - ), - ("paint.hide_show", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("action", 'HIDE'), - ("area", 'INSIDE'), - ], - }, - ), - ("paint.hide_show", - {"type": 'H', "value": 'PRESS', "alt": True}, - {"properties": - [("action", 'SHOW'), - ("area", 'ALL'), - ], - }, - ), - ("object.subdivision_set", - {"type": 'ZERO', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 0), - ], - }, - ), - ("object.subdivision_set", - {"type": 'ONE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 1), - ], - }, - ), - ("object.subdivision_set", - {"type": 'TWO', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 2), - ], - }, - ), - ("object.subdivision_set", - {"type": 'THREE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 3), - ], - }, - ), - ("object.subdivision_set", - {"type": 'FOUR', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 4), - ], - }, - ), - ("object.subdivision_set", - {"type": 'FIVE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 5), - ], - }, - ), - ("paint.mask_flood_fill", - {"type": 'M', "value": 'PRESS', "alt": True}, - {"properties": - [("mode", 'VALUE'), - ("value", 0.0), - ], - }, - ), - ("paint.mask_flood_fill", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'INVERT'), - ], - }, - ), - ("paint.mask_lasso_gesture", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("wm.context_toggle", - {"type": 'M', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'scene.tool_settings.sculpt.show_mask'), - ], - }, - ), - ("sculpt.dynamic_topology_toggle", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), - ("sculpt.set_detail_size", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("object.subdivision_set", - {"type": 'PAGE_UP', "value": 'PRESS'}, - {"properties": - [("level", 1), - ("relative", True), - ], - }, - ), - ("object.subdivision_set", - {"type": 'PAGE_DOWN', "value": 'PRESS'}, - {"properties": - [("level", -1), - ("relative", True), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ONE', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 0), - ], - }, - ), - ("brush.active_index_set", - {"type": 'TWO', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 1), - ], - }, - ), - ("brush.active_index_set", - {"type": 'THREE', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 2), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FOUR', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 3), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FIVE', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 4), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SIX', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 5), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SEVEN', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 6), - ], - }, - ), - ("brush.active_index_set", - {"type": 'EIGHT', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 7), - ], - }, - ), - ("brush.active_index_set", - {"type": 'NINE', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 8), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ZERO', "value": 'PRESS'}, - {"properties": - [("mode", 'sculpt'), - ("index", 9), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ONE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 10), - ], - }, - ), - ("brush.active_index_set", - {"type": 'TWO', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 11), - ], - }, - ), - ("brush.active_index_set", - {"type": 'THREE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 12), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FOUR', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 13), - ], - }, - ), - ("brush.active_index_set", - {"type": 'FIVE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 14), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SIX', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 15), - ], - }, - ), - ("brush.active_index_set", - {"type": 'SEVEN', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 16), - ], - }, - ), - ("brush.active_index_set", - {"type": 'EIGHT', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 17), - ], - }, - ), - ("brush.active_index_set", - {"type": 'NINE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 18), - ], - }, - ), - ("brush.active_index_set", - {"type": 'ZERO', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'sculpt'), - ("index", 19), - ], - }, - ), - ("brush.scale_size", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 0.9), - ], - }, - ), - ("brush.scale_size", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 1.1111112), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS'}, - {"properties": - [("data_path_primary", 'tool_settings.sculpt.brush.size'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.size'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'), - ("rotation_path", 'tool_settings.sculpt.brush.texture_slot.angle'), - ("color_path", 'tool_settings.sculpt.brush.cursor_color_add'), - ("fill_color_path", ''), - ("fill_color_override_path", ''), - ("fill_color_override_test_path", ''), - ("zoom_path", ''), - ("image_id", 'tool_settings.sculpt.brush'), - ("secondary_tex", False), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path_primary", 'tool_settings.sculpt.brush.strength'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'), - ("rotation_path", 'tool_settings.sculpt.brush.texture_slot.angle'), - ("color_path", 'tool_settings.sculpt.brush.cursor_color_add'), - ("fill_color_path", ''), - ("fill_color_override_path", ''), - ("fill_color_override_test_path", ''), - ("zoom_path", ''), - ("image_id", 'tool_settings.sculpt.brush'), - ("secondary_tex", False), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path_primary", 'tool_settings.sculpt.brush.texture_slot.angle'), - ("data_path_secondary", ''), - ("use_secondary", ''), - ("rotation_path", 'tool_settings.sculpt.brush.texture_slot.angle'), - ("color_path", 'tool_settings.sculpt.brush.cursor_color_add'), - ("fill_color_path", ''), - ("fill_color_override_path", ''), - ("fill_color_override_test_path", ''), - ("zoom_path", ''), - ("image_id", 'tool_settings.sculpt.brush'), - ("secondary_tex", False), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS'}, - {"properties": - [("mode", 'TRANSLATION'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'SCALE'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'ROTATION'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("mode", 'TRANSLATION'), - ("texmode", 'SECONDARY'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("mode", 'SCALE'), - ("texmode", 'SECONDARY'), - ], - }, - ), - ("brush.stencil_control", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("mode", 'ROTATION'), - ("texmode", 'SECONDARY'), - ], - }, - ), - ("paint.brush_select", - {"type": 'X', "value": 'PRESS'}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'DRAW'), - ], - }, - ), - ("paint.brush_select", - {"type": 'S', "value": 'PRESS'}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'SMOOTH'), - ], - }, - ), - ("paint.brush_select", - {"type": 'P', "value": 'PRESS'}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'PINCH'), - ], - }, - ), - ("paint.brush_select", - {"type": 'I', "value": 'PRESS'}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'INFLATE'), - ], - }, - ), - ("paint.brush_select", - {"type": 'G', "value": 'PRESS'}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'GRAB'), - ], - }, - ), - ("paint.brush_select", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'LAYER'), - ], - }, - ), - ("paint.brush_select", - {"type": 'T', "value": 'PRESS', "shift": True}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'FLATTEN'), - ], - }, - ), - ("paint.brush_select", - {"type": 'C', "value": 'PRESS'}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'CLAY'), - ], - }, - ), - ("paint.brush_select", - {"type": 'C', "value": 'PRESS', "shift": True}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'CREASE'), - ], - }, - ), - ("paint.brush_select", - {"type": 'K', "value": 'PRESS'}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'SNAKE_HOOK'), - ], - }, - ), - ("paint.brush_select", - {"type": 'M', "value": 'PRESS'}, - {"properties": - [("paint_mode", 'SCULPT'), - ("sculpt_tool", 'MASK'), - ("toggle", True), - ("create_missing", True), - ], - }, - ), - ("wm.context_menu_enum", - {"type": 'E', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.sculpt.brush.stroke_method'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'S', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.sculpt.brush.use_smooth_stroke'), - ], - }, - ), - ("wm.call_menu", - {"type": 'R', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_angle_control'), - ], - }, - ), - ], - }, - ), - ("Mesh", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("mesh.loopcut_slide", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), - ("mesh.offset_edge_loops_slide", {"type": 'R', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("mesh.inset", {"type": 'I', "value": 'PRESS'}, None), - ("mesh.poke", {"type": 'P', "value": 'PRESS', "alt": True}, None), - ("mesh.bevel", - {"type": 'B', "value": 'PRESS', "ctrl": True}, - {"properties": - [("vertex_only", False), - ], - }, - ), - ("mesh.bevel", - {"type": 'B', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("vertex_only", True), - ], - }, - ), - ("mesh.loop_select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", False), - ], - }, - ), - ("mesh.loop_select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", True), - ], - }, - ), - ("mesh.edgering_select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", False), - ], - }, - ), - ("mesh.edgering_select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", True), - ], - }, - ), - ("mesh.shortest_path_pick", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("use_fill", False), - ], - }, - ), - ("mesh.shortest_path_pick", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("use_fill", True), - ], - }, - ), - ("mesh.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("mesh.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("mesh.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("mesh.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("mesh.select_next_item", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("mesh.select_prev_item", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("mesh.select_non_manifold", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ("mesh.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), - ("mesh.select_linked_pick", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("deselect", False), - ], - }, - ), - ("mesh.select_linked_pick", - {"type": 'L', "value": 'PRESS', "shift": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("mesh.faces_select_linked_flat", {"type": 'F', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ("wm.call_menu", - {"type": 'G', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'VIEW3D_MT_edit_mesh_select_similar'), - ], - }, - ), - ("wm.call_menu", - {"type": 'TAB', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_edit_mesh_select_mode'), - ], - }, - ), - ("mesh.hide", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("mesh.hide", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("mesh.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("mesh.normals_make_consistent", - {"type": 'N', "value": 'PRESS', "ctrl": True}, - {"properties": - [("inside", False), - ], - }, - ), - ("mesh.normals_make_consistent", - {"type": 'N', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("inside", True), - ], - }, - ), - ("view3d.edit_mesh_extrude_move_normal", {"type": 'E', "value": 'PRESS'}, None), - ("wm.call_menu", - {"type": 'E', "value": 'PRESS', "alt": True}, - {"properties": - [("name", 'VIEW3D_MT_edit_mesh_extrude'), - ], - }, - ), - ("transform.edge_crease", {"type": 'E', "value": 'PRESS', "shift": True}, None), - ("mesh.spin", {"type": 'R', "value": 'PRESS', "alt": True}, None), - ("mesh.fill", {"type": 'F', "value": 'PRESS', "alt": True}, None), - ("mesh.beautify_fill", {"type": 'F', "value": 'PRESS', "shift": True, "alt": True}, None), - ("mesh.quads_convert_to_tris", - {"type": 'T', "value": 'PRESS', "ctrl": True}, - {"properties": - [("quad_method", 'BEAUTY'), - ("ngon_method", 'BEAUTY'), - ], - }, - ), - ("mesh.quads_convert_to_tris", - {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("quad_method", 'FIXED'), - ("ngon_method", 'CLIP'), - ], - }, - ), - ("mesh.tris_convert_to_quads", {"type": 'J', "value": 'PRESS', "alt": True}, None), - ("mesh.rip_move", - {"type": 'V', "value": 'PRESS'}, - {"properties": - [("MESH_OT_rip", - [("use_fill", False), - ], - ), - ], - }, - ), - ("mesh.rip_move", - {"type": 'V', "value": 'PRESS', "alt": True}, - {"properties": - [("MESH_OT_rip", - [("use_fill", True), - ], - ), - ], - }, - ), - ("mesh.rip_edge_move", {"type": 'D', "value": 'PRESS', "alt": True}, None), - ("mesh.merge", {"type": 'M', "value": 'PRESS', "alt": True}, None), - ("transform.shrink_fatten", {"type": 'S', "value": 'PRESS', "alt": True}, None), - ("mesh.edge_face_add", {"type": 'F', "value": 'PRESS'}, None), - ("mesh.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("wm.call_menu", - {"type": 'A', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'VIEW3D_MT_mesh_add'), - ], - }, - ), - ("mesh.separate", {"type": 'P', "value": 'PRESS'}, None), - ("mesh.split", {"type": 'Y', "value": 'PRESS'}, None), - ("mesh.vert_connect_path", {"type": 'J', "value": 'PRESS'}, None), - ("transform.vert_slide", {"type": 'V', "value": 'PRESS', "shift": True}, None), - ("mesh.dupli_extrude_cursor", - {"type": 'ACTIONMOUSE', "value": 'CLICK', "ctrl": True}, - {"properties": - [("rotate_source", True), - ], - }, - ), - ("mesh.dupli_extrude_cursor", - {"type": 'ACTIONMOUSE', "value": 'CLICK', "shift": True, "ctrl": True}, - {"properties": - [("rotate_source", False), - ], - }, - ), - ("wm.call_menu", - {"type": 'X', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_mesh_delete'), - ], - }, - ), - ("wm.call_menu", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_mesh_delete'), - ], - }, - ), - ("mesh.dissolve_mode", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), - ("mesh.dissolve_mode", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None), - ("mesh.knife_tool", - {"type": 'K', "value": 'PRESS'}, - {"properties": - [("use_occlude_geometry", True), - ("only_selected", False), - ], - }, - ), - ("mesh.knife_tool", - {"type": 'K', "value": 'PRESS', "shift": True}, - {"properties": - [("use_occlude_geometry", False), - ("only_selected", True), - ], - }, - ), - ("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_mesh_specials'), - ], - }, - ), - ("wm.call_menu", - {"type": 'F', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_edit_mesh_faces'), - ], - }, - ), - ("wm.call_menu", - {"type": 'E', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_edit_mesh_edges'), - ], - }, - ), - ("wm.call_menu", - {"type": 'V', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_edit_mesh_vertices'), - ], - }, - ), - ("wm.call_menu", - {"type": 'H', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_hook'), - ], - }, - ), - ("wm.call_menu", - {"type": 'U', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_uv_map'), - ], - }, - ), - ("wm.call_menu", - {"type": 'G', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_vertex_group'), - ], - }, - ), - ("object.subdivision_set", - {"type": 'ZERO', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 0), - ], - }, - ), - ("object.subdivision_set", - {"type": 'ONE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 1), - ], - }, - ), - ("object.subdivision_set", - {"type": 'TWO', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 2), - ], - }, - ), - ("object.subdivision_set", - {"type": 'THREE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 3), - ], - }, - ), - ("object.subdivision_set", - {"type": 'FOUR', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 4), - ], - }, - ), - ("object.subdivision_set", - {"type": 'FIVE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("level", 5), - ], - }, - ), - ("wm.context_cycle_enum", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit_falloff'), - ("wrap", True), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'ENABLED'), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS', "alt": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'CONNECTED'), - ], - }, - ), - ], - }, - ), - ("Armature", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("armature.hide", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("armature.hide", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("armature.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("armature.align", {"type": 'A', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("armature.calculate_roll", {"type": 'N', "value": 'PRESS', "ctrl": True}, None), - ("armature.roll_clear", {"type": 'R', "value": 'PRESS', "alt": True}, None), - ("armature.switch_direction", {"type": 'F', "value": 'PRESS', "alt": True}, None), - ("armature.bone_primitive_add", {"type": 'A', "value": 'PRESS', "shift": True}, None), - ("armature.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), - ("armature.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None), - ("armature.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("armature.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("armature.select_mirror", - {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("armature.select_hierarchy", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("direction", 'PARENT'), - ("extend", False), - ], - }, - ), - ("armature.select_hierarchy", - {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'PARENT'), - ("extend", True), - ], - }, - ), - ("armature.select_hierarchy", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("direction", 'CHILD'), - ("extend", False), - ], - }, - ), - ("armature.select_hierarchy", - {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'CHILD'), - ("extend", True), - ], - }, - ), - ("armature.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("armature.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("armature.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None), - ("armature.select_linked", {"type": 'L', "value": 'PRESS'}, None), - ("armature.shortest_path_pick", {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("wm.call_menu", - {"type": 'X', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_armature_delete'), - ], - }, - ), - ("wm.call_menu", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_edit_armature_delete'), - ], - }, - ), - ("armature.dissolve", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), - ("armature.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("armature.extrude_move", {"type": 'E', "value": 'PRESS'}, None), - ("armature.extrude_forked", {"type": 'E', "value": 'PRESS', "shift": True}, None), - ("armature.click_extrude", {"type": 'ACTIONMOUSE', "value": 'CLICK', "ctrl": True}, None), - ("armature.fill", {"type": 'F', "value": 'PRESS'}, None), - ("armature.merge", {"type": 'M', "value": 'PRESS', "alt": True}, None), - ("armature.split", {"type": 'Y', "value": 'PRESS'}, None), - ("armature.separate", {"type": 'P', "value": 'PRESS'}, None), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'VIEW3D_MT_bone_options_toggle'), - ], - }, - ), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_bone_options_enable'), - ], - }, - ), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS', "alt": True}, - {"properties": - [("name", 'VIEW3D_MT_bone_options_disable'), - ], - }, - ), - ("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None), - ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None), - ("armature.bone_layers", {"type": 'M', "value": 'PRESS'}, None), - ("transform.transform", - {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("mode", 'BONE_SIZE'), - ], - }, - ), - ("transform.transform", - {"type": 'S', "value": 'PRESS', "alt": True}, - {"properties": - [("mode", 'BONE_ENVELOPE'), - ], - }, - ), - ("transform.transform", - {"type": 'R', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'BONE_ROLL'), - ], - }, - ), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_armature_specials'), - ], - }, - ), - ], - }, - ), - ("Metaball", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("object.metaball_add", {"type": 'A', "value": 'PRESS', "shift": True}, None), - ("mball.reveal_metaelems", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("mball.hide_metaelems", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("mball.hide_metaelems", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("mball.delete_metaelems", {"type": 'X', "value": 'PRESS'}, None), - ("mball.delete_metaelems", {"type": 'DEL', "value": 'PRESS'}, None), - ("mball.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("mball.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("mball.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("mball.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None), - ("wm.context_cycle_enum", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit_falloff'), - ("wrap", True), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'ENABLED'), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS', "alt": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'CONNECTED'), - ], - }, - ), - ], - }, - ), - ("Lattice", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("lattice.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("lattice.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("lattice.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("lattice.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), - ("lattice.flip", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), - ("wm.call_menu", - {"type": 'H', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'VIEW3D_MT_hook'), - ], - }, - ), - ("wm.context_cycle_enum", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit_falloff'), - ("wrap", True), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'ENABLED'), - ], - }, - ), - ], - }, - ), - ("Particle", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("particle.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("particle.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("particle.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("particle.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("particle.select_linked", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("deselect", False), - ], - }, - ), - ("particle.select_linked", - {"type": 'L', "value": 'PRESS', "shift": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("particle.delete", {"type": 'X', "value": 'PRESS'}, None), - ("particle.delete", {"type": 'DEL', "value": 'PRESS'}, None), - ("particle.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("particle.hide", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("particle.hide", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("particle.brush_edit", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("particle.brush_edit", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS'}, - {"properties": - [("data_path_primary", 'tool_settings.particle_edit.brush.size'), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path_primary", 'tool_settings.particle_edit.brush.strength'), - ], - }, - ), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("name", 'VIEW3D_MT_particle_specials'), - ], - }, - ), - ("particle.weight_set", {"type": 'K', "value": 'PRESS', "shift": True}, None), - ("wm.context_cycle_enum", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit_falloff'), - ("wrap", True), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'ENABLED'), - ], - }, - ), - ], - }, - ), - ("Font", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("font.style_toggle", - {"type": 'B', "value": 'PRESS', "ctrl": True}, - {"properties": - [("style", 'BOLD'), - ], - }, - ), - ("font.style_toggle", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("style", 'ITALIC'), - ], - }, - ), - ("font.style_toggle", - {"type": 'U', "value": 'PRESS', "ctrl": True}, - {"properties": - [("style", 'UNDERLINE'), - ], - }, - ), - ("font.style_toggle", - {"type": 'P', "value": 'PRESS', "ctrl": True}, - {"properties": - [("style", 'SMALL_CAPS'), - ], - }, - ), - ("font.delete", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_OR_SELECTION'), - ], - }, - ), - ("font.delete", - {"type": 'DEL', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'NEXT_WORD'), - ], - }, - ), - ("font.delete", - {"type": 'BACK_SPACE', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_OR_SELECTION'), - ], - }, - ), - ("font.delete", - {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PREVIOUS_OR_SELECTION'), - ], - }, - ), - ("font.delete", - {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PREVIOUS_WORD'), - ], - }, - ), - ("font.move", - {"type": 'HOME', "value": 'PRESS'}, - {"properties": - [("type", 'LINE_BEGIN'), - ], - }, - ), - ("font.move", - {"type": 'END', "value": 'PRESS'}, - {"properties": - [("type", 'LINE_END'), - ], - }, - ), - ("font.move", - {"type": 'LEFT_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_CHARACTER'), - ], - }, - ), - ("font.move", - {"type": 'RIGHT_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_CHARACTER'), - ], - }, - ), - ("font.move", - {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PREVIOUS_WORD'), - ], - }, - ), - ("font.move", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'NEXT_WORD'), - ], - }, - ), - ("font.move", - {"type": 'UP_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_LINE'), - ], - }, - ), - ("font.move", - {"type": 'DOWN_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_LINE'), - ], - }, - ), - ("font.move", - {"type": 'PAGE_UP', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_PAGE'), - ], - }, - ), - ("font.move", - {"type": 'PAGE_DOWN', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_PAGE'), - ], - }, - ), - ("font.move_select", - {"type": 'HOME', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'LINE_BEGIN'), - ], - }, - ), - ("font.move_select", - {"type": 'END', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'LINE_END'), - ], - }, - ), - ("font.move_select", - {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PREVIOUS_CHARACTER'), - ], - }, - ), - ("font.move_select", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'NEXT_CHARACTER'), - ], - }, - ), - ("font.move_select", - {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'PREVIOUS_WORD'), - ], - }, - ), - ("font.move_select", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'NEXT_WORD'), - ], - }, - ), - ("font.move_select", - {"type": 'UP_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PREVIOUS_LINE'), - ], - }, - ), - ("font.move_select", - {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'NEXT_LINE'), - ], - }, - ), - ("font.move_select", - {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PREVIOUS_PAGE'), - ], - }, - ), - ("font.move_select", - {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'NEXT_PAGE'), - ], - }, - ), - ("font.change_spacing", - {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, - {"properties": - [("delta", -1), - ], - }, - ), - ("font.change_spacing", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, - {"properties": - [("delta", 1), - ], - }, - ), - ("font.change_character", - {"type": 'UP_ARROW', "value": 'PRESS', "alt": True}, - {"properties": - [("delta", 1), - ], - }, - ), - ("font.change_character", - {"type": 'DOWN_ARROW', "value": 'PRESS', "alt": True}, - {"properties": - [("delta", -1), - ], - }, - ), - ("font.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), - ("font.text_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("font.text_cut", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), - ("font.text_paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("font.line_break", {"type": 'RET', "value": 'PRESS'}, None), - ("font.text_insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None), - ("font.text_insert", - {"type": 'BACK_SPACE', "value": 'PRESS', "alt": True}, - {"properties": - [("accent", True), - ], - }, - ), - ], - }, - ), - ("Object Non-modal", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("object.mode_set", - {"type": 'TAB', "value": 'PRESS'}, - {"properties": - [("mode", 'EDIT'), - ("toggle", True), - ], - }, - ), - ("object.mode_set", - {"type": 'TAB', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'POSE'), - ("toggle", True), - ], - }, - ), - ("object.mode_set", - {"type": 'V', "value": 'PRESS'}, - {"properties": - [("mode", 'VERTEX_PAINT'), - ("toggle", True), - ], - }, - ), - ("object.mode_set", - {"type": 'TAB', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'WEIGHT_PAINT'), - ("toggle", True), - ], - }, - ), - ("object.origin_set", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ], - }, - ), - ("3D View", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("view3d.cursor3d", {"type": 'ACTIONMOUSE', "value": 'CLICK'}, None), - ("view3d.rotate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), - ("view3d.move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None), - ("view3d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("view3d.dolly", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("view3d.view_selected", - {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "ctrl": True}, - {"properties": - [("use_all_regions", True), - ], - }, - ), - ("view3d.view_selected", - {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, - {"properties": - [("use_all_regions", False), - ], - }, - ), - ("view3d.view_lock_to_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "shift": True}, None), - ("view3d.view_lock_clear", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "alt": True}, None), - ("view3d.navigate", {"type": 'F', "value": 'PRESS', "shift": True}, None), - ("view3d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None), - ("view3d.rotate", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), - ("view3d.rotate", {"type": 'MOUSEROTATE', "value": 'ANY'}, None), - ("view3d.move", {"type": 'TRACKPADPAN', "value": 'ANY', "shift": True}, None), - ("view3d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), - ("view3d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), - ("view3d.zoom", - {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, - {"properties": - [("delta", 1), - ], - }, - ), - ("view3d.zoom", - {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, - {"properties": - [("delta", -1), - ], - }, - ), - ("view3d.zoom", - {"type": 'EQUAL', "value": 'PRESS', "ctrl": True}, - {"properties": - [("delta", 1), - ], - }, - ), - ("view3d.zoom", - {"type": 'MINUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("delta", -1), - ], - }, - ), - ("view3d.zoom", - {"type": 'WHEELINMOUSE', "value": 'PRESS'}, - {"properties": - [("delta", 1), - ], - }, - ), - ("view3d.zoom", - {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, - {"properties": - [("delta", -1), - ], - }, - ), - ("view3d.dolly", - {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True}, - {"properties": - [("delta", 1), - ], - }, - ), - ("view3d.dolly", - {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True}, - {"properties": - [("delta", -1), - ], - }, - ), - ("view3d.dolly", - {"type": 'EQUAL', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("delta", 1), - ], - }, - ), - ("view3d.dolly", - {"type": 'MINUS', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("delta", -1), - ], - }, - ), - ("view3d.zoom_camera_1_to_1", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None), - ("view3d.view_center_camera", {"type": 'HOME', "value": 'PRESS'}, None), - ("view3d.view_center_lock", {"type": 'HOME', "value": 'PRESS'}, None), - ("view3d.view_center_cursor", {"type": 'HOME', "value": 'PRESS', "alt": True}, None), - ("view3d.view_center_pick", {"type": 'F', "value": 'PRESS', "alt": True}, None), - ("view3d.view_all", - {"type": 'HOME', "value": 'PRESS'}, - {"properties": - [("center", False), - ], - }, - ), - ("view3d.view_all", - {"type": 'HOME', "value": 'PRESS', "ctrl": True}, - {"properties": - [("use_all_regions", True), - ("center", False), - ], - }, - ), - ("view3d.view_all", - {"type": 'C', "value": 'PRESS', "shift": True}, - {"properties": - [("center", True), - ], - }, - ), - ("view3d.view_camera", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), - ("view3d.view_axis", - {"type": 'NUMPAD_1', "value": 'PRESS'}, - {"properties": - [("type", 'FRONT'), - ], - }, - ), - ("view3d.view_orbit", - {"type": 'NUMPAD_2', "value": 'PRESS'}, - {"properties": - [("type", 'ORBITDOWN'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_3', "value": 'PRESS'}, - {"properties": - [("type", 'RIGHT'), - ], - }, - ), - ("view3d.view_orbit", - {"type": 'NUMPAD_4', "value": 'PRESS'}, - {"properties": - [("type", 'ORBITLEFT'), - ], - }, - ), - ("view3d.view_persportho", {"type": 'NUMPAD_5', "value": 'PRESS'}, None), - ("view3d.view_orbit", - {"type": 'NUMPAD_6', "value": 'PRESS'}, - {"properties": - [("type", 'ORBITRIGHT'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_7', "value": 'PRESS'}, - {"properties": - [("type", 'TOP'), - ], - }, - ), - ("view3d.view_orbit", - {"type": 'NUMPAD_8', "value": 'PRESS'}, - {"properties": - [("type", 'ORBITUP'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_1', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'BACK'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_3', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'LEFT'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_7', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'BOTTOM'), - ], - }, - ), - ("view3d.view_pan", - {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PANDOWN'), - ], - }, - ), - ("view3d.view_pan", - {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PANLEFT'), - ], - }, - ), - ("view3d.view_pan", - {"type": 'NUMPAD_6', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PANRIGHT'), - ], - }, - ), - ("view3d.view_pan", - {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PANUP'), - ], - }, - ), - ("view3d.view_roll", - {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'LEFT'), - ], - }, - ), - ("view3d.view_roll", - {"type": 'NUMPAD_6', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'RIGHT'), - ], - }, - ), - ("view3d.view_orbit", - {"type": 'NUMPAD_9', "value": 'PRESS'}, - {"properties": - [("angle", 3.1415927), - ("type", 'ORBITRIGHT'), - ], - }, - ), - ("view3d.view_pan", - {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PANRIGHT'), - ], - }, - ), - ("view3d.view_pan", - {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PANLEFT'), - ], - }, - ), - ("view3d.view_pan", - {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PANUP'), - ], - }, - ), - ("view3d.view_pan", - {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PANDOWN'), - ], - }, - ), - ("view3d.view_orbit", - {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("type", 'ORBITLEFT'), - ], - }, - ), - ("view3d.view_orbit", - {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("type", 'ORBITRIGHT'), - ], - }, - ), - ("view3d.view_orbit", - {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("type", 'ORBITUP'), - ], - }, - ), - ("view3d.view_orbit", - {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("type", 'ORBITDOWN'), - ], - }, - ), - ("view3d.view_roll", - {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'LEFT'), - ], - }, - ), - ("view3d.view_roll", - {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'RIGHT'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'FRONT'), - ("align_active", True), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'RIGHT'), - ("align_active", True), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'TOP'), - ("align_active", True), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'BACK'), - ("align_active", True), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'LEFT'), - ("align_active", True), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'BOTTOM'), - ("align_active", True), - ], - }, - ), - ("view3d.ndof_orbit_zoom", {"type": 'NDOF_MOTION', "value": 'ANY'}, None), - ("view3d.ndof_orbit", {"type": 'NDOF_MOTION', "value": 'ANY', "ctrl": True}, None), - ("view3d.ndof_pan", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True}, None), - ("view3d.ndof_all", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True, "ctrl": True}, None), - ("view3d.view_selected", - {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, - {"properties": - [("use_all_regions", False), - ], - }, - ), - ("view3d.view_roll", - {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'}, - {"properties": - [("type", 'LEFT'), - ], - }, - ), - ("view3d.view_roll", - {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'}, - {"properties": - [("type", 'RIGHT'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS'}, - {"properties": - [("type", 'FRONT'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NDOF_BUTTON_BACK', "value": 'PRESS'}, - {"properties": - [("type", 'BACK'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NDOF_BUTTON_LEFT', "value": 'PRESS'}, - {"properties": - [("type", 'LEFT'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS'}, - {"properties": - [("type", 'RIGHT'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS'}, - {"properties": - [("type", 'TOP'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NDOF_BUTTON_BOTTOM', "value": 'PRESS'}, - {"properties": - [("type", 'BOTTOM'), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'FRONT'), - ("align_active", True), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'RIGHT'), - ("align_active", True), - ], - }, - ), - ("view3d.view_axis", - {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'TOP'), - ("align_active", True), - ], - }, - ), - ("view3d.layers", - {"type": 'ACCENT_GRAVE', "value": 'PRESS'}, - {"properties": - [("nr", 0), - ], - }, - ), - ("view3d.layers", - {"type": 'ONE', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 1), - ], - }, - ), - ("view3d.layers", - {"type": 'TWO', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 2), - ], - }, - ), - ("view3d.layers", - {"type": 'THREE', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 3), - ], - }, - ), - ("view3d.layers", - {"type": 'FOUR', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 4), - ], - }, - ), - ("view3d.layers", - {"type": 'FIVE', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 5), - ], - }, - ), - ("view3d.layers", - {"type": 'SIX', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 6), - ], - }, - ), - ("view3d.layers", - {"type": 'SEVEN', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 7), - ], - }, - ), - ("view3d.layers", - {"type": 'EIGHT', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 8), - ], - }, - ), - ("view3d.layers", - {"type": 'NINE', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 9), - ], - }, - ), - ("view3d.layers", - {"type": 'ZERO', "value": 'PRESS', "any": True}, - {"properties": - [("nr", 10), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'Z', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.shading.type'), - ("value_1", 'WIREFRAME'), - ("value_2", 'SOLID'), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'Z', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'space_data.shading.type'), - ("value_1", 'RENDERED'), - ("value_2", 'SOLID'), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'Z', "value": 'PRESS', "alt": True}, - {"properties": - [("data_path", 'space_data.shading.type'), - ("value_1", 'MATERIAL'), - ("value_2", 'SOLID'), - ], - }, - ), - ("view3d.select", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", False), - ("center", False), - ("enumerate", False), - ("object", False), - ], - }, - ), - ("view3d.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", True), - ("center", False), - ("enumerate", False), - ("object", False), - ], - }, - ), - ("view3d.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", False), - ("center", True), - ("enumerate", False), - ("object", True), - ], - }, - ), - ("view3d.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", False), - ("center", False), - ("enumerate", True), - ("object", False), - ], - }, - ), - ("view3d.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("extend", True), - ("deselect", False), - ("toggle", True), - ("center", True), - ("enumerate", False), - ("object", False), - ], - }, - ), - ("view3d.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", False), - ("center", True), - ("enumerate", True), - ("object", False), - ], - }, - ), - ("view3d.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", True), - ("center", False), - ("enumerate", True), - ("object", False), - ], - }, - ), - ("view3d.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", True), - ("center", True), - ("enumerate", True), - ("object", False), - ], - }, - ), - ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("view3d.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("view3d.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ("view3d.clip_border", {"type": 'B', "value": 'PRESS', "alt": True}, None), - ("view3d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None), - ("view3d.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), - ("view3d.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("view3d.camera_to_view", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("view3d.object_as_camera", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True}, None), - ("wm.call_menu", - {"type": 'S', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'VIEW3D_MT_snap'), - ], - }, - ), - ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("wm.context_set_enum", - {"type": 'COMMA', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.transform_pivot_point'), - ("value", 'BOUNDING_BOX_CENTER'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'COMMA', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'tool_settings.transform_pivot_point'), - ("value", 'MEDIAN_POINT'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'COMMA', "value": 'PRESS', "alt": True}, - {"properties": - [("data_path", 'tool_settings.use_transform_pivot_point_align'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'PERIOD', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.transform_pivot_point'), - ("value", 'CURSOR'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'PERIOD', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'tool_settings.transform_pivot_point'), - ("value", 'INDIVIDUAL_ORIGINS'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'PERIOD', "value": 'PRESS', "alt": True}, - {"properties": - [("data_path", 'tool_settings.transform_pivot_point'), - ("value", 'ACTIVE_ELEMENT'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.show_manipulator'), - ], - }, - ), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, 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.select_orientation", {"type": 'SPACE', "value": 'PRESS', "alt": True}, None), - ("transform.create_orientation", - {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("use", True), - ], - }, - ), - ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), - ("wm.context_toggle", - {"type": 'TAB', "value": 'PRESS', "shift": True}, - {"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_element'), - ], - }, - ), - ("object.transform_axis_target", {"type": 'T', "value": 'PRESS', "shift": True}, None), - ("transform.translate", - {"type": 'T', "value": 'PRESS', "shift": True}, - {"properties": - [("texture_space", True), - ], - }, - ), - ("transform.resize", - {"type": 'T', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("texture_space", True), - ], - }, - ), - ("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("Manipulators", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [], - }, - ), - ("Backdrop Transform Widget", - {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Backdrop Crop Widget", - {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Sun Beams Widget", - {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Corner Pin Widget", - {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("UV Transform Manipulator", - {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Spot Light Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Area Light Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Target Light Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Force Field Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Camera Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Camera View Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Armature Spline Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("View3D Navigate", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Animation", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("anim.change_frame", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("wm.context_toggle", - {"type": 'T', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.show_seconds'), - ], - }, - ), - ("anim.previewrange_set", {"type": 'P', "value": 'PRESS'}, None), - ("anim.previewrange_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None), - ], - }, - ), - ("Animation Channels", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("anim.channels_click", - {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("anim.channels_click", - {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("children_only", True), - ], - }, - ), - ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), - ("anim.channel_select_keys", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), - ("anim.channel_select_keys", - {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), - ("anim.channels_select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("anim.channels_select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("anim.channels_select_box", {"type": 'B', "value": 'PRESS'}, None), - ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("anim.channels_delete", {"type": 'X', "value": 'PRESS'}, None), - ("anim.channels_delete", {"type": 'DEL', "value": 'PRESS'}, None), - ("anim.channels_setting_toggle", {"type": 'W', "value": 'PRESS', "shift": True}, None), - ("anim.channels_setting_enable", {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("anim.channels_setting_disable", {"type": 'W', "value": 'PRESS', "alt": True}, None), - ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), - ("anim.channels_expand", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), - ("anim.channels_collapse", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), - ("anim.channels_expand", - {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("all", False), - ], - }, - ), - ("anim.channels_collapse", - {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("all", False), - ], - }, - ), - ("anim.channels_move", - {"type": 'PAGE_UP', "value": 'PRESS'}, - {"properties": - [("direction", 'UP'), - ], - }, - ), - ("anim.channels_move", - {"type": 'PAGE_DOWN', "value": 'PRESS'}, - {"properties": - [("direction", 'DOWN'), - ], - }, - ), - ("anim.channels_move", - {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'TOP'), - ], - }, - ), - ("anim.channels_move", - {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'BOTTOM'), - ], - }, - ), - ("anim.channels_group", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), - ("anim.channels_ungroup", {"type": 'G', "value": 'PRESS', "alt": True}, None), - ], - }, - ), - ("UV Editor", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("wm.context_toggle", - {"type": 'Q', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.use_uv_sculpt'), - ], - }, - ), - ("uv.mark_seam", {"type": 'E', "value": 'PRESS', "ctrl": True}, None), - ("uv.select", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ], - }, - ), - ("uv.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("uv.select_loop", - {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("uv.select_loop", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("uv.select_split", {"type": 'Y', "value": 'PRESS'}, None), - ("uv.select_box", - {"type": 'B', "value": 'PRESS'}, - {"properties": - [("pinned", False), - ], - }, - ), - ("uv.select_box", - {"type": 'B', "value": 'PRESS', "ctrl": True}, - {"properties": - [("pinned", True), - ], - }, - ), - ("uv.circle_select", {"type": 'C', "value": 'PRESS'}, None), - ("uv.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("uv.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("uv.select_linked", - {"type": 'L', "value": 'PRESS', "ctrl": True}, - {"properties": - [("extend", True), - ("deselect", False), - ], - }, - ), - ("uv.select_linked_pick", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("extend", True), - ("deselect", False), - ], - }, - ), - ("uv.select_linked", - {"type": 'L', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("extend", False), - ("deselect", True), - ], - }, - ), - ("uv.select_linked_pick", - {"type": 'L', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", False), - ("deselect", True), - ], - }, - ), - ("uv.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("uv.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("uv.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("uv.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("uv.select_pinned", {"type": 'P', "value": 'PRESS', "shift": True}, None), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("name", 'IMAGE_MT_uvs_weldalign'), - ], - }, - ), - ("uv.stitch", {"type": 'V', "value": 'PRESS'}, None), - ("uv.pin", - {"type": 'P', "value": 'PRESS'}, - {"properties": - [("clear", False), - ], - }, - ), - ("uv.pin", - {"type": 'P', "value": 'PRESS', "alt": True}, - {"properties": - [("clear", True), - ], - }, - ), - ("uv.unwrap", {"type": 'E', "value": 'PRESS'}, None), - ("uv.minimize_stretch", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("uv.pack_islands", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), - ("uv.average_islands_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), - ("uv.hide", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("uv.hide", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("uv.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("uv.cursor_set", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("wm.call_menu", - {"type": 'S', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'IMAGE_MT_uvs_snap'), - ], - }, - ), - ("wm.call_menu", - {"type": 'TAB', "value": 'PRESS', "ctrl": True}, - {"properties": - [("name", 'IMAGE_MT_uvs_select_mode'), - ], - }, - ), - ("wm.context_cycle_enum", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit_falloff'), - ("wrap", True), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.proportional_edit'), - ("value_1", 'DISABLED'), - ("value_2", 'ENABLED'), - ], - }, - ), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("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}, - {"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'), - ], - }, - ), - ], - }, - ), - ("UV Sculpt", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("wm.context_toggle", - {"type": 'Q', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.use_uv_sculpt'), - ], - }, - ), - ("sculpt.uv_sculpt_stroke", - {"type": 'LEFTMOUSE', "value": 'PRESS'}, - {"properties": - [("mode", 'NORMAL'), - ], - }, - ), - ("sculpt.uv_sculpt_stroke", - {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'INVERT'), - ], - }, - ), - ("sculpt.uv_sculpt_stroke", - {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'RELAX'), - ], - }, - ), - ("brush.scale_size", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 0.9), - ], - }, - ), - ("brush.scale_size", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("scalar", 1.1111112), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS'}, - {"properties": - [("data_path_primary", 'tool_settings.uv_sculpt.brush.size'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.size'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'), - ("rotation_path", 'tool_settings.uv_sculpt.brush.texture_slot.angle'), - ("color_path", 'tool_settings.uv_sculpt.brush.cursor_color_add'), - ("fill_color_path", ''), - ("fill_color_override_path", ''), - ("fill_color_override_test_path", ''), - ("zoom_path", ''), - ("image_id", 'tool_settings.uv_sculpt.brush'), - ("secondary_tex", False), - ], - }, - ), - ("wm.radial_control", - {"type": 'F', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path_primary", 'tool_settings.uv_sculpt.brush.strength'), - ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'), - ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'), - ("rotation_path", 'tool_settings.uv_sculpt.brush.texture_slot.angle'), - ("color_path", 'tool_settings.uv_sculpt.brush.cursor_color_add'), - ("fill_color_path", ''), - ("fill_color_override_path", ''), - ("fill_color_override_test_path", ''), - ("zoom_path", ''), - ("image_id", 'tool_settings.uv_sculpt.brush'), - ("secondary_tex", False), - ], - }, - ), - ("brush.uv_sculpt_tool_set", - {"type": 'S', "value": 'PRESS'}, - {"properties": - [("tool", 'RELAX'), - ], - }, - ), - ("brush.uv_sculpt_tool_set", - {"type": 'P', "value": 'PRESS'}, - {"properties": - [("tool", 'PINCH'), - ], - }, - ), - ("brush.uv_sculpt_tool_set", - {"type": 'G', "value": 'PRESS'}, - {"properties": - [("tool", 'GRAB'), - ], - }, - ), - ], - }, - ), - ("Mask Editing", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("mask.new", {"type": 'N', "value": 'PRESS', "alt": True}, None), - ("wm.call_menu", - {"type": 'A', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'MASK_MT_add'), - ], - }, - ), - ("wm.context_cycle_enum", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'tool_settings.proportional_edit_falloff'), - ("wrap", True), - ], - }, - ), - ("wm.context_toggle", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.use_proportional_edit_mask'), - ], - }, - ), - ("mask.add_vertex_slide", {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("mask.add_feather_vertex_slide", {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True}, None), - ("mask.delete", {"type": 'X', "value": 'PRESS'}, None), - ("mask.delete", {"type": 'DEL', "value": 'PRESS'}, None), - ("mask.select", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", False), - ], - }, - ), - ("mask.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", False), - ("deselect", False), - ("toggle", True), - ], - }, - ), - ("mask.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("mask.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("mask.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), - ("mask.select_linked_pick", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("deselect", False), - ], - }, - ), - ("mask.select_linked_pick", - {"type": 'L', "value": 'PRESS', "shift": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("mask.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("mask.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ("mask.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("mask.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("mask.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("mask.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("mask.hide_view_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("mask.hide_view_set", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("mask.hide_view_set", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("clip.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("mask.cyclic_toggle", {"type": 'C', "value": 'PRESS', "alt": True}, None), - ("mask.slide_point", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("mask.slide_spline_curvature", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("mask.handle_type_set", {"type": 'V', "value": 'PRESS'}, None), - ("mask.normals_make_consistent", {"type": 'N', "value": 'PRESS', "ctrl": True}, None), - ("mask.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), - ("mask.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None), - ("mask.shape_key_insert", {"type": 'I', "value": 'PRESS'}, None), - ("mask.shape_key_clear", {"type": 'I', "value": 'PRESS', "alt": True}, None), - ("mask.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("mask.copy_splines", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("mask.paste_splines", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("uv.cursor_set", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.transform", - {"type": 'S', "value": 'PRESS', "alt": True}, - {"properties": - [("mode", 'MASK_SHRINKFATTEN'), - ], - }, - ), - ], - }, - ), - ("Markers", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - [("marker.add", {"type": 'M', "value": 'PRESS'}, None), - ("marker.move", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("marker.duplicate", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("marker.select", {"type": 'SELECTMOUSE', "value": 'PRESS'}, None), - ("marker.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("marker.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("extend", False), - ("camera", True), - ], - }, - ), - ("marker.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("extend", True), - ("camera", True), - ], - }, - ), - ("marker.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("marker.select_all", {"type": 'A', "value": 'PRESS'}, None), - ("marker.delete", {"type": 'X', "value": 'PRESS'}, None), - ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, None), - ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), - ("marker.move", {"type": 'G', "value": 'PRESS'}, None), - ("marker.camera_bind", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("Graph Editor Generic", - {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("graph.properties", {"type": 'N', "value": 'PRESS'}, None), - ("graph.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None), - ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), - ("graph.hide", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("graph.hide", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("graph.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ], - }, - ), - ("Graph Editor", - {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("wm.context_toggle", - {"type": 'H', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.show_handles'), - ], - }, - ), - ("graph.cursor_set", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("graph.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ("column", False), - ("curves", False), - ], - }, - ), - ("graph.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("extend", False), - ("column", True), - ("curves", False), - ], - }, - ), - ("graph.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ("column", False), - ("curves", False), - ], - }, - ), - ("graph.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("extend", True), - ("column", True), - ("curves", False), - ], - }, - ), - ("graph.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("extend", False), - ("column", False), - ("curves", True), - ], - }, - ), - ("graph.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("extend", True), - ("column", False), - ("curves", True), - ], - }, - ), - ("graph.select_leftright", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'CHECK'), - ("extend", False), - ], - }, - ), - ("graph.select_leftright", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("mode", 'CHECK'), - ("extend", True), - ], - }, - ), - ("graph.select_leftright", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("mode", 'LEFT'), - ("extend", False), - ], - }, - ), - ("graph.select_leftright", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("mode", 'RIGHT'), - ("extend", False), - ], - }, - ), - ("graph.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("graph.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("graph.select_box", - {"type": 'B', "value": 'PRESS'}, - {"properties": - [("axis_range", False), - ("include_handles", False), - ], - }, - ), - ("graph.select_box", - {"type": 'B', "value": 'PRESS', "alt": True}, - {"properties": - [("axis_range", True), - ("include_handles", False), - ], - }, - ), - ("graph.select_box", - {"type": 'B', "value": 'PRESS', "ctrl": True}, - {"properties": - [("axis_range", False), - ("include_handles", True), - ], - }, - ), - ("graph.select_box", - {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("axis_range", True), - ("include_handles", True), - ], - }, - ), - ("graph.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("graph.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("graph.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ("graph.select_column", - {"type": 'K', "value": 'PRESS'}, - {"properties": - [("mode", 'KEYS'), - ], - }, - ), - ("graph.select_column", - {"type": 'K', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'CFRA'), - ], - }, - ), - ("graph.select_column", - {"type": 'K', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'MARKERS_COLUMN'), - ], - }, - ), - ("graph.select_column", - {"type": 'K', "value": 'PRESS', "alt": True}, - {"properties": - [("mode", 'MARKERS_BETWEEN'), - ], - }, - ), - ("graph.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("graph.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("graph.select_linked", {"type": 'L', "value": 'PRESS'}, None), - ("graph.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), - ("graph.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None), - ("graph.mirror", {"type": 'M', "value": 'PRESS', "shift": True}, None), - ("graph.handle_type", {"type": 'V', "value": 'PRESS'}, None), - ("graph.interpolation_type", {"type": 'T', "value": 'PRESS'}, None), - ("graph.easing_type", {"type": 'E', "value": 'PRESS', "ctrl": True}, None), - ("graph.smooth", {"type": 'O', "value": 'PRESS', "alt": True}, None), - ("graph.sample", {"type": 'O', "value": 'PRESS', "shift": True}, None), - ("graph.bake", {"type": 'C', "value": 'PRESS', "alt": True}, None), - ("wm.call_menu", - {"type": 'X', "value": 'PRESS'}, - {"properties": - [("name", 'GRAPH_MT_delete'), - ], - }, - ), - ("wm.call_menu", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("name", 'GRAPH_MT_delete'), - ], - }, - ), - ("graph.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("graph.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None), - ("graph.click_insert", - {"type": 'ACTIONMOUSE', "value": 'CLICK', "ctrl": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("graph.click_insert", - {"type": 'ACTIONMOUSE', "value": 'CLICK', "shift": True, "ctrl": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("graph.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("graph.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("graph.paste", - {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("flipped", True), - ], - }, - ), - ("graph.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("graph.view_all", {"type": 'HOME', "value": 'PRESS'}, None), - ("graph.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ("graph.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("graph.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), - ("graph.fmodifier_add", - {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("only_active", False), - ], - }, - ), - ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.transform", - {"type": 'E', "value": 'PRESS'}, - {"properties": - [("mode", 'TIME_EXTEND'), - ], - }, - ), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("wm.context_toggle", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.use_proportional_fcurve'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'COMMA', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'BOUNDING_BOX_CENTER'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'PERIOD', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'CURSOR'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'PERIOD', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'INDIVIDUAL_ORIGINS'), - ], - }, - ), - ("marker.add", {"type": 'M', "value": 'PRESS'}, None), - ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("Image Generic", - {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("image.new", {"type": 'N', "value": 'PRESS', "alt": True}, None), - ("image.open", {"type": 'O', "value": 'PRESS', "alt": True}, None), - ("image.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None), - ("image.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), - ("image.save", {"type": 'S', "value": 'PRESS', "alt": True}, None), - ("image.save_as", {"type": 'F3', "value": 'PRESS'}, None), - ("image.properties", {"type": 'N', "value": 'PRESS'}, None), - ("image.toolshelf", {"type": 'T', "value": 'PRESS'}, None), - ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS'}, None), - ("image.cycle_render_slot", - {"type": 'J', "value": 'PRESS', "alt": True}, - {"properties": - [("reverse", True), - ], - }, - ), - ], - }, - ), - ("Image", - {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("image.view_all", {"type": 'HOME', "value": 'PRESS'}, None), - ("image.view_all", - {"type": 'HOME', "value": 'PRESS', "shift": True}, - {"properties": - [("fit_view", True), - ], - }, - ), - ("image.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), - ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None), - ("image.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), - ("image.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ("image.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None), - ("image.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None), - ("image.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None), - ("image.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), - ("image.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), - ("image.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("image.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), - ("image.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), - ("image.view_zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True}, - {"properties": - [("ratio", 8.0), - ], - }, - ), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True}, - {"properties": - [("ratio", 4.0), - ], - }, - ), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True}, - {"properties": - [("ratio", 2.0), - ], - }, - ), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True}, - {"properties": - [("ratio", 8.0), - ], - }, - ), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True}, - {"properties": - [("ratio", 4.0), - ], - }, - ), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True}, - {"properties": - [("ratio", 2.0), - ], - }, - ), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_1', "value": 'PRESS'}, - {"properties": - [("ratio", 1.0), - ], - }, - ), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_2', "value": 'PRESS'}, - {"properties": - [("ratio", 0.5), - ], - }, - ), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_4', "value": 'PRESS'}, - {"properties": - [("ratio", 0.25), - ], - }, - ), - ("image.view_zoom_ratio", - {"type": 'NUMPAD_8', "value": 'PRESS'}, - {"properties": - [("ratio", 0.125), - ], - }, - ), - ("image.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("image.sample", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("image.curves_point_set", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("point", 'BLACK_POINT'), - ], - }, - ), - ("image.curves_point_set", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("point", 'WHITE_POINT'), - ], - }, - ), - ("object.mode_set", - {"type": 'TAB', "value": 'PRESS'}, - {"properties": - [("mode", 'EDIT'), - ("toggle", True), - ], - }, - ), - ("wm.context_set_int", - {"type": 'ONE', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.image.render_slots.active_index'), - ("value", 0), - ], - }, - ), - ("wm.context_set_int", - {"type": 'TWO', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.image.render_slots.active_index'), - ("value", 1), - ], - }, - ), - ("wm.context_set_int", - {"type": 'THREE', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.image.render_slots.active_index'), - ("value", 2), - ], - }, - ), - ("wm.context_set_int", - {"type": 'FOUR', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.image.render_slots.active_index'), - ("value", 3), - ], - }, - ), - ("wm.context_set_int", - {"type": 'FIVE', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.image.render_slots.active_index'), - ("value", 4), - ], - }, - ), - ("wm.context_set_int", - {"type": 'SIX', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.image.render_slots.active_index'), - ("value", 5), - ], - }, - ), - ("wm.context_set_int", - {"type": 'SEVEN', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.image.render_slots.active_index'), - ("value", 6), - ], - }, - ), - ("wm.context_set_int", - {"type": 'EIGHT', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.image.render_slots.active_index'), - ("value", 7), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'COMMA', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'CENTER'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'COMMA', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'MEDIAN'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'PERIOD', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'CURSOR'), - ], - }, - ), - ("image.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), - ("image.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ], - }, - ), - ("Node Generic", - {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("node.properties", {"type": 'N', "value": 'PRESS'}, None), - ("node.toolbar", {"type": 'T', "value": 'PRESS'}, None), - ], - }, - ), - ("Node Editor", - {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("node.select", - {"type": 'ACTIONMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ], - }, - ), - ("node.select", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ], - }, - ), - ("node.select", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("node.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("node.select", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("node.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("node.select", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("node.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("node.select", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("node.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("node.select", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("node.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("node.select", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("node.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("node.select", - {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("node.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("node.select_box", - {"type": 'EVT_TWEAK_S', "value": 'ANY'}, - {"properties": - [("tweak", True), - ], - }, - ), - ("node.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("node.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("node.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ("node.link", - {"type": 'LEFTMOUSE', "value": 'PRESS'}, - {"properties": - [("detach", False), - ], - }, - ), - ("node.link", - {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("detach", True), - ], - }, - ), - ("node.resize", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("node.add_reroute", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None), - ("node.links_cut", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("node.select_link_viewer", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("node.backimage_move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "alt": True}, None), - ("node.backimage_zoom", - {"type": 'V', "value": 'PRESS'}, - {"properties": - [("factor", 0.8333333), - ], - }, - ), - ("node.backimage_zoom", - {"type": 'V', "value": 'PRESS', "alt": True}, - {"properties": - [("factor", 1.2), - ], - }, - ), - ("node.backimage_fit", {"type": 'HOME', "value": 'PRESS', "alt": True}, None), - ("node.backimage_sample", {"type": 'ACTIONMOUSE', "value": 'PRESS', "alt": True}, None), - ("node.link_make", - {"type": 'F', "value": 'PRESS'}, - {"properties": - [("replace", False), - ], - }, - ), - ("node.link_make", - {"type": 'F', "value": 'PRESS', "shift": True}, - {"properties": - [("replace", True), - ], - }, - ), - ("wm.call_menu", - {"type": 'A', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'NODE_MT_add'), - ], - }, - ), - ("node.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("node.duplicate_move_keep_inputs", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("node.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), - ("node.detach", {"type": 'P', "value": 'PRESS', "alt": True}, None), - ("node.join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), - ("node.hide_toggle", {"type": 'H', "value": 'PRESS'}, None), - ("node.mute_toggle", {"type": 'M', "value": 'PRESS'}, None), - ("node.preview_toggle", {"type": 'H', "value": 'PRESS', "shift": True}, None), - ("node.hide_socket_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, None), - ("node.view_all", {"type": 'HOME', "value": 'PRESS'}, None), - ("node.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ("node.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("node.select_box", - {"type": 'B', "value": 'PRESS'}, - {"properties": - [("tweak", False), - ], - }, - ), - ("node.delete", {"type": 'X', "value": 'PRESS'}, None), - ("node.delete", {"type": 'DEL', "value": 'PRESS'}, None), - ("node.delete_reconnect", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), - ("node.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("node.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("node.select_linked_to", {"type": 'L', "value": 'PRESS', "shift": True}, None), - ("node.select_linked_from", {"type": 'L', "value": 'PRESS'}, None), - ("node.select_grouped", - {"type": 'G', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", False), - ], - }, - ), - ("node.select_grouped", - {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("node.select_same_type_step", - {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True}, - {"properties": - [("prev", False), - ], - }, - ), - ("node.select_same_type_step", - {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True}, - {"properties": - [("prev", True), - ], - }, - ), - ("node.find_node", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), - ("node.group_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), - ("node.group_ungroup", {"type": 'G', "value": 'PRESS', "alt": True}, None), - ("node.group_separate", {"type": 'P', "value": 'PRESS'}, None), - ("node.group_edit", - {"type": 'TAB', "value": 'PRESS'}, - {"properties": - [("exit", False), - ], - }, - ), - ("node.group_edit", - {"type": 'TAB', "value": 'PRESS', "ctrl": True}, - {"properties": - [("exit", True), - ], - }, - ), - ("node.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), - ("node.render_changed", {"type": 'Z', "value": 'PRESS'}, None), - ("node.clipboard_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("node.clipboard_paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("node.viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), - ("node.clear_viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("node.translate_attach", {"type": 'G', "value": 'PRESS'}, None), - ("node.translate_attach", {"type": 'EVT_TWEAK_A', "value": 'ANY'}, None), - ("node.translate_attach", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.translate", - {"type": 'G', "value": 'PRESS'}, - {"properties": - [("release_confirm", True), - ], - }, - ), - ("transform.translate", - {"type": 'EVT_TWEAK_A', "value": 'ANY'}, - {"properties": - [("release_confirm", True), - ], - }, - ), - ("transform.translate", - {"type": 'EVT_TWEAK_S', "value": 'ANY'}, - {"properties": - [("release_confirm", True), - ], - }, - ), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("node.move_detach_links", {"type": 'D', "value": 'PRESS', "alt": True}, None), - ("node.move_detach_links_release", {"type": 'EVT_TWEAK_A', "value": 'ANY', "alt": True}, None), - ("node.move_detach_links", {"type": 'EVT_TWEAK_S', "value": 'ANY', "alt": True}, None), - ("wm.context_toggle", - {"type": 'TAB', "value": 'PRESS', "shift": True}, - {"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'), - ], - }, - ), - ], - }, - ), - ("File Browser", - {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'}, - {"items": - [("file.parent", {"type": 'UP_ARROW', "value": 'PRESS', "alt": True}, None), - ("file.previous", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, None), - ("file.next", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, None), - ("file.refresh", {"type": 'R', "value": 'PRESS'}, None), - ("file.parent", {"type": 'P', "value": 'PRESS'}, None), - ("file.previous", {"type": 'BACK_SPACE', "value": 'PRESS'}, None), - ("file.next", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, None), - ("wm.context_toggle", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.params.show_hidden'), - ], - }, - ), - ("file.directory_new", {"type": 'I', "value": 'PRESS'}, None), - ("file.delete", {"type": 'X', "value": 'PRESS'}, None), - ("file.delete", {"type": 'DEL', "value": 'PRESS'}, None), - ("file.smoothscroll", {"type": 'TIMER1', "value": 'ANY', "any": True}, None), - ("file.bookmark_toggle", {"type": 'T', "value": 'PRESS'}, None), - ("file.bookmark_add", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("File Browser Main", - {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'}, - {"items": - [("file.execute", - {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, - {"properties": - [("need_active", True), - ], - }, - ), - ("file.refresh", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK'}, None), - ("file.select", - {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("file.select", - {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True}, - {"properties": - [("extend", True), - ("fill", True), - ], - }, - ), - ("file.select", - {"type": 'RIGHTMOUSE', "value": 'CLICK'}, - {"properties": - [("open", False), - ], - }, - ), - ("file.select", - {"type": 'RIGHTMOUSE', "value": 'CLICK', "shift": True}, - {"properties": - [("extend", True), - ("open", False), - ], - }, - ), - ("file.select", - {"type": 'RIGHTMOUSE', "value": 'CLICK', "alt": True}, - {"properties": - [("extend", True), - ("fill", True), - ("open", False), - ], - }, - ), - ("file.select_walk", - {"type": 'UP_ARROW', "value": 'PRESS'}, - {"properties": - [("direction", 'UP'), - ], - }, - ), - ("file.select_walk", - {"type": 'UP_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'UP'), - ("extend", True), - ], - }, - ), - ("file.select_walk", - {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("direction", 'UP'), - ("extend", True), - ("fill", True), - ], - }, - ), - ("file.select_walk", - {"type": 'DOWN_ARROW', "value": 'PRESS'}, - {"properties": - [("direction", 'DOWN'), - ], - }, - ), - ("file.select_walk", - {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'DOWN'), - ("extend", True), - ], - }, - ), - ("file.select_walk", - {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("direction", 'DOWN'), - ("extend", True), - ("fill", True), - ], - }, - ), - ("file.select_walk", - {"type": 'LEFT_ARROW', "value": 'PRESS'}, - {"properties": - [("direction", 'LEFT'), - ], - }, - ), - ("file.select_walk", - {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'LEFT'), - ("extend", True), - ], - }, - ), - ("file.select_walk", - {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("direction", 'LEFT'), - ("extend", True), - ("fill", True), - ], - }, - ), - ("file.select_walk", - {"type": 'RIGHT_ARROW', "value": 'PRESS'}, - {"properties": - [("direction", 'RIGHT'), - ], - }, - ), - ("file.select_walk", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("direction", 'RIGHT'), - ("extend", True), - ], - }, - ), - ("file.select_walk", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("direction", 'RIGHT'), - ("extend", True), - ("fill", True), - ], - }, - ), - ("file.previous", {"type": 'BUTTON4MOUSE', "value": 'CLICK'}, None), - ("file.next", {"type": 'BUTTON5MOUSE', "value": 'CLICK'}, None), - ("file.select_all_toggle", {"type": 'A', "value": 'PRESS'}, None), - ("file.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("file.rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("file.highlight", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None), - ("file.filenum", - {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, - {"properties": - [("increment", 1), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True}, - {"properties": - [("increment", 10), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("increment", 100), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, - {"properties": - [("increment", -1), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True}, - {"properties": - [("increment", -10), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("increment", -100), - ], - }, - ), - ], - }, - ), - ("File Browser Buttons", - {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'}, - {"items": - [("file.filenum", - {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, - {"properties": - [("increment", 1), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True}, - {"properties": - [("increment", 10), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("increment", 100), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, - {"properties": - [("increment", -1), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True}, - {"properties": - [("increment", -10), - ], - }, - ), - ("file.filenum", - {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("increment", -100), - ], - }, - ), - ], - }, - ), - ("Dopesheet Generic", - {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("action.properties", {"type": 'N', "value": 'PRESS'}, None), - ], - }, - ), - ("Dopesheet", - {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("action.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ("column", False), - ("channel", False), - ], - }, - ), - ("action.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("extend", False), - ("column", True), - ("channel", False), - ], - }, - ), - ("action.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ("column", False), - ("channel", False), - ], - }, - ), - ("action.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("extend", True), - ("column", True), - ("channel", False), - ], - }, - ), - ("action.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, - {"properties": - [("extend", False), - ("column", False), - ("channel", True), - ], - }, - ), - ("action.clickselect", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("extend", True), - ("column", False), - ("channel", True), - ], - }, - ), - ("action.select_leftright", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'CHECK'), - ("extend", False), - ], - }, - ), - ("action.select_leftright", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("mode", 'CHECK'), - ("extend", True), - ], - }, - ), - ("action.select_leftright", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("mode", 'LEFT'), - ("extend", False), - ], - }, - ), - ("action.select_leftright", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("mode", 'RIGHT'), - ("extend", False), - ], - }, - ), - ("action.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("action.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("action.select_box", - {"type": 'B', "value": 'PRESS'}, - {"properties": - [("axis_range", False), - ], - }, - ), - ("action.select_box", - {"type": 'B', "value": 'PRESS', "alt": True}, - {"properties": - [("axis_range", True), - ], - }, - ), - ("action.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("action.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("action.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ("action.select_column", - {"type": 'K', "value": 'PRESS'}, - {"properties": - [("mode", 'KEYS'), - ], - }, - ), - ("action.select_column", - {"type": 'K', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'CFRA'), - ], - }, - ), - ("action.select_column", - {"type": 'K', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'MARKERS_COLUMN'), - ], - }, - ), - ("action.select_column", - {"type": 'K', "value": 'PRESS', "alt": True}, - {"properties": - [("mode", 'MARKERS_BETWEEN'), - ], - }, - ), - ("action.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("action.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("action.select_linked", {"type": 'L', "value": 'PRESS'}, None), - ("action.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), - ("action.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None), - ("action.mirror", {"type": 'M', "value": 'PRESS', "shift": True}, None), - ("action.handle_type", {"type": 'V', "value": 'PRESS'}, None), - ("action.interpolation_type", {"type": 'T', "value": 'PRESS'}, None), - ("action.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None), - ("action.keyframe_type", {"type": 'R', "value": 'PRESS'}, None), - ("action.sample", {"type": 'O', "value": 'PRESS', "shift": True}, None), - ("wm.call_menu", - {"type": 'X', "value": 'PRESS'}, - {"properties": - [("name", 'DOPESHEET_MT_delete'), - ], - }, - ), - ("wm.call_menu", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("name", 'DOPESHEET_MT_delete'), - ], - }, - ), - ("action.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("action.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None), - ("action.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("action.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("action.paste", - {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("flipped", True), - ], - }, - ), - ("action.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("action.view_all", {"type": 'HOME', "value": 'PRESS'}, None), - ("action.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ("action.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("action.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), - ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), - ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), - ("transform.transform", - {"type": 'G', "value": 'PRESS'}, - {"properties": - [("mode", 'TIME_TRANSLATE'), - ], - }, - ), - ("transform.transform", - {"type": 'EVT_TWEAK_S', "value": 'ANY'}, - {"properties": - [("mode", 'TIME_TRANSLATE'), - ], - }, - ), - ("transform.transform", - {"type": 'E', "value": 'PRESS'}, - {"properties": - [("mode", 'TIME_EXTEND'), - ], - }, - ), - ("transform.transform", - {"type": 'S', "value": 'PRESS'}, - {"properties": - [("mode", 'TIME_SCALE'), - ], - }, - ), - ("transform.transform", - {"type": 'T', "value": 'PRESS', "shift": True}, - {"properties": - [("mode", 'TIME_SLIDE'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'tool_settings.use_proportional_action'), - ], - }, - ), - ("marker.add", {"type": 'M', "value": 'PRESS'}, None), - ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("NLA Generic", - {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("nla.properties", {"type": 'N', "value": 'PRESS'}, None), - ("nla.tweakmode_enter", {"type": 'TAB', "value": 'PRESS'}, None), - ("nla.tweakmode_exit", {"type": 'TAB', "value": 'PRESS'}, None), - ("nla.tweakmode_enter", - {"type": 'TAB', "value": 'PRESS', "shift": True}, - {"properties": - [("isolate_action", True), - ], - }, - ), - ("nla.tweakmode_exit", - {"type": 'TAB', "value": 'PRESS', "shift": True}, - {"properties": - [("isolate_action", True), - ], - }, - ), - ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("NLA Channels", - {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("nla.channels_click", - {"type": 'LEFTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ], - }, - ), - ("nla.channels_click", - {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("nla.tracks_add", - {"type": 'A', "value": 'PRESS', "shift": True}, - {"properties": - [("above_selected", False), - ], - }, - ), - ("nla.tracks_add", - {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("above_selected", True), - ], - }, - ), - ("nla.tracks_delete", {"type": 'X', "value": 'PRESS'}, None), - ("nla.tracks_delete", {"type": 'DEL', "value": 'PRESS'}, None), - ], - }, - ), - ("NLA Editor", - {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("nla.click_select", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ], - }, - ), - ("nla.click_select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("nla.select_leftright", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("mode", 'CHECK'), - ("extend", False), - ], - }, - ), - ("nla.select_leftright", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("mode", 'CHECK'), - ("extend", True), - ], - }, - ), - ("nla.select_leftright", - {"type": 'LEFT_BRACKET', "value": 'PRESS'}, - {"properties": - [("mode", 'LEFT'), - ("extend", False), - ], - }, - ), - ("nla.select_leftright", - {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, - {"properties": - [("mode", 'RIGHT'), - ("extend", False), - ], - }, - ), - ("nla.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("nla.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("nla.select_box", - {"type": 'B', "value": 'PRESS'}, - {"properties": - [("axis_range", False), - ], - }, - ), - ("nla.select_box", - {"type": 'B', "value": 'PRESS', "alt": True}, - {"properties": - [("axis_range", True), - ], - }, - ), - ("nla.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("nla.view_all", {"type": 'HOME', "value": 'PRESS'}, None), - ("nla.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ("nla.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("nla.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), - ("nla.actionclip_add", {"type": 'A', "value": 'PRESS', "shift": True}, None), - ("nla.transition_add", {"type": 'T', "value": 'PRESS', "shift": True}, None), - ("nla.soundclip_add", {"type": 'K', "value": 'PRESS', "shift": True}, None), - ("nla.meta_add", {"type": 'G', "value": 'PRESS', "shift": True}, None), - ("nla.meta_remove", {"type": 'G', "value": 'PRESS', "alt": True}, None), - ("nla.duplicate", - {"type": 'D', "value": 'PRESS', "shift": True}, - {"properties": - [("linked", False), - ], - }, - ), - ("nla.duplicate", - {"type": 'D', "value": 'PRESS', "alt": True}, - {"properties": - [("linked", True), - ], - }, - ), - ("nla.make_single_user", {"type": 'U', "value": 'PRESS'}, None), - ("nla.delete", {"type": 'X', "value": 'PRESS'}, None), - ("nla.delete", {"type": 'DEL', "value": 'PRESS'}, None), - ("nla.split", {"type": 'Y', "value": 'PRESS'}, None), - ("nla.mute_toggle", {"type": 'H', "value": 'PRESS'}, None), - ("nla.swap", {"type": 'F', "value": 'PRESS', "alt": True}, None), - ("nla.move_up", {"type": 'PAGE_UP', "value": 'PRESS'}, None), - ("nla.move_down", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None), - ("nla.apply_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), - ("nla.clear_scale", {"type": 'S', "value": 'PRESS', "alt": True}, None), - ("nla.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None), - ("nla.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("transform.transform", - {"type": 'G', "value": 'PRESS'}, - {"properties": - [("mode", 'TRANSLATION'), - ], - }, - ), - ("transform.transform", - {"type": 'EVT_TWEAK_S', "value": 'ANY'}, - {"properties": - [("mode", 'TRANSLATION'), - ], - }, - ), - ("transform.transform", - {"type": 'E', "value": 'PRESS'}, - {"properties": - [("mode", 'TIME_EXTEND'), - ], - }, - ), - ("transform.transform", - {"type": 'S', "value": 'PRESS'}, - {"properties": - [("mode", 'TIME_SCALE'), - ], - }, - ), - ("marker.add", {"type": 'M', "value": 'PRESS'}, None), - ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("Text Generic", - {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("text.start_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), - ("text.jump", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), - ("text.find", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), - ("text.replace", {"type": 'H', "value": 'PRESS', "ctrl": True}, None), - ("text.properties", {"type": 'T', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("Text", - {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("wm.context_cycle_int", - {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.font_size'), - ("reverse", False), - ], - }, - ), - ("wm.context_cycle_int", - {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.font_size'), - ("reverse", True), - ], - }, - ), - ("wm.context_cycle_int", - {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.font_size'), - ("reverse", False), - ], - }, - ), - ("wm.context_cycle_int", - {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.font_size'), - ("reverse", True), - ], - }, - ), - ("text.new", {"type": 'N', "value": 'PRESS', "ctrl": True}, None), - ("text.open", {"type": 'O', "value": 'PRESS', "alt": True}, None), - ("text.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None), - ("text.save", {"type": 'S', "value": 'PRESS', "alt": True}, None), - ("text.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ("text.run_script", {"type": 'P', "value": 'PRESS', "alt": True}, None), - ("text.cut", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), - ("text.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("text.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("text.cut", {"type": 'DEL', "value": 'PRESS', "shift": True}, None), - ("text.copy", {"type": 'INSERT', "value": 'PRESS', "ctrl": True}, None), - ("text.paste", {"type": 'INSERT', "value": 'PRESS', "shift": True}, None), - ("text.duplicate_line", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), - ("text.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), - ("text.select_line", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("text.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), - ("text.move_lines", - {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("direction", 'UP'), - ], - }, - ), - ("text.move_lines", - {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("direction", 'DOWN'), - ], - }, - ), - ("text.indent", {"type": 'TAB', "value": 'PRESS'}, None), - ("text.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None), - ("text.uncomment", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("text.move", - {"type": 'HOME', "value": 'PRESS'}, - {"properties": - [("type", 'LINE_BEGIN'), - ], - }, - ), - ("text.move", - {"type": 'END', "value": 'PRESS'}, - {"properties": - [("type", 'LINE_END'), - ], - }, - ), - ("text.move", - {"type": 'E', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'LINE_END'), - ], - }, - ), - ("text.move", - {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'LINE_END'), - ], - }, - ), - ("text.move", - {"type": 'LEFT_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_CHARACTER'), - ], - }, - ), - ("text.move", - {"type": 'RIGHT_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_CHARACTER'), - ], - }, - ), - ("text.move", - {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PREVIOUS_WORD'), - ], - }, - ), - ("text.move", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'NEXT_WORD'), - ], - }, - ), - ("text.move", - {"type": 'UP_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_LINE'), - ], - }, - ), - ("text.move", - {"type": 'DOWN_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_LINE'), - ], - }, - ), - ("text.move", - {"type": 'PAGE_UP', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_PAGE'), - ], - }, - ), - ("text.move", - {"type": 'PAGE_DOWN', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_PAGE'), - ], - }, - ), - ("text.move", - {"type": 'HOME', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'FILE_TOP'), - ], - }, - ), - ("text.move", - {"type": 'END', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'FILE_BOTTOM'), - ], - }, - ), - ("text.move_select", - {"type": 'HOME', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'LINE_BEGIN'), - ], - }, - ), - ("text.move_select", - {"type": 'END', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'LINE_END'), - ], - }, - ), - ("text.move_select", - {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PREVIOUS_CHARACTER'), - ], - }, - ), - ("text.move_select", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'NEXT_CHARACTER'), - ], - }, - ), - ("text.move_select", - {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'PREVIOUS_WORD'), - ], - }, - ), - ("text.move_select", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'NEXT_WORD'), - ], - }, - ), - ("text.move_select", - {"type": 'UP_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PREVIOUS_LINE'), - ], - }, - ), - ("text.move_select", - {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'NEXT_LINE'), - ], - }, - ), - ("text.move_select", - {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PREVIOUS_PAGE'), - ], - }, - ), - ("text.move_select", - {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'NEXT_PAGE'), - ], - }, - ), - ("text.move_select", - {"type": 'HOME', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'FILE_TOP'), - ], - }, - ), - ("text.move_select", - {"type": 'END', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("type", 'FILE_BOTTOM'), - ], - }, - ), - ("text.delete", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_CHARACTER'), - ], - }, - ), - ("text.delete", - {"type": 'BACK_SPACE', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_CHARACTER'), - ], - }, - ), - ("text.delete", - {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PREVIOUS_CHARACTER'), - ], - }, - ), - ("text.delete", - {"type": 'DEL', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'NEXT_WORD'), - ], - }, - ), - ("text.delete", - {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PREVIOUS_WORD'), - ], - }, - ), - ("text.overwrite_toggle", {"type": 'INSERT', "value": 'PRESS'}, None), - ("text.scroll_bar", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("text.scroll_bar", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), - ("text.scroll", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), - ("text.scroll", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), - ("text.selection_set", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("text.cursor_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("text.selection_set", - {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("select", True), - ], - }, - ), - ("text.scroll", - {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, - {"properties": - [("lines", -1), - ], - }, - ), - ("text.scroll", - {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, - {"properties": - [("lines", 1), - ], - }, - ), - ("text.line_break", {"type": 'RET', "value": 'PRESS'}, None), - ("text.line_break", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), - ("wm.call_menu", - {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, - {"properties": - [("name", 'TEXT_MT_toolbox'), - ], - }, - ), - ("text.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None), - ("text.line_number", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None), - ("text.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None), - ], - }, - ), - ("SequencerCommon", - {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("sequencer.properties", {"type": 'N', "value": 'PRESS'}, None), - ("wm.context_toggle", - {"type": 'O', "value": 'PRESS', "shift": True}, - {"properties": - [("data_path", 'scene.sequence_editor.show_overlay'), - ], - }, - ), - ("sequencer.view_toggle", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("Sequencer", - {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("sequencer.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("sequencer.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("sequencer.cut", - {"type": 'K', "value": 'PRESS'}, - {"properties": - [("type", 'SOFT'), - ], - }, - ), - ("sequencer.cut", - {"type": 'K', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'HARD'), - ], - }, - ), - ("sequencer.mute", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("sequencer.mute", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("sequencer.unmute", - {"type": 'H', "value": 'PRESS', "alt": True}, - {"properties": - [("unselected", False), - ], - }, - ), - ("sequencer.unmute", - {"type": 'H', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("sequencer.lock", {"type": 'L', "value": 'PRESS', "shift": True}, None), - ("sequencer.unlock", {"type": 'L', "value": 'PRESS', "shift": True, "alt": True}, None), - ("sequencer.reassign_inputs", {"type": 'R', "value": 'PRESS'}, None), - ("sequencer.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None), - ("sequencer.reload", - {"type": 'R', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("adjust_length", True), - ], - }, - ), - ("sequencer.offset_clear", {"type": 'O', "value": 'PRESS', "alt": True}, None), - ("sequencer.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), - ("sequencer.delete", {"type": 'X', "value": 'PRESS'}, None), - ("sequencer.delete", {"type": 'DEL', "value": 'PRESS'}, None), - ("sequencer.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("sequencer.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("sequencer.images_separate", {"type": 'Y', "value": 'PRESS'}, None), - ("sequencer.meta_toggle", {"type": 'TAB', "value": 'PRESS'}, None), - ("sequencer.meta_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), - ("sequencer.meta_separate", {"type": 'G', "value": 'PRESS', "alt": True}, None), - ("sequencer.view_all", {"type": 'HOME', "value": 'PRESS'}, None), - ("sequencer.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ("sequencer.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("sequencer.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), - ("sequencer.strip_jump", - {"type": 'PAGE_UP', "value": 'PRESS'}, - {"properties": - [("next", True), - ("center", False), - ], - }, - ), - ("sequencer.strip_jump", - {"type": 'PAGE_DOWN', "value": 'PRESS'}, - {"properties": - [("next", False), - ("center", False), - ], - }, - ), - ("sequencer.strip_jump", - {"type": 'PAGE_UP', "value": 'PRESS', "alt": True}, - {"properties": - [("next", True), - ("center", True), - ], - }, - ), - ("sequencer.strip_jump", - {"type": 'PAGE_DOWN', "value": 'PRESS', "alt": True}, - {"properties": - [("next", False), - ("center", True), - ], - }, - ), - ("sequencer.swap", - {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, - {"properties": - [("side", 'LEFT'), - ], - }, - ), - ("sequencer.swap", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, - {"properties": - [("side", 'RIGHT'), - ], - }, - ), - ("sequencer.gap_remove", - {"type": 'BACK_SPACE', "value": 'PRESS'}, - {"properties": - [("all", False), - ], - }, - ), - ("sequencer.gap_remove", - {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, - {"properties": - [("all", True), - ], - }, - ), - ("sequencer.gap_insert", {"type": 'EQUAL', "value": 'PRESS', "shift": True}, None), - ("sequencer.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None), - ("sequencer.swap_inputs", {"type": 'S', "value": 'PRESS', "alt": True}, None), - ("sequencer.cut_multicam", - {"type": 'ONE', "value": 'PRESS'}, - {"properties": - [("camera", 1), - ], - }, - ), - ("sequencer.cut_multicam", - {"type": 'TWO', "value": 'PRESS'}, - {"properties": - [("camera", 2), - ], - }, - ), - ("sequencer.cut_multicam", - {"type": 'THREE', "value": 'PRESS'}, - {"properties": - [("camera", 3), - ], - }, - ), - ("sequencer.cut_multicam", - {"type": 'FOUR', "value": 'PRESS'}, - {"properties": - [("camera", 4), - ], - }, - ), - ("sequencer.cut_multicam", - {"type": 'FIVE', "value": 'PRESS'}, - {"properties": - [("camera", 5), - ], - }, - ), - ("sequencer.cut_multicam", - {"type": 'SIX', "value": 'PRESS'}, - {"properties": - [("camera", 6), - ], - }, - ), - ("sequencer.cut_multicam", - {"type": 'SEVEN', "value": 'PRESS'}, - {"properties": - [("camera", 7), - ], - }, - ), - ("sequencer.cut_multicam", - {"type": 'EIGHT', "value": 'PRESS'}, - {"properties": - [("camera", 8), - ], - }, - ), - ("sequencer.cut_multicam", - {"type": 'NINE', "value": 'PRESS'}, - {"properties": - [("camera", 9), - ], - }, - ), - ("sequencer.cut_multicam", - {"type": 'ZERO', "value": 'PRESS'}, - {"properties": - [("camera", 10), - ], - }, - ), - ("sequencer.select", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ("linked_handle", False), - ("left_right", 'NONE'), - ("linked_time", False), - ], - }, - ), - ("sequencer.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ("linked_handle", False), - ("left_right", 'NONE'), - ("linked_time", False), - ], - }, - ), - ("sequencer.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": - [("extend", False), - ("linked_handle", True), - ("left_right", 'NONE'), - ("linked_time", False), - ], - }, - ), - ("sequencer.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("extend", True), - ("linked_handle", True), - ("left_right", 'NONE'), - ("linked_time", False), - ], - }, - ), - ("sequencer.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("extend", False), - ("linked_handle", False), - ("left_right", 'MOUSE'), - ("linked_time", True), - ], - }, - ), - ("sequencer.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("extend", True), - ("linked_handle", False), - ("left_right", 'NONE'), - ("linked_time", True), - ], - }, - ), - ("sequencer.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), - ("sequencer.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), - ("sequencer.select_linked_pick", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("extend", False), - ], - }, - ), - ("sequencer.select_linked_pick", - {"type": 'L', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("sequencer.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), - ("sequencer.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("sequencer.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), - ("wm.call_menu", - {"type": 'A', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'SEQUENCER_MT_add'), - ], - }, - ), - ("wm.call_menu", - {"type": 'C', "value": 'PRESS'}, - {"properties": - [("name", 'SEQUENCER_MT_change'), - ], - }, - ), - ("sequencer.slip", {"type": 'S', "value": 'PRESS'}, None), - ("wm.context_set_int", - {"type": 'O', "value": 'PRESS'}, - {"properties": - [("data_path", 'scene.sequence_editor.overlay_frame'), - ("value", 0), - ], - }, - ), - ("transform.seq_slide", {"type": 'G', "value": 'PRESS'}, None), - ("transform.seq_slide", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.transform", - {"type": 'E', "value": 'PRESS'}, - {"properties": - [("mode", 'TIME_EXTEND'), - ], - }, - ), - ("marker.add", {"type": 'M', "value": 'PRESS'}, None), - ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("SequencerPreview", - {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("sequencer.view_all_preview", {"type": 'HOME', "value": 'PRESS'}, None), - ("sequencer.view_all_preview", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ("sequencer.view_ghost_border", {"type": 'O', "value": 'PRESS'}, None), - ("sequencer.view_zoom_ratio", - {"type": 'NUMPAD_1', "value": 'PRESS'}, - {"properties": - [("ratio", 1.0), - ], - }, - ), - ("sequencer.sample", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ], - }, - ), - ("Console", - {"space_type": 'CONSOLE', "region_type": 'WINDOW'}, - {"items": - [("console.move", - {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PREVIOUS_WORD'), - ], - }, - ), - ("console.move", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'NEXT_WORD'), - ], - }, - ), - ("console.move", - {"type": 'HOME', "value": 'PRESS'}, - {"properties": - [("type", 'LINE_BEGIN'), - ], - }, - ), - ("console.move", - {"type": 'END', "value": 'PRESS'}, - {"properties": - [("type", 'LINE_END'), - ], - }, - ), - ("wm.context_cycle_int", - {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.font_size'), - ("reverse", False), - ], - }, - ), - ("wm.context_cycle_int", - {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.font_size'), - ("reverse", True), - ], - }, - ), - ("wm.context_cycle_int", - {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.font_size'), - ("reverse", False), - ], - }, - ), - ("wm.context_cycle_int", - {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.font_size'), - ("reverse", True), - ], - }, - ), - ("console.move", - {"type": 'LEFT_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_CHARACTER'), - ], - }, - ), - ("console.move", - {"type": 'RIGHT_ARROW', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_CHARACTER'), - ], - }, - ), - ("console.history_cycle", - {"type": 'UP_ARROW', "value": 'PRESS'}, - {"properties": - [("reverse", True), - ], - }, - ), - ("console.history_cycle", - {"type": 'DOWN_ARROW', "value": 'PRESS'}, - {"properties": - [("reverse", False), - ], - }, - ), - ("console.delete", - {"type": 'DEL', "value": 'PRESS'}, - {"properties": - [("type", 'NEXT_CHARACTER'), - ], - }, - ), - ("console.delete", - {"type": 'BACK_SPACE', "value": 'PRESS'}, - {"properties": - [("type", 'PREVIOUS_CHARACTER'), - ], - }, - ), - ("console.delete", - {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, - {"properties": - [("type", 'PREVIOUS_CHARACTER'), - ], - }, - ), - ("console.delete", - {"type": 'DEL', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'NEXT_WORD'), - ], - }, - ), - ("console.delete", - {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True}, - {"properties": - [("type", 'PREVIOUS_WORD'), - ], - }, - ), - ("console.clear_line", {"type": 'RET', "value": 'PRESS', "shift": True}, None), - ("console.clear_line", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None), - ("console.execute", - {"type": 'RET', "value": 'PRESS'}, - {"properties": - [("interactive", True), - ], - }, - ), - ("console.execute", - {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, - {"properties": - [("interactive", True), - ], - }, - ), - ("console.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None), - ("console.copy_as_script", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("console.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("console.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("console.select_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("console.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), - ("console.insert", - {"type": 'TAB', "value": 'PRESS', "ctrl": True}, - {"properties": - [("text", '\t'), - ], - }, - ), - ("console.indent", {"type": 'TAB', "value": 'PRESS'}, None), - ("console.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None), - ("console.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None), - ], - }, - ), - ("Clip", - {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("clip.open", {"type": 'O', "value": 'PRESS', "alt": True}, None), - ("clip.tools", {"type": 'T', "value": 'PRESS'}, None), - ("clip.properties", {"type": 'N', "value": 'PRESS'}, None), - ("clip.track_markers", - {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, - {"properties": - [("backwards", True), - ("sequence", False), - ], - }, - ), - ("clip.track_markers", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, - {"properties": - [("backwards", False), - ("sequence", False), - ], - }, - ), - ("clip.track_markers", - {"type": 'T', "value": 'PRESS', "ctrl": True}, - {"properties": - [("backwards", False), - ("sequence", True), - ], - }, - ), - ("clip.track_markers", - {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("backwards", True), - ("sequence", True), - ], - }, - ), - ("wm.context_toggle_enum", - {"type": 'TAB', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.mode'), - ("value_1", 'TRACKING'), - ("value_2", 'MASK'), - ], - }, - ), - ("clip.solve_camera", {"type": 'S', "value": 'PRESS', "shift": True}, None), - ("clip.set_solver_keyframe", - {"type": 'Q', "value": 'PRESS'}, - {"properties": - [("keyframe", 'KEYFRAME_A'), - ], - }, - ), - ("clip.set_solver_keyframe", - {"type": 'E', "value": 'PRESS'}, - {"properties": - [("keyframe", 'KEYFRAME_B'), - ], - }, - ), - ("clip.prefetch", {"type": 'P', "value": 'PRESS'}, None), - ], - }, - ), - ("Clip Editor", - {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), - ("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None), - ("clip.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), - ("clip.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("clip.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), - ("clip.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), - ("clip.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None), - ("clip.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None), - ("clip.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), - ("clip.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True}, - {"properties": - [("ratio", 8.0), - ], - }, - ), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True}, - {"properties": - [("ratio", 4.0), - ], - }, - ), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True}, - {"properties": - [("ratio", 2.0), - ], - }, - ), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True}, - {"properties": - [("ratio", 8.0), - ], - }, - ), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True}, - {"properties": - [("ratio", 4.0), - ], - }, - ), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True}, - {"properties": - [("ratio", 2.0), - ], - }, - ), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_1', "value": 'PRESS'}, - {"properties": - [("ratio", 1.0), - ], - }, - ), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_2', "value": 'PRESS'}, - {"properties": - [("ratio", 0.5), - ], - }, - ), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_4', "value": 'PRESS'}, - {"properties": - [("ratio", 0.25), - ], - }, - ), - ("clip.view_zoom_ratio", - {"type": 'NUMPAD_8', "value": 'PRESS'}, - {"properties": - [("ratio", 0.125), - ], - }, - ), - ("clip.view_all", {"type": 'HOME', "value": 'PRESS'}, None), - ("clip.view_all", - {"type": 'F', "value": 'PRESS'}, - {"properties": - [("fit_view", True), - ], - }, - ), - ("clip.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("clip.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ("clip.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None), - ("clip.frame_jump", - {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("position", 'PATHSTART'), - ], - }, - ), - ("clip.frame_jump", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, - {"properties": - [("position", 'PATHEND'), - ], - }, - ), - ("clip.frame_jump", - {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("position", 'FAILEDPREV'), - ], - }, - ), - ("clip.frame_jump", - {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("position", 'PATHSTART'), - ], - }, - ), - ("clip.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("clip.select", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ], - }, - ), - ("clip.select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("clip.select_all", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("clip.select_all", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("clip.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("clip.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ("wm.call_menu", - {"type": 'G', "value": 'PRESS', "shift": True}, - {"properties": - [("name", 'CLIP_MT_select_grouped'), - ], - }, - ), - ("clip.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, - {"properties": - [("deselect", False), - ], - }, - ), - ("clip.select_lasso", - {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, - {"properties": - [("deselect", True), - ], - }, - ), - ("clip.add_marker_slide", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), - ("clip.delete_marker", {"type": 'DEL', "value": 'PRESS', "shift": True}, None), - ("clip.delete_marker", {"type": 'X', "value": 'PRESS', "shift": True}, None), - ("clip.slide_marker", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("clip.disable_markers", - {"type": 'D', "value": 'PRESS', "shift": True}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("clip.delete_track", {"type": 'DEL', "value": 'PRESS'}, None), - ("clip.delete_track", {"type": 'X', "value": 'PRESS'}, None), - ("clip.lock_tracks", - {"type": 'L', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'LOCK'), - ], - }, - ), - ("clip.lock_tracks", - {"type": 'L', "value": 'PRESS', "alt": True}, - {"properties": - [("action", 'UNLOCK'), - ], - }, - ), - ("clip.hide_tracks", - {"type": 'H', "value": 'PRESS'}, - {"properties": - [("unselected", False), - ], - }, - ), - ("clip.hide_tracks", - {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": - [("unselected", True), - ], - }, - ), - ("clip.hide_tracks_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None), - ("clip.slide_plane_marker", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("clip.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None), - ("clip.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None), - ("clip.join_tracks", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), - ("wm.call_menu", - {"type": 'W', "value": 'PRESS'}, - {"properties": - [("name", 'CLIP_MT_tracking_specials'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.lock_selection'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'D', "value": 'PRESS', "alt": True}, - {"properties": - [("data_path", 'space_data.show_disabled'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'S', "value": 'PRESS', "alt": True}, - {"properties": - [("data_path", 'space_data.show_marker_search'), - ], - }, - ), - ("wm.context_toggle", - {"type": 'M', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.use_mute_footage'), - ], - }, - ), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("clip.clear_track_path", - {"type": 'T', "value": 'PRESS', "alt": True}, - {"properties": - [("action", 'REMAINED'), - ("clear_active", False), - ], - }, - ), - ("clip.clear_track_path", - {"type": 'T', "value": 'PRESS', "shift": True}, - {"properties": - [("action", 'UPTO'), - ("clear_active", False), - ], - }, - ), - ("clip.clear_track_path", - {"type": 'T', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("action", 'ALL'), - ("clear_active", False), - ], - }, - ), - ("clip.cursor_set", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("wm.context_set_enum", - {"type": 'COMMA', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'BOUNDING_BOX_CENTER'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'COMMA', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'MEDIAN_POINT'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'PERIOD', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'CURSOR'), - ], - }, - ), - ("wm.context_set_enum", - {"type": 'PERIOD', "value": 'PRESS', "ctrl": True}, - {"properties": - [("data_path", 'space_data.pivot_point'), - ("value", 'INDIVIDUAL_ORIGINS'), - ], - }, - ), - ("clip.copy_tracks", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), - ("clip.paste_tracks", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ], - }, - ), - ("Clip Graph Editor", - {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("clip.change_frame", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None), - ("clip.graph_select", - {"type": 'SELECTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", False), - ], - }, - ), - ("clip.graph_select", - {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": - [("extend", True), - ], - }, - ), - ("clip.graph_select_all_markers", - {"type": 'A', "value": 'PRESS'}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("clip.graph_select_all_markers", - {"type": 'I', "value": 'PRESS', "ctrl": True}, - {"properties": - [("action", 'INVERT'), - ], - }, - ), - ("clip.graph_select_box", {"type": 'B', "value": 'PRESS'}, None), - ("clip.graph_delete_curve", {"type": 'DEL', "value": 'PRESS'}, None), - ("clip.graph_delete_curve", {"type": 'X', "value": 'PRESS'}, None), - ("clip.graph_delete_knot", {"type": 'DEL', "value": 'PRESS', "shift": True}, None), - ("clip.graph_delete_knot", {"type": 'X', "value": 'PRESS', "shift": True}, None), - ("clip.graph_view_all", {"type": 'HOME', "value": 'PRESS'}, None), - ("clip.graph_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ("clip.graph_center_current_frame", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), - ("wm.context_toggle", - {"type": 'L', "value": 'PRESS'}, - {"properties": - [("data_path", 'space_data.lock_time_cursor'), - ], - }, - ), - ("clip.clear_track_path", - {"type": 'T', "value": 'PRESS', "alt": True}, - {"properties": - [("action", 'REMAINED'), - ("clear_active", True), - ], - }, - ), - ("clip.clear_track_path", - {"type": 'T', "value": 'PRESS', "shift": True}, - {"properties": - [("action", 'UPTO'), - ("clear_active", True), - ], - }, - ), - ("clip.clear_track_path", - {"type": 'T', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": - [("action", 'ALL'), - ("clear_active", True), - ], - }, - ), - ("clip.graph_disable_markers", - {"type": 'D', "value": 'PRESS', "shift": True}, - {"properties": - [("action", 'TOGGLE'), - ], - }, - ), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ], - }, - ), - ("Clip Dopesheet Editor", - {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'}, - {"items": - [("clip.dopesheet_select_channel", - {"type": 'LEFTMOUSE', "value": 'PRESS'}, - {"properties": - [("extend", True), - ], - }, - ), - ("clip.dopesheet_view_all", {"type": 'HOME', "value": 'PRESS'}, None), - ("clip.dopesheet_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), - ], - }, - ), - ("3D View Tool: OBJECT, Move", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("transform.translate", - {"type": 'EVT_TWEAK_A', "value": 'ANY'}, - {"properties": - [("release_confirm", True), - ], - }, - ), - ], - }, - ), - ("3D View Tool: OBJECT, Rotate", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("transform.rotate", - {"type": 'EVT_TWEAK_A', "value": 'ANY'}, - {"properties": - [("release_confirm", True), - ], - }, - ), - ], - }, - ), - ("3D View Tool: OBJECT, Scale", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("transform.resize", - {"type": 'EVT_TWEAK_A', "value": 'ANY'}, - {"properties": - [("release_confirm", True), - ], - }, - ), - ], - }, - ), - ("3D View Tool: OBJECT, Ruler/Protractor", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("view3d.ruler_add", {"type": 'EVT_TWEAK_A', "value": 'ANY'}, None), - ], - }, - ), - ("3D View Tool: PARTICLE, Cursor Click", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("view3d.cursor3d", {"type": 'ACTIONMOUSE', "value": 'CLICK'}, None), - ], - }, - ), - ("Spot Lamp Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Area Lamp Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ("Target Lamp Widgets", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": - [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), - ], - }, - ), - ] +import os +from bpy_extras.keyconfig_utils import ( + keyconfig_import_from_data, + keyconfig_module_from_preset, +) +_mod = keyconfig_module_from_preset(os.path.join("keymap_data", "blender_default"), __file__) +keyconfig_data = _mod.generate_keymaps(_mod.KeymapParams(legacy=True)) if __name__ == "__main__": - import os - from bpy_extras.keyconfig_utils import keyconfig_import_from_data - keyconfig_import_from_data(os.path.splitext(os.path.basename(__file__))[0], keyconfig_data) + keyconfig_import_from_data("Blender 27X", keyconfig_data) diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py new file mode 100644 index 00000000000..2ae68c54290 --- /dev/null +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -0,0 +1,5029 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + + +# ------------------------------------------------------------------------------ +# Configurable Parameters + +class KeymapParams: + __slots__ = ( + "apple", + "legacy", + "select_mouse", + "action_mouse", + ) + + def __init__(self, legacy=False): + import platform + self.apple = platform.system() == 'Darwin' + self.legacy = legacy + self.select_mouse = 'SELECTMOUSE' + self.action_mouse = 'ACTIONMOUSE' + + +# ------------------------------------------------------------------------------ +# Keymap Item Wrappers + +def op_menu(menu, kmi_args): + return ("wm.call_menu", kmi_args, {"properties": [("name", menu)]}) + + +def op_menu_pie(menu, kmi_args): + return ("wm.call_menu_pie", kmi_args, {"properties": [("name", menu)]}) + + +def op_panel(menu, kmi_args, kmi_data=()): + return ("wm.call_panel", kmi_args, {"properties": [("name", menu), *kmi_data]}) + + +# ------------------------------------------------------------------------------ +# Keymap Templates + +def _template_items_select_actions(operator): + return [ + (operator, {"type": 'A', "value": 'PRESS'}, {"properties": [("action", 'SELECT')]}), + (operator, {"type": 'A', "value": 'PRESS', "alt": True}, {"properties": [("action", 'DESELECT')]}), + (operator, {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}), + (operator, {"type": 'A', "value": 'DOUBLE_CLICK'}, {"properties": [("action", 'DESELECT')]}), + ] + + +def _template_items_gizmo_tweak_value(): + return [ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ] + + +def _template_items_gizmo_tweak_modal(): + return [ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), + ("PRECISION_ON", {"type": 'RIGHT_SHIFT', "value": 'PRESS', "any": True}, None), + ("PRECISION_OFF", {"type": 'RIGHT_SHIFT', "value": 'RELEASE', "any": True}, None), + ("PRECISION_ON", {"type": 'LEFT_SHIFT', "value": 'PRESS', "any": True}, None), + ("PRECISION_OFF", {"type": 'LEFT_SHIFT', "value": 'RELEASE', "any": True}, None), + ("SNAP_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None), + ("SNAP_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None), + ("SNAP_ON", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None), + ("SNAP_OFF", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None), + ] + + +# ------------------------------------------------------------------------------ +# Window, Screen, Areas, Regions + +def km_window(params): + items = [] + keymap = ( + "Window", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + if params.apple: + # Apple standard shortcuts. Cmd+F for search since F-keys are not easy to use. + items.extend([ + ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "oskey": True}, None), + op_menu("TOPBAR_MT_file_open_recent", {"type": 'O', "value": 'PRESS', "shift": True, "oskey": True}), + ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "oskey": True}, None), + ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "oskey": True}, None), + ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "oskey": True}, None), + ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "oskey": True}, None), + ("wm.search_menu", {"type": 'F', "value": 'PRESS', "oskey": True}, None), + ]) + + items.extend([ + # File operations + ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "ctrl": True}, None), + op_menu("TOPBAR_MT_file_open_recent", {"type": 'O', "value": 'PRESS', "shift": True, "ctrl": True}), + ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "ctrl": True}, None), + ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True}, None), + ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "ctrl": True}, None), + + # Quick menu and toolbar + op_menu("SCREEN_MT_user_menu", {"type": 'Q', "value": 'PRESS'}), + ("wm.toolbar", {"type": 'SPACE', "value": 'PRESS'}, None), + + # Fast editor switching + ("wm.context_set_enum", {"type": 'F4', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'area.type'), ("value", 'CONSOLE')]}), + ("wm.context_set_enum", {"type": 'F5', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'area.type'), ("value", 'VIEW_3D')]}), + ("wm.context_set_enum", {"type": 'F6', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'area.type'), ("value", 'GRAPH_EDITOR')]}), + ("wm.context_set_enum", {"type": 'F7', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'area.type'), ("value", 'PROPERTIES')]}), + ("wm.context_set_enum", {"type": 'F8', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'area.type'), ("value", 'SEQUENCE_EDITOR')]}), + ("wm.context_set_enum", {"type": 'F9', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'area.type'), ("value", 'OUTLINER')]}), + ("wm.context_set_enum", {"type": 'F10', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'area.type'), ("value", 'IMAGE_EDITOR')]}), + ("wm.context_set_enum", {"type": 'F11', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'area.type'), ("value", 'TEXT_EDITOR')]}), + ("wm.context_set_enum", {"type": 'F12', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'area.type'), ("value", 'DOPESHEET_EDITOR')]}), + + # NDOF settings + op_menu("USERPREF_MT_ndof_settings", {"type": 'NDOF_BUTTON_MENU', "value": 'PRESS'}), + ("wm.context_scale_float", {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS'}, + {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 1.1)]}), + ("wm.context_scale_float", {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS'}, + {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 1.0 / 1.1)]}), + ("wm.context_scale_float", {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 1.5)]}), + ("wm.context_scale_float", {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 2.0 / 3.0)]}), + ("info.reports_display_update", {"type": 'TIMER_REPORT', "value": 'ANY', "any": True}, None), + ]) + + if not params.legacy: + # New shortcuts + items.extend([ + ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS'}, None), + op_menu("TOPBAR_MT_file_specials", {"type": 'F2', "value": 'PRESS'}), + ("wm.search_menu", {"type": 'F3', "value": 'PRESS'}, None), + op_menu("TOPBAR_MT_window_specials", {"type": 'F4', "value": 'PRESS'}), + ]) + else: + # Old shorctus + items.extend([ + ("wm.window_new", {"type": 'W', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("wm.save_homefile", {"type": 'U', "value": 'PRESS', "ctrl": True}, None), + ("wm.open_mainfile", {"type": 'F1', "value": 'PRESS'}, None), + ("wm.link", {"type": 'O', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("wm.append", {"type": 'F1', "value": 'PRESS', "shift": True}, None), + ("wm.save_mainfile", {"type": 'W', "value": 'PRESS', "ctrl": True}, None), + ("wm.save_as_mainfile", {"type": 'F2', "value": 'PRESS'}, None), + ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("copy", True)]}), + ("wm.window_fullscreen_toggle", {"type": 'F11', "value": 'PRESS', "alt": True}, None), + ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS', "alt": True}, None), + ("wm.redraw_timer", {"type": 'T', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("wm.debug_menu", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ]) + + return keymap + + +def km_screen(params): + items = [] + keymap = ( + "Screen", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Animation + ("screen.animation_step", {"type": 'TIMER0', "value": 'ANY', "any": True}, None), + ("screen.region_blend", {"type": 'TIMERREGION', "value": 'ANY', "any": True}, None), + # Full screen and cycling + ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None), + ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("use_hide_panels", True)]}), + ("screen.space_context_cycle", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, + {"properties": [("direction", 'NEXT')]}), + ("screen.space_context_cycle", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("direction", 'PREV')]}), + ("screen.workspace_cycle", {"type": 'PAGE_DOWN', "value": 'PRESS', "ctrl": True}, + {"properties": [("direction", 'NEXT')]}), + ("screen.workspace_cycle", {"type": 'PAGE_UP', "value": 'PRESS', "ctrl": True}, + {"properties": [("direction", 'PREV')]}), + # Quad view + ("screen.region_quadview", {"type": 'Q', "value": 'PRESS', "ctrl": True, "alt": True}, None), + # Repeat last + ("screen.repeat_last", {"type": 'R', "value": 'PRESS', "shift": True}, None), + # Files + ("file.execute", {"type": 'RET', "value": 'PRESS'}, None), + ("file.execute", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), + ("file.cancel", {"type": 'ESC', "value": 'PRESS'}, None), + # Undo + ("ed.undo", {"type": 'Z', "value": 'PRESS', "ctrl": True}, None), + ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "ctrl": True}, None), + # Render + ("render.render", {"type": 'F12', "value": 'PRESS'}, + {"properties": [("use_viewport", True)]}), + ("render.render", {"type": 'F12', "value": 'PRESS', "ctrl": True}, + {"properties": [("animation", True), ("use_viewport", True)]}), + ("render.view_cancel", {"type": 'ESC', "value": 'PRESS'}, None), + ("render.view_show", {"type": 'F11', "value": 'PRESS'}, None), + ("render.play_rendered_anim", {"type": 'F11', "value": 'PRESS', "ctrl": True}, None), + ]) + + if params.legacy: + # Old keymap + items.extend([ + ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("screen.screen_set", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True}, + {"properties": [("delta", 1)]}), + ("screen.screen_set", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True}, + {"properties": [("delta", -1)]}), + ("screen.screenshot", {"type": 'F3', "value": 'PRESS', "ctrl": True}, None), + ("screen.repeat_history", {"type": 'R', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("screen.region_flip", {"type": 'F5', "value": 'PRESS'}, None), + ("screen.redo_last", {"type": 'F6', "value": 'PRESS'}, None), + ("script.reload", {"type": 'F8', "value": 'PRESS'}, None), + ("screen.userpref_show", {"type": 'U', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ]) + + if params.apple: + # Apple undo and user prefs + items.extend([ + ("ed.undo", {"type": 'Z', "value": 'PRESS', "oskey": True}, None), + ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "oskey": True}, None), + ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "alt": True, "oskey": True}, None), + ("screen.userpref_show", {"type": 'COMMA', "value": 'PRESS', "oskey": True}, None), + ]) + + return keymap + + +def km_screen_editing(params): + items = [] + keymap = ("Screen Editing", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}) + + items.extend([ + # Action zones + ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("modifier", 0)]}), + ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("modifier", 1)]}), + ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("modifier", 2)]}), + # Screen tools + ("screen.area_split", {"type": 'ACTIONZONE_AREA', "value": 'ANY'}, None), + ("screen.area_join", {"type": 'ACTIONZONE_AREA', "value": 'ANY'}, None), + ("screen.area_dupli", {"type": 'ACTIONZONE_AREA', "value": 'ANY', "shift": True}, None), + ("screen.area_swap", {"type": 'ACTIONZONE_AREA', "value": 'ANY', "ctrl": True}, None), + ("screen.region_scale", {"type": 'ACTIONZONE_REGION', "value": 'ANY'}, None), + ("screen.screen_full_area", {"type": 'ACTIONZONE_FULLSCREEN', "value": 'ANY'}, + {"properties": [("use_hide_panels", True)]}), + # Area move after action zones + ("screen.area_move", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("screen.area_options", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), + ]) + + if params.legacy: + items.extend([ + ("screen.header", {"type": 'F9', "value": 'PRESS', "alt": True}, None), + ]) + + return keymap + + +def km_header(_params): + items = [] + keymap = ( + "Header", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("screen.header_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_view2d(_params): + items = [] + keymap = ( + "View2D", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Scrollbars + ("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + # Pan/scroll + ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None), + ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), + ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None), + ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None), + ("view2d.ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None), + # Zoom with single step + ("view2d.zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None), + ("view2d.zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None), + ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), + ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), + ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), + ("view2d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None), + # Scroll up/down, only when zoom is not available. + ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), + ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), + ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), + ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), + # Zoom with drag and border + ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), + ("view2d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None), + ]) + + return keymap + + +def km_view2d_buttons_list(_params): + items = [] + keymap = ( + "View2D Buttons List", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Scrollbars + ("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + # Pan scroll + ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), + ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), + ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), + ("view2d.scroll_down", {"type": 'PAGE_DOWN', "value": 'PRESS'}, + {"properties": [("page", True)]}), + ("view2d.scroll_up", {"type": 'PAGE_UP', "value": 'PRESS'}, + {"properties": [("page", True)]}), + # Zoom + ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), + ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), + ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), + ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), + ("view2d.reset", {"type": 'HOME', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_user_interface(_params): + items = [] + keymap = ( + "User Interface", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Eyedroppers all have the same event, and pass it through until + # a suitable eyedropper handles it. + ("ui.eyedropper_color", {"type": 'E', "value": 'PRESS'}, None), + ("ui.eyedropper_colorband", {"type": 'E', "value": 'PRESS'}, None), + ("ui.eyedropper_colorband_point", {"type": 'E', "value": 'PRESS', "alt": True}, None), + ("ui.eyedropper_id", {"type": 'E', "value": 'PRESS'}, None), + ("ui.eyedropper_depth", {"type": 'E', "value": 'PRESS'}, None), + # Copy data path + ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("full_path", True)]}), + # Keyframes and drivers + ("anim.keyframe_insert_button", {"type": 'I', "value": 'PRESS'}, None), + ("anim.keyframe_delete_button", {"type": 'I', "value": 'PRESS', "alt": True}, None), + ("anim.keyframe_clear_button", {"type": 'I', "value": 'PRESS', "shift": True, "alt": True}, None), + ("anim.driver_button_add", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), + ("anim.driver_button_remove", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("anim.keyingset_button_add", {"type": 'K', "value": 'PRESS'}, None), + ("anim.keyingset_button_remove", {"type": 'K', "value": 'PRESS', "alt": True}, None), + ]) + + return keymap + + +# ------------------------------------------------------------------------------ +# Editors + + +def km_property_editor(_params): + items = [] + keymap = ( + "Property Editor", + {"space_type": 'PROPERTIES', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("buttons.context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), + ("screen.space_context_cycle", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("direction", 'PREV'), ], },), + ("screen.space_context_cycle", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("direction", 'NEXT'), ], },), + ]) + + return keymap + + +def km_outliner(_params): + items = [] + keymap = ( + "Outliner", + {"space_type": 'OUTLINER', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("outliner.highlight_update", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None), + ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), + ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK'}, + {"properties": [("extend", False), ("recursive", False)]}), + ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True}, + {"properties": [("extend", True), ("recursive", False)]}), + ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True}, + {"properties": [("extend", False), ("recursive", True)]}), + ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True}, + {"properties": [("extend", True), ("recursive", True)]}), + ("outliner.select_box", {"type": 'B', "value": 'PRESS'}, None), + ("outliner.item_openclose", {"type": 'RET', "value": 'PRESS'}, + {"properties": [("all", False)]}), + ("outliner.item_openclose", {"type": 'RET', "value": 'PRESS', "shift": True}, + {"properties": [("all", True)]}), + ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("outliner.operation", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), + ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, None), + ("outliner.show_hierarchy", {"type": 'HOME', "value": 'PRESS'}, None), + ("outliner.show_active", {"type": 'PERIOD', "value": 'PRESS'}, None), + ("outliner.show_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + ("outliner.scroll_page", {"type": 'PAGE_DOWN', "value": 'PRESS'}, + {"properties": [("up", False)]}), + ("outliner.scroll_page", {"type": 'PAGE_UP', "value": 'PRESS'}, + {"properties": [("up", True)]}), + ("outliner.show_one_level", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), + ("outliner.show_one_level", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, + {"properties": [("open", False)]}), + *_template_items_select_actions("outliner.select_all"), + ("outliner.expanded_toggle", {"type": 'A', "value": 'PRESS', "shift": True}, None), + ("outliner.keyingset_add_selected", {"type": 'K', "value": 'PRESS'}, None), + ("outliner.keyingset_remove_selected", {"type": 'K', "value": 'PRESS', "alt": True}, None), + ("anim.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None), + ("anim.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None), + ("outliner.drivers_add_selected", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), + ("outliner.drivers_delete_selected", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("outliner.collection_new", {"type": 'C', "value": 'PRESS'}, None), + ("outliner.collection_delete", {"type": 'X', "value": 'PRESS'}, None), + ("outliner.collection_delete", {"type": 'DEL', "value": 'PRESS'}, None), + ("object.move_to_collection", {"type": 'M', "value": 'PRESS'}, None), + ("object.link_to_collection", {"type": 'M', "value": 'PRESS', "shift": True}, None), + ("outliner.collection_exclude_set", {"type": 'E', "value": 'PRESS'}, None), + ("outliner.collection_exclude_clear", {"type": 'E', "value": 'PRESS', "alt": True}, None), + ("object.hide_view_clear", {"type": 'H', "value": 'PRESS', "alt": True}, + {"properties": [("select", False)]}), + ("object.hide_view_set", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("object.hide_view_set", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ]) + + return keymap + + +def km_uv_editor(params): + items = [] + keymap = ( + "UV Editor", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # TODO: expand into loop. + ("mesh.select_mode", {"type": 'ONE', "value": 'PRESS'}, + {"properties": [("type", 'VERT')]}), + ("mesh.select_mode", {"type": 'TWO', "value": 'PRESS'}, + {"properties": [("type", 'EDGE')]}), + ("mesh.select_mode", {"type": 'THREE', "value": 'PRESS'}, + {"properties": [("type", 'FACE')]}), + ("mesh.select_mode", {"type": 'ONE', "value": 'PRESS', "shift": True}, + {"properties": [("use_extend", True), ("type", 'VERT')]}), + ("mesh.select_mode", {"type": 'TWO', "value": 'PRESS', "shift": True}, + {"properties": [("use_extend", True), ("type", 'EDGE')]}), + ("mesh.select_mode", {"type": 'THREE', "value": 'PRESS', "shift": True}, + {"properties": [("use_extend", True), ("type", 'FACE')]}), + ("mesh.select_mode", {"type": 'ONE', "value": 'PRESS', "ctrl": True}, + {"properties": [("use_expand", True), ("type", 'VERT')]}), + ("mesh.select_mode", {"type": 'TWO', "value": 'PRESS', "ctrl": True}, + {"properties": [("use_expand", True), ("type", 'EDGE')]}), + ("mesh.select_mode", {"type": 'THREE', "value": 'PRESS', "ctrl": True}, + {"properties": [("use_expand", True), ("type", 'FACE')]}), + ("mesh.select_mode", {"type": 'ONE', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("use_extend", True), ("use_expand", True), ("type", 'VERT')]}), + ("mesh.select_mode", {"type": 'TWO', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("use_extend", True), ("use_expand", True), ("type", 'EDGE')]}), + ("mesh.select_mode", {"type": 'THREE', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("use_extend", True), ("use_expand", True), ("type", 'FACE')]}), + ("mesh.select_mode", {"type": 'FOUR', "value": 'PRESS'}, None), + ("wm.context_set_enum", {"type": 'ONE', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'VERTEX')]}), + ("wm.context_set_enum", {"type": 'TWO', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'EDGE')]}), + ("wm.context_set_enum", {"type": 'THREE', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'FACE')]}), + ("wm.context_set_enum", {"type": 'FOUR', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'ISLAND')]}), + ("uv.mark_seam", {"type": 'E', "value": 'PRESS', "ctrl": True}, None), + ("uv.select", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False)]}), + ("uv.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + ("uv.select_loop", {"type": params.select_mouse, "value": 'PRESS', "alt": True}, + {"properties": [("extend", False)]}), + ("uv.select_loop", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("extend", True)]}), + ("uv.select_split", {"type": 'Y', "value": 'PRESS'}, None), + ("uv.select_box", {"type": 'B', "value": 'PRESS'}, + {"properties": [("pinned", False)]}), + ("uv.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True}, + {"properties": [("pinned", True)]}), + ("uv.circle_select", {"type": 'C', "value": 'PRESS'}, None), + ("uv.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, + {"properties": [("deselect", False)]}), + ("uv.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, + {"properties": [("deselect", True)]}), + ("uv.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, + {"properties": [("extend", True), ("deselect", False)]}), + ("uv.select_linked_pick", {"type": 'L', "value": 'PRESS'}, + {"properties": [("extend", True), ("deselect", False)]}), + ("uv.select_linked", {"type": 'L', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("extend", False), ("deselect", True)]}), + ("uv.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True}, + {"properties": [("extend", False), ("deselect", True)]}), + ("uv.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("uv.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + *_template_items_select_actions("uv.select_all"), + ("uv.select_pinned", {"type": 'P', "value": 'PRESS', "shift": True}, None), + op_menu("IMAGE_MT_uvs_weldalign", {"type": 'W', "value": 'PRESS', "shift": True}), + ("uv.stitch", {"type": 'V', "value": 'PRESS'}, None), + ("uv.pin", {"type": 'P', "value": 'PRESS'}, + {"properties": [("clear", False)]}), + ("uv.pin", {"type": 'P', "value": 'PRESS', "alt": True}, + {"properties": [("clear", True)]}), + ("uv.unwrap", {"type": 'U', "value": 'PRESS'}, None), + ("uv.hide", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("uv.hide", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("uv.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ("uv.cursor_set", {"type": params.action_mouse, "value": 'PRESS'}, None), + op_menu_pie("IMAGE_MT_uvs_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}), + op_menu("IMAGE_MT_uvs_select_mode", {"type": 'TAB', "value": 'PRESS', "ctrl": True}), + op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'ENABLED')]}), + ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("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}, + {"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')]}), + ]) + + if params.legacy: + items.extend([ + ("uv.minimize_stretch", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + ("uv.pack_islands", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), + ("uv.average_islands_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), + ("wm.context_toggle", {"type": 'Q', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.use_uv_sculpt')]}), + ]) + + return keymap + + +def km_uv_sculpt(_params): + items = [] + keymap = ( + "UV Sculpt", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("wm.context_toggle", {"type": 'Q', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.use_uv_sculpt')]}), + ("sculpt.uv_sculpt_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("mode", 'NORMAL')]}), + ("sculpt.uv_sculpt_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'INVERT')]}), + ("sculpt.uv_sculpt_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'RELAX')]}), + ("brush.scale_size", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 0.9)]}), + ("brush.scale_size", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 1.0 / 0.9)]}), + *_template_paint_radial_control("uv_sculpt"), + ("brush.uv_sculpt_tool_set", {"type": 'S', "value": 'PRESS'}, + {"properties": [("tool", 'RELAX')]}), + ("brush.uv_sculpt_tool_set", {"type": 'P', "value": 'PRESS'}, + {"properties": [("tool", 'PINCH')]}), + ("brush.uv_sculpt_tool_set", {"type": 'G', "value": 'PRESS'}, + {"properties": [("tool", 'GRAB')]}), + ]) + + return keymap + + +# 3D View: all regions. +def km_view3d_generic(_params): + items = [] + keymap = ( + "3D View Generic", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("view3d.properties", {"type": 'N', "value": 'PRESS'}, None), + ("view3d.toolshelf", {"type": 'T', "value": 'PRESS'}, None), + ]) + + return keymap + + +# 3D View: main region. +def km_view3d(params): + items = [] + keymap = ( + "3D View", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Cursor. + ("view3d.cursor3d", {"type": params.action_mouse, "value": 'CLICK'}, None), + # Navigation. + ("view3d.rotate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("view3d.move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None), + ("view3d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("view3d.dolly", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("view3d.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "ctrl": True}, + {"properties": [("use_all_regions", True)]}), + ("view3d.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, + {"properties": [("use_all_regions", False)]}), + ("view3d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None), + ("view3d.rotate", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), + ("view3d.rotate", {"type": 'MOUSEROTATE', "value": 'ANY'}, None), + ("view3d.move", {"type": 'TRACKPADPAN', "value": 'ANY', "shift": True}, None), + ("view3d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), + ("view3d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), + ("view3d.zoom", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, + {"properties": [("delta", 1)]}), + ("view3d.zoom", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, + {"properties": [("delta", -1)]}), + ("view3d.zoom", {"type": 'EQUAL', "value": 'PRESS', "ctrl": True}, + {"properties": [("delta", 1)]}), + ("view3d.zoom", {"type": 'MINUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("delta", -1)]}), + ("view3d.zoom", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, + {"properties": [("delta", 1)]}), + ("view3d.zoom", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, + {"properties": [("delta", -1)]}), + ("view3d.dolly", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True}, + {"properties": [("delta", 1)]}), + ("view3d.dolly", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True}, + {"properties": [("delta", -1)]}), + ("view3d.dolly", {"type": 'EQUAL', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("delta", 1)]}), + ("view3d.dolly", {"type": 'MINUS', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("delta", -1)]}), + ("view3d.view_center_camera", {"type": 'HOME', "value": 'PRESS'}, None), + ("view3d.view_center_lock", {"type": 'HOME', "value": 'PRESS'}, None), + ("view3d.view_all", {"type": 'HOME', "value": 'PRESS'}, + {"properties": [("center", False)]}), + ("view3d.view_all", {"type": 'HOME', "value": 'PRESS', "ctrl": True}, + {"properties": [("use_all_regions", True), ("center", False)]}), + op_menu_pie("VIEW3D_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), + ("view3d.navigate", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "shift": True}, None), + # Numpad views. + ("view3d.view_camera", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), + ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS'}, + {"properties": [("type", 'FRONT')]}), + ("view3d.view_orbit", {"type": 'NUMPAD_2', "value": 'PRESS'}, + {"properties": [("type", 'ORBITDOWN')]}), + ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS'}, + {"properties": [("type", 'RIGHT')]}), + ("view3d.view_orbit", {"type": 'NUMPAD_4', "value": 'PRESS'}, + {"properties": [("type", 'ORBITLEFT')]}), + ("view3d.view_persportho", {"type": 'NUMPAD_5', "value": 'PRESS'}, None), + ("view3d.view_orbit", {"type": 'NUMPAD_6', "value": 'PRESS'}, + {"properties": [("type", 'ORBITRIGHT')]}), + ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS'}, + {"properties": [("type", 'TOP')]}), + ("view3d.view_orbit", {"type": 'NUMPAD_8', "value": 'PRESS'}, + {"properties": [("type", 'ORBITUP')]}), + ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'BACK')]}), + ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'LEFT')]}), + ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'BOTTOM')]}), + ("view3d.view_pan", {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PANDOWN')]}), + ("view3d.view_pan", {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PANLEFT')]}), + ("view3d.view_pan", {"type": 'NUMPAD_6', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PANRIGHT')]}), + ("view3d.view_pan", {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PANUP')]}), + ("view3d.view_roll", {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'LEFT')]}), + ("view3d.view_roll", {"type": 'NUMPAD_6', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'RIGHT')]}), + ("view3d.view_orbit", {"type": 'NUMPAD_9', "value": 'PRESS'}, + {"properties": [("angle", 3.1415927), ("type", 'ORBITRIGHT')]}), + ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'FRONT'), ("align_active", True)]}), + ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'RIGHT'), ("align_active", True)]}), + ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'TOP'), ("align_active", True)]}), + ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'BACK'), ("align_active", True)]}), + ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'LEFT'), ("align_active", True)]}), + ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'BOTTOM'), ("align_active", True)]}), + ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'NORTH', "alt": True}, + {"properties": [("type", 'TOP'), ("relative", True)]}), + ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'SOUTH', "alt": True}, + {"properties": [("type", 'BOTTOM'), ("relative", True)]}), + ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'EAST', "alt": True}, + {"properties": [("type", 'RIGHT'), ("relative", True)]}), + ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'WEST', "alt": True}, + {"properties": [("type", 'LEFT'), ("relative", True)]}), + ("view3d.ndof_orbit_zoom", {"type": 'NDOF_MOTION', "value": 'ANY'}, None), + ("view3d.ndof_orbit", {"type": 'NDOF_MOTION', "value": 'ANY', "ctrl": True}, None), + ("view3d.ndof_pan", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True}, None), + ("view3d.ndof_all", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True, "ctrl": True}, None), + ("view3d.view_selected", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, + {"properties": [("use_all_regions", False)]}), + ("view3d.view_roll", {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'}, + {"properties": [("type", 'LEFT')]}), + ("view3d.view_roll", {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'}, + {"properties": [("type", 'RIGHT')]}), + ("view3d.view_axis", {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS'}, + {"properties": [("type", 'FRONT')]}), + ("view3d.view_axis", {"type": 'NDOF_BUTTON_BACK', "value": 'PRESS'}, + {"properties": [("type", 'BACK')]}), + ("view3d.view_axis", {"type": 'NDOF_BUTTON_LEFT', "value": 'PRESS'}, + {"properties": [("type", 'LEFT')]}), + ("view3d.view_axis", {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS'}, + {"properties": [("type", 'RIGHT')]}), + ("view3d.view_axis", {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS'}, + {"properties": [("type", 'TOP')]}), + ("view3d.view_axis", {"type": 'NDOF_BUTTON_BOTTOM', "value": 'PRESS'}, + {"properties": [("type", 'BOTTOM')]}), + ("view3d.view_axis", {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'FRONT'), ("align_active", True)]}), + ("view3d.view_axis", {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'RIGHT'), ("align_active", True)]}), + ("view3d.view_axis", {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'TOP'), ("align_active", True)]}), + # Selection. + ("view3d.select", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [ + ("extend", False), + ("deselect", False), + ("toggle", False), + ("center", False), + ("enumerate", False), + ("object", False), + ], },), + ("view3d.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [ + ("extend", False), + ("deselect", False), + ("toggle", True), + ("center", False), + ("enumerate", False), + ("object", False), + ], },), + ("view3d.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [ + ("extend", False), + ("deselect", False), + ("toggle", False), + ("center", True), + ("enumerate", False), + ("object", True), + ], },), + ("view3d.select", {"type": params.select_mouse, "value": 'PRESS', "alt": True}, + {"properties": [ + ("extend", False), + ("deselect", False), + ("toggle", False), + ("center", False), + ("enumerate", True), + ("object", False), + ], },), + ("view3d.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [ + ("extend", True), + ("deselect", False), + ("toggle", True), + ("center", True), + ("enumerate", False), + ("object", False), + ], },), + ("view3d.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [ + ("extend", False), + ("deselect", False), + ("toggle", False), + ("center", True), + ("enumerate", True), + ("object", False), + ], },), + ("view3d.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [ + ("extend", False), + ("deselect", False), + ("toggle", True), + ("center", False), + ("enumerate", True), + ("object", False), + ], },), + ("view3d.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, + {"properties": [ + ("extend", False), + ("deselect", False), + ("toggle", True), + ("center", True), + ("enumerate", True), + ("object", False), + ], },), + ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None), + ("view3d.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, + {"properties": [("mode", 'ADD')]}), + ("view3d.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, + {"properties": [("mode", 'SUB')]}), + ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None), + # Borders. + ("view3d.clip_border", {"type": 'B', "value": 'PRESS', "alt": True}, None), + ("view3d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None), + ("view3d.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), + ("view3d.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None), + # Cameras. + ("view3d.camera_to_view", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("view3d.object_as_camera", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True}, None), + # Copy/paste. + ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + # Menus. + op_menu_pie("VIEW3D_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}), + op_menu_pie("VIEW3D_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}), + op_menu_pie("VIEW3D_MT_orientations_pie", {"type": 'COMMA', "value": 'PRESS'}), + # Transform. + ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS'}, 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.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), + ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'tool_settings.use_snap')]}), + op_panel("VIEW3D_PT_snapping", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True}, [("keep_open", False)]), + ("object.transform_axis_target", {"type": 'T', "value": 'PRESS', "shift": True}, None), + ("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), + ]) + + if params.apple: + items.extend([ + ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "oskey": True}, None), + ]) + + if not params.legacy: + # New pie menus. + items.extend([ + ("wm.context_toggle", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.show_gizmo_tool')]}), + op_menu_pie("VIEW3D_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}), + op_menu_pie("VIEW3D_MT_orientations_pie", {"type": 'COMMA', "value": 'PRESS'}), + op_menu_pie("VIEW3D_MT_shading_pie", {"type": 'Z', "value": 'PRESS'}), + ("view3d.toggle_shading", {"type": 'Z', "value": 'PRESS', "alt": True}, + {"properties": [("type", 'MATERIAL')]}), + ("view3d.toggle_shading", {"type": 'Z', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'RENDERED')]}), + ]) + else: + items.extend([ + # Old navigation. + ("view3d.view_lock_to_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "shift": True}, None), + ("view3d.view_lock_clear", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "alt": True}, None), + ("view3d.navigate", {"type": 'F', "value": 'PRESS', "shift": True}, None), + ("view3d.zoom_camera_1_to_1", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None), + ("view3d.view_center_cursor", {"type": 'HOME', "value": 'PRESS', "alt": True}, None), + ("view3d.view_center_pick", {"type": 'F', "value": 'PRESS', "alt": True}, None), + ("view3d.view_all", {"type": 'C', "value": 'PRESS', "shift": True}, + {"properties": [("center", True)]}), + ("view3d.view_pan", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PANRIGHT')]}), + ("view3d.view_pan", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PANLEFT')]}), + ("view3d.view_pan", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PANUP')]}), + ("view3d.view_pan", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PANDOWN')]}), + ("view3d.view_orbit", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("type", 'ORBITLEFT')]}), + ("view3d.view_orbit", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("type", 'ORBITRIGHT')]}), + ("view3d.view_orbit", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("type", 'ORBITUP')]}), + ("view3d.view_orbit", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("type", 'ORBITDOWN')]}), + ("view3d.view_roll", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'LEFT')]}), + ("view3d.view_roll", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'RIGHT')]}), + ("transform.create_orientation", {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("use", True)]}), + ("transform.translate", {"type": 'T', "value": 'PRESS', "shift": True}, + {"properties": [("texture_space", True)]}), + ("transform.resize", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("texture_space", True)]}), + # Old pivot. + ("wm.context_set_enum", {"type": 'COMMA', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.pivot_point'), ("value", 'BOUNDING_BOX_CENTER')]}), + ("wm.context_set_enum", {"type": 'COMMA', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.pivot_point'), ("value", 'MEDIAN_POINT')]}), + ("wm.context_toggle", {"type": 'COMMA', "value": 'PRESS', "alt": True}, + {"properties": [("data_path", 'tool_settings.use_transform_pivot_point_align')]}), + ("wm.context_toggle", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.show_gizmo_tool')]}), + ("wm.context_set_enum", {"type": 'PERIOD', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.pivot_point'), ("value", 'CURSOR')]}), + ("wm.context_set_enum", {"type": 'PERIOD', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.pivot_point'), ("value", 'INDIVIDUAL_ORIGINS')]}), + ("wm.context_set_enum", {"type": 'PERIOD', "value": 'PRESS', "alt": True}, + {"properties": [("data_path", 'space_data.pivot_point'), ("value", 'ACTIVE_ELEMENT')]}), + # Old shading. + ("wm.context_toggle_enum", {"type": 'Z', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.shading.type'), ("value_1", 'WIREFRAME'), ("value_2", 'SOLID')]}), + ("wm.context_toggle_enum", {"type": 'Z', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'space_data.shading.type'), ("value_1", 'RENDERED'), ("value_2", 'SOLID')]}), + ("wm.context_toggle_enum", {"type": 'Z', "value": 'PRESS', "alt": True}, + {"properties": [("data_path", 'space_data.shading.type'), ("value_1", 'MATERIAL'), ("value_2", 'SOLID')]}), + ]) + + return keymap + + +def km_mask_editing(params): + items = [] + keymap = ( + "Mask Editing", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("mask.new", {"type": 'N', "value": 'PRESS', "alt": True}, None), + op_menu("MASK_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}), + op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + ("wm.context_toggle", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.use_proportional_edit_mask')]}), + ("mask.add_vertex_slide", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True}, None), + ("mask.add_feather_vertex_slide", {"type": params.action_mouse, "value": 'PRESS', "shift": True}, None), + ("mask.delete", {"type": 'X', "value": 'PRESS'}, None), + ("mask.delete", {"type": 'DEL', "value": 'PRESS'}, None), + ("mask.select", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False), ("deselect", False), ("toggle", False)]}), + ("mask.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", False), ("deselect", False), ("toggle", True)]}), + *_template_items_select_actions("mask.select_all"), + ("mask.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), + ("mask.select_linked_pick", {"type": 'L', "value": 'PRESS'}, + {"properties": [("deselect", False)]}), + ("mask.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True}, + {"properties": [("deselect", True)]}), + ("mask.select_box", {"type": 'B', "value": 'PRESS'}, None), + ("mask.select_circle", {"type": 'C', "value": 'PRESS'}, None), + ("mask.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, + {"properties": [("deselect", False)]}), + ("mask.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("deselect", True)]}), + ("mask.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("mask.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("mask.hide_view_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ("mask.hide_view_set", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("mask.hide_view_set", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("clip.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("extend", False)]}), + ("mask.cyclic_toggle", {"type": 'C', "value": 'PRESS', "alt": True}, None), + ("mask.slide_point", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("mask.slide_spline_curvature", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("mask.handle_type_set", {"type": 'V', "value": 'PRESS'}, None), + ("mask.normals_make_consistent", {"type": 'N', "value": 'PRESS', "ctrl" if params.legacy else "shift": True}, None), + ("mask.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), + ("mask.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None), + ("mask.shape_key_insert", {"type": 'I', "value": 'PRESS'}, None), + ("mask.shape_key_clear", {"type": 'I', "value": 'PRESS', "alt": True}, None), + ("mask.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + ("mask.copy_splines", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("mask.paste_splines", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + ("uv.cursor_set", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'MASK_SHRINKFATTEN')]}), + ]) + + return keymap + + +def km_markers(params): + items = [] + keymap = ( + "Markers", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("marker.add", {"type": 'M', "value": 'PRESS'}, None), + ("marker.move", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("marker.duplicate", {"type": 'D', "value": 'PRESS', "shift": True}, None), + ("marker.select", {"type": params.select_mouse, "value": 'PRESS'}, None), + ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("extend", False), ("camera", True)]}), + ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("extend", True), ("camera", True)]}), + ("marker.select_box", {"type": 'B', "value": 'PRESS'}, None), + *_template_items_select_actions("marker.select_all"), + ("marker.delete", {"type": 'X', "value": 'PRESS'}, None), + ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, None), + ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), + ("marker.move", {"type": 'G', "value": 'PRESS'}, None), + ("marker.camera_bind", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), + ]) + + return keymap + + +def km_graph_editor_generic(_params): + items = [] + keymap = ( + "Graph Editor Generic", + {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("graph.properties", {"type": 'N', "value": 'PRESS'}, None), + ("graph.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None), + ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), + ("graph.hide", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("graph.hide", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("graph.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ]) + + return keymap + + +def km_graph_editor(params): + items = [] + keymap = ( + "Graph Editor", + {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("wm.context_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.show_handles')]}), + ("graph.cursor_set", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False), ("column", False), ("curves", False)]}), + ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "alt": True}, + {"properties": [("extend", False), ("column", True), ("curves", False)]}), + ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True), ("column", False), ("curves", False)]}), + ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("extend", True), ("column", True), ("curves", False)]}), + ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("extend", False), ("column", False), ("curves", True)]}), + ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("extend", True), ("column", False), ("curves", True)]}), + ("graph.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'CHECK'), ("extend", False)]}), + ("graph.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("mode", 'CHECK'), ("extend", True)]}), + ("graph.select_leftright", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("mode", 'LEFT'), ("extend", False)]}), + ("graph.select_leftright", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("mode", 'RIGHT'), ("extend", False)]}), + *_template_items_select_actions("graph.select_all"), + ("graph.select_box", {"type": 'B', "value": 'PRESS'}, + {"properties": [("axis_range", False), ("include_handles", False)]}), + ("graph.select_box", {"type": 'B', "value": 'PRESS', "alt": True}, + {"properties": [("axis_range", True), ("include_handles", False)]}), + ("graph.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True}, + {"properties": [("axis_range", False), ("include_handles", True)]}), + ("graph.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("axis_range", True), ("include_handles", True)]}), + ("graph.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, + {"properties": [("deselect", False)]}), + ("graph.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, + {"properties": [("deselect", True)]}), + ("graph.select_circle", {"type": 'C', "value": 'PRESS'}, None), + ("graph.select_column", {"type": 'K', "value": 'PRESS'}, + {"properties": [("mode", 'KEYS')]}), + ("graph.select_column", {"type": 'K', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'CFRA')]}), + ("graph.select_column", {"type": 'K', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'MARKERS_COLUMN')]}), + ("graph.select_column", {"type": 'K', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'MARKERS_BETWEEN')]}), + ("graph.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("graph.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("graph.select_linked", {"type": 'L', "value": 'PRESS'}, None), + ("graph.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), + op_menu_pie("GRAPH_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}), + ("graph.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), + ("graph.handle_type", {"type": 'V', "value": 'PRESS'}, None), + ("graph.interpolation_type", {"type": 'T', "value": 'PRESS'}, None), + ("graph.easing_type", {"type": 'E', "value": 'PRESS', "ctrl": True}, None), + ("graph.smooth", {"type": 'O', "value": 'PRESS', "alt": True}, None), + ("graph.sample", {"type": 'O', "value": 'PRESS', "shift": True, "alt": True}, None), + ("graph.bake", {"type": 'C', "value": 'PRESS', "alt": True}, None), + op_menu("GRAPH_MT_delete", {"type": 'X', "value": 'PRESS'}), + op_menu("GRAPH_MT_delete", {"type": 'DEL', "value": 'PRESS'}), + op_menu("GRAPH_MT_specials", {"type": 'W', "value": 'PRESS'}), + ("graph.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + ("graph.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None), + ("graph.click_insert", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True}, + {"properties": [("extend", False)]}), + ("graph.click_insert", {"type": params.action_mouse, "value": 'CLICK', "shift": True, "ctrl": True}, + {"properties": [("extend", True)]}), + ("graph.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("graph.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + ("graph.paste", {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("flipped", True)]}), + ("graph.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("graph.view_all", {"type": 'HOME', "value": 'PRESS'}, None), + ("graph.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ("graph.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + ("graph.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), + ("graph.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("only_active", False)]}), + ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.transform", {"type": 'E', "value": 'PRESS'}, + {"properties": [("mode", 'TIME_EXTEND')]}), + ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("wm.context_toggle", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.use_proportional_fcurve')]}), + op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + 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), + ]) + + if params.apple: + items.extend([ + ("graph.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("graph.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None), + ("graph.paste", {"type": 'V', "value": 'PRESS', "shift": True, "oskey": True}, + {"properties": [("flipped", True)]}), + ]) + + return keymap + + +def km_image_generic(_params): + items = [] + keymap = ( + "Image Generic", + {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("image.new", {"type": 'N', "value": 'PRESS', "alt": True}, None), + ("image.open", {"type": 'O', "value": 'PRESS', "alt": True}, None), + ("image.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None), + ("image.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), + ("image.save", {"type": 'S', "value": 'PRESS', "alt": True}, None), + ("image.save_as", {"type": 'S', "value": 'PRESS', "shift": True}, None), + ("image.properties", {"type": 'N', "value": 'PRESS'}, None), + ("image.toolshelf", {"type": 'T', "value": 'PRESS'}, None), + op_menu("IMAGE_MT_specials", {"type": 'W', "value": 'PRESS'}), + ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS'}, None), + ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS', "alt": True}, + {"properties": [("reverse", True)]}), + ]) + + return keymap + + +def km_image(params): + items = [] + keymap = ( + "Image", + {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("image.view_all", {"type": 'HOME', "value": 'PRESS'}, None), + ("image.view_all", {"type": 'HOME', "value": 'PRESS', "shift": True}, + {"properties": [("fit_view", True)]}), + ("image.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None), + ("image.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), + ("image.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ("image.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None), + ("image.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None), + ("image.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None), + ("image.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), + ("image.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), + ("image.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("image.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), + ("image.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), + ("image.view_zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None), + ("image.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True}, + {"properties": [("ratio", 8.0)]}), + ("image.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True}, + {"properties": [("ratio", 4.0)]}), + ("image.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True}, + {"properties": [("ratio", 2.0)]}), + ("image.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True}, + {"properties": [("ratio", 8.0)]}), + ("image.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True}, + {"properties": [("ratio", 4.0)]}), + ("image.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True}, + {"properties": [("ratio", 2.0)]}), + ("image.view_zoom_ratio", {"type": 'NUMPAD_1', "value": 'PRESS'}, + {"properties": [("ratio", 1.0)]}), + ("image.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS'}, + {"properties": [("ratio", 0.5)]}), + ("image.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS'}, + {"properties": [("ratio", 0.25)]}), + ("image.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS'}, + {"properties": [("ratio", 0.125)]}), + ("image.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("image.sample", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("image.curves_point_set", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("point", 'BLACK_POINT')]}), + ("image.curves_point_set", {"type": params.action_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("point", 'WHITE_POINT')]}), + ("object.mode_set", {"type": 'TAB', "value": 'PRESS'}, + {"properties": [("mode", 'EDIT'), ("toggle", True)]}), + # TODO: expand into loop. + ("wm.context_set_int", {"type": 'ONE', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", 0)]}), + ("wm.context_set_int", {"type": 'TWO', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", 1)]}), + ("wm.context_set_int", {"type": 'THREE', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", 2)]}), + ("wm.context_set_int", {"type": 'FOUR', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", 3)]}), + ("wm.context_set_int", {"type": 'FIVE', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", 4)]}), + ("wm.context_set_int", {"type": 'SIX', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", 5)]}), + ("wm.context_set_int", {"type": 'SEVEN', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", 6)]}), + ("wm.context_set_int", {"type": 'EIGHT', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", 7)]}), + ("wm.context_set_int", {"type": 'NINE', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", 8)]}), + 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), + ]) + + return keymap + + +def km_node_generic(_params): + items = [] + keymap = ( + "Node Generic", + {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("node.properties", {"type": 'N', "value": 'PRESS'}, None), + ("node.toolbar", {"type": 'T', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_node_editor(params): + items = [] + keymap = ( + "Node Editor", + {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("node.select", {"type": params.action_mouse, "value": 'PRESS'}, + {"properties": [("extend", False)]}), + ("node.select", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False)]}), + ("node.select", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("extend", False)]}), + ("node.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("extend", False)]}), + ("node.select", {"type": params.action_mouse, "value": 'PRESS', "alt": True}, + {"properties": [("extend", False)]}), + ("node.select", {"type": params.select_mouse, "value": 'PRESS', "alt": True}, + {"properties": [("extend", False)]}), + ("node.select", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("extend", False)]}), + ("node.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("extend", False)]}), + ("node.select", {"type": params.action_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + ("node.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + ("node.select", {"type": params.action_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("extend", True)]}), + ("node.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("extend", True)]}), + ("node.select", {"type": params.action_mouse, "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("extend", True)]}), + ("node.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("extend", True)]}), + ("node.select", {"type": params.action_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("extend", True)]}), + ("node.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("extend", True)]}), + ("node.select_box", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, + {"properties": [("tweak", True)]}), + ("node.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, + {"properties": [("deselect", False)]}), + ("node.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("deselect", True)]}), + ("node.select_circle", {"type": 'C', "value": 'PRESS'}, None), + ("node.link", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("detach", False)]}), + ("node.link", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("detach", True)]}), + ("node.resize", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("node.add_reroute", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None), + ("node.links_cut", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("node.select_link_viewer", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("node.backimage_move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "alt": True}, None), + ("node.backimage_zoom", {"type": 'V', "value": 'PRESS'}, + {"properties": [("factor", 1.0 / 1.2)]}), + ("node.backimage_zoom", {"type": 'V', "value": 'PRESS', "alt": True}, + {"properties": [("factor", 1.2)]}), + ("node.backimage_fit", {"type": 'HOME', "value": 'PRESS', "alt": True}, None), + ("node.backimage_sample", {"type": params.action_mouse, "value": 'PRESS', "alt": True}, None), + op_menu("NODE_MT_specials", {"type": 'W', "value": 'PRESS'}), + ("node.link_make", {"type": 'F', "value": 'PRESS'}, + {"properties": [("replace", False)]}), + ("node.link_make", {"type": 'F', "value": 'PRESS', "shift": True}, + {"properties": [("replace", True)]}), + op_menu("NODE_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}), + ("node.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + ("node.duplicate_move_keep_inputs", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("node.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), + ("node.detach", {"type": 'P', "value": 'PRESS', "alt": True}, None), + ("node.join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), + ("node.hide_toggle", {"type": 'H', "value": 'PRESS'}, None), + ("node.mute_toggle", {"type": 'M', "value": 'PRESS'}, None), + ("node.preview_toggle", {"type": 'H', "value": 'PRESS', "shift": True}, None), + ("node.hide_socket_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, None), + ("node.view_all", {"type": 'HOME', "value": 'PRESS'}, None), + ("node.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ("node.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + ("node.select_box", {"type": 'B', "value": 'PRESS'}, + {"properties": [("tweak", False)]}), + ("node.delete", {"type": 'X', "value": 'PRESS'}, None), + ("node.delete", {"type": 'DEL', "value": 'PRESS'}, None), + ("node.delete_reconnect", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), + ("node.delete_reconnect", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None), + *_template_items_select_actions("node.select_all"), + ("node.select_linked_to", {"type": 'L', "value": 'PRESS', "shift": True}, None), + ("node.select_linked_from", {"type": 'L', "value": 'PRESS'}, None), + ("node.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, + {"properties": [("extend", False)]}), + ("node.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("extend", True)]}), + ("node.select_same_type_step", {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True}, + {"properties": [("prev", False)]}), + ("node.select_same_type_step", {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True}, + {"properties": [("prev", True)]}), + ("node.find_node", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), + ("node.group_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), + ("node.group_ungroup", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("node.group_separate", {"type": 'P', "value": 'PRESS'}, None), + ("node.group_edit", {"type": 'TAB', "value": 'PRESS'}, + {"properties": [("exit", False)]}), + ("node.group_edit", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, + {"properties": [("exit", True)]}), + ("node.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), + ("node.render_changed", {"type": 'Z', "value": 'PRESS'}, None), + ("node.clipboard_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("node.clipboard_paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + ("node.viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), + ("node.clear_viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("node.translate_attach", {"type": 'G', "value": 'PRESS'}, None), + ("node.translate_attach", {"type": 'EVT_TWEAK_A', "value": 'ANY'}, None), + ("node.translate_attach", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS'}, + {"properties": [("release_confirm", True)]}), + ("transform.translate", {"type": 'EVT_TWEAK_A', "value": 'ANY'}, + {"properties": [("release_confirm", True)]}), + ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, + {"properties": [("release_confirm", True)]}), + ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("node.move_detach_links", {"type": 'D', "value": 'PRESS', "alt": True}, None), + ("node.move_detach_links_release", {"type": 'EVT_TWEAK_A', "value": 'ANY', "alt": True}, None), + ("node.move_detach_links", {"type": 'EVT_TWEAK_S', "value": 'ANY', "alt": True}, None), + ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True}, + {"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')]}), + ]) + + if params.apple: + items.extend([ + ("node.clipboard_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("node.clipboard_paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None), + ]) + + return keymap + + +def km_info(params): + items = [] + keymap = ( + "Info", + {"space_type": 'INFO', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("info.select_pick", {"type": params.select_mouse, "value": 'PRESS'}, None), + ("info.select_all_toggle", {"type": 'A', "value": 'PRESS'}, None), + ("info.select_box", {"type": 'B', "value": 'PRESS'}, None), + ("info.report_replay", {"type": 'R', "value": 'PRESS'}, None), + ("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), + ]) + + if params.apple: + items.extend([ + ("info.report_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ]) + + return keymap + + +def km_file_browser(_params): + items = [] + keymap = ( + "File Browser", + {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("file.parent", {"type": 'UP_ARROW', "value": 'PRESS', "alt": True}, None), + ("file.previous", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, None), + ("file.next", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, None), + ("file.refresh", {"type": 'R', "value": 'PRESS'}, None), + ("file.parent", {"type": 'P', "value": 'PRESS'}, None), + ("file.previous", {"type": 'BACK_SPACE', "value": 'PRESS'}, None), + ("file.next", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, None), + ("wm.context_toggle", {"type": 'H', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.params.show_hidden')]}), + ("file.directory_new", {"type": 'I', "value": 'PRESS'}, None), + ("file.delete", {"type": 'X', "value": 'PRESS'}, None), + ("file.delete", {"type": 'DEL', "value": 'PRESS'}, None), + ("file.smoothscroll", {"type": 'TIMER1', "value": 'ANY', "any": True}, None), + ("file.bookmark_toggle", {"type": 'T', "value": 'PRESS'}, None), + ("file.bookmark_add", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), + ]) + + return keymap + + +def km_file_browser_main(_params): + items = [] + keymap = ( + "File Browser Main", + {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("file.execute", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, + {"properties": [("need_active", True)]}), + ("file.refresh", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK'}, None), + ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True}, + {"properties": [("extend", True)]}), + ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True}, + {"properties": [("extend", True), ("fill", True)]}), + ("file.select", {"type": 'RIGHTMOUSE', "value": 'CLICK'}, + {"properties": [("open", False)]}), + ("file.select", {"type": 'RIGHTMOUSE', "value": 'CLICK', "shift": True}, + {"properties": [("extend", True), ("open", False)]}), + ("file.select", {"type": 'RIGHTMOUSE', "value": 'CLICK', "alt": True}, + {"properties": [("extend", True), ("fill", True), ("open", False)]}), + ("file.select_walk", {"type": 'UP_ARROW', "value": 'PRESS'}, + {"properties": [("direction", 'UP')]}), + ("file.select_walk", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'UP'), ("extend", True)]}), + ("file.select_walk", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("direction", 'UP'), ("extend", True), ("fill", True)]}), + ("file.select_walk", {"type": 'DOWN_ARROW', "value": 'PRESS'}, + {"properties": [("direction", 'DOWN')]}), + ("file.select_walk", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'DOWN'), ("extend", True)]}), + ("file.select_walk", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("direction", 'DOWN'), ("extend", True), ("fill", True)]}), + ("file.select_walk", {"type": 'LEFT_ARROW', "value": 'PRESS'}, + {"properties": [("direction", 'LEFT')]}), + ("file.select_walk", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'LEFT'), ("extend", True)]}), + ("file.select_walk", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("direction", 'LEFT'), ("extend", True), ("fill", True)]}), + ("file.select_walk", {"type": 'RIGHT_ARROW', "value": 'PRESS'}, + {"properties": [("direction", 'RIGHT')]}), + ("file.select_walk", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'RIGHT'), ("extend", True)]}), + ("file.select_walk", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("direction", 'RIGHT'), ("extend", True), ("fill", True)]}), + ("file.previous", {"type": 'BUTTON4MOUSE', "value": 'CLICK'}, None), + ("file.next", {"type": 'BUTTON5MOUSE', "value": 'CLICK'}, None), + ("file.select_all", {"type": 'A', "value": 'PRESS'}, None), + ("file.select_box", {"type": 'B', "value": 'PRESS'}, None), + ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("file.rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("file.highlight", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None), + ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, + {"properties": [("increment", 1)]}), + ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True}, + {"properties": [("increment", 10)]}), + ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("increment", 100)]}), + ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, + {"properties": [("increment", -1)]}), + ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True}, + {"properties": [("increment", -10)]}), + ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("increment", -100)]}), + ]) + + return keymap + + +def km_file_browser_buttons(_params): + items = [] + keymap = ( + "File Browser Buttons", + {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, + {"properties": [("increment", 1)]}), + ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True}, + {"properties": [("increment", 10)]}), + ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("increment", 100)]}), + ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, + {"properties": [("increment", -1)]}), + ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True}, + {"properties": [("increment", -10)]}), + ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("increment", -100)]}), + ]) + + return keymap + + +def km_dopesheet_generic(_params): + items = [] + keymap = ( + "Dopesheet Generic", + {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("action.properties", {"type": 'N', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_dopesheet(params): + items = [] + keymap = ( + "Dopesheet", + {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False), ("column", False), ("channel", False)]}), + ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "alt": True}, + {"properties": [("extend", False), ("column", True), ("channel", False)]}), + ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True), ("column", False), ("channel", False)]}), + ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("extend", True), ("column", True), ("channel", False)]}), + ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("extend", False), ("column", False), ("channel", True)]}), + ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("extend", True), ("column", False), ("channel", True)]}), + ("action.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'CHECK'), ("extend", False)]}), + ("action.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("mode", 'CHECK'), ("extend", True)]}), + ("action.select_leftright", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("mode", 'LEFT'), ("extend", False)]}), + ("action.select_leftright", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("mode", 'RIGHT'), ("extend", False)]}), + *_template_items_select_actions("action.select_all"), + ("action.select_box", {"type": 'B', "value": 'PRESS'}, + {"properties": [("axis_range", False)]}), + ("action.select_box", {"type": 'B', "value": 'PRESS', "alt": True}, + {"properties": [("axis_range", True)]}), + ("action.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, + {"properties": [("deselect", False)]}), + ("action.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, + {"properties": [("deselect", True)]}), + ("action.select_circle", {"type": 'C', "value": 'PRESS'}, None), + ("action.select_column", {"type": 'K', "value": 'PRESS'}, + {"properties": [("mode", 'KEYS')]}), + ("action.select_column", {"type": 'K', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'CFRA')]}), + ("action.select_column", {"type": 'K', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'MARKERS_COLUMN')]}), + ("action.select_column", {"type": 'K', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'MARKERS_BETWEEN')]}), + ("action.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("action.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("action.select_linked", {"type": 'L', "value": 'PRESS'}, None), + ("action.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), + op_menu_pie("DOPESHEET_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}), + ("action.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), + ("action.handle_type", {"type": 'V', "value": 'PRESS'}, None), + ("action.interpolation_type", {"type": 'T', "value": 'PRESS'}, None), + ("action.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None), + ("action.keyframe_type", {"type": 'R', "value": 'PRESS'}, None), + op_menu("DOPESHEET_MT_specials", {"type": 'W', "value": 'PRESS'}), + ("action.sample", {"type": 'O', "value": 'PRESS', "shift": True, "alt": True}, None), + op_menu("DOPESHEET_MT_delete", {"type": 'X', "value": 'PRESS'}), + op_menu("DOPESHEET_MT_delete", {"type": 'DEL', "value": 'PRESS'}), + ("action.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + ("action.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None), + ("action.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("action.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + ("action.paste", {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("flipped", True)]}), + ("action.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("action.view_all", {"type": 'HOME', "value": 'PRESS'}, None), + ("action.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ("action.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + ("action.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), + ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), + ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), + ("transform.transform", {"type": 'G', "value": 'PRESS'}, + {"properties": [("mode", 'TIME_TRANSLATE')]}), + ("transform.transform", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, + {"properties": [("mode", 'TIME_TRANSLATE')]}), + ("transform.transform", {"type": 'E', "value": 'PRESS'}, + {"properties": [("mode", 'TIME_EXTEND')]}), + ("transform.transform", {"type": 'S', "value": 'PRESS'}, + {"properties": [("mode", 'TIME_SCALE')]}), + ("transform.transform", {"type": 'T', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'TIME_SLIDE')]}), + ("wm.context_toggle", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.use_proportional_action')]}), + 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), + ]) + + if params.apple: + items.extend([ + ("action.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("action.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None), + ("action.paste", {"type": 'V', "value": 'PRESS', "shift": True, "oskey": True}, + {"properties": [("flipped", True)]}), + ]) + + return keymap + + +def km_nla_generic(_params): + items = [] + keymap = ( + "NLA Generic", + {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("nla.properties", {"type": 'N', "value": 'PRESS'}, None), + ("nla.tweakmode_enter", {"type": 'TAB', "value": 'PRESS'}, None), + ("nla.tweakmode_exit", {"type": 'TAB', "value": 'PRESS'}, None), + ("nla.tweakmode_enter", {"type": 'TAB', "value": 'PRESS', "shift": True}, + {"properties": [("isolate_action", True)]}), + ("nla.tweakmode_exit", {"type": 'TAB', "value": 'PRESS', "shift": True}, + {"properties": [("isolate_action", True)]}), + ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), + ]) + + return keymap + + +def km_nla_channels(_params): + items = [] + keymap = ( + "NLA Channels", + {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("nla.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("extend", False)]}), + ("nla.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + ("nla.tracks_add", {"type": 'A', "value": 'PRESS', "shift": True}, + {"properties": [("above_selected", False)]}), + ("nla.tracks_add", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("above_selected", True)]}), + ("nla.tracks_delete", {"type": 'X', "value": 'PRESS'}, None), + ("nla.tracks_delete", {"type": 'DEL', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_nla_editor(params): + items = [] + keymap = ( + "NLA Editor", + {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("nla.click_select", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False)]}), + ("nla.click_select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + ("nla.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'CHECK'), ("extend", False)]}), + ("nla.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("mode", 'CHECK'), ("extend", True)]}), + ("nla.select_leftright", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("mode", 'LEFT'), ("extend", False)]}), + ("nla.select_leftright", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("mode", 'RIGHT'), ("extend", False)]}), + *_template_items_select_actions("nla.select_all"), + ("nla.select_box", {"type": 'B', "value": 'PRESS'}, + {"properties": [("axis_range", False)]}), + ("nla.select_box", {"type": 'B', "value": 'PRESS', "alt": True}, + {"properties": [("axis_range", True)]}), + ("nla.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("nla.view_all", {"type": 'HOME', "value": 'PRESS'}, None), + ("nla.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ("nla.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + ("nla.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), + ("nla.actionclip_add", {"type": 'A', "value": 'PRESS', "shift": True}, None), + ("nla.transition_add", {"type": 'T', "value": 'PRESS', "shift": True}, None), + ("nla.soundclip_add", {"type": 'K', "value": 'PRESS', "shift": True}, None), + ("nla.meta_add", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), + ("nla.meta_remove", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("nla.duplicate", {"type": 'D', "value": 'PRESS', "shift": True}, + {"properties": [("linked", False)]}), + ("nla.duplicate", {"type": 'D', "value": 'PRESS', "alt": True}, + {"properties": [("linked", True)]}), + ("nla.make_single_user", {"type": 'U', "value": 'PRESS'}, None), + ("nla.delete", {"type": 'X', "value": 'PRESS'}, None), + ("nla.delete", {"type": 'DEL', "value": 'PRESS'}, None), + ("nla.split", {"type": 'Y', "value": 'PRESS'}, None), + ("nla.mute_toggle", {"type": 'H', "value": 'PRESS'}, None), + ("nla.swap", {"type": 'F', "value": 'PRESS', "alt": True}, None), + ("nla.move_up", {"type": 'PAGE_UP', "value": 'PRESS'}, None), + ("nla.move_down", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None), + ("nla.apply_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), + ("nla.clear_scale", {"type": 'S', "value": 'PRESS', "alt": True}, None), + op_menu_pie("NLA_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}), + ("nla.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("transform.transform", {"type": 'G', "value": 'PRESS'}, + {"properties": [("mode", 'TRANSLATION')]}), + ("transform.transform", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, + {"properties": [("mode", 'TRANSLATION')]}), + ("transform.transform", {"type": 'E', "value": 'PRESS'}, + {"properties": [("mode", 'TIME_EXTEND')]}), + ("transform.transform", {"type": 'S', "value": 'PRESS'}, + {"properties": [("mode", 'TIME_SCALE')]}), + ("marker.add", {"type": 'M', "value": 'PRESS'}, None), + ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), + ]) + + return keymap + + +def km_text_generic(params): + items = [] + keymap = ( + "Text Generic", + {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("text.start_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), + ("text.jump", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), + ("text.find", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), + ("text.replace", {"type": 'H', "value": 'PRESS', "ctrl": True}, None), + ("text.properties", {"type": 'T', "value": 'PRESS', "ctrl": True}, None), + ]) + + if params.apple: + items.extend([ + ("text.start_find", {"type": 'F', "value": 'PRESS', "oskey": True}, None), + ]) + + return keymap + + +def km_text(params): + items = [] + keymap = ( + "Text", + {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + if params.apple: + items.extend([ + ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "oskey": True}, + {"properties": [("type", 'LINE_BEGIN')]}), + ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "oskey": True}, + {"properties": [("type", 'LINE_END')]}), + ("text.move", {"type": 'UP_ARROW', "value": 'PRESS', "oskey": True}, + {"properties": [("type", 'FILE_TOP')]}), + ("text.move", {"type": 'DOWN_ARROW', "value": 'PRESS', "oskey": True}, + {"properties": [("type", 'FILE_BOTTOM')]}), + ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "oskey": True}, + {"properties": [("type", 'LINE_BEGIN')]}), + ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "oskey": True}, + {"properties": [("type", 'LINE_END')]}), + ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("text.move_select", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "oskey": True}, + {"properties": [("type", 'FILE_TOP')]}), + ("text.move_select", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "oskey": True}, + {"properties": [("type", 'FILE_BOTTOM')]}), + ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "alt": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("text.save", {"type": 'S', "value": 'PRESS', "alt": True, "oskey": True}, None), + ("text.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True, "oskey": True}, None), + ("text.cut", {"type": 'X', "value": 'PRESS', "oskey": True}, None), + ("text.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("text.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None), + ("text.find_set_selected", {"type": 'E', "value": 'PRESS', "oskey": True}, None), + ("text.select_all", {"type": 'A', "value": 'PRESS', "oskey": True}, None), + ("text.select_line", {"type": 'A', "value": 'PRESS', "shift": True, "oskey": True}, None), + ]) + + items.extend([ + ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("wm.context_cycle_int", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}), + ("wm.context_cycle_int", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}), + ("wm.context_cycle_int", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}), + ("wm.context_cycle_int", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}), + ]) + + if not params.legacy: + items.extend([ + ("text.new", {"type": 'N', "value": 'PRESS', "alt": True}, None), + ]) + else: + items.extend([ + ("text.new", {"type": 'N', "value": 'PRESS', "ctrl": True}, None), + ]) + + items.extend([ + ("text.open", {"type": 'O', "value": 'PRESS', "alt": True}, None), + ("text.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None), + ("text.save", {"type": 'S', "value": 'PRESS', "alt": True}, None), + ("text.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), + ("text.run_script", {"type": 'P', "value": 'PRESS', "alt": True}, None), + ("text.cut", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), + ("text.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("text.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + ("text.cut", {"type": 'DEL', "value": 'PRESS', "shift": True}, None), + ("text.copy", {"type": 'INSERT', "value": 'PRESS', "ctrl": True}, None), + ("text.paste", {"type": 'INSERT', "value": 'PRESS', "shift": True}, None), + ("text.duplicate_line", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), + ("text.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), + ("text.select_line", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("text.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), + ("text.move_lines", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("direction", 'UP')]}), + ("text.move_lines", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("direction", 'DOWN')]}), + ("text.indent", {"type": 'TAB', "value": 'PRESS'}, None), + ("text.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None), + ("text.uncomment", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("text.move", {"type": 'HOME', "value": 'PRESS'}, + {"properties": [("type", 'LINE_BEGIN')]}), + ("text.move", {"type": 'END', "value": 'PRESS'}, + {"properties": [("type", 'LINE_END')]}), + ("text.move", {"type": 'E', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'LINE_END')]}), + ("text.move", {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'LINE_END')]}), + ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_CHARACTER')]}), + ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_CHARACTER')]}), + ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("text.move", {"type": 'UP_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_LINE')]}), + ("text.move", {"type": 'DOWN_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_LINE')]}), + ("text.move", {"type": 'PAGE_UP', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_PAGE')]}), + ("text.move", {"type": 'PAGE_DOWN', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_PAGE')]}), + ("text.move", {"type": 'HOME', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'FILE_TOP')]}), + ("text.move", {"type": 'END', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'FILE_BOTTOM')]}), + ("text.move_select", {"type": 'HOME', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'LINE_BEGIN')]}), + ("text.move_select", {"type": 'END', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'LINE_END')]}), + ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PREVIOUS_CHARACTER')]}), + ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'NEXT_CHARACTER')]}), + ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("text.move_select", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PREVIOUS_LINE')]}), + ("text.move_select", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'NEXT_LINE')]}), + ("text.move_select", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PREVIOUS_PAGE')]}), + ("text.move_select", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'NEXT_PAGE')]}), + ("text.move_select", {"type": 'HOME', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'FILE_TOP')]}), + ("text.move_select", {"type": 'END', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'FILE_BOTTOM')]}), + ("text.delete", {"type": 'DEL', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_CHARACTER')]}), + ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_CHARACTER')]}), + ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PREVIOUS_CHARACTER')]}), + ("text.delete", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("text.overwrite_toggle", {"type": 'INSERT', "value": 'PRESS'}, None), + ("text.scroll_bar", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("text.scroll_bar", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("text.scroll", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("text.scroll", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), + ("text.selection_set", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("text.cursor_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("text.selection_set", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("select", True)]}), + ("text.scroll", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, + {"properties": [("lines", -1)]}), + ("text.scroll", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, + {"properties": [("lines", 1)]}), + ("text.line_break", {"type": 'RET', "value": 'PRESS'}, None), + ("text.line_break", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), + op_menu("TEXT_MT_toolbox", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}), + ("text.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None), + ("text.line_number", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None), + ("text.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None), + ]) + + return keymap + + +def km_sequencercommon(_params): + items = [] + keymap = ( + "SequencerCommon", + {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("sequencer.properties", {"type": 'N', "value": 'PRESS'}, None), + ("wm.context_toggle", {"type": 'O', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'scene.sequence_editor.show_overlay')]}), + ("sequencer.view_toggle", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, None), + ]) + + return keymap + + +def km_sequencer(params): + items = [] + keymap = ( + "Sequencer", + {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + *_template_items_select_actions("sequencer.select_all"), + ("sequencer.cut", {"type": 'K', "value": 'PRESS'}, + {"properties": [("type", 'SOFT')]}), + ("sequencer.cut", {"type": 'K', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'HARD')]}), + ("sequencer.mute", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("sequencer.mute", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("sequencer.unmute", {"type": 'H', "value": 'PRESS', "alt": True}, + {"properties": [("unselected", False)]}), + ("sequencer.unmute", {"type": 'H', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("unselected", True)]}), + ("sequencer.lock", {"type": 'L', "value": 'PRESS', "shift": True}, None), + ("sequencer.unlock", {"type": 'L', "value": 'PRESS', "shift": True, "alt": True}, None), + ("sequencer.reassign_inputs", {"type": 'R', "value": 'PRESS'}, None), + ("sequencer.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None), + ("sequencer.reload", {"type": 'R', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("adjust_length", True)]}), + ("sequencer.offset_clear", {"type": 'O', "value": 'PRESS', "alt": True}, None), + ("sequencer.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + ("sequencer.delete", {"type": 'X', "value": 'PRESS'}, None), + ("sequencer.delete", {"type": 'DEL', "value": 'PRESS'}, None), + ("sequencer.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("sequencer.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + ("sequencer.images_separate", {"type": 'Y', "value": 'PRESS'}, None), + ("sequencer.meta_toggle", {"type": 'TAB', "value": 'PRESS'}, None), + ("sequencer.meta_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), + ("sequencer.meta_separate", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("sequencer.view_all", {"type": 'HOME', "value": 'PRESS'}, None), + ("sequencer.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ("sequencer.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + ("sequencer.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), + ("sequencer.strip_jump", {"type": 'PAGE_UP', "value": 'PRESS'}, + {"properties": [("next", True), ("center", False)]}), + ("sequencer.strip_jump", {"type": 'PAGE_DOWN', "value": 'PRESS'}, + {"properties": [("next", False), ("center", False)]}), + ("sequencer.strip_jump", {"type": 'PAGE_UP', "value": 'PRESS', "alt": True}, + {"properties": [("next", True), ("center", True)]}), + ("sequencer.strip_jump", {"type": 'PAGE_DOWN', "value": 'PRESS', "alt": True}, + {"properties": [("next", False), ("center", True)]}), + ("sequencer.swap", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("side", 'LEFT')]}), + ("sequencer.swap", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("side", 'RIGHT')]}), + ("sequencer.gap_remove", {"type": 'BACK_SPACE', "value": 'PRESS'}, + {"properties": [("all", False)]}), + ("sequencer.gap_remove", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, + {"properties": [("all", True)]}), + ("sequencer.gap_insert", {"type": 'EQUAL', "value": 'PRESS', "shift": True}, None), + ("sequencer.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None), + ("sequencer.swap_inputs", {"type": 'S', "value": 'PRESS', "alt": True}, None), + # TODO: expand into loop. + ("sequencer.cut_multicam", {"type": 'ONE', "value": 'PRESS'}, + {"properties": [("camera", 1)]}), + ("sequencer.cut_multicam", {"type": 'TWO', "value": 'PRESS'}, + {"properties": [("camera", 2)]}), + ("sequencer.cut_multicam", {"type": 'THREE', "value": 'PRESS'}, + {"properties": [("camera", 3)]}), + ("sequencer.cut_multicam", {"type": 'FOUR', "value": 'PRESS'}, + {"properties": [("camera", 4)]}), + ("sequencer.cut_multicam", {"type": 'FIVE', "value": 'PRESS'}, + {"properties": [("camera", 5)]}), + ("sequencer.cut_multicam", {"type": 'SIX', "value": 'PRESS'}, + {"properties": [("camera", 6)]}), + ("sequencer.cut_multicam", {"type": 'SEVEN', "value": 'PRESS'}, + {"properties": [("camera", 7)]}), + ("sequencer.cut_multicam", {"type": 'EIGHT', "value": 'PRESS'}, + {"properties": [("camera", 8)]}), + ("sequencer.cut_multicam", {"type": 'NINE', "value": 'PRESS'}, + {"properties": [("camera", 9)]}), + ("sequencer.cut_multicam", {"type": 'ZERO', "value": 'PRESS'}, + {"properties": [("camera", 10)]}), + ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", False)]}), + ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", False)]}), + ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "alt": True}, + {"properties": [("extend", False), ("linked_handle", True), ("left_right", 'NONE'), ("linked_time", False)]}), + ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("extend", True), ("linked_handle", True), ("left_right", 'NONE'), ("linked_time", False)]}), + ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("extend", False), ("linked_handle", False), ("left_right", 'MOUSE'), ("linked_time", True)]}), + ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("extend", True), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", True)]}), + ("sequencer.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("sequencer.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("sequencer.select_linked_pick", {"type": 'L', "value": 'PRESS'}, + {"properties": [("extend", False)]}), + ("sequencer.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + ("sequencer.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), + ("sequencer.select_box", {"type": 'B', "value": 'PRESS'}, None), + ("sequencer.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), + op_menu("SEQUENCER_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}), + op_menu("SEQUENCER_MT_change", {"type": 'C', "value": 'PRESS'}), + ("sequencer.slip", {"type": 'S', "value": 'PRESS'}, None), + ("wm.context_set_int", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'scene.sequence_editor.overlay_frame'), ("value", 0)]}), + ("transform.seq_slide", {"type": 'G', "value": 'PRESS'}, None), + ("transform.seq_slide", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.transform", {"type": 'E', "value": 'PRESS'}, + {"properties": [("mode", 'TIME_EXTEND')]}), + ("marker.add", {"type": 'M', "value": 'PRESS'}, None), + ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), + ]) + + if params.apple: + items.extend([ + ("sequencer.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("sequencer.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None), + ]) + + return keymap + + +def km_sequencerpreview(params): + items = [] + keymap = ( + "SequencerPreview", + {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("sequencer.view_all_preview", {"type": 'HOME', "value": 'PRESS'}, None), + ("sequencer.view_all_preview", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ("sequencer.view_ghost_border", {"type": 'O', "value": 'PRESS'}, None), + ("sequencer.view_zoom_ratio", {"type": 'NUMPAD_1', "value": 'PRESS'}, + {"properties": [("ratio", 1.0)]}), + ("sequencer.sample", {"type": params.action_mouse, "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_console(params): + items = [] + keymap = ( + "Console", + {"space_type": 'CONSOLE', "region_type": 'WINDOW'}, + {"items": items}, + ) + + if params.apple: + items.extend([ + ("console.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "oskey": True}, + {"properties": [("type", 'LINE_BEGIN')]}), + ("console.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "oskey": True}, + {"properties": [("type", 'LINE_END')]}), + ("console.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("console.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None), + ]) + + items.extend([ + ("console.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("console.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("console.move", {"type": 'HOME', "value": 'PRESS'}, + {"properties": [("type", 'LINE_BEGIN')]}), + ("console.move", {"type": 'END', "value": 'PRESS'}, + {"properties": [("type", 'LINE_END')]}), + ("wm.context_cycle_int", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}), + ("wm.context_cycle_int", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}), + ("wm.context_cycle_int", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}), + ("wm.context_cycle_int", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}), + ("console.move", {"type": 'LEFT_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_CHARACTER')]}), + ("console.move", {"type": 'RIGHT_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_CHARACTER')]}), + ("console.history_cycle", {"type": 'UP_ARROW', "value": 'PRESS'}, + {"properties": [("reverse", True)]}), + ("console.history_cycle", {"type": 'DOWN_ARROW', "value": 'PRESS'}, + {"properties": [("reverse", False)]}), + ("console.delete", {"type": 'DEL', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_CHARACTER')]}), + ("console.delete", {"type": 'BACK_SPACE', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_CHARACTER')]}), + ("console.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PREVIOUS_CHARACTER')]}), + ("console.delete", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("console.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("console.clear_line", {"type": 'RET', "value": 'PRESS', "shift": True}, None), + ("console.clear_line", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None), + ("console.execute", {"type": 'RET', "value": 'PRESS'}, + {"properties": [("interactive", True)]}), + ("console.execute", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, + {"properties": [("interactive", True)]}), + ("console.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None), + ("console.copy_as_script", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("console.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("console.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + ("console.select_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("console.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), + ("console.insert", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, + {"properties": [("text", '\t')]}), + ("console.indent", {"type": 'TAB', "value": 'PRESS'}, None), + ("console.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None), + ("console.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None), + ]) + + return keymap + + +def km_clip(_params): + items = [] + keymap = ( + "Clip", + {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("clip.open", {"type": 'O', "value": 'PRESS', "alt": True}, None), + ("clip.tools", {"type": 'T', "value": 'PRESS'}, None), + ("clip.properties", {"type": 'N', "value": 'PRESS'}, None), + ("clip.track_markers", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("backwards", True), ("sequence", False)]}), + ("clip.track_markers", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("backwards", False), ("sequence", False)]}), + ("clip.track_markers", {"type": 'T', "value": 'PRESS', "ctrl": True}, + {"properties": [("backwards", False), ("sequence", True)]}), + ("clip.track_markers", {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("backwards", True), ("sequence", True)]}), + ("wm.context_toggle_enum", {"type": 'TAB', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.mode'), ("value_1", 'TRACKING'), ("value_2", 'MASK')]}), + ("clip.solve_camera", {"type": 'S', "value": 'PRESS', "shift": True}, None), + ("clip.set_solver_keyframe", {"type": 'Q', "value": 'PRESS'}, + {"properties": [("keyframe", 'KEYFRAME_A')]}), + ("clip.set_solver_keyframe", {"type": 'E', "value": 'PRESS'}, + {"properties": [("keyframe", 'KEYFRAME_B')]}), + ("clip.prefetch", {"type": 'P', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_clip_editor(params): + items = [] + keymap = ( + "Clip Editor", + {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None), + ("clip.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), + ("clip.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("clip.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None), + ("clip.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None), + ("clip.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None), + ("clip.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None), + ("clip.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), + ("clip.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True}, + {"properties": [("ratio", 8.0)]}), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True}, + {"properties": [("ratio", 4.0)]}), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True}, + {"properties": [("ratio", 2.0)]}), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True}, + {"properties": [("ratio", 8.0)]}), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True}, + {"properties": [("ratio", 4.0)]}), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True}, + {"properties": [("ratio", 2.0)]}), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_1', "value": 'PRESS'}, + {"properties": [("ratio", 1.0)]}), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS'}, + {"properties": [("ratio", 0.5)]}), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS'}, + {"properties": [("ratio", 0.25)]}), + ("clip.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS'}, + {"properties": [("ratio", 0.125)]}), + ("clip.view_all", {"type": 'HOME', "value": 'PRESS'}, None), + ("clip.view_all", {"type": 'F', "value": 'PRESS'}, + {"properties": [("fit_view", True)]}), + ("clip.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + ("clip.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ("clip.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None), + ("clip.frame_jump", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("position", 'PATHSTART')]}), + ("clip.frame_jump", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("position", 'PATHEND')]}), + ("clip.frame_jump", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("position", 'FAILEDPREV')]}), + ("clip.frame_jump", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("position", 'PATHSTART')]}), + ("clip.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("clip.select", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False)]}), + ("clip.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + *_template_items_select_actions("clip.select_all"), + ("clip.select_box", {"type": 'B', "value": 'PRESS'}, None), + ("clip.select_circle", {"type": 'C', "value": 'PRESS'}, None), + op_menu("CLIP_MT_select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}), + ("clip.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, + {"properties": [("deselect", False)]}), + ("clip.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("deselect", True)]}), + ("clip.add_marker_slide", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("clip.delete_marker", {"type": 'X', "value": 'PRESS', "shift": True}, None), + ("clip.delete_marker", {"type": 'DEL', "value": 'PRESS', "shift": True}, None), + ("clip.slide_marker", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("clip.disable_markers", {"type": 'D', "value": 'PRESS', "shift": True}, + {"properties": [("action", 'TOGGLE')]}), + ("clip.delete_track", {"type": 'X', "value": 'PRESS'}, None), + ("clip.delete_track", {"type": 'DEL', "value": 'PRESS'}, None), + ("clip.lock_tracks", {"type": 'L', "value": 'PRESS', "ctrl": True}, + {"properties": [("action", 'LOCK')]}), + ("clip.lock_tracks", {"type": 'L', "value": 'PRESS', "alt": True}, + {"properties": [("action", 'UNLOCK')]}), + ("clip.hide_tracks", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("clip.hide_tracks", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("clip.hide_tracks_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ("clip.slide_plane_marker", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("clip.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None), + ("clip.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None), + ("clip.join_tracks", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), + op_menu("CLIP_MT_tracking_specials", {"type": 'W', "value": 'PRESS'}), + ("wm.context_toggle", {"type": 'L', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.lock_selection')]}), + ("wm.context_toggle", {"type": 'D', "value": 'PRESS', "alt": True}, + {"properties": [("data_path", 'space_data.show_disabled')]}), + ("wm.context_toggle", {"type": 'S', "value": 'PRESS', "alt": True}, + {"properties": [("data_path", 'space_data.show_marker_search')]}), + ("wm.context_toggle", {"type": 'M', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.use_mute_footage')]}), + ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True}, + {"properties": [("action", 'REMAINED'), ("clear_active", False)]}), + ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True}, + {"properties": [("action", 'UPTO'), ("clear_active", False)]}), + ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("action", 'ALL'), ("clear_active", False)]}), + ("clip.cursor_set", {"type": params.action_mouse, "value": 'PRESS'}, None), + 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), + ]) + + return keymap + + +def km_clip_graph_editor(params): + items = [] + keymap = ( + "Clip Graph Editor", + {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("clip.change_frame", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("clip.graph_select", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False)]}), + ("clip.graph_select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + *_template_items_select_actions("clip.graph_select_all_markers"), + ("clip.graph_select_box", {"type": 'B', "value": 'PRESS'}, None), + ("clip.graph_delete_curve", {"type": 'X', "value": 'PRESS'}, None), + ("clip.graph_delete_curve", {"type": 'DEL', "value": 'PRESS'}, None), + ("clip.graph_delete_knot", {"type": 'X', "value": 'PRESS', "shift": True}, None), + ("clip.graph_delete_knot", {"type": 'DEL', "value": 'PRESS', "shift": True}, None), + ("clip.graph_view_all", {"type": 'HOME', "value": 'PRESS'}, None), + ("clip.graph_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ("clip.graph_center_current_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), + ("wm.context_toggle", {"type": 'L', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.lock_time_cursor')]}), + ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True}, + {"properties": [("action", 'REMAINED'), ("clear_active", True)]}), + ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True}, + {"properties": [("action", 'UPTO'), ("clear_active", True)]}), + ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("action", 'ALL'), ("clear_active", True)]}), + ("clip.graph_disable_markers", {"type": 'D', "value": 'PRESS', "shift": True}, + {"properties": [("action", 'TOGGLE')]}), + ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_clip_dopesheet_editor(_params): + items = [] + keymap = ( + "Clip Dopesheet Editor", + {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("clip.dopesheet_select_channel", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("extend", True)]}), + ("clip.dopesheet_view_all", {"type": 'HOME', "value": 'PRESS'}, None), + ("clip.dopesheet_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), + ]) + + return keymap + + +# ------------------------------------------------------------------------------ +# Animation + + +def km_frames(params): + items = [] + keymap = ( + "Frames", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Frame offsets + ("screen.frame_offset", {"type": 'LEFT_ARROW', "value": 'PRESS'}, + {"properties": [("delta", -1)]}), + ("screen.frame_offset", {"type": 'RIGHT_ARROW', "value": 'PRESS'}, + {"properties": [("delta", 1)]}), + ("screen.frame_jump", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("end", True)]}), + ("screen.frame_jump", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("end", False)]}), + ("screen.keyframe_jump", {"type": 'UP_ARROW', "value": 'PRESS'}, + {"properties": [("next", True)]}), + ("screen.keyframe_jump", {"type": 'DOWN_ARROW', "value": 'PRESS'}, + {"properties": [("next", False)]}), + ("screen.keyframe_jump", {"type": 'MEDIA_LAST', "value": 'PRESS'}, + {"properties": [("next", True)]}), + ("screen.keyframe_jump", {"type": 'MEDIA_FIRST', "value": 'PRESS'}, + {"properties": [("next", False)]}), + ]) + + if not params.legacy: + # New playback + items.extend([ + ("screen.animation_play", {"type": 'SPACE', "value": 'PRESS', "shift": True}, None), + ("screen.animation_play", {"type": 'SPACE', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("reverse", True)]}), + ]) + else: + # Old playback + items.extend([ + ("screen.frame_offset", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("delta", 10)]}), + ("screen.frame_offset", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("delta", -10)]}), + ("screen.frame_offset", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "alt": True}, + {"properties": [("delta", 1)]}), + ("screen.frame_offset", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "alt": True}, + {"properties": [("delta", -1)]}), + ("screen.frame_jump", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("end", True)]}), + ("screen.frame_jump", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("end", False)]}), + ("screen.animation_play", {"type": 'A', "value": 'PRESS', "alt": True}, None), + ("screen.animation_play", {"type": 'A', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("reverse", True)]}), + ]) + + items.extend([ + ("screen.animation_cancel", {"type": 'ESC', "value": 'PRESS'}, None), + ("screen.animation_play", {"type": 'MEDIA_PLAY', "value": 'PRESS'}, None), + ("screen.animation_cancel", {"type": 'MEDIA_STOP', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_animation(params): + items = [] + keymap = ( + "Animation", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Frame management. + ("anim.change_frame", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("wm.context_toggle", {"type": 'T', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'space_data.show_seconds')]}), + # Preview range. + ("anim.previewrange_set", {"type": 'P', "value": 'PRESS'}, None), + ("anim.previewrange_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None), + ]) + + return keymap + + +def km_animation_channels(_params): + items = [] + keymap = ( + "Animation Channels", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Click select. + ("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + ("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("children_only", True)]}), + # Rename. + ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), + ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), + # Select keys. + ("anim.channel_select_keys", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), + ("anim.channel_select_keys", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK', "shift": True}, + {"properties": [("extend", True)]}), + # Find (setting the name filter). + ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), + # Selection. + *_template_items_select_actions("anim.channels_select_all"), + ("anim.channels_select_box", {"type": 'B', "value": 'PRESS'}, None), + ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + # Delete. + ("anim.channels_delete", {"type": 'X', "value": 'PRESS'}, None), + ("anim.channels_delete", {"type": 'DEL', "value": 'PRESS'}, None), + # Settings. + ("anim.channels_setting_toggle", {"type": 'W', "value": 'PRESS', "shift": True}, None), + ("anim.channels_setting_enable", {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("anim.channels_setting_disable", {"type": 'W', "value": 'PRESS', "alt": True}, None), + ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), + # Expand/collapse. + ("anim.channels_expand", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), + ("anim.channels_collapse", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), + ("anim.channels_expand", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("all", False)]}), + ("anim.channels_collapse", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, + {"properties": [("all", False)]}), + # Move. + ("anim.channels_move", {"type": 'PAGE_UP', "value": 'PRESS'}, + {"properties": [("direction", 'UP')]}), + ("anim.channels_move", {"type": 'PAGE_DOWN', "value": 'PRESS'}, + {"properties": [("direction", 'DOWN')]}), + ("anim.channels_move", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'TOP')]}), + ("anim.channels_move", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'BOTTOM')]}), + # Group. + ("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_specials_channels", {"type": 'W', "value": 'PRESS'}), + ]) + + return keymap + + +# ------------------------------------------------------------------------------ +# Modes + + +def km_grease_pencil(_params): + items = [] + keymap = ( + "Grease Pencil", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Draw + ("gpencil.annotate", {"type": 'LEFTMOUSE', "value": 'PRESS', "key_modifier": 'D'}, + {"properties": [("mode", 'DRAW'), ("wait_for_input", False)]}), + # Draw - straight lines + ("gpencil.annotate", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True, "key_modifier": 'D'}, + {"properties": [("mode", 'DRAW_STRAIGHT'), ("wait_for_input", False)]}), + # Draw - poly lines + ("gpencil.annotate", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "alt": True, "key_modifier": 'D'}, + {"properties": [("mode", 'DRAW_POLY'), ("wait_for_input", False)]}), + # Erase + ("gpencil.annotate", {"type": 'RIGHTMOUSE', "value": 'PRESS', "key_modifier": 'D'}, + {"properties": [("mode", 'ERASER'), ("wait_for_input", False)]}), + + # Enter edit mode + ("gpencil.editmode_toggle", {"type": 'TAB', "value": 'PRESS', "key_modifier": 'D'}, None), + # Add blank frame (B because it's easy to reach from D). + ("gpencil.blank_frame_add", {"type": 'B', "value": 'PRESS', "key_modifier": 'D'}, None), + # Delete active frame - for easier video tutorials/review sessions. + # This works even when not in edit mode. + ("gpencil.active_frames_delete_all", {"type": 'X', "value": 'PRESS', "key_modifier": 'D'}, None), + ("gpencil.active_frames_delete_all", {"type": 'DEL', "value": 'PRESS', "key_modifier": 'D'}, None), + ]) + + return keymap + + +def _grease_pencil_selection(params): + return [ + # Select all + *_template_items_select_actions("gpencil.select_all"), + # Circle select + ("gpencil.select_circle", {"type": 'C', "value": 'PRESS'}, None), + # Box select + ("gpencil.select_box", {"type": 'B', "value": 'PRESS'}, None), + # Lasso select + ("gpencil.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, + {"properties": [("deselect", False)]}), + ("gpencil.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, + {"properties": [("deselect", True)]}), + # In the Node Editor, lasso select needs ALT modifier too + # (as somehow CTRL+LMB drag gets taken for "cut" quite early). + # There probably isn't too much harm adding this for other editors too + # as part of standard GP editing keymap. This hotkey combo doesn't seem + # to see much use under standard scenarios? + ("gpencil.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, + {"properties": [("deselect", False)]}), + ("gpencil.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("deselect", True)]}), + ("gpencil.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True), ("toggle", True)]}), + # Whole stroke select + ("gpencil.select", {"type": params.select_mouse, "value": 'PRESS', "alt": True}, + {"properties": [("entire_strokes", True)]}), + ("gpencil.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("extend", True), ("entire_strokes", True)]}), + # Select linked + ("gpencil.select_linked", {"type": 'L', "value": 'PRESS'}, None), + ("gpencil.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), + # Select alternate + ("gpencil.select_alternate", {"type": 'L', "value": 'PRESS', "shift": True}, None), + # Select grouped + ("gpencil.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), + # Select more/less + ("gpencil.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("gpencil.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ] + + +def _grease_pencil_display(): + return [ + ("wm.context_toggle", {"type": 'Q', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'space_data.overlay.use_gpencil_edit_lines')]}), + ("wm.context_toggle", {"type": 'Q', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("data_path", 'space_data.overlay.use_gpencil_multiedit_line_only')]}), + ] + + +def km_grease_pencil_stroke_edit_mode(params): + items = [] + keymap = ( + "Grease Pencil Stroke Edit Mode", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Interpolation + ("gpencil.interpolate", {"type": 'E', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("gpencil.interpolate_sequence", {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True}, None), + # Normal select + ("gpencil.select", {"type": params.select_mouse, "value": 'PRESS'}, None), + # Selection + *_grease_pencil_selection(params), + # Duplicate and move selected points + ("gpencil.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + # Delete + op_menu("VIEW3D_MT_edit_gpencil_delete", {"type": 'X', "value": 'PRESS'}), + op_menu("VIEW3D_MT_edit_gpencil_delete", {"type": 'DEL', "value": 'PRESS'}), + ("gpencil.dissolve", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), + ("gpencil.dissolve", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None), + ("gpencil.active_frames_delete_all", {"type": 'X', "value": 'PRESS', "shift": True}, None), + ("gpencil.active_frames_delete_all", {"type": 'DEL', "value": 'PRESS', "shift": True}, None), + # Context menu + op_menu("VIEW3D_MT_gpencil_edit_specials", {"type": 'W', "value": 'PRESS'}), + # Separate + op_menu("GPENCIL_MT_separate", {"type": 'P', "value": 'PRESS'}), + # Split and joint strokes + ("gpencil.stroke_split", {"type": 'V', "value": 'PRESS'}, None), + ("gpencil.stroke_join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), + ("gpencil.stroke_join", {"type": 'J', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'JOINCOPY')]}), + # Copy + paset + ("gpencil.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("gpencil.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + # Snap + op_menu("GPENCIL_MT_snap", {"type": 'S', "value": 'PRESS', "shift": True}), + # Convert to geometry + ("gpencil.convert", {"type": 'C', "value": 'PRESS', "alt": True}, None), + # Show/hide + ("gpencil.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ("gpencil.hide", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("gpencil.hide", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("gpencil.selection_opacity_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, None), + # Display + *_grease_pencil_display(), + # Isolate layer + ("gpencil.layer_isolate", {"type": 'NUMPAD_ASTERIX', "value": 'PRESS'}, None), + # Move to layer + ("gpencil.move_to_layer", {"type": 'M', "value": 'PRESS'}, None), + # Transform tools + ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("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')]}), + # Proportonal editing + op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'ENABLED')]}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS', "alt": True}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'CONNECTED')]}), + # Add menu + ("object.gpencil_add", {"type": 'A', "value": 'PRESS', "shift": True}, None), + # Vertex group menu + op_menu("GPENCIL_MT_gpencil_vertex_group", {"type": 'G', "value": 'PRESS', "ctrl": True}), + # Toggle edit mode + ("gpencil.editmode_toggle", {"type": 'TAB', "value": 'PRESS'}, None), + # Select mode + ("gpencil.selectmode_toggle", {"type": 'ONE', "value": 'PRESS'}, + {"properties": [("mode", 0)]}), + ("gpencil.selectmode_toggle", {"type": 'TWO', "value": 'PRESS'}, + {"properties": [("mode", 1)]}), + ]) + + if params.apple: + # Apple copy + paste + items.extend([ + ("gpencil.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("gpencil.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None), + ]) + + return keymap + + +def km_grease_pencil_stroke_paint_mode(_params): + items = [] + keymap = ( + "Grease Pencil Stroke Paint Mode", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Brush strength + ("wm.radial_control", {"type": 'F', "value": 'PRESS', "shift": True}, + {"properties": [("data_path_primary", 'tool_settings.gpencil_paint.brush.gpencil_settings.pen_strength')]}), + # Brush size + ("wm.radial_control", {"type": 'F', "value": 'PRESS'}, + {"properties": [("data_path_primary", 'tool_settings.gpencil_paint.brush.size')]}), + # Brush size + ("wm.radial_control", {"type": 'F', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path_primary", 'user_preferences.edit.grease_pencil_eraser_radius')]}), + # Draw context menu + op_menu("GPENCIL_MT_gpencil_draw_specials", {"type": 'W', "value": 'PRESS'}), + # Draw delete menu + op_menu("GPENCIL_MT_gpencil_draw_delete", {"type": 'X', "value": 'PRESS'}), + ]) + + return keymap + + +def km_grease_pencil_stroke_paint_draw_brush(_params): + items = [] + keymap = ( + "Grease Pencil Stroke Paint (Draw brush)", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Draw + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("mode", 'DRAW'), ("wait_for_input", False)]}), + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'DRAW'), ("wait_for_input", False)]}), + # Draw - straight lines + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'DRAW_STRAIGHT'), ("wait_for_input", False)]}), + # Draw - poly lines + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("mode", 'DRAW_POLY'), ("wait_for_input", False)]}), + # Erase + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'ERASER'), ("wait_for_input", False)]}), + + # Tablet Mappings for Drawing ------------------ */ + # For now, only support direct drawing using the eraser, as most users using a tablet + # may still want to use that as their primary pointing device! + ("gpencil.draw", {"type": 'ERASER', "value": 'PRESS'}, + {"properties": [("mode", 'ERASER'), ("wait_for_input", False)]}), + # Selected (used by eraser) + # Box select + ("gpencil.select_box", {"type": 'B', "value": 'PRESS'}, None), + # Lasso select + ("gpencil.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, + {"properties": [("deselect", False)]}), + ]) + + return keymap + + +def km_grease_pencil_stroke_paint_erase(_params): + items = [] + keymap = ( + "Grease Pencil Stroke Paint (Erase)", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Erase + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("mode", 'ERASER'), ("wait_for_input", False)]}), + ("gpencil.draw", {"type": 'ERASER', "value": 'PRESS'}, + {"properties": [("mode", 'ERASER'), ("wait_for_input", False)]}), + # Box select (used by eraser) + ("gpencil.select_box", {"type": 'B', "value": 'PRESS'}, None), + # Lasso select + ("gpencil.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True}, + {"properties": [("deselect", False)]}), + ]) + + return keymap + + +def km_grease_pencil_stroke_paint_fill(_params): + items = [] + keymap = ( + "Grease Pencil Stroke Paint (Fill)", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Fill + ("gpencil.fill", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("on_back", False)]}), + ("gpencil.fill", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("on_back", True)]}), + # If press alternate key, the brush now it's for drawing areas + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'DRAW'), ("wait_for_input", False), ("disable_straight", True)]}), + # If press alternative key, the brush now it's for drawing lines + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'DRAW'), ("wait_for_input", False), ("disable_straight", True), ("disable_fill", True)]}), + ]) + + return keymap + + +def km_grease_pencil_stroke_sculpt_mode(params): + items = [] + keymap = ( + "Grease Pencil Stroke Sculpt Mode", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items} + ) + + items.extend([ + # Selection + *_grease_pencil_selection(params), + # Painting + ("gpencil.brush_paint", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("wait_for_input", False), ("keep_brush", True)]}), + ("gpencil.brush_paint", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("wait_for_input", False), ("keep_brush", True)]}), + # Brush strength + ("wm.radial_control", {"type": 'F', "value": 'PRESS', "shift": True}, + {"properties": [("data_path_primary", 'tool_settings.gpencil_sculpt.brush.strength')]}), + # Brush size + ("wm.radial_control", {"type": 'F', "value": 'PRESS'}, + {"properties": [("data_path_primary", 'tool_settings.gpencil_sculpt.brush.size')]}), + # Context menu + op_menu("VIEW3D_MT_gpencil_sculpt_specials", {"type": 'W', "value": 'PRESS'}), + # Display + *_grease_pencil_display(), + ]) + + return keymap + + +def km_grease_pencil_stroke_weight_mode(params): + items = [] + keymap = ( + "Grease Pencil Stroke Weight Mode", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Selection + *_grease_pencil_selection(params), + # Painting + ("gpencil.brush_paint", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("wait_for_input", False), ("keep_brush", True)]}), + ("gpencil.brush_paint", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("wait_for_input", False), ("keep_brush", True)]}), + # Brush strength + ("wm.radial_control", {"type": 'F', "value": 'PRESS', "shift": True}, + {"properties": [("data_path_primary", 'tool_settings.gpencil_sculpt.weight_brush.strength')]}), + # Brush sze + ("wm.radial_control", {"type": 'F', "value": 'PRESS'}, + {"properties": [("data_path_primary", 'tool_settings.gpencil_sculpt.weight_brush.size')]}), + # Display + *_grease_pencil_display(), + ]) + + return keymap + + +def km_face_mask(_params): + items = [] + keymap = ( + "Face Mask", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + *_template_items_select_actions("paint.face_select_all"), + ("paint.face_select_hide", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("paint.face_select_hide", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("paint.face_select_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ("paint.face_select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), + ("paint.face_select_linked_pick", {"type": 'L', "value": 'PRESS'}, + {"properties": [("deselect", False)]}), + ("paint.face_select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True}, + {"properties": [("deselect", True)]}), + ]) + + return keymap + + +def km_weight_paint_vertex_selection(_params): + items = [] + keymap = ( + "Weight Paint Vertex Selection", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + *_template_items_select_actions("paint.vert_select_all"), + ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None), + ("view3d.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True}, + {"properties": [("mode", 'ADD')]}), + ("view3d.select_lasso", {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True}, + {"properties": [("mode", 'SUB')]}), + ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_pose(params): + items = [] + keymap = ( + "Pose", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("object.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), + op_menu("VIEW3D_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}), + ("pose.hide", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("pose.hide", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("pose.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), + op_menu("VIEW3D_MT_pose_apply", {"type": 'A', "value": 'PRESS', "ctrl": True}), + ("pose.rot_clear", {"type": 'R', "value": 'PRESS', "alt": True}, None), + ("pose.loc_clear", {"type": 'G', "value": 'PRESS', "alt": True}, None), + ("pose.scale_clear", {"type": 'S', "value": 'PRESS', "alt": True}, None), + ("pose.quaternions_flip", {"type": 'F', "value": 'PRESS', "alt": True}, None), + ("pose.rotation_mode_set", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), + ("pose.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("pose.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, + {"properties": [("flipped", False)]}), + ("pose.paste", {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("flipped", True)]}), + *_template_items_select_actions("pose.select_all"), + ("pose.select_parent", {"type": 'P', "value": 'PRESS', "shift": True}, None), + ("pose.select_hierarchy", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("direction", 'PARENT'), ("extend", False)]}), + ("pose.select_hierarchy", {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'PARENT'), ("extend", True)]}), + ("pose.select_hierarchy", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("direction", 'CHILD'), ("extend", False)]}), + ("pose.select_hierarchy", {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'CHILD'), ("extend", True)]}), + ("pose.select_linked", {"type": 'L', "value": 'PRESS'}, None), + ("pose.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), + ("pose.select_mirror", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("pose.constraint_add_with_targets", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("pose.constraints_clear", {"type": 'C', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("pose.ik_add", {"type": 'I', "value": 'PRESS', "shift": True}, None), + ("pose.ik_clear", {"type": 'I', "value": 'PRESS', "ctrl": True, "alt": True}, None), + op_menu("VIEW3D_MT_pose_group", {"type": 'G', "value": 'PRESS', "ctrl": True}), + op_menu("VIEW3D_MT_bone_options_toggle", {"type": 'W', "value": 'PRESS', "shift": True}), + op_menu("VIEW3D_MT_bone_options_enable", {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True}), + op_menu("VIEW3D_MT_bone_options_disable", {"type": 'W', "value": 'PRESS', "alt": True}), + ("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None), + ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None), + ("pose.bone_layers", {"type": 'M', "value": 'PRESS'}, None), + ("wm.context_toggle", {"type": 'Z', "value": 'PRESS'}, + {"properties": [("data_path", 'space_data.overlay.show_bone_select')]}), + ("transform.transform", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("mode", 'BONE_SIZE')]}), + ("anim.keyframe_insert_menu", {"type": 'I', "value": 'PRESS'}, None), + ("anim.keyframe_delete_v3d", {"type": 'I', "value": 'PRESS', "alt": True}, None), + ("anim.keying_set_active_set", {"type": 'I', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), + ("poselib.browse_interactive", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), + ("poselib.pose_add", {"type": 'L', "value": 'PRESS', "shift": True}, None), + ("poselib.pose_remove", {"type": 'L', "value": 'PRESS', "alt": True}, None), + ("poselib.pose_rename", {"type": 'L', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("pose.push", {"type": 'E', "value": 'PRESS', "ctrl": True}, None), + ("pose.relax", {"type": 'E', "value": 'PRESS', "alt": True}, None), + ("pose.breakdown", {"type": 'E', "value": 'PRESS', "shift": True}, None), + op_menu("VIEW3D_MT_pose_specials", {"type": 'W', "value": 'PRESS'}), + op_menu("VIEW3D_MT_pose_propagate", {"type": 'P', "value": 'PRESS', "alt": True}), + ]) + + if params.apple: + items.extend([ + ("pose.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("pose.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, + {"properties": [("flipped", False)]}), + ("pose.paste", {"type": 'V', "value": 'PRESS', "shift": True, "oskey": True}, + {"properties": [("flipped", True)]}), + ]) + + return keymap + + +def km_object_mode(params): + items = [] + keymap = ( + "Object Mode", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + ("wm.context_toggle", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.use_proportional_edit_objects')]}), + *_template_items_select_actions("object.select_all"), + ("object.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("object.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("object.select_linked", {"type": 'L', "value": 'PRESS', "shift": True}, None), + ("object.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), + ("object.select_hierarchy", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("direction", 'PARENT'), ("extend", False)]}), + ("object.select_hierarchy", {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'PARENT'), ("extend", True)]}), + ("object.select_hierarchy", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("direction", 'CHILD'), ("extend", False)]}), + ("object.select_hierarchy", {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'CHILD'), ("extend", True)]}), + ("object.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), + ("object.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None), + ("object.location_clear", {"type": 'G', "value": 'PRESS', "alt": True}, + {"properties": [("clear_delta", False)]}), + ("object.rotation_clear", {"type": 'R', "value": 'PRESS', "alt": True}, + {"properties": [("clear_delta", False)]}), + ("object.scale_clear", {"type": 'S', "value": 'PRESS', "alt": True}, + {"properties": [("clear_delta", False)]}), + ("object.delete", {"type": 'X', "value": 'PRESS'}, + {"properties": [("use_global", False)]}), + ("object.delete", {"type": 'X', "value": 'PRESS', "shift": True}, + {"properties": [("use_global", True)]}), + ("object.delete", {"type": 'DEL', "value": 'PRESS'}, + {"properties": [("use_global", False)]}), + ("object.delete", {"type": 'DEL', "value": 'PRESS', "shift": True}, + {"properties": [("use_global", True)]}), + op_menu("VIEW3D_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}), + op_menu("VIEW3D_MT_object_apply", {"type": 'A', "value": 'PRESS', "ctrl": True}), + op_menu("VIEW3D_MT_make_links", {"type": 'L', "value": 'PRESS', "ctrl": True}), + ("object.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + ("object.duplicate_move_linked", {"type": 'D', "value": 'PRESS', "alt": True}, None), + ("object.join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None), + ("anim.keyframe_insert_menu", {"type": 'I', "value": 'PRESS'}, None), + ("anim.keyframe_delete_v3d", {"type": 'I', "value": 'PRESS', "alt": True}, None), + ("anim.keying_set_active_set", {"type": 'I', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), + ("collection.create", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), + ("collection.objects_remove", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("collection.objects_remove_all", {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), + ("collection.objects_add_active", {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("collection.objects_remove_active", {"type": 'G', "value": 'PRESS', "shift": True, "alt": True}, None), + op_menu("VIEW3D_MT_object_specials", {"type": 'W', "value": 'PRESS'}), + # TODO: expand into loop. + ("object.subdivision_set", {"type": 'ZERO', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 0)]}), + ("object.subdivision_set", {"type": 'ONE', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 1)]}), + ("object.subdivision_set", {"type": 'TWO', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 2)]}), + ("object.subdivision_set", {"type": 'THREE', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 3)]}), + ("object.subdivision_set", {"type": 'FOUR', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 4)]}), + ("object.subdivision_set", {"type": 'FIVE', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 5)]}), + ("object.move_to_collection", {"type": 'M', "value": 'PRESS'}, None), + ("object.link_to_collection", {"type": 'M', "value": 'PRESS', "shift": True}, None), + ("object.hide_view_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ("object.hide_view_set", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("object.hide_view_set", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("object.hide_collection", {"type": 'H', "value": 'PRESS', "ctrl": True}, None), + # TODO: expand into loop. + ("object.hide_collection", {"type": 'ZERO', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 10)]}), + ("object.hide_collection", {"type": 'ONE', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 1)]}), + ("object.hide_collection", {"type": 'TWO', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 2)]}), + ("object.hide_collection", {"type": 'THREE', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 3)]}), + ("object.hide_collection", {"type": 'FOUR', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 4)]}), + ("object.hide_collection", {"type": 'FIVE', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 5)]}), + ("object.hide_collection", {"type": 'SIX', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 6)]}), + ("object.hide_collection", {"type": 'SEVEN', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 7)]}), + ("object.hide_collection", {"type": 'EIGHT', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 8)]}), + ("object.hide_collection", {"type": 'NINE', "value": 'PRESS', "any": True}, + {"properties": [("collection_index", 9)]}), + ]) + + if params.legacy: + items.extend([ + ("object.select_mirror", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("object.parent_no_inverse_set", {"type": 'P', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("object.track_set", {"type": 'T', "value": 'PRESS', "ctrl": True}, None), + ("object.track_clear", {"type": 'T', "value": 'PRESS', "alt": True}, None), + ("object.constraint_add_with_targets", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("object.constraints_clear", {"type": 'C', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("object.origin_clear", {"type": 'O', "value": 'PRESS', "alt": True}, None), + ("object.duplicates_make_real", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, None), + op_menu("VIEW3D_MT_make_single_user", {"type": 'U', "value": 'PRESS'}), + ("object.convert", {"type": 'C', "value": 'PRESS', "alt": True}, None), + ("object.proxy_make", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("object.make_local", {"type": 'L', "value": 'PRESS'}, None), + ("object.data_transfer", {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ]) + + return keymap + + +def km_paint_curve(params): + items = [] + keymap = ( + "Paint Curve", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("paintcurve.add_point_slide", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True}, None), + ("paintcurve.select", {"type": params.select_mouse, "value": 'PRESS'}, None), + ("paintcurve.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("extend", True)]}), + ("paintcurve.slide", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("paintcurve.slide", {"type": params.action_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("align", True)]}), + ("paintcurve.select", {"type": 'A', "value": 'PRESS'}, + {"properties": [("toggle", True)]}), + ("paintcurve.cursor", {"type": params.action_mouse, "value": 'PRESS'}, None), + ("paintcurve.delete_point", {"type": 'X', "value": 'PRESS'}, None), + ("paintcurve.delete_point", {"type": 'DEL', "value": 'PRESS'}, None), + ("paintcurve.draw", {"type": 'RET', "value": 'PRESS'}, None), + ("paintcurve.draw", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_curve(params): + items = [] + keymap = ( + "Curve", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + op_menu("VIEW3D_MT_curve_add", {"type": 'A', "value": 'PRESS', "shift": True}), + ("curve.handle_type_set", {"type": 'V', "value": 'PRESS'}, None), + ("curve.vertex_add", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True}, None), + ("curve.draw", {"type": params.action_mouse, "value": 'PRESS', "shift": True}, + {"properties": [("wait_for_input", False)]}), + ("curve.draw", {"type": 'PEN', "value": 'PRESS', "shift": True}, + {"properties": [("wait_for_input", False)]}), + *_template_items_select_actions("curve.select_all"), + ("curve.select_row", {"type": 'R', "value": 'PRESS', "shift": True}, None), + ("curve.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("curve.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("curve.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), + ("curve.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None), + ("curve.select_linked_pick", {"type": 'L', "value": 'PRESS'}, + {"properties": [("deselect", False)]}), + ("curve.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True}, + {"properties": [("deselect", True)]}), + ("curve.shortest_path_pick", {"type": params.select_mouse, "value": 'CLICK', "ctrl": True}, None), + ("curve.separate", {"type": 'P', "value": 'PRESS'}, None), + ("curve.split", {"type": 'Y', "value": 'PRESS'}, None), + ("curve.extrude_move", {"type": 'E', "value": 'PRESS'}, None), + ("curve.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + ("curve.make_segment", {"type": 'F', "value": 'PRESS'}, None), + ("curve.cyclic_toggle", {"type": 'C', "value": 'PRESS', "alt": True}, None), + op_menu("VIEW3D_MT_edit_curve_delete", {"type": 'X', "value": 'PRESS'}), + op_menu("VIEW3D_MT_edit_curve_delete", {"type": 'DEL', "value": 'PRESS'}), + ("curve.dissolve_verts", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), + ("curve.dissolve_verts", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None), + ("curve.tilt_clear", {"type": 'T', "value": 'PRESS', "alt": True}, None), + ("transform.tilt", {"type": 'T', "value": 'PRESS', "ctrl": True}, None), + ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'CURVE_SHRINKFATTEN')]}), + ("curve.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ("curve.hide", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("curve.hide", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("curve.normals_make_consistent", {"type": 'N', "value": 'PRESS', "ctrl" if params.legacy else "shift": True}, None), + ("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), + op_menu("VIEW3D_MT_edit_curve_specials", {"type": 'W', "value": 'PRESS'}), + op_menu("VIEW3D_MT_hook", {"type": 'H', "value": 'PRESS', "ctrl": True}), + op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'ENABLED')]}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS', "alt": True}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'CONNECTED')]}), + ]) + + return keymap + +# Radial control setup helpers, this operator has a lot of properties. + + +def radial_control_properties(paint, prop, secondary_prop, secondary_rotation=False, color=False, zoom=False): + brush_path = 'tool_settings.' + paint + '.brush' + unified_path = 'tool_settings.unified_paint_settings' + rotation = 'mask_texture_slot.angle' if secondary_rotation else 'texture_slot.angle' + return { + "properties": [ + ("data_path_primary", brush_path + '.' + prop), + ("data_path_secondary", unified_path + '.' + prop if secondary_prop else ''), + ("use_secondary", unified_path + '.' + secondary_prop if secondary_prop else ''), + ("rotation_path", brush_path + '.' + rotation), + ("color_path", brush_path + '.cursor_color_add'), + ("fill_color_path", brush_path + '.color' if color else ''), + ("fill_color_override_path", unified_path + '.color' if color else ''), + ("fill_color_override_test_path", unified_path + '.use_unified_color' if color else ''), + ("zoom_path", 'space_data.zoom' if zoom else ''), + ("image_id", brush_path + ''), + ("secondary_tex", secondary_rotation), + ], + } + +# Radial controls for the paint and sculpt modes. + + +def _template_paint_radial_control(paint, rotation=False, secondary_rotation=False, color=False, zoom=False): + items = [] + + items.extend([ + ("wm.radial_control", {"type": 'F', "value": 'PRESS'}, + radial_control_properties(paint, 'size', 'use_unified_size', secondary_rotation=secondary_rotation, color=color, zoom=zoom)), + ("wm.radial_control", {"type": 'F', "value": 'PRESS', "shift": True}, + radial_control_properties(paint, 'strength', 'use_unified_strength', secondary_rotation=secondary_rotation, color=color)), + ]) + + if rotation: + items.extend([ + ("wm.radial_control", {"type": 'F', "value": 'PRESS', "ctrl": True}, + radial_control_properties(paint, 'texture_slot.angle', None, color=color)), + ]) + + if secondary_rotation: + items.extend([ + ("wm.radial_control", {"type": 'F', "value": 'PRESS', "ctrl": True, "alt": True}, + radial_control_properties(paint, 'mask_texture_slot.angle', None, secondary_rotation=secondary_rotation, color=color)), + ]) + + return items + + +def km_image_paint(_params): + items = [] + keymap = ( + "Image Paint", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("paint.image_paint", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("mode", 'NORMAL')]}), + ("paint.image_paint", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'INVERT')]}), + ("paint.brush_colors_flip", {"type": 'X', "value": 'PRESS'}, None), + ("paint.grab_clone", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), + ("paint.sample_color", {"type": 'S', "value": 'PRESS'}, None), + ("brush.scale_size", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 0.9)]}), + ("brush.scale_size", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 1.0 / 0.9)]}), + *_template_paint_radial_control("image_paint", color=True, zoom=True, rotation=True, secondary_rotation=True), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, + {"properties": [("mode", 'TRANSLATION')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'SCALE')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'ROTATION')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'TRANSLATION'), ("texmode", 'SECONDARY')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("mode", 'SCALE'), ("texmode", 'SECONDARY')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("mode", 'ROTATION'), ("texmode", 'SECONDARY')]}), + ("wm.context_toggle", {"type": 'M', "value": 'PRESS'}, + {"properties": [("data_path", 'image_paint_object.data.use_paint_mask')]}), + ("wm.context_toggle", {"type": 'S', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'tool_settings.image_paint.brush.use_smooth_stroke')]}), + 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')]}), + ]) + + return keymap + + +def km_vertex_paint(_params): + items = [] + keymap = ( + "Vertex Paint", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("paint.vertex_paint", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("paint.brush_colors_flip", {"type": 'X', "value": 'PRESS'}, None), + ("paint.sample_color", {"type": 'S', "value": 'PRESS'}, None), + ("paint.vertex_color_set", {"type": 'K', "value": 'PRESS', "shift": True}, None), + ("brush.scale_size", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 0.9)]}), + ("brush.scale_size", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 1.0 / 0.9)]}), + *_template_paint_radial_control("vertex_paint", color=True, rotation=True), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, + {"properties": [("mode", 'TRANSLATION')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'SCALE')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'ROTATION')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'TRANSLATION'), ("texmode", 'SECONDARY')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("mode", 'SCALE'), ("texmode", 'SECONDARY')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("mode", 'ROTATION'), ("texmode", 'SECONDARY')]}), + ("wm.context_toggle", {"type": 'M', "value": 'PRESS'}, + {"properties": [("data_path", 'vertex_paint_object.data.use_paint_mask')]}), + ("wm.context_toggle", {"type": 'S', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'tool_settings.vertex_paint.brush.use_smooth_stroke')]}), + 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')]}), + ]) + + return keymap + + +def km_weight_paint(params): + items = [] + keymap = ( + "Weight Paint", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("paint.weight_paint", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("paint.weight_sample", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True}, None), + ("paint.weight_sample_group", {"type": params.action_mouse, "value": 'PRESS', "shift": True}, None), + ("paint.weight_gradient", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, + {"properties": [("type", 'LINEAR')]}), + ("paint.weight_gradient", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("type", 'RADIAL')]}), + ("paint.weight_set", {"type": 'K', "value": 'PRESS', "shift": True}, None), + ("brush.scale_size", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 0.9)]}), + ("brush.scale_size", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 1.0 / 0.9)]}), + *_template_paint_radial_control("weight_paint"), + ("wm.radial_control", {"type": 'W', "value": 'PRESS'}, + radial_control_properties("weight_paint", 'weight', 'use_unified_weight')), + ("wm.context_menu_enum", {"type": 'E', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.vertex_paint.brush.stroke_method')]}), + ("wm.context_toggle", {"type": 'M', "value": 'PRESS'}, + {"properties": [("data_path", 'weight_paint_object.data.use_paint_mask')]}), + ("wm.context_toggle", {"type": 'V', "value": 'PRESS'}, + {"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')]}), + ]) + + return keymap + + +def km_sculpt(_params): + items = [] + keymap = ( + "Sculpt", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Brush strokes + ("sculpt.brush_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("mode", 'NORMAL')]}), + ("sculpt.brush_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'INVERT')]}), + ("sculpt.brush_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'SMOOTH')]}), + # Partial Visibility Show/hide + ("paint.hide_show", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("action", 'SHOW'), ("area", 'INSIDE')]}), + ("paint.hide_show", {"type": 'H', "value": 'PRESS'}, + {"properties": [("action", 'HIDE'), ("area", 'INSIDE')]}), + ("paint.hide_show", {"type": 'H', "value": 'PRESS', "alt": True}, + {"properties": [("action", 'SHOW'), ("area", 'ALL')]}), + # Subdivision levels + # TODO: expand into loop. + ("object.subdivision_set", {"type": 'ZERO', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 0)]}), + ("object.subdivision_set", {"type": 'ONE', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 1)]}), + ("object.subdivision_set", {"type": 'TWO', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 2)]}), + ("object.subdivision_set", {"type": 'THREE', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 3)]}), + ("object.subdivision_set", {"type": 'FOUR', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 4)]}), + ("object.subdivision_set", {"type": 'FIVE', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 5)]}), + ("object.subdivision_set", {"type": 'PAGE_UP', "value": 'PRESS'}, + {"properties": [("level", 1), ("relative", True)]}), + ("object.subdivision_set", {"type": 'PAGE_DOWN', "value": 'PRESS'}, + {"properties": [("level", -1), ("relative", True)]}), + # Mask + ("paint.mask_flood_fill", {"type": 'M', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'VALUE'), ("value", 0.0)]}), + ("paint.mask_flood_fill", {"type": 'I', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'INVERT')]}), + ("paint.mask_lasso_gesture", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("wm.context_toggle", {"type": 'M', "value": 'PRESS', "ctrl": True}, + {"properties": [("data_path", 'scene.tool_settings.sculpt.show_mask')]}), + # Dynamic topology + ("sculpt.dynamic_topology_toggle", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), + ("sculpt.set_detail_size", {"type": 'D', "value": 'PRESS', "shift": True}, None), + # Brush properties + ("brush.scale_size", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 0.9)]}), + ("brush.scale_size", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("scalar", 1.0 / 0.9)]}), + *_template_paint_radial_control("sculpt", rotation=True), + # Stencil + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, + {"properties": [("mode", 'TRANSLATION')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'SCALE')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'ROTATION')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'TRANSLATION'), ("texmode", 'SECONDARY')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("mode", 'SCALE'), ("texmode", 'SECONDARY')]}), + ("brush.stencil_control", {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("mode", 'ROTATION'), ("texmode", 'SECONDARY')]}), + # Tools + ("paint.brush_select", {"type": 'X', "value": 'PRESS'}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'DRAW')]}), + ("paint.brush_select", {"type": 'S', "value": 'PRESS'}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'SMOOTH')]}), + ("paint.brush_select", {"type": 'P', "value": 'PRESS'}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'PINCH')]}), + ("paint.brush_select", {"type": 'I', "value": 'PRESS'}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'INFLATE')]}), + ("paint.brush_select", {"type": 'G', "value": 'PRESS'}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'GRAB')]}), + ("paint.brush_select", {"type": 'L', "value": 'PRESS'}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'LAYER')]}), + ("paint.brush_select", {"type": 'T', "value": 'PRESS', "shift": True}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'FLATTEN')]}), + ("paint.brush_select", {"type": 'C', "value": 'PRESS'}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'CLAY')]}), + ("paint.brush_select", {"type": 'C', "value": 'PRESS', "shift": True}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'CREASE')]}), + ("paint.brush_select", {"type": 'K', "value": 'PRESS'}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'SNAKE_HOOK')]}), + ("paint.brush_select", {"type": 'M', "value": 'PRESS'}, + {"properties": [("paint_mode", 'SCULPT'), ("sculpt_tool", 'MASK'), ("toggle", True), ("create_missing", True)]}), + # Menus + ("wm.context_menu_enum", {"type": 'E', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.sculpt.brush.stroke_method')]}), + ("wm.context_toggle", {"type": 'S', "value": 'PRESS', "shift": True}, + {"properties": [("data_path", 'tool_settings.sculpt.brush.use_smooth_stroke')]}), + op_menu("VIEW3D_MT_angle_control", {"type": 'R', "value": 'PRESS'}), + ]) + + return keymap + + +# Mesh edit mode. +def km_mesh(params): + items = [] + keymap = ( + "Mesh", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Tools. + ("mesh.loopcut_slide", {"type": 'R', "value": 'PRESS', "ctrl": True}, + {"properties": [("TRANSFORM_OT_edge_slide", [("release_confirm", False), ],)]}), + ("mesh.offset_edge_loops_slide", {"type": 'R', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("TRANSFORM_OT_edge_slide", [("release_confirm", False), ],)]}), + ("mesh.inset", {"type": 'I', "value": 'PRESS'}, None), + ("mesh.bevel", {"type": 'B', "value": 'PRESS', "ctrl": True}, + {"properties": [("vertex_only", False)]}), + ("mesh.bevel", {"type": 'B', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("vertex_only", True)]}), + # Selection modes. + # TODO: expand into loop. + ("mesh.select_mode", {"type": 'ONE', "value": 'PRESS'}, + {"properties": [("type", 'VERT')]}), + ("mesh.select_mode", {"type": 'TWO', "value": 'PRESS'}, + {"properties": [("type", 'EDGE')]}), + ("mesh.select_mode", {"type": 'THREE', "value": 'PRESS'}, + {"properties": [("type", 'FACE')]}), + ("mesh.select_mode", {"type": 'ONE', "value": 'PRESS', "shift": True}, + {"properties": [("use_extend", True), ("type", 'VERT')]}), + ("mesh.select_mode", {"type": 'TWO', "value": 'PRESS', "shift": True}, + {"properties": [("use_extend", True), ("type", 'EDGE')]}), + ("mesh.select_mode", {"type": 'THREE', "value": 'PRESS', "shift": True}, + {"properties": [("use_extend", True), ("type", 'FACE')]}), + ("mesh.select_mode", {"type": 'ONE', "value": 'PRESS', "ctrl": True}, + {"properties": [("use_expand", True), ("type", 'VERT')]}), + ("mesh.select_mode", {"type": 'TWO', "value": 'PRESS', "ctrl": True}, + {"properties": [("use_expand", True), ("type", 'EDGE')]}), + ("mesh.select_mode", {"type": 'THREE', "value": 'PRESS', "ctrl": True}, + {"properties": [("use_expand", True), ("type", 'FACE')]}), + ("mesh.select_mode", {"type": 'ONE', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("use_extend", True), ("use_expand", True), ("type", 'VERT')]}), + ("mesh.select_mode", {"type": 'TWO', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("use_extend", True), ("use_expand", True), ("type", 'EDGE')]}), + ("mesh.select_mode", {"type": 'THREE', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("use_extend", True), ("use_expand", True), ("type", 'FACE')]}), + # Selection. + ("mesh.loop_select", {"type": params.select_mouse, "value": 'PRESS', "alt": True}, + {"properties": [("extend", False), ("deselect", False), ("toggle", False)]}), + ("mesh.loop_select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True}, + {"properties": [("extend", False), ("deselect", False), ("toggle", True)]}), + ("mesh.edgering_select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("extend", False), ("deselect", False), ("toggle", False)]}), + ("mesh.edgering_select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, + {"properties": [("extend", False), ("deselect", False), ("toggle", True)]}), + ("mesh.shortest_path_pick", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, + {"properties": [("use_fill", False)]}), + ("mesh.shortest_path_pick", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("use_fill", True)]}), + *_template_items_select_actions("mesh.select_all"), + ("mesh.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("mesh.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("mesh.select_next_item", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("mesh.select_prev_item", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True, "ctrl": True}, None), + ("mesh.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), + ("mesh.select_linked_pick", {"type": 'L', "value": 'PRESS'}, + {"properties": [("deselect", False)]}), + ("mesh.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True}, + {"properties": [("deselect", True)]}), + ("mesh.select_mirror", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None), + op_menu("VIEW3D_MT_edit_mesh_select_similar", {"type": 'G', "value": 'PRESS', "shift": True}), + # Hide/reveal. + ("mesh.hide", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("mesh.hide", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("mesh.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), + # Tools. + ("mesh.normals_make_consistent", {"type": 'N', "value": 'PRESS', "ctrl" if params.legacy else "shift": True}, + {"properties": [("inside", False)]}), + ("mesh.normals_make_consistent", {"type": 'N', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("inside", True)]}), + ("view3d.edit_mesh_extrude_move_normal", {"type": 'E', "value": 'PRESS'}, None), + op_menu("VIEW3D_MT_edit_mesh_extrude", {"type": 'E', "value": 'PRESS', "alt": True}), + ("transform.edge_crease", {"type": 'E', "value": 'PRESS', "shift": True}, None), + ("mesh.fill", {"type": 'F', "value": 'PRESS', "alt": True}, None), + ("mesh.quads_convert_to_tris", {"type": 'T', "value": 'PRESS', "ctrl": True}, + {"properties": [("quad_method", 'BEAUTY'), ("ngon_method", 'BEAUTY')]}), + ("mesh.quads_convert_to_tris", {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("quad_method", 'FIXED'), ("ngon_method", 'CLIP')]}), + ("mesh.tris_convert_to_quads", {"type": 'J', "value": 'PRESS', "alt": True}, None), + ("mesh.rip_move", {"type": 'V', "value": 'PRESS'}, + {"properties": [("MESH_OT_rip", [("use_fill", False), ],)]}), + ("mesh.rip_move", {"type": 'V', "value": 'PRESS', "alt": True}, + {"properties": [("MESH_OT_rip", [("use_fill", True), ],)]}), + ("mesh.rip_edge_move", {"type": 'D', "value": 'PRESS', "alt": True}, None), + ("mesh.merge", {"type": 'M', "value": 'PRESS', "alt": True}, None), + ("transform.shrink_fatten", {"type": 'S', "value": 'PRESS', "alt": True}, None), + ("mesh.edge_face_add", {"type": 'F', "value": 'PRESS'}, None), + ("mesh.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + op_menu("VIEW3D_MT_mesh_add", {"type": 'A', "value": 'PRESS', "shift": True}), + ("mesh.separate", {"type": 'P', "value": 'PRESS'}, None), + ("mesh.split", {"type": 'Y', "value": 'PRESS'}, None), + ("mesh.vert_connect_path", {"type": 'J', "value": 'PRESS'}, None), + ("mesh.point_normals", {"type": 'L', "value": 'PRESS', "alt": True}, None), + ("transform.vert_slide", {"type": 'V', "value": 'PRESS', "shift": True}, None), + ("mesh.dupli_extrude_cursor", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True}, + {"properties": [("rotate_source", True)]}), + ("mesh.dupli_extrude_cursor", {"type": params.action_mouse, "value": 'CLICK', "shift": True, "ctrl": True}, + {"properties": [("rotate_source", False)]}), + op_menu("VIEW3D_MT_edit_mesh_delete", {"type": 'X', "value": 'PRESS'}), + op_menu("VIEW3D_MT_edit_mesh_delete", {"type": 'DEL', "value": 'PRESS'}), + ("mesh.dissolve_mode", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), + ("mesh.dissolve_mode", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None), + ("mesh.knife_tool", {"type": 'K', "value": 'PRESS'}, + {"properties": [("use_occlude_geometry", True), ("only_selected", False)]}), + ("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), + # Menus. + op_menu("VIEW3D_MT_edit_mesh_specials", {"type": 'W', "value": 'PRESS'}), + op_menu("VIEW3D_MT_edit_mesh_faces", {"type": 'F', "value": 'PRESS', "ctrl": True}), + op_menu("VIEW3D_MT_edit_mesh_edges", {"type": 'E', "value": 'PRESS', "ctrl": True}), + op_menu("VIEW3D_MT_edit_mesh_vertices", {"type": 'V', "value": 'PRESS', "ctrl": True}), + op_menu("VIEW3D_MT_hook", {"type": 'H', "value": 'PRESS', "ctrl": True}), + op_menu("VIEW3D_MT_uv_map", {"type": 'U', "value": 'PRESS'}), + op_menu("VIEW3D_MT_vertex_group", {"type": 'G', "value": 'PRESS', "ctrl": True}), + ("object.vertex_group_remove_from", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None), + op_menu("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'ENABLED')]}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS', "alt": True}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'CONNECTED')]}), + ]) + + if params.legacy: + items.extend([ + ("mesh.poke", {"type": 'P', "value": 'PRESS', "alt": True}, None), + ("mesh.select_non_manifold", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), + ("mesh.faces_select_linked_flat", {"type": 'F', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), + ("mesh.spin", {"type": 'R', "value": 'PRESS', "alt": True}, None), + ("mesh.beautify_fill", {"type": 'F', "value": 'PRESS', "shift": True, "alt": True}, None), + ("mesh.knife_tool", {"type": 'K', "value": 'PRESS', "shift": True}, + {"properties": [("use_occlude_geometry", False), ("only_selected", True)]}), + # TODO: expand into loop. + ("object.subdivision_set", {"type": 'ZERO', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 0)]}), + ("object.subdivision_set", {"type": 'ONE', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 1)]}), + ("object.subdivision_set", {"type": 'TWO', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 2)]}), + ("object.subdivision_set", {"type": 'THREE', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 3)]}), + ("object.subdivision_set", {"type": 'FOUR', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 4)]}), + ("object.subdivision_set", {"type": 'FIVE', "value": 'PRESS', "ctrl": True}, + {"properties": [("level", 5)]}), + ]) + + return keymap + + +# Armature edit mode +def km_armature(params): + items = [] + keymap = ( + "Armature", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + # Hide/reveal. + ("armature.hide", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("armature.hide", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("armature.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), + # Align & roll. + ("armature.align", {"type": 'A', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("armature.calculate_roll", {"type": 'N', "value": 'PRESS', "ctrl" if params.legacy else "shift": True}, None), + ("armature.roll_clear", {"type": 'R', "value": 'PRESS', "alt": True}, None), + ("armature.switch_direction", {"type": 'F', "value": 'PRESS', "alt": True}, None), + # Add. + ("armature.bone_primitive_add", {"type": 'A', "value": 'PRESS', "shift": True}, None), + # Parenting. + ("armature.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), + ("armature.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None), + # Selection. + *_template_items_select_actions("armature.select_all"), + ("armature.select_mirror", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("extend", False)]}), + ("armature.select_hierarchy", {"type": 'LEFT_BRACKET', "value": 'PRESS'}, + {"properties": [("direction", 'PARENT'), ("extend", False)]}), + ("armature.select_hierarchy", {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'PARENT'), ("extend", True)]}), + ("armature.select_hierarchy", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, + {"properties": [("direction", 'CHILD'), ("extend", False)]}), + ("armature.select_hierarchy", {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True}, + {"properties": [("direction", 'CHILD'), ("extend", True)]}), + ("armature.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("armature.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("armature.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None), + ("armature.select_linked", {"type": 'L', "value": 'PRESS'}, None), + ("armature.shortest_path_pick", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True}, None), + # Editing. + op_menu("VIEW3D_MT_edit_armature_delete", {"type": 'X', "value": 'PRESS'}), + op_menu("VIEW3D_MT_edit_armature_delete", {"type": 'DEL', "value": 'PRESS'}), + ("armature.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + ("armature.dissolve", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), + ("armature.dissolve", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None), + ("armature.extrude_move", {"type": 'E', "value": 'PRESS'}, None), + ("armature.extrude_forked", {"type": 'E', "value": 'PRESS', "shift": True}, None), + ("armature.click_extrude", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True}, None), + ("armature.fill", {"type": 'F', "value": 'PRESS'}, None), + ("armature.merge", {"type": 'M', "value": 'PRESS', "alt": True}, None), + ("armature.split", {"type": 'Y', "value": 'PRESS'}, None), + ("armature.separate", {"type": 'P', "value": 'PRESS'}, None), + # Set flags. + op_menu("VIEW3D_MT_bone_options_toggle", {"type": 'W', "value": 'PRESS', "shift": True}), + op_menu("VIEW3D_MT_bone_options_enable", {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True}), + op_menu("VIEW3D_MT_bone_options_disable", {"type": 'W', "value": 'PRESS', "alt": True}), + # Armature/bone layers. + ("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None), + ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None), + ("armature.bone_layers", {"type": 'M', "value": 'PRESS'}, None), + # Special transforms. + ("transform.transform", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, + {"properties": [("mode", 'BONE_SIZE')]}), + ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'BONE_ENVELOPE')]}), + ("transform.transform", {"type": 'R', "value": 'PRESS', "ctrl": True}, + {"properties": [("mode", 'BONE_ROLL')]}), + # Menus. + op_menu("VIEW3D_MT_armature_specials", {"type": 'W', "value": 'PRESS'}), + ]) + + return keymap + + +# Metaball edit mode. +def km_metaball(_params): + items = [] + keymap = ( + "Metaball", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("object.metaball_add", {"type": 'A', "value": 'PRESS', "shift": True}, None), + ("mball.reveal_metaelems", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ("mball.hide_metaelems", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("mball.hide_metaelems", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("mball.delete_metaelems", {"type": 'X', "value": 'PRESS'}, None), + ("mball.delete_metaelems", {"type": 'DEL', "value": 'PRESS'}, None), + ("mball.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), + *_template_items_select_actions("mball.select_all"), + ("mball.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None), + op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'ENABLED')]}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS', "alt": True}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'CONNECTED')]}), + ]) + + return keymap + + +# Lattice edit mode. +def km_lattice(_params): + items = [] + keymap = ( + "Lattice", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + *_template_items_select_actions("lattice.select_all"), + ("lattice.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("lattice.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None), + ("lattice.flip", {"type": 'F', "value": 'PRESS', "alt": True}, None), + op_menu("VIEW3D_MT_hook", {"type": 'H', "value": 'PRESS', "ctrl": True}), + op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'ENABLED')]}), + ]) + + return keymap + + +# Particle edit mode. +def km_particle(_params): + items = [] + keymap = ( + "Particle", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + *_template_items_select_actions("particle.select_all"), + ("particle.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None), + ("particle.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None), + ("particle.select_linked", {"type": 'L', "value": 'PRESS'}, + {"properties": [("deselect", False)]}), + ("particle.select_linked", {"type": 'L', "value": 'PRESS', "shift": True}, + {"properties": [("deselect", True)]}), + ("particle.delete", {"type": 'X', "value": 'PRESS'}, None), + ("particle.delete", {"type": 'DEL', "value": 'PRESS'}, None), + ("particle.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), + ("particle.hide", {"type": 'H', "value": 'PRESS'}, + {"properties": [("unselected", False)]}), + ("particle.hide", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("unselected", True)]}), + ("particle.brush_edit", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("particle.brush_edit", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None), + ("wm.radial_control", {"type": 'F', "value": 'PRESS'}, + {"properties": [("data_path_primary", 'tool_settings.particle_edit.brush.size')]}), + ("wm.radial_control", {"type": 'F', "value": 'PRESS', "shift": True}, + {"properties": [("data_path_primary", 'tool_settings.particle_edit.brush.strength')]}), + op_menu("VIEW3D_MT_particle_specials", {"type": 'W', "value": 'PRESS'}), + ("particle.weight_set", {"type": 'K', "value": 'PRESS', "shift": True}, None), + op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), + ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS'}, + {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'ENABLED')]}), + ]) + + return keymap + + +# Text edit mode. +def km_font(params): + items = [] + keymap = ( + "Font", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("font.style_toggle", {"type": 'B', "value": 'PRESS', "ctrl": True}, + {"properties": [("style", 'BOLD')]}), + ("font.style_toggle", {"type": 'I', "value": 'PRESS', "ctrl": True}, + {"properties": [("style", 'ITALIC')]}), + ("font.style_toggle", {"type": 'U', "value": 'PRESS', "ctrl": True}, + {"properties": [("style", 'UNDERLINE')]}), + ("font.style_toggle", {"type": 'P', "value": 'PRESS', "ctrl": True}, + {"properties": [("style", 'SMALL_CAPS')]}), + ("font.delete", {"type": 'DEL', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_OR_SELECTION')]}), + ("font.delete", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("font.delete", {"type": 'BACK_SPACE', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_OR_SELECTION')]}), + ("font.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PREVIOUS_OR_SELECTION')]}), + ("font.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("font.move", {"type": 'HOME', "value": 'PRESS'}, + {"properties": [("type", 'LINE_BEGIN')]}), + ("font.move", {"type": 'END', "value": 'PRESS'}, + {"properties": [("type", 'LINE_END')]}), + ("font.move", {"type": 'LEFT_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_CHARACTER')]}), + ("font.move", {"type": 'RIGHT_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_CHARACTER')]}), + ("font.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("font.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("font.move", {"type": 'UP_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_LINE')]}), + ("font.move", {"type": 'DOWN_ARROW', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_LINE')]}), + ("font.move", {"type": 'PAGE_UP', "value": 'PRESS'}, + {"properties": [("type", 'PREVIOUS_PAGE')]}), + ("font.move", {"type": 'PAGE_DOWN', "value": 'PRESS'}, + {"properties": [("type", 'NEXT_PAGE')]}), + ("font.move_select", {"type": 'HOME', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'LINE_BEGIN')]}), + ("font.move_select", {"type": 'END', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'LINE_END')]}), + ("font.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PREVIOUS_CHARACTER')]}), + ("font.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'NEXT_CHARACTER')]}), + ("font.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'PREVIOUS_WORD')]}), + ("font.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True}, + {"properties": [("type", 'NEXT_WORD')]}), + ("font.move_select", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PREVIOUS_LINE')]}), + ("font.move_select", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'NEXT_LINE')]}), + ("font.move_select", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'PREVIOUS_PAGE')]}), + ("font.move_select", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, + {"properties": [("type", 'NEXT_PAGE')]}), + ("font.change_spacing", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("delta", -1)]}), + ("font.change_spacing", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("delta", 1)]}), + ("font.change_character", {"type": 'UP_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("delta", 1)]}), + ("font.change_character", {"type": 'DOWN_ARROW', "value": 'PRESS', "alt": True}, + {"properties": [("delta", -1)]}), + ("font.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), + ("font.text_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), + ("font.text_cut", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), + ("font.text_paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), + ("font.line_break", {"type": 'RET', "value": 'PRESS'}, None), + ("font.text_insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None), + ("font.text_insert", {"type": 'BACK_SPACE', "value": 'PRESS', "alt": True}, + {"properties": [("accent", True)]}), + ]) + + if params.apple: + items.extend([ + ("font.select_all", {"type": 'A', "value": 'PRESS', "oskey": True}, None), + ("font.text_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None), + ("font.text_cut", {"type": 'X', "value": 'PRESS', "oskey": True}, None), + ("font.text_paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None), + ]) + + return keymap + + +def km_object_non_modal(params): + items = [] + keymap = ( + "Object Non-modal", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("object.mode_set", {"type": 'TAB', "value": 'PRESS'}, + {"properties": [("mode", 'EDIT'), ("toggle", True)]}), + ("view3d.object_mode_pie_or_toggle", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, None), + ]) + + if params.legacy: + items.extend([ + ("object.origin_set", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), + ]) + + return keymap + + +# ------------------------------------------------------------------------------ +# Modal Maps and Gizmos + + +def km_eyedropper_modal_map(_params): + items = [] + keymap = ( + "Eyedropper Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), + ("SAMPLE_CONFIRM", {"type": 'RET', "value": 'RELEASE', "any": True}, None), + ("SAMPLE_CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'RELEASE', "any": True}, None), + ("SAMPLE_CONFIRM", {"type": 'LEFTMOUSE', "value": 'RELEASE', "any": True}, None), + ("SAMPLE_BEGIN", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ("SAMPLE_RESET", {"type": 'SPACE', "value": 'RELEASE', "any": True}, None), + ]) + + return keymap + + +def km_eyedropper_colorband_pointsampling_map(_params): + items = [] + keymap = ( + "Eyedropper ColorBand PointSampling Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'BACK_SPACE', "value": 'PRESS', "any": True}, None), + ("SAMPLE_CONFIRM", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), + ("SAMPLE_CONFIRM", {"type": 'RET', "value": 'RELEASE', "any": True}, None), + ("SAMPLE_CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'RELEASE', "any": True}, None), + ("SAMPLE_SAMPLE", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ("SAMPLE_RESET", {"type": 'SPACE', "value": 'RELEASE', "any": True}, None), + ]) + + return keymap + + +def km_transform_modal_map(_params): + items = [] + keymap = ( + "Transform Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CONFIRM", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("AXIS_X", {"type": 'X', "value": 'PRESS'}, None), + ("AXIS_Y", {"type": 'Y', "value": 'PRESS'}, None), + ("AXIS_Z", {"type": 'Z', "value": 'PRESS'}, None), + ("PLANE_X", {"type": 'X', "value": 'PRESS', "shift": True}, None), + ("PLANE_Y", {"type": 'Y', "value": 'PRESS', "shift": True}, None), + ("PLANE_Z", {"type": 'Z', "value": 'PRESS', "shift": True}, None), + ("CONS_OFF", {"type": 'C', "value": 'PRESS'}, None), + ("TRANSLATE", {"type": 'G', "value": 'PRESS'}, None), + ("ROTATE", {"type": 'R', "value": 'PRESS'}, None), + ("RESIZE", {"type": 'S', "value": 'PRESS'}, None), + ("SNAP_TOGGLE", {"type": 'TAB', "value": 'PRESS', "shift": True}, None), + ("SNAP_INV_ON", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None), + ("SNAP_INV_OFF", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None), + ("SNAP_INV_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None), + ("SNAP_INV_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None), + ("ADD_SNAP", {"type": 'A', "value": 'PRESS'}, None), + ("REMOVE_SNAP", {"type": 'A', "value": 'PRESS', "alt": True}, None), + ("PROPORTIONAL_SIZE_UP", {"type": 'PAGE_UP', "value": 'PRESS'}, None), + ("PROPORTIONAL_SIZE_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None), + ("PROPORTIONAL_SIZE_UP", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, None), + ("PROPORTIONAL_SIZE_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, None), + ("PROPORTIONAL_SIZE_UP", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), + ("PROPORTIONAL_SIZE_DOWN", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), + ("PROPORTIONAL_SIZE_UP", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None), + ("PROPORTIONAL_SIZE_DOWN", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None), + ("PROPORTIONAL_SIZE", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), + ("EDGESLIDE_EDGE_NEXT", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "alt": True}, None), + ("EDGESLIDE_PREV_NEXT", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "alt": True}, None), + ("AUTOIK_CHAIN_LEN_UP", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, None), + ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, None), + ("AUTOIK_CHAIN_LEN_UP", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None), + ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None), + ("INSERTOFS_TOGGLE_DIR", {"type": 'T', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_backdrop_transform_widget_tweak_modal_map(_params): + keymap = ( + "Backdrop Transform Widget Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_backdrop_crop_widget(_params): + keymap = ( + "Backdrop Crop Widget", + {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, + {"items": _template_items_gizmo_tweak_value()}, + ) + return keymap + + +def km_backdrop_crop_widget_tweak_modal_map(_params): + keymap = ( + "Backdrop Crop Widget Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_sun_beams_widget(_params): + keymap = ( + "Sun Beams Widget", + {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, + {"items": _template_items_gizmo_tweak_value()}, + ) + return keymap + + +def km_sun_beams_widget_tweak_modal_map(_params): + keymap = ( + "Sun Beams Widget Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_corner_pin_widget(_params): + items = [] + keymap = ( + "Corner Pin Widget", + {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_corner_pin_widget_tweak_modal_map(_params): + keymap = ( + "Corner Pin Widget Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_uv_transform_gizmo(_params): + keymap = ( + "UV Transform Gizmo", + {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, + {"items": _template_items_gizmo_tweak_value()}, + ) + return keymap + + +def km_uv_transform_gizmo_tweak_modal_map(_params): + keymap = ( + "UV Transform Gizmo Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_spot_light_widgets(_params): + items = [] + keymap = ( + "Spot Light Widgets", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_spot_light_widgets_tweak_modal_map(_params): + keymap = ( + "Spot Light Widgets Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_area_light_widgets(_params): + items = [] + keymap = ( + "Area Light Widgets", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_area_light_widgets_tweak_modal_map(_params): + keymap = ( + "Area Light Widgets Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_target_light_widgets(_params): + items = [] + keymap = ( + "Target Light Widgets", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_target_light_widgets_tweak_modal_map(_params): + keymap = ( + "Target Light Widgets Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_force_field_widgets(_params): + items = [] + keymap = ( + "Force Field Widgets", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_force_field_widgets_tweak_modal_map(_params): + keymap = ( + "Force Field Widgets Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_camera_widgets(_params): + items = [] + keymap = ( + "Camera Widgets", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_camera_widgets_tweak_modal_map(_params): + keymap = ( + "Camera Widgets Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_camera_view_widgets(_params): + items = [] + keymap = ( + "Camera View Widgets", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_camera_view_widgets_tweak_modal_map(_params): + keymap = ( + "Camera View Widgets Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_armature_spline_widgets(_params): + items = [] + keymap = ( + "Armature Spline Widgets", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_armature_spline_widgets_tweak_modal_map(_params): + keymap = ( + "Armature Spline Widgets Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_view3d_navigate(_params): + items = [] + keymap = ( + "View3D Navigate", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_view3d_navigate_tweak_modal_map(_params): + keymap = ( + "View3D Navigate Tweak Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": _template_items_gizmo_tweak_modal()}, + ) + return keymap + + +def km_view3d_gesture_circle(_params): + items = [] + keymap = ( + "View3D Gesture Circle", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + # Note: use 'KM_ANY' for release, so the circle exits on any mouse release, + # this is needed when circle select is activated as a tool. + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'ANY', "any": True}, None), + ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), + ("SELECT", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("DESELECT", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None), + ("NOP", {"type": 'LEFTMOUSE', "value": 'RELEASE', "any": True}, None), + ("DESELECT", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("NOP", {"type": 'MIDDLEMOUSE', "value": 'RELEASE', "any": True}, None), + ("SUBTRACT", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), + ("SUBTRACT", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None), + ("ADD", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), + ("ADD", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None), + ("SIZE", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), + ]) + + return keymap + + +def km_gesture_border(_params): + items = [] + keymap = ( + "Gesture Box", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), + ("SELECT", {"type": 'RIGHTMOUSE', "value": 'RELEASE', "any": True}, None), + ("BEGIN", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None), + ("DESELECT", {"type": 'LEFTMOUSE', "value": 'RELEASE', "shift": True}, None), + ("BEGIN", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("SELECT", {"type": 'LEFTMOUSE', "value": 'RELEASE', "any": True}, None), + ("BEGIN", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("DESELECT", {"type": 'MIDDLEMOUSE', "value": 'RELEASE'}, None), + ]) + + return keymap + + +def km_gesture_zoom_border(_params): + items = [] + keymap = ( + "Gesture Zoom Border", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'ANY', "any": True}, None), + ("BEGIN", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("IN", {"type": 'LEFTMOUSE', "value": 'RELEASE'}, None), + ("BEGIN", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("OUT", {"type": 'MIDDLEMOUSE', "value": 'RELEASE'}, None), + ]) + + return keymap + + +def km_gesture_straight_line(_params): + items = [] + keymap = ( + "Gesture Straight Line", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'ANY', "any": True}, None), + ("BEGIN", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("SELECT", {"type": 'LEFTMOUSE', "value": 'RELEASE', "any": True}, None), + ]) + + return keymap + + +def km_standard_modal_map(_params): + items = [] + keymap = ( + "Standard Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("APPLY", {"type": 'LEFTMOUSE', "value": 'ANY', "any": True}, None), + ("APPLY", {"type": 'RET', "value": 'PRESS', "any": True}, None), + ("APPLY", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), + ("SNAP", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None), + ("SNAP_OFF", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None), + ]) + + return keymap + + +def km_knife_tool_modal_map(_params): + items = [] + keymap = ( + "Knife Tool Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("PANNING", {"type": 'MIDDLEMOUSE', "value": 'ANY', "any": True}, None), + ("CANCEL", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK', "any": True}, None), + ("ADD_CUT", {"type": 'LEFTMOUSE', "value": 'ANY', "any": True}, None), + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'SPACE', "value": 'PRESS', "any": True}, None), + ("NEW_CUT", {"type": 'E', "value": 'PRESS'}, None), + ("SNAP_MIDPOINTS_ON", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None), + ("SNAP_MIDPOINTS_OFF", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None), + ("SNAP_MIDPOINTS_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None), + ("SNAP_MIDPOINTS_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None), + ("IGNORE_SNAP_ON", {"type": 'LEFT_SHIFT', "value": 'PRESS', "any": True}, None), + ("IGNORE_SNAP_OFF", {"type": 'LEFT_SHIFT', "value": 'RELEASE', "any": True}, None), + ("IGNORE_SNAP_ON", {"type": 'RIGHT_SHIFT', "value": 'PRESS', "any": True}, None), + ("IGNORE_SNAP_OFF", {"type": 'RIGHT_SHIFT', "value": 'RELEASE', "any": True}, None), + ("ANGLE_SNAP_TOGGLE", {"type": 'C', "value": 'PRESS'}, None), + ("CUT_THROUGH_TOGGLE", {"type": 'Z', "value": 'PRESS'}, None), + ]) + + return keymap + + +def km_custom_normals_modal_map(_params): + items = [] + keymap = ( + "Custom Normals Modal Map", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), + ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + ("RESET", {"type": 'R', "value": 'PRESS'}, None), + ("INVERT", {"type": 'I', "value": 'PRESS'}, None), + ("SPHERIZE", {"type": 'S', "value": 'PRESS'}, None), + ("ALIGN", {"type": 'A', "value": 'PRESS'}, None), + ("USE_MOUSE", {"type": 'M', "value": 'PRESS'}, None), + ("USE_PIVOT", {"type": 'L', "value": 'PRESS'}, None), + ("USE_OBJECT", {"type": 'O', "value": 'PRESS'}, None), + ("SET_USE_3DCURSOR", {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True}, None), + ("SET_USE_SELECTED", {"type": 'RIGHTMOUSE', "value": 'CLICK', "ctrl": True}, None), + ]) + + return keymap + + +def km_view3d_fly_modal(_params): + items = [] + keymap = ( + "View3D Fly Modal", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'ANY', "any": True}, None), + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'LEFTMOUSE', "value": 'ANY', "any": True}, None), + ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'SPACE', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), + ("ACCELERATE", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "any": True}, None), + ("DECELERATE", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "any": True}, None), + ("ACCELERATE", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "any": True}, None), + ("DECELERATE", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), + ("PAN_ENABLE", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "any": True}, None), + ("PAN_DISABLE", {"type": 'MIDDLEMOUSE', "value": 'RELEASE', "any": True}, None), + ("FORWARD", {"type": 'W', "value": 'PRESS'}, None), + ("BACKWARD", {"type": 'S', "value": 'PRESS'}, None), + ("LEFT", {"type": 'A', "value": 'PRESS'}, None), + ("RIGHT", {"type": 'D', "value": 'PRESS'}, None), + ("UP", {"type": 'E', "value": 'PRESS'}, None), + ("DOWN", {"type": 'Q', "value": 'PRESS'}, None), + ("UP", {"type": 'R', "value": 'PRESS'}, None), + ("DOWN", {"type": 'F', "value": 'PRESS'}, None), + ("FORWARD", {"type": 'UP_ARROW', "value": 'PRESS'}, None), + ("BACKWARD", {"type": 'DOWN_ARROW', "value": 'PRESS'}, None), + ("LEFT", {"type": 'LEFT_ARROW', "value": 'PRESS'}, None), + ("RIGHT", {"type": 'RIGHT_ARROW', "value": 'PRESS'}, None), + ("AXIS_LOCK_X", {"type": 'X', "value": 'PRESS'}, None), + ("AXIS_LOCK_Z", {"type": 'Z', "value": 'PRESS'}, None), + ("PRECISION_ENABLE", {"type": 'LEFT_ALT', "value": 'PRESS', "any": True}, None), + ("PRECISION_DISABLE", {"type": 'LEFT_ALT', "value": 'RELEASE', "any": True}, None), + ("PRECISION_ENABLE", {"type": 'LEFT_SHIFT', "value": 'PRESS', "any": True}, None), + ("PRECISION_DISABLE", {"type": 'LEFT_SHIFT', "value": 'RELEASE', "any": True}, None), + ("FREELOOK_ENABLE", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None), + ("FREELOOK_DISABLE", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None), + ]) + + return keymap + + +def km_view3d_walk_modal(_params): + items = [] + keymap = ( + "View3D Walk Modal", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'ANY', "any": True}, None), + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'LEFTMOUSE', "value": 'ANY', "any": True}, None), + ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), + ("FAST_ENABLE", {"type": 'LEFT_SHIFT', "value": 'PRESS', "any": True}, None), + ("FAST_DISABLE", {"type": 'LEFT_SHIFT', "value": 'RELEASE', "any": True}, None), + ("SLOW_ENABLE", {"type": 'LEFT_ALT', "value": 'PRESS', "any": True}, None), + ("SLOW_DISABLE", {"type": 'LEFT_ALT', "value": 'RELEASE', "any": True}, None), + ("FORWARD", {"type": 'W', "value": 'PRESS', "any": True}, None), + ("BACKWARD", {"type": 'S', "value": 'PRESS', "any": True}, None), + ("LEFT", {"type": 'A', "value": 'PRESS', "any": True}, None), + ("RIGHT", {"type": 'D', "value": 'PRESS', "any": True}, None), + ("UP", {"type": 'E', "value": 'PRESS', "any": True}, None), + ("DOWN", {"type": 'Q', "value": 'PRESS', "any": True}, None), + ("FORWARD_STOP", {"type": 'W', "value": 'RELEASE', "any": True}, None), + ("BACKWARD_STOP", {"type": 'S', "value": 'RELEASE', "any": True}, None), + ("LEFT_STOP", {"type": 'A', "value": 'RELEASE', "any": True}, None), + ("RIGHT_STOP", {"type": 'D', "value": 'RELEASE', "any": True}, None), + ("UP_STOP", {"type": 'E', "value": 'RELEASE', "any": True}, None), + ("DOWN_STOP", {"type": 'Q', "value": 'RELEASE', "any": True}, None), + ("FORWARD", {"type": 'UP_ARROW', "value": 'PRESS'}, None), + ("BACKWARD", {"type": 'DOWN_ARROW', "value": 'PRESS'}, None), + ("LEFT", {"type": 'LEFT_ARROW', "value": 'PRESS'}, None), + ("RIGHT", {"type": 'RIGHT_ARROW', "value": 'PRESS'}, None), + ("FORWARD_STOP", {"type": 'UP_ARROW', "value": 'RELEASE', "any": True}, None), + ("BACKWARD_STOP", {"type": 'DOWN_ARROW', "value": 'RELEASE', "any": True}, None), + ("LEFT_STOP", {"type": 'LEFT_ARROW', "value": 'RELEASE', "any": True}, None), + ("RIGHT_STOP", {"type": 'RIGHT_ARROW', "value": 'RELEASE', "any": True}, None), + ("GRAVITY_TOGGLE", {"type": 'TAB', "value": 'PRESS'}, None), + ("GRAVITY_TOGGLE", {"type": 'G', "value": 'PRESS'}, None), + ("JUMP", {"type": 'V', "value": 'PRESS', "any": True}, None), + ("JUMP_STOP", {"type": 'V', "value": 'RELEASE', "any": True}, None), + ("TELEPORT", {"type": 'SPACE', "value": 'PRESS', "any": True}, None), + ("TELEPORT", {"type": 'MIDDLEMOUSE', "value": 'ANY', "any": True}, None), + ("ACCELERATE", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "any": True}, None), + ("DECELERATE", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "any": True}, None), + ("ACCELERATE", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "any": True}, None), + ("DECELERATE", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_view3d_rotate_modal(_params): + items = [] + keymap = ( + "View3D Rotate Modal", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CONFIRM", {"type": 'MIDDLEMOUSE', "value": 'RELEASE', "any": True}, None), + ("CONFIRM", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ("AXIS_SNAP_ENABLE", {"type": 'LEFT_ALT', "value": 'PRESS', "any": True}, None), + ("AXIS_SNAP_DISABLE", {"type": 'LEFT_ALT', "value": 'RELEASE', "any": True}, None), + ]) + + return keymap + + +def km_view3d_move_modal(_params): + items = [] + keymap = ( + "View3D Move Modal", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CONFIRM", {"type": 'MIDDLEMOUSE', "value": 'RELEASE', "any": True}, None), + ("CONFIRM", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_view3d_zoom_modal(_params): + items = [] + keymap = ( + "View3D Zoom Modal", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CONFIRM", {"type": 'MIDDLEMOUSE', "value": 'RELEASE', "any": True}, None), + ("CONFIRM", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_view3d_dolly_modal(_params): + items = [] + keymap = ( + "View3D Dolly Modal", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CONFIRM", {"type": 'MIDDLEMOUSE', "value": 'RELEASE', "any": True}, None), + ("CONFIRM", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_paint_stroke_modal(_params): + items = [] + keymap = ( + "Paint Stroke Modal", + {"space_type": 'EMPTY', "region_type": 'WINDOW', "modal": True}, + {"items": items}, + ) + + items.extend([ + ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +def km_gizmos(_params): + items = [] + keymap = ( + "Gizmos", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + return keymap + + +def km_backdrop_transform_widget(_params): + items = [] + keymap = ( + "Backdrop Transform Widget", + {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), + ]) + + return keymap + + +# ------------------------------------------------------------------------------ +# Full Configuration + +def generate_keymaps(params=None): + if params is None: + params = KeymapParams() + return [ + # Window, screen, area, region. + km_window(params), + km_screen(params), + km_screen_editing(params), + km_header(params), + km_view2d(params), + km_view2d_buttons_list(params), + km_user_interface(params), + km_property_editor(params), + + # Editors. + km_outliner(params), + km_uv_editor(params), + km_uv_sculpt(params), + km_view3d_generic(params), + km_view3d(params), + km_mask_editing(params), + km_markers(params), + km_graph_editor_generic(params), + km_graph_editor(params), + km_image_generic(params), + km_image(params), + km_node_generic(params), + km_node_editor(params), + km_info(params), + km_file_browser(params), + km_file_browser_main(params), + km_file_browser_buttons(params), + km_dopesheet_generic(params), + km_dopesheet(params), + km_nla_generic(params), + km_nla_channels(params), + km_nla_editor(params), + km_text_generic(params), + km_text(params), + km_sequencercommon(params), + km_sequencer(params), + km_sequencerpreview(params), + km_console(params), + km_clip(params), + km_clip_editor(params), + km_clip_graph_editor(params), + km_clip_dopesheet_editor(params), + + # Animation. + km_frames(params), + km_animation(params), + km_animation_channels(params), + + # Modes. + km_grease_pencil(params), + km_grease_pencil_stroke_edit_mode(params), + km_grease_pencil_stroke_paint_mode(params), + km_grease_pencil_stroke_paint_draw_brush(params), + km_grease_pencil_stroke_paint_erase(params), + km_grease_pencil_stroke_paint_fill(params), + km_grease_pencil_stroke_sculpt_mode(params), + km_grease_pencil_stroke_weight_mode(params), + km_face_mask(params), + km_weight_paint_vertex_selection(params), + km_pose(params), + km_object_mode(params), + km_paint_curve(params), + km_curve(params), + km_image_paint(params), + km_vertex_paint(params), + km_weight_paint(params), + km_sculpt(params), + km_mesh(params), + km_armature(params), + km_metaball(params), + km_lattice(params), + km_particle(params), + km_font(params), + km_object_non_modal(params), + + # Modal maps. + km_eyedropper_modal_map(params), + km_eyedropper_colorband_pointsampling_map(params), + km_transform_modal_map(params), + km_view3d_navigate(params), + km_view3d_navigate_tweak_modal_map(params), + km_view3d_gesture_circle(params), + km_gesture_border(params), + km_gesture_zoom_border(params), + km_gesture_straight_line(params), + km_standard_modal_map(params), + km_knife_tool_modal_map(params), + km_custom_normals_modal_map(params), + km_view3d_fly_modal(params), + km_view3d_walk_modal(params), + km_view3d_rotate_modal(params), + km_view3d_move_modal(params), + km_view3d_zoom_modal(params), + km_view3d_dolly_modal(params), + km_paint_stroke_modal(params), + + # Gizmos. + km_gizmos(params), + km_backdrop_transform_widget_tweak_modal_map(params), + km_backdrop_crop_widget(params), + km_backdrop_crop_widget_tweak_modal_map(params), + km_sun_beams_widget(params), + km_sun_beams_widget_tweak_modal_map(params), + km_corner_pin_widget(params), + km_corner_pin_widget_tweak_modal_map(params), + km_uv_transform_gizmo(params), + km_uv_transform_gizmo_tweak_modal_map(params), + km_spot_light_widgets(params), + km_spot_light_widgets_tweak_modal_map(params), + km_area_light_widgets(params), + km_area_light_widgets_tweak_modal_map(params), + km_target_light_widgets(params), + km_target_light_widgets_tweak_modal_map(params), + km_force_field_widgets(params), + km_force_field_widgets_tweak_modal_map(params), + km_camera_widgets(params), + km_camera_widgets_tweak_modal_map(params), + km_camera_view_widgets(params), + km_camera_view_widgets_tweak_modal_map(params), + km_armature_spline_widgets(params), + km_armature_spline_widgets_tweak_modal_map(params), + km_backdrop_transform_widget(params), + ] + +# ------------------------------------------------------------------------------ +# Refactoring (Testing Only) +# +# Allows running outside of Blender to generate data for diffing +# +# To compare: +# +# python3 release/scripts/presets/keyconfig/keymap_data/blender_default.py && \ +# diff -u keymap_default.py keymap_default.py.orig && \ +# diff -u keymap_legacy.py keymap_legacy.py.orig +# +# # begin code: +# import pprint +# for legacy in (False, True): +# with open("keymap_default.py" if not legacy else "keymap_legacy.py", 'w') as fh: +# fh.write(pprint.pformat(generate_keymaps(KeymapParams(legacy=legacy)), indent=2, width=80)) +# import sys +# sys.exit() +# # end code + + +# ------------------------------------------------------------------------------ +# PyLint (Testing Only) +# +# Command to lint: +# +# pylint release/scripts/presets/keyconfig/keymap_data/blender_default.py --disable=C0111,C0301,C0302,R0903,R0913 + + +if __name__ == "__main__": + from bpy_extras.keyconfig_utils import keyconfig_import_from_data + keyconfig_import_from_data("Blender", generate_keymaps(KeymapParams())) + keyconfig_import_from_data("Blender 27X", generate_keymaps(KeymapParams(legacy=True))) diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index a7504255dd5..149206fc151 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -1055,11 +1055,6 @@ class USERPREF_MT_keyconfigs(Menu): preset_operator = "wm.keyconfig_activate" def draw(self, context): - props = self.layout.operator("wm.context_set_value", text="Blender (default)") - props.data_path = "window_manager.keyconfigs.active" - props.value = "context.window_manager.keyconfigs.default" - - # now draw the presets Menu.draw_preset(self, context) diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index ce60fce23fc..8abef494313 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -65,7 +65,6 @@ #include "ED_anim_api.h" #include "ED_armature.h" #include "ED_keyframes_edit.h" // XXX move the select modes out of there! -#include "ED_keymap_templates.h" #include "ED_object.h" #include "ED_screen.h" #include "ED_select_utils.h" @@ -3195,61 +3194,7 @@ void ED_operatortypes_animchannels(void) // TODO: check on a poll callback for this, to get hotkeys into menus void ED_keymap_animchannels(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Animation Channels", 0, 0); - wmKeyMapItem *kmi; - - /* click-select */ - /* XXX for now, only leftmouse.... */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_click", LEFTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_click", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", true); - RNA_boolean_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_click", LEFTMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "children_only", true); - - /* rename */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_rename", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ANIM_OT_channels_rename", LEFTMOUSE, KM_DBL_CLICK, 0, 0); - WM_keymap_add_item(keymap, "ANIM_OT_channel_select_keys", LEFTMOUSE, KM_DBL_CLICK, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "ANIM_OT_channel_select_keys", LEFTMOUSE, KM_DBL_CLICK, KM_SHIFT, 0)->ptr, "extend", true); - - /* find (i.e. a shortcut for setting the name filter) */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_find", FKEY, KM_PRESS, KM_CTRL, 0); - - /* deselect all */ - ED_keymap_template_select_all(keymap, "ANIM_OT_channels_select_all"); - - /* box select */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_select_box", BKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ANIM_OT_channels_select_box", EVT_TWEAK_L, KM_ANY, 0, 0); - - /* delete */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", DELKEY, KM_PRESS, 0, 0); - - /* settings */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_setting_toggle", WKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ANIM_OT_channels_setting_enable", WKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ANIM_OT_channels_setting_disable", WKEY, KM_PRESS, KM_ALT, 0); - - /* settings - specialized hotkeys */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_editable_toggle", TABKEY, KM_PRESS, 0, 0); - - /* expand/collapse */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_expand", PADPLUSKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ANIM_OT_channels_collapse", PADMINUS, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "ANIM_OT_channels_expand", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "all", false); - kmi = WM_keymap_add_item(keymap, "ANIM_OT_channels_collapse", PADMINUS, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "all", false); - - /* rearranging */ - RNA_enum_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_move", PAGEUPKEY, KM_PRESS, 0, 0)->ptr, "direction", REARRANGE_ANIMCHAN_UP); - RNA_enum_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_move", PAGEDOWNKEY, KM_PRESS, 0, 0)->ptr, "direction", REARRANGE_ANIMCHAN_DOWN); - RNA_enum_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_move", PAGEUPKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "direction", REARRANGE_ANIMCHAN_TOP); - RNA_enum_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_move", PAGEDOWNKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "direction", REARRANGE_ANIMCHAN_BOTTOM); - - /* grouping */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_group", GKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ANIM_OT_channels_ungroup", GKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); + WM_keymap_ensure(keyconf, "Animation Channels", 0, 0); } /* ************************************************************************** */ diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index 857400b3810..4d21ed8b5b4 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -72,7 +72,6 @@ #include "ED_markers.h" #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_util.h" #include "ED_numinput.h" #include "ED_object.h" @@ -1649,50 +1648,5 @@ void ED_operatortypes_marker(void) /* called in screen_ops.c:ED_keymap_screen() */ void ED_keymap_marker(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Markers", 0, 0); - wmKeyMapItem *kmi; - - WM_keymap_verify_item(keymap, "MARKER_OT_add", MKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "MARKER_OT_move", EVT_TWEAK_S, KM_ANY, 0, 0); - WM_keymap_verify_item(keymap, "MARKER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "MARKER_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "MARKER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - -#ifdef DURIAN_CAMERA_SWITCH - kmi = WM_keymap_add_item(keymap, "MARKER_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "camera", true); - - kmi = WM_keymap_add_item(keymap, "MARKER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "camera", true); -#else - (void)kmi; -#endif - - WM_keymap_verify_item(keymap, "MARKER_OT_select_box", BKEY, KM_PRESS, 0, 0); - - ED_keymap_template_select_all(keymap, "MARKER_OT_select_all"); - - WM_keymap_add_item(keymap, "MARKER_OT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MARKER_OT_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_verify_item(keymap, "MARKER_OT_rename", MKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0); -#ifdef DURIAN_CAMERA_SWITCH - WM_keymap_add_item(keymap, "MARKER_OT_camera_bind", BKEY, KM_PRESS, KM_CTRL, 0); -#endif -} - -/* to be called from animation editor keymaps, see note below */ -void ED_marker_keymap_animedit_conflictfree(wmKeyMap *keymap) -{ - /* duplicate of some marker-hotkeys but without the bounds checking - * since these are handy to be able to do unrestricted and won't conflict - * with primary function hotkeys (Usability tweak [#27469]) - */ - WM_keymap_add_item(keymap, "MARKER_OT_add", MKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MARKER_OT_rename", MKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_ensure(keyconf, "Markers", 0, 0); } diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index c45b7b4b228..6fa1150eb0e 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -536,17 +536,5 @@ void ED_operatortypes_anim(void) void ED_keymap_anim(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Animation", 0, 0); - wmKeyMapItem *kmi; - - /* frame management */ - /* NOTE: 'ACTIONMOUSE' not 'LEFTMOUSE', as user may have swapped mouse-buttons */ - WM_keymap_add_item(keymap, "ANIM_OT_change_frame", ACTIONMOUSE, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.show_seconds"); - - /* preview range */ - WM_keymap_verify_item(keymap, "ANIM_OT_previewrange_set", PKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_previewrange_clear", PKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_ensure(keyconf, "Animation", 0, 0); } diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index f61018f5278..b4c872c044d 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -36,7 +36,6 @@ #include "ED_armature.h" #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_transform.h" #include "armature_intern.h" @@ -191,212 +190,15 @@ void ED_operatormacros_armature(void) void ED_keymap_armature(wmKeyConfig *keyconf) { wmKeyMap *keymap; - wmKeyMapItem *kmi; /* Armature ------------------------ */ + /* only set in editmode armature, by space_view3d listener */ keymap = WM_keymap_ensure(keyconf, "Armature", 0, 0); keymap->poll = ED_operator_editarmature; - /* only set in editmode armature, by space_view3d listener */ - kmi = WM_keymap_add_item(keymap, "ARMATURE_OT_hide", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "ARMATURE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - WM_keymap_add_item(keymap, "ARMATURE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_align", AKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "ARMATURE_OT_calculate_roll", NKEY, KM_PRESS, KM_CTRL, 0); -#else - WM_keymap_add_item(keymap, "ARMATURE_OT_calculate_roll", NKEY, KM_PRESS, KM_SHIFT, 0); -#endif - WM_keymap_add_item(keymap, "ARMATURE_OT_roll_clear", RKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_switch_direction", FKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_bone_primitive_add", AKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0); - - ED_keymap_template_select_all(keymap, "ARMATURE_OT_select_all"); - - kmi = WM_keymap_add_item(keymap, "ARMATURE_OT_select_mirror", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - - kmi = WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT); - RNA_boolean_set(kmi->ptr, "extend", true); - - kmi = WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD); - RNA_boolean_set(kmi->ptr, "extend", true); - - WM_keymap_add_item(keymap, "ARMATURE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_select_linked", LKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_shortest_path_pick", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_armature_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_armature_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_dissolve", XKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_dissolve", DELKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_forked", EKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", ACTIONMOUSE, KM_CLICK, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_split", YKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "ARMATURE_OT_separate", PKEY, KM_PRESS, 0, 0); - - /* set flags */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_toggle", WKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_disable", WKEY, KM_PRESS, KM_ALT, 0); - - /* armature/bone layers */ - WM_keymap_add_item(keymap, "ARMATURE_OT_layers_show_all", ACCENTGRAVEKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_armature_layers", MKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_bone_layers", MKEY, KM_PRESS, 0, 0); - - /* special transforms: */ - /* 1) envelope/b-bone size */ - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE); - /* 2) envelope radius */ - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_BONE_ENVELOPE); - /* 3) set roll */ - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", RKEY, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_BONE_ROLL); - - /* menus */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_armature_specials", WKEY, KM_PRESS, 0, 0); - /* Pose ------------------------ */ /* only set in posemode, by space_view3d listener */ keymap = WM_keymap_ensure(keyconf, "Pose", 0, 0); keymap->poll = ED_operator_posemode; - /* set parent and add object are object-based operators, but we make them - * available here because it's useful to do in pose mode too */ - WM_keymap_add_item(keymap, "OBJECT_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); - - kmi = WM_keymap_add_item(keymap, "POSE_OT_hide", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "POSE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - WM_keymap_add_item(keymap, "POSE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_pose_apply", AKEY, KM_PRESS, KM_CTRL, 0); - - /* TODO: clear pose */ - WM_keymap_add_item(keymap, "POSE_OT_rot_clear", RKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "POSE_OT_loc_clear", GKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "POSE_OT_scale_clear", SKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "POSE_OT_quaternions_flip", FKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "POSE_OT_rotation_mode_set", RKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "POSE_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); - kmi = WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "flipped", false); - kmi = WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "flipped", true); - -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "POSE_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0); - kmi = WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); - RNA_boolean_set(kmi->ptr, "flipped", false); - kmi = WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_OSKEY | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "flipped", true); -#endif - - ED_keymap_template_select_all(keymap, "POSE_OT_select_all"); - - WM_keymap_add_item(keymap, "POSE_OT_select_parent", PKEY, KM_PRESS, KM_SHIFT, 0); - - kmi = WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT); - RNA_boolean_set(kmi->ptr, "extend", true); - - kmi = WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD); - RNA_boolean_set(kmi->ptr, "extend", true); - - WM_keymap_add_item(keymap, "POSE_OT_select_linked", LKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "POSE_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "POSE_OT_select_mirror", MKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - - WM_keymap_add_item(keymap, "POSE_OT_constraint_add_with_targets", CKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - WM_keymap_add_item(keymap, "POSE_OT_constraints_clear", CKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - WM_keymap_add_item(keymap, "POSE_OT_ik_add", IKEY, KM_PRESS, /*KM_CTRL|*/ KM_SHIFT, 0); - WM_keymap_add_item(keymap, "POSE_OT_ik_clear", IKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_pose_group", GKEY, KM_PRESS, KM_CTRL, 0); - - /* set flags */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_toggle", WKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_disable", WKEY, KM_PRESS, KM_ALT, 0); - - /* armature/bone layers */ - WM_keymap_add_item(keymap, "ARMATURE_OT_layers_show_all", ACCENTGRAVEKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_armature_layers", MKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "POSE_OT_bone_layers", MKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", ZKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.overlay.show_bone_select"); - - /* special transforms: */ - /* 1) envelope/b-bone size */ - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE); - - /* keyframes management */ - WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_keying_set_active_set", IKEY, KM_PRESS, KM_CTRL | KM_SHIFT | KM_ALT, 0); - - /* Pose -> PoseLib ------------- */ - /* only set in posemode, by space_view3d listener */ - WM_keymap_add_item(keymap, "POSELIB_OT_browse_interactive", LKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "POSELIB_OT_pose_add", LKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "POSELIB_OT_pose_remove", LKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "POSELIB_OT_pose_rename", LKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - - /* Pose -> Pose Sliding ------------- */ - /* only set in posemode, by space_view3d listener */ - WM_keymap_add_item(keymap, "POSE_OT_push", EKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "POSE_OT_relax", EKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "POSE_OT_breakdown", EKEY, KM_PRESS, KM_SHIFT, 0); - - /* menus */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_pose_specials", WKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_pose_propagate", PKEY, KM_PRESS, KM_ALT, 0); } diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index daa817e2ffd..bd1c2248660 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -45,7 +45,6 @@ #include "ED_object.h" #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_transform.h" #include "curve_intern.h" @@ -168,136 +167,11 @@ void ED_operatormacros_curve(void) void ED_keymap_curve(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - - keymap = WM_keymap_ensure(keyconf, "Font", 0, 0); - keymap->poll = ED_operator_editfont; - /* only set in editmode font, by space_view3d listener */ - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", BKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_BOLD); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_ITALIC); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", UKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_UNDERLINE); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", PKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_SMALLCAPS); - - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_delete", DELKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_NEXT_SEL); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_delete", DELKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", DEL_NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_PREV_SEL); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_delete", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", DEL_PREV_SEL); /* same as above [#26623] */ - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_delete", BACKSPACEKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", DEL_PREV_WORD); - - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", HOMEKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_BEGIN); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", PREV_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", UPARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", DOWNARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", PAGEUPKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_PAGE); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move", PAGEDOWNKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_PAGE); - - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", HOMEKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", LINE_BEGIN); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", ENDKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", LINE_END); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", LEFTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", PREV_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", RIGHTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", NEXT_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", LEFTARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0)->ptr, "type", PREV_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", RIGHTARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0)->ptr, "type", NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", UPARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", PREV_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", DOWNARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", NEXT_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", PAGEUPKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", PREV_PAGE); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_move_select", PAGEDOWNKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", NEXT_PAGE); - - RNA_int_set(WM_keymap_add_item(keymap, "FONT_OT_change_spacing", LEFTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "delta", -1); - RNA_int_set(WM_keymap_add_item(keymap, "FONT_OT_change_spacing", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "delta", 1); - RNA_int_set(WM_keymap_add_item(keymap, "FONT_OT_change_character", UPARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "delta", 1); - RNA_int_set(WM_keymap_add_item(keymap, "FONT_OT_change_character", DOWNARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "delta", -1); - - WM_keymap_add_item(keymap, "FONT_OT_select_all", AKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "FONT_OT_text_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "FONT_OT_text_cut", XKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "FONT_OT_text_paste", VKEY, KM_PRESS, KM_CTRL, 0); -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "FONT_OT_select_all", AKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "FONT_OT_text_copy", CKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "FONT_OT_text_cut", XKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "FONT_OT_text_paste", VKEY, KM_PRESS, KM_OSKEY, 0); -#endif - - WM_keymap_add_item(keymap, "FONT_OT_line_break", RETKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FONT_OT_text_insert", KM_TEXTINPUT, KM_ANY, KM_ANY, 0); // last! - kmi = WM_keymap_add_item(keymap, "FONT_OT_text_insert", BACKSPACEKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "accent", true); /* accented characters */ + wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Font", 0, 0); + keymap->poll = ED_operator_editfont; /* only set in editmode curve, by space_view3d listener */ keymap = WM_keymap_ensure(keyconf, "Curve", 0, 0); keymap->poll = ED_operator_editsurfcurve; - - WM_keymap_add_menu(keymap, "VIEW3D_MT_curve_add", AKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "CURVE_OT_handle_type_set", VKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", ACTIONMOUSE, KM_CLICK, KM_CTRL, 0); - - kmi = WM_keymap_add_item(keymap, "CURVE_OT_draw", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - kmi = WM_keymap_add_item(keymap, "CURVE_OT_draw", TABLET_STYLUS, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - ED_keymap_template_select_all(keymap, "CURVE_OT_select_all"); - - WM_keymap_add_item(keymap, "CURVE_OT_select_row", RKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "CURVE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "CURVE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "CURVE_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "CURVE_OT_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0); - - kmi = WM_keymap_add_item(keymap, "CURVE_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "CURVE_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - WM_keymap_add_item(keymap, "CURVE_OT_shortest_path_pick", SELECTMOUSE, KM_CLICK, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "CURVE_OT_separate", PKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CURVE_OT_split", YKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CURVE_OT_extrude_move", EKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CURVE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "CURVE_OT_make_segment", FKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CURVE_OT_cyclic_toggle", CKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_curve_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_curve_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "CURVE_OT_dissolve_verts", XKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "CURVE_OT_dissolve_verts", DELKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "CURVE_OT_tilt_clear", TKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "TRANSFORM_OT_tilt", TKEY, KM_PRESS, KM_CTRL, 0); - - RNA_enum_set(WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", TFM_CURVE_SHRINKFATTEN); - - WM_keymap_add_item(keymap, "CURVE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); - kmi = WM_keymap_add_item(keymap, "CURVE_OT_hide", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "CURVE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "CURVE_OT_normals_make_consistent", NKEY, KM_PRESS, KM_CTRL, 0); -#else - WM_keymap_add_item(keymap, "CURVE_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT, 0); -#endif - - WM_keymap_add_item(keymap, "OBJECT_OT_vertex_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_curve_specials", WKEY, KM_PRESS, 0, 0); - - /* menus */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); - - ED_keymap_proportional_cycle(keyconf, keymap); - ED_keymap_proportional_editmode(keyconf, keymap, true); } diff --git a/source/blender/editors/gpencil/gpencil_ops.c b/source/blender/editors/gpencil/gpencil_ops.c index 6a3047d7c2f..c2e078ff600 100644 --- a/source/blender/editors/gpencil/gpencil_ops.c +++ b/source/blender/editors/gpencil/gpencil_ops.c @@ -51,7 +51,6 @@ #include "ED_gpencil.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_object.h" #include "ED_transform.h" @@ -63,49 +62,7 @@ /* Generic Drawing Keymap - Annotations */ static void ed_keymap_gpencil_general(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil", 0, 0); - wmKeyMapItem *kmi; - - /* Draw --------------------------------------- */ - /* draw */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_annotate", LEFTMOUSE, KM_PRESS, 0, DKEY); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* draw - straight lines */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_annotate", LEFTMOUSE, KM_PRESS, KM_ALT, DKEY); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW_STRAIGHT); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* draw - poly lines */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_annotate", LEFTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, DKEY); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW_POLY); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* erase */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_annotate", RIGHTMOUSE, KM_PRESS, 0, DKEY); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_ERASER); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* Viewport Tools ------------------------------- */ - - /* Enter EditMode */ - WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, 0, DKEY); - - /* Pie Menu - For standard tools */ -#if 0 /* disable while we decide what to do here, maybe an add-on */ - WM_keymap_add_menu_pie(keymap, "GPENCIL_MT_pie_tool_palette", QKEY, KM_PRESS, 0, DKEY); - WM_keymap_add_menu_pie(keymap, "GPENCIL_MT_pie_settings_palette", WKEY, KM_PRESS, 0, DKEY); -#endif - - /* Add Blank Frame */ - /* XXX: BKEY or NKEY? BKEY is easier to reach from DKEY, so we'll use that for now */ - WM_keymap_add_item(keymap, "GPENCIL_OT_blank_frame_add", BKEY, KM_PRESS, 0, DKEY); - - /* Delete Active Frame - For easier video tutorials/review sessions */ - /* NOTE: This works even when not in EditMode */ - WM_keymap_add_item(keymap, "GPENCIL_OT_active_frames_delete_all", XKEY, KM_PRESS, 0, DKEY); - WM_keymap_add_item(keymap, "GPENCIL_OT_active_frames_delete_all", DELKEY, KM_PRESS, 0, DKEY); + WM_keymap_ensure(keyconf, "Grease Pencil", 0, 0); } /* ==================== */ @@ -195,464 +152,58 @@ static bool gp_stroke_weightmode_poll(bContext *C) return 0; } -static void ed_keymap_gpencil_selection(wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - /* select all */ - ED_keymap_template_select_all(keymap, "GPENCIL_OT_select_all"); - - /* circle select */ - WM_keymap_add_item(keymap, "GPENCIL_OT_select_circle", CKEY, KM_PRESS, 0, 0); - - /* box select */ - WM_keymap_add_item(keymap, "GPENCIL_OT_select_box", BKEY, KM_PRESS, 0, 0); - - /* lasso select */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - /* In the Node Editor, lasso select needs ALT modifier too - * (as somehow CTRL+LMB drag gets taken for "cut" quite early) - * There probably isn't too much harm adding this for other editors too as part of standard GP editing keymap. - * This hotkey combo doesn't seem to see much use under standard scenarios? - */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT | KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "toggle", true); - - /* whole stroke select */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "entire_strokes", true); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "entire_strokes", true); - RNA_boolean_set(kmi->ptr, "extend", true); - - /* select linked */ - /* NOTE: While LKEY is redundant, not having it breaks the mode illusion too much */ - WM_keymap_add_item(keymap, "GPENCIL_OT_select_linked", LKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "GPENCIL_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); - - /* select alternate */ - WM_keymap_add_item(keymap, "GPENCIL_OT_select_alternate", LKEY, KM_PRESS, KM_SHIFT, 0); - - /* select grouped */ - WM_keymap_add_item(keymap, "GPENCIL_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); - - /* select more/less */ - WM_keymap_add_item(keymap, "GPENCIL_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "GPENCIL_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); -} - -static void ed_keymap_gpencil_display(wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", QKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.overlay.use_gpencil_edit_lines"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", QKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.overlay.use_gpencil_multiedit_line_only"); -} - -static void ed_keymap_gpencil_sculpt(wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - /* Pie Menu - For settings/tools easy access */ -#if 0 /* disable while we decide what to do here, maybe an add-on */ - WM_keymap_add_menu_pie(keymap, "GPENCIL_PIE_sculpt", EKEY, KM_PRESS, 0, DKEY); -#endif - - /* Sculpting ------------------------------------- */ - - /* Brush-Based Editing: - * EKEY + LMB = Single stroke, draw immediately - * + Other Modifiers (Ctrl/Shift) = Invert, Smooth, etc. - * - * For the modal version, use D+E -> Sculpt - */ - /* GPXX: disabled to make toolsystem works */ - //kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, 0, 0); - //RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - RNA_boolean_set(kmi->ptr, "keep_brush", true); - /*RNA_boolean_set(kmi->ptr, "use_invert", true);*/ - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - RNA_boolean_set(kmi->ptr, "keep_brush", true); - /*RNA_boolean_set(kmi->ptr, "use_smooth", true);*/ - - /* Shift-FKEY = Sculpt Strength */ - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.brush.strength"); - - /* FKEY = Sculpt Brush Size */ - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.brush.size"); - - /* menu sculpt specials */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_gpencil_sculpt_specials", WKEY, KM_PRESS, 0, 0); -} - -static void ed_keymap_gpencil_weight(wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - - /* Brush-Based Editing: - * EKEY + LMB = Single stroke, draw immediately - * + Other Modifiers (Ctrl/Shift) = Invert, Smooth, etc. - * - * For the modal version, use D+E -> Sculpt - */ - /* GPXX: disabled to make toolsystem works */ - //kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, 0, 0); - //RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - RNA_boolean_set(kmi->ptr, "keep_brush", true); - /*RNA_boolean_set(kmi->ptr, "use_invert", true);*/ - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - RNA_boolean_set(kmi->ptr, "keep_brush", true); - /*RNA_boolean_set(kmi->ptr, "use_smooth", true);*/ -} - /* Stroke Editing Keymap - Only when editmode is enabled */ static void ed_keymap_gpencil_editing(wmKeyConfig *keyconf) { wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Edit Mode", 0, 0); - wmKeyMapItem *kmi; /* set poll callback - so that this keymap only gets enabled when stroke editmode is enabled */ keymap->poll = gp_stroke_editmode_poll; - - /* ----------------------------------------------- */ - - /* Brush Settings */ - /* NOTE: We cannot expose these in the standard keymap, as they will interfere with regular hotkeys - * in other modes. However, when we are dealing with Stroke Edit Mode, we know for certain - * that the only data being edited is that of the Grease Pencil strokes - */ - - /* Interpolation */ - WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate", EKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate_sequence", EKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - - /* normal select */ - WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); - - /* Selection */ - ed_keymap_gpencil_selection(keymap); - - /* Editing ----------------------------------------- */ - - /* duplicate and move selected points */ - WM_keymap_add_item(keymap, "GPENCIL_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - - /* delete */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_gpencil_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_gpencil_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "GPENCIL_OT_dissolve", XKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "GPENCIL_OT_dissolve", DELKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "GPENCIL_OT_active_frames_delete_all", XKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "GPENCIL_OT_active_frames_delete_all", DELKEY, KM_PRESS, KM_SHIFT, 0); - - /* menu edit specials */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_gpencil_edit_specials", WKEY, KM_PRESS, 0, 0); - - /* menu separate */ - WM_keymap_add_menu(keymap, "GPENCIL_MT_separate", PKEY, KM_PRESS, 0, 0); - - /* split strokes */ - WM_keymap_add_item(keymap, "GPENCIL_OT_stroke_split", VKEY, KM_PRESS, 0, 0); - - /* join strokes */ - WM_keymap_add_item(keymap, "GPENCIL_OT_stroke_join", JKEY, KM_PRESS, KM_CTRL, 0); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_stroke_join", JKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", GP_STROKE_JOINCOPY); - - /* copy + paste */ - WM_keymap_add_item(keymap, "GPENCIL_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "GPENCIL_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); - -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "GPENCIL_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "GPENCIL_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); -#endif - - /* snap */ - WM_keymap_add_menu(keymap, "GPENCIL_MT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); - - /* convert to geometry */ - WM_keymap_add_item(keymap, "GPENCIL_OT_convert", CKEY, KM_PRESS, KM_ALT, 0); - - - /* Show/Hide */ - /* NOTE: These are available only in EditMode now, since they clash with general-purpose hotkeys */ - WM_keymap_add_item(keymap, "GPENCIL_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_hide", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - WM_keymap_add_item(keymap, "GPENCIL_OT_selection_opacity_toggle", HKEY, KM_PRESS, KM_CTRL, 0); - - /* Display. */ - ed_keymap_gpencil_display(keymap); - - /* Isolate Layer */ - WM_keymap_add_item(keymap, "GPENCIL_OT_layer_isolate", PADASTERKEY, KM_PRESS, 0, 0); - - /* Move to Layer */ - WM_keymap_add_item(keymap, "GPENCIL_OT_move_to_layer", MKEY, KM_PRESS, 0, 0); - - /* Transform Tools */ - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_bend", WKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "TRANSFORM_OT_tosphere", SKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "TRANSFORM_OT_shear", SKEY, KM_PRESS, KM_ALT | KM_CTRL | KM_SHIFT, 0); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_GPENCIL_SHRINKFATTEN); - - /* Proportional Editing */ - ED_keymap_proportional_cycle(keyconf, keymap); - ED_keymap_proportional_editmode(keyconf, keymap, true); - - /* menu - add GP object (3d view only) */ - WM_keymap_add_item(keymap, "OBJECT_OT_gpencil_add", AKEY, KM_PRESS, KM_SHIFT, 0); - - /* menu vertex group */ - WM_keymap_add_menu(keymap, "GPENCIL_MT_gpencil_vertex_group", GKEY, KM_PRESS, KM_CTRL, 0); - - /* toggle edit mode */ - WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); - - /* select mode */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_selectmode_toggle", ONEKEY, KM_PRESS, 0, 0); - RNA_int_set(kmi->ptr, "mode", 0); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_selectmode_toggle", TWOKEY, KM_PRESS, 0, 0); - RNA_int_set(kmi->ptr, "mode", 1); } /* keys for draw with a drawing brush (no fill) */ static void ed_keymap_gpencil_painting_draw(wmKeyConfig *keyconf) { wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Paint (Draw brush)", 0, 0); - wmKeyMapItem *kmi; - - /* set poll callback */ keymap->poll = gp_stroke_paintmode_draw_poll; - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* draw - straight lines */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW_STRAIGHT); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* draw - poly lines */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW_POLY); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* erase */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_ERASER); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* Tablet Mappings for Drawing ------------------ */ - /* For now, only support direct drawing using the eraser, as most users using a tablet - * may still want to use that as their primary pointing device! - */ -#if 0 - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", TABLET_STYLUS, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); -#endif - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", TABLET_ERASER, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_ERASER); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* Selection (used by eraser) */ - /* box select */ - WM_keymap_add_item(keymap, "GPENCIL_OT_select_box", BKEY, KM_PRESS, 0, 0); - - /* lasso select */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); } /* keys for draw with a eraser brush (erase) */ static void ed_keymap_gpencil_painting_erase(wmKeyConfig *keyconf) { wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Paint (Erase)", 0, 0); - wmKeyMapItem *kmi; - - /* set poll callback */ keymap->poll = gp_stroke_paintmode_erase_poll; - - /* erase */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_ERASER); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", TABLET_ERASER, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_ERASER); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - - /* Selection (used by eraser) */ - /* box select */ - WM_keymap_add_item(keymap, "GPENCIL_OT_select_box", BKEY, KM_PRESS, 0, 0); - - /* lasso select */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); } /* keys for draw with a fill brush */ static void ed_keymap_gpencil_painting_fill(wmKeyConfig *keyconf) { wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Paint (Fill)", 0, 0); - wmKeyMapItem *kmi; - - /* set poll callback */ keymap->poll = gp_stroke_paintmode_fill_poll; - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_fill", LEFTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "on_back", false); - - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_fill", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "on_back", true); - - /* if press alternative key, the brush now it's for drawing areas */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - /* disable straight lines */ - RNA_boolean_set(kmi->ptr, "disable_straight", true); - - /* if press alternative key, the brush now it's for drawing lines */ - kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW); - RNA_boolean_set(kmi->ptr, "wait_for_input", false); - /* disable straight lines */ - RNA_boolean_set(kmi->ptr, "disable_straight", true); - /* enable special stroke with no fill flag */ - RNA_boolean_set(kmi->ptr, "disable_fill", true); } /* Stroke Painting Keymap - Only when paintmode is enabled */ static void ed_keymap_gpencil_painting(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Paint Mode", 0, 0); - wmKeyMapItem *kmi; - /* set poll callback - so that this keymap only gets enabled when stroke paintmode is enabled */ + wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Paint Mode", 0, 0); keymap->poll = gp_stroke_paintmode_poll; - - /* Shift-FKEY = Brush Strength */ - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_paint.brush.gpencil_settings.pen_strength"); - - /* FKEY = Brush Size */ - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_paint.brush.size"); - - /* CTRL + FKEY = Eraser Radius */ - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path_primary", "user_preferences.edit.grease_pencil_eraser_radius"); - - /* menu draw specials */ - WM_keymap_add_menu(keymap, "GPENCIL_MT_gpencil_draw_specials", WKEY, KM_PRESS, 0, 0); - - /* menu draw delete */ - WM_keymap_add_menu(keymap, "GPENCIL_MT_gpencil_draw_delete", XKEY, KM_PRESS, 0, 0); - } /* Stroke Sculpting Keymap - Only when sculptmode is enabled */ static void ed_keymap_gpencil_sculpting(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Sculpt Mode", 0, 0); - /* set poll callback - so that this keymap only gets enabled when stroke sculptmode is enabled */ + wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Sculpt Mode", 0, 0); keymap->poll = gp_stroke_sculptmode_poll; - - /* Selection */ - ed_keymap_gpencil_selection(keymap); - - /* sculpt */ - ed_keymap_gpencil_sculpt(keymap); - - /* Display. */ - ed_keymap_gpencil_display(keymap); } /* Stroke Weight Paint Keymap - Only when weight is enabled */ static void ed_keymap_gpencil_weightpainting(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Weight Mode", 0, 0); - wmKeyMapItem *kmi; - /* set poll callback - so that this keymap only gets enabled when stroke sculptmode is enabled */ + wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Weight Mode", 0, 0); keymap->poll = gp_stroke_weightmode_poll; - - /* Selection */ - ed_keymap_gpencil_selection(keymap); - - /* sculpt */ - ed_keymap_gpencil_weight(keymap); - - /* Shift-FKEY = Sculpt Strength */ - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.weight_brush.strength"); - - /* FKEY = Sculpt Brush Size */ - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.weight_brush.size"); - - /* Display. */ - ed_keymap_gpencil_display(keymap); } /* ==================== */ diff --git a/source/blender/editors/include/ED_markers.h b/source/blender/editors/include/ED_markers.h index a95e283f218..fa907010870 100644 --- a/source/blender/editors/include/ED_markers.h +++ b/source/blender/editors/include/ED_markers.h @@ -72,9 +72,6 @@ void ED_operatortypes_marker(void); /* called in screen_ops.c:ED_keymap_screen() */ void ED_keymap_marker(struct wmKeyConfig *keyconf); -/* called in animation editors - keymap defines */ -void ED_marker_keymap_animedit_conflictfree(struct wmKeyMap *keymap); - /* debugging only */ void debug_markers_print_list(struct ListBase *markers); diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index b71e7133c58..afe037c92d1 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -108,13 +108,6 @@ bool ED_object_parent_set(struct ReportList *reports, const struct bContext *C, const int vert_par[3]); void ED_object_parent_clear(struct Object *ob, const int type); -void ED_keymap_proportional_cycle(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap); -void ED_keymap_proportional_obmode(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap); -void ED_keymap_proportional_maskmode(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap); -void ED_keymap_proportional_editmode(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, - const bool do_connected); -void ED_keymap_editmesh_elem_mode(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap); - void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode); void ED_object_base_activate(struct bContext *C, struct Base *base); void ED_object_base_free_and_unlink(struct Main *bmain, struct Scene *scene, struct Object *ob); diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h index 3fe2e3a1436..7adc2d99879 100644 --- a/source/blender/editors/include/ED_transform.h +++ b/source/blender/editors/include/ED_transform.h @@ -48,7 +48,7 @@ struct Main; struct SnapObjectContext; struct SnapObjectParams; -void transform_keymap_for_space(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int spaceid); +void ED_keymap_transform(struct wmKeyConfig *keyconf); void transform_operatortypes(void); /* ******************** Macros & Prototypes *********************** */ diff --git a/source/blender/editors/interface/interface_eyedropper.c b/source/blender/editors/interface/interface_eyedropper.c index 424019995ad..3a799c6e7db 100644 --- a/source/blender/editors/interface/interface_eyedropper.c +++ b/source/blender/editors/interface/interface_eyedropper.c @@ -70,15 +70,6 @@ wmKeyMap *eyedropper_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "Eyedropper Modal Map", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, EYE_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_PRESS, KM_ANY, 0, EYE_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, RETKEY, KM_RELEASE, KM_ANY, 0, EYE_MODAL_SAMPLE_CONFIRM); - WM_modalkeymap_add_item(keymap, PADENTER, KM_RELEASE, KM_ANY, 0, EYE_MODAL_SAMPLE_CONFIRM); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_ANY, 0, EYE_MODAL_SAMPLE_CONFIRM); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, EYE_MODAL_SAMPLE_BEGIN); - WM_modalkeymap_add_item(keymap, SPACEKEY, KM_RELEASE, KM_ANY, 0, EYE_MODAL_SAMPLE_RESET); - /* assign to operators */ WM_modalkeymap_assign(keymap, "UI_OT_eyedropper_colorband"); WM_modalkeymap_assign(keymap, "UI_OT_eyedropper_color"); @@ -106,15 +97,6 @@ wmKeyMap *eyedropper_colorband_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "Eyedropper ColorBand PointSampling Map", modal_items_point); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, EYE_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, BACKSPACEKEY, KM_PRESS, KM_ANY, 0, EYE_MODAL_POINT_REMOVE_LAST); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_PRESS, KM_ANY, 0, EYE_MODAL_POINT_CONFIRM); - WM_modalkeymap_add_item(keymap, RETKEY, KM_RELEASE, KM_ANY, 0, EYE_MODAL_POINT_CONFIRM); - WM_modalkeymap_add_item(keymap, PADENTER, KM_RELEASE, KM_ANY, 0, EYE_MODAL_POINT_CONFIRM); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, EYE_MODAL_POINT_SAMPLE); - WM_modalkeymap_add_item(keymap, SPACEKEY, KM_RELEASE, KM_ANY, 0, EYE_MODAL_POINT_RESET); - /* assign to operators */ WM_modalkeymap_assign(keymap, "UI_OT_eyedropper_colorband_point"); diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c index e2e6cc78309..5be2b82af9e 100644 --- a/source/blender/editors/interface/interface_ops.c +++ b/source/blender/editors/interface/interface_ops.c @@ -1434,34 +1434,7 @@ void ED_operatortypes_ui(void) */ void ED_keymap_ui(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "User Interface", 0, 0); - wmKeyMapItem *kmi; - - /* eyedroppers - notice they all have the same shortcut, but pass the event - * through until a suitable eyedropper for the active button is found */ - WM_keymap_add_item(keymap, "UI_OT_eyedropper_color", EKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "UI_OT_eyedropper_colorband", EKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "UI_OT_eyedropper_colorband_point", EKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "UI_OT_eyedropper_id", EKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "UI_OT_eyedropper_depth", EKEY, KM_PRESS, 0, 0); - - /* Copy Data Path */ - WM_keymap_add_item(keymap, "UI_OT_copy_data_path_button", CKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - kmi = WM_keymap_add_item(keymap, "UI_OT_copy_data_path_button", CKEY, KM_PRESS, KM_CTRL | KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "full_path", true); - - /* keyframes */ - WM_keymap_add_item(keymap, "ANIM_OT_keyframe_insert_button", IKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ANIM_OT_keyframe_delete_button", IKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "ANIM_OT_keyframe_clear_button", IKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); - - /* drivers */ - WM_keymap_add_item(keymap, "ANIM_OT_driver_button_add", DKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ANIM_OT_driver_button_remove", DKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - - /* keyingsets */ - WM_keymap_add_item(keymap, "ANIM_OT_keyingset_button_add", KKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ANIM_OT_keyingset_button_remove", KKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_ensure(keyconf, "User Interface", 0, 0); eyedropper_modal_keymap(keyconf); eyedropper_colorband_modal_keymap(keyconf); diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c index 8df786b2a7f..6009b0bdb81 100644 --- a/source/blender/editors/interface/view2d_ops.c +++ b/source/blender/editors/interface/view2d_ops.c @@ -2129,85 +2129,5 @@ void ED_operatortypes_view2d(void) void ED_keymap_view2d(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "View2D", 0, 0); - wmKeyMapItem *kmi; - - /* scrollers */ - WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", LEFTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", MIDDLEMOUSE, KM_PRESS, 0, 0); - - /* pan/scroll */ - WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MOUSEPAN, 0, 0, 0); - - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_right", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_left", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_down", WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_up", WHEELUPMOUSE, KM_PRESS, KM_SHIFT, 0); - -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "VIEW2D_OT_ndof", NDOF_MOTION, 0, 0, 0); -#endif - - /* zoom - single step */ - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_out", WHEELOUTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_in", WHEELINMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_out", PADMINUS, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_in", PADPLUSKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MOUSEPAN, 0, KM_CTRL, 0); - - WM_keymap_verify_item(keymap, "VIEW2D_OT_smoothview", TIMER1, KM_ANY, KM_ANY, 0); - - /* scroll up/down - no modifiers, only when zoom fails */ - /* these may fail if zoom is disallowed, in which case they should pass on event */ - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_down", WHEELDOWNMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_up", WHEELUPMOUSE, KM_PRESS, 0, 0); - /* these may be necessary if vertical scroll is disallowed */ - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_right", WHEELDOWNMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_left", WHEELUPMOUSE, KM_PRESS, 0, 0); - - /* alternatives for page up/down to scroll */ -#if 0 // XXX disabled, since this causes conflicts with hotkeys in animation editors - /* scroll up/down may fall through to left/right */ - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_down", PAGEDOWNKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_up", PAGEUPKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_right", PAGEDOWNKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_left", PAGEUPKEY, KM_PRESS, 0, 0); - /* shift for moving view left/right with page up/down */ - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_right", PAGEDOWNKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_left", PAGEUPKEY, KM_PRESS, KM_SHIFT, 0); -#endif - - /* zoom - drag */ - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MOUSEZOOM, 0, 0, 0); - - /* borderzoom - drag */ - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_border", BKEY, KM_PRESS, KM_SHIFT, 0); - - /* Alternative keymap for buttons listview */ - keymap = WM_keymap_ensure(keyconf, "View2D Buttons List", 0, 0); - - WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", LEFTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", MIDDLEMOUSE, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MOUSEPAN, 0, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_down", WHEELDOWNMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_up", WHEELUPMOUSE, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_down", PAGEDOWNKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "page", true); - kmi = WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_up", PAGEUPKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "page", true); - - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MOUSEZOOM, 0, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MOUSEPAN, 0, KM_CTRL, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_out", PADMINUS, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_in", PADPLUSKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW2D_OT_reset", HOMEKEY, KM_PRESS, 0, 0); + WM_keymap_ensure(keyconf, "View2D", 0, 0); } diff --git a/source/blender/editors/lattice/lattice_ops.c b/source/blender/editors/lattice/lattice_ops.c index 6cf3c580698..76ccc2250ee 100644 --- a/source/blender/editors/lattice/lattice_ops.c +++ b/source/blender/editors/lattice/lattice_ops.c @@ -37,7 +37,6 @@ #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_object.h" #include "ED_lattice.h" @@ -57,23 +56,6 @@ void ED_operatortypes_lattice(void) void ED_keymap_lattice(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - - keymap = WM_keymap_ensure(keyconf, "Lattice", 0, 0); + wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Lattice", 0, 0); keymap->poll = ED_operator_editlattice; - - ED_keymap_template_select_all(keymap, "LATTICE_OT_select_all"); - - WM_keymap_add_item(keymap, "LATTICE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "LATTICE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "OBJECT_OT_vertex_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "LATTICE_OT_flip", FKEY, KM_PRESS, KM_ALT, 0); - - /* menus */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); - - ED_keymap_proportional_cycle(keyconf, keymap); - ED_keymap_proportional_editmode(keyconf, keymap, false); } diff --git a/source/blender/editors/mask/mask_edit.c b/source/blender/editors/mask/mask_edit.c index 5d9c8209c81..03fc7252ea6 100644 --- a/source/blender/editors/mask/mask_edit.c +++ b/source/blender/editors/mask/mask_edit.c @@ -43,7 +43,6 @@ #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_mask.h" /* own include */ #include "ED_image.h" #include "ED_object.h" /* ED_keymap_proportional_maskmode only */ @@ -524,106 +523,8 @@ void ED_operatortypes_mask(void) void ED_keymap_mask(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - - keymap = WM_keymap_ensure(keyconf, "Mask Editing", 0, 0); + wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Mask Editing", 0, 0); keymap->poll = ED_maskedit_poll; - - WM_keymap_add_item(keymap, "MASK_OT_new", NKEY, KM_PRESS, KM_ALT, 0); - - /* add menu */ - WM_keymap_add_menu(keymap, "MASK_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); - - /* mask mode supports PET now */ - ED_keymap_proportional_cycle(keyconf, keymap); - ED_keymap_proportional_maskmode(keyconf, keymap); - - /* geometry */ - WM_keymap_add_item(keymap, "MASK_OT_add_vertex_slide", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MASK_OT_add_feather_vertex_slide", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "MASK_OT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MASK_OT_delete", DELKEY, KM_PRESS, 0, 0); - - /* selection */ - kmi = WM_keymap_add_item(keymap, "MASK_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", false); - kmi = WM_keymap_add_item(keymap, "MASK_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", true); - - ED_keymap_template_select_all(keymap, "MASK_OT_select_all"); - - WM_keymap_add_item(keymap, "MASK_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); - kmi = WM_keymap_add_item(keymap, "MASK_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "MASK_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - WM_keymap_add_item(keymap, "MASK_OT_select_box", BKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MASK_OT_select_circle", CKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "MASK_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "MASK_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - WM_keymap_add_item(keymap, "MASK_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MASK_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - /* hide/reveal */ - WM_keymap_add_item(keymap, "MASK_OT_hide_view_clear", HKEY, KM_PRESS, KM_ALT, 0); - kmi = WM_keymap_add_item(keymap, "MASK_OT_hide_view_set", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - - kmi = WM_keymap_add_item(keymap, "MASK_OT_hide_view_set", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - /* select clip while in maker view, - * this matches View3D functionality where you can select an - * object while in editmode to allow vertex parenting */ - kmi = WM_keymap_add_item(keymap, "CLIP_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - - /* shape */ - WM_keymap_add_item(keymap, "MASK_OT_cyclic_toggle", CKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "MASK_OT_slide_point", ACTIONMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MASK_OT_slide_spline_curvature", ACTIONMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MASK_OT_handle_type_set", VKEY, KM_PRESS, 0, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "MASK_OT_normals_make_consistent", NKEY, KM_PRESS, KM_CTRL, 0); -#else - WM_keymap_add_item(keymap, "MASK_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT, 0); -#endif - // WM_keymap_add_item(keymap, "MASK_OT_feather_weight_clear", SKEY, KM_PRESS, KM_ALT, 0); - /* ... matches curve editmode */ - - /* relationships */ - WM_keymap_add_item(keymap, "MASK_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MASK_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "MASK_OT_shape_key_insert", IKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MASK_OT_shape_key_clear", IKEY, KM_PRESS, KM_ALT, 0); - - /* duplicate */ - WM_keymap_add_item(keymap, "MASK_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "MASK_OT_copy_splines", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MASK_OT_paste_splines", VKEY, KM_PRESS, KM_CTRL, 0); - - /* for image editor only */ - WM_keymap_add_item(keymap, "UV_OT_cursor_set", ACTIONMOUSE, KM_CLICK, 0, 0); - - /* Transform (don't use transform_keymap_for_space() since this maps to different spaces) */ - WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); - WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_MASK_SHRINKFATTEN); } void ED_operatormacros_mask(void) diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index e48fb6d9ecb..2e442d97fad 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -2761,30 +2761,6 @@ wmKeyMap *knifetool_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "Knife Tool Modal Map", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, KNF_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_ANY, KM_ANY, 0, KNF_MODAL_PANNING); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_DBL_CLICK, KM_ANY, 0, KNF_MODAL_ADD_CUT_CLOSED); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, KNF_MODAL_ADD_CUT); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_PRESS, KM_ANY, 0, KNF_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, KNF_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, KNF_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, SPACEKEY, KM_PRESS, KM_ANY, 0, KNF_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, EKEY, KM_PRESS, 0, 0, KNF_MODAL_NEW_CUT); - - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, KNF_MODAL_MIDPOINT_ON); - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, KNF_MODAL_MIDPOINT_OFF); - WM_modalkeymap_add_item(keymap, RIGHTCTRLKEY, KM_PRESS, KM_ANY, 0, KNF_MODAL_MIDPOINT_ON); - WM_modalkeymap_add_item(keymap, RIGHTCTRLKEY, KM_RELEASE, KM_ANY, 0, KNF_MODAL_MIDPOINT_OFF); - - WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, KNF_MODEL_IGNORE_SNAP_ON); - WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_RELEASE, KM_ANY, 0, KNF_MODEL_IGNORE_SNAP_OFF); - WM_modalkeymap_add_item(keymap, RIGHTSHIFTKEY, KM_PRESS, KM_ANY, 0, KNF_MODEL_IGNORE_SNAP_ON); - WM_modalkeymap_add_item(keymap, RIGHTSHIFTKEY, KM_RELEASE, KM_ANY, 0, KNF_MODEL_IGNORE_SNAP_OFF); - - WM_modalkeymap_add_item(keymap, CKEY, KM_PRESS, 0, 0, KNF_MODAL_ANGLE_SNAP_TOGGLE); - WM_modalkeymap_add_item(keymap, ZKEY, KM_PRESS, 0, 0, KNF_MODAL_CUT_THROUGH_TOGGLE); - WM_modalkeymap_assign(keymap, "MESH_OT_knife_tool"); return keymap; diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index ac600a3ca2d..35ab7fa9c55 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -7139,27 +7139,6 @@ wmKeyMap *point_normals_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, keymap_name, modal_items); - /* Generic items for modal map. */ - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, EDBM_CLNOR_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_PRESS, KM_NOTHING, 0, EDBM_CLNOR_MODAL_CANCEL); - - WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, EDBM_CLNOR_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, EDBM_CLNOR_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_NOTHING, 0, EDBM_CLNOR_MODAL_CONFIRM); - - /* Point To items for modal map */ - WM_modalkeymap_add_item(keymap, RKEY, KM_PRESS, KM_NOTHING, 0, EDBM_CLNOR_MODAL_POINTTO_RESET); - WM_modalkeymap_add_item(keymap, IKEY, KM_PRESS, KM_NOTHING, 0, EDBM_CLNOR_MODAL_POINTTO_INVERT); - WM_modalkeymap_add_item(keymap, SKEY, KM_PRESS, KM_NOTHING, 0, EDBM_CLNOR_MODAL_POINTTO_SPHERIZE); - WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_NOTHING, 0, EDBM_CLNOR_MODAL_POINTTO_ALIGN); - - WM_modalkeymap_add_item(keymap, MKEY, KM_PRESS, KM_NOTHING, 0, EDBM_CLNOR_MODAL_POINTTO_USE_MOUSE); - WM_modalkeymap_add_item(keymap, LKEY, KM_PRESS, KM_NOTHING, 0, EDBM_CLNOR_MODAL_POINTTO_USE_PIVOT); - WM_modalkeymap_add_item(keymap, OKEY, KM_PRESS, KM_NOTHING, 0, EDBM_CLNOR_MODAL_POINTTO_USE_OBJECT); - - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_CLICK, KM_CTRL, 0, EDBM_CLNOR_MODAL_POINTTO_SET_USE_3DCURSOR); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_CLICK, KM_CTRL, 0, EDBM_CLNOR_MODAL_POINTTO_SET_USE_SELECTED); - WM_modalkeymap_assign(keymap, "MESH_OT_point_normals"); return keymap; diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 2d5768e14ae..a517f41d1fe 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -41,7 +41,6 @@ #include "ED_mesh.h" #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "mesh_intern.h" /* own include */ @@ -325,207 +324,9 @@ void ED_operatormacros_mesh(void) /* note mesh keymap also for other space? */ void ED_keymap_mesh(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - - keymap = WM_keymap_ensure(keyconf, "Mesh", 0, 0); + wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Mesh", 0, 0); keymap->poll = ED_operator_editmesh; - kmi = WM_keymap_add_item(keymap, "MESH_OT_loopcut_slide", RKEY, KM_PRESS, KM_CTRL, 0); - { - PointerRNA macro_ptr = RNA_pointer_get(kmi->ptr, "TRANSFORM_OT_edge_slide"); - RNA_boolean_set(¯o_ptr, "release_confirm", false); - } - kmi = WM_keymap_add_item(keymap, "MESH_OT_offset_edge_loops_slide", RKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - { - PointerRNA macro_ptr = RNA_pointer_get(kmi->ptr, "TRANSFORM_OT_edge_slide"); - RNA_boolean_set(¯o_ptr, "release_confirm", false); - } - - WM_keymap_add_item(keymap, "MESH_OT_inset", IKEY, KM_PRESS, 0, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "MESH_OT_poke", PKEY, KM_PRESS, KM_ALT, 0); -#endif - kmi = WM_keymap_add_item(keymap, "MESH_OT_bevel", BKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "vertex_only", false); - kmi = WM_keymap_add_item(keymap, "MESH_OT_bevel", BKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "vertex_only", true); - - /* Selec Vert/Edge/Face. */ - ED_keymap_editmesh_elem_mode(keyconf, keymap); - - /* standard mouse selection goes via space_view3d */ - kmi = WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", false); - kmi = WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", true); - - kmi = WM_keymap_add_item(keymap, "MESH_OT_edgering_select", SELECTMOUSE, KM_PRESS, KM_ALT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", false); - kmi = WM_keymap_add_item(keymap, "MESH_OT_edgering_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", true); - - kmi = WM_keymap_add_item(keymap, "MESH_OT_shortest_path_pick", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "use_fill", false); - - kmi = WM_keymap_add_item(keymap, "MESH_OT_shortest_path_pick", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "use_fill", true); - - ED_keymap_template_select_all(keymap, "MESH_OT_select_all"); - - WM_keymap_add_item(keymap, "MESH_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MESH_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "MESH_OT_select_next_item", PADPLUSKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - WM_keymap_add_item(keymap, "MESH_OT_select_prev_item", PADMINUS, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "MESH_OT_select_non_manifold", MKEY, KM_PRESS, (KM_CTRL | KM_SHIFT | KM_ALT), 0); -#endif - - WM_keymap_add_item(keymap, "MESH_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); - kmi = WM_keymap_add_item(keymap, "MESH_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "MESH_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "MESH_OT_faces_select_linked_flat", FKEY, KM_PRESS, (KM_CTRL | KM_SHIFT | KM_ALT), 0); -#endif - - WM_keymap_add_item(keymap, "MESH_OT_select_mirror", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0); - - /* hide */ - kmi = WM_keymap_add_item(keymap, "MESH_OT_hide", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "MESH_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - WM_keymap_add_item(keymap, "MESH_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); - - /* tools */ -#ifdef USE_WM_KEYMAP_27X - kmi = WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "inside", false); - kmi = WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "inside", true); -#else - kmi = WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "inside", false); - kmi = WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "inside", true); -#endif - - WM_keymap_add_item(keymap, "VIEW3D_OT_edit_mesh_extrude_move_normal", EKEY, KM_PRESS, 0, 0); /* python operator */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_extrude", EKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "TRANSFORM_OT_edge_crease", EKEY, KM_PRESS, KM_SHIFT, 0); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "MESH_OT_spin", RKEY, KM_PRESS, KM_ALT, 0); -#endif - - WM_keymap_add_item(keymap, "MESH_OT_fill", FKEY, KM_PRESS, KM_ALT, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "MESH_OT_beautify_fill", FKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); -#endif - - kmi = WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "quad_method", MOD_TRIANGULATE_QUAD_BEAUTY); - RNA_enum_set(kmi->ptr, "ngon_method", MOD_TRIANGULATE_NGON_BEAUTY); - kmi = WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "quad_method", MOD_TRIANGULATE_QUAD_FIXED); - RNA_enum_set(kmi->ptr, "ngon_method", MOD_TRIANGULATE_NGON_EARCLIP); - - WM_keymap_add_item(keymap, "MESH_OT_tris_convert_to_quads", JKEY, KM_PRESS, KM_ALT, 0); - - kmi = WM_keymap_add_item(keymap, "MESH_OT_rip_move", VKEY, KM_PRESS, 0, 0); - { - PointerRNA macro_ptr = RNA_pointer_get(kmi->ptr, "MESH_OT_rip"); - RNA_boolean_set(¯o_ptr, "use_fill", false); - } - kmi = WM_keymap_add_item(keymap, "MESH_OT_rip_move", VKEY, KM_PRESS, KM_ALT, 0); - { - PointerRNA macro_ptr = RNA_pointer_get(kmi->ptr, "MESH_OT_rip"); - RNA_boolean_set(¯o_ptr, "use_fill", true); - } - - WM_keymap_add_item(keymap, "MESH_OT_rip_edge_move", DKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "MESH_OT_merge", MKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "TRANSFORM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0); - - /* add/remove */ - WM_keymap_add_item(keymap, "MESH_OT_edge_face_add", FKEY, KM_PRESS, 0, 0); -// WM_keymap_add_item(keymap, "MESH_OT_skin", FKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); /* python, removed */ - WM_keymap_add_item(keymap, "MESH_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_mesh_add", AKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MESH_OT_split", YKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MESH_OT_vert_connect_path", JKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "MESH_OT_point_normals", LKEY, KM_PRESS, KM_ALT, 0); - - /* Vertex Slide */ - WM_keymap_add_item(keymap, "TRANSFORM_OT_vert_slide", VKEY, KM_PRESS, KM_SHIFT, 0); - /* use KM_CLICK because same key is used for tweaks */ - kmi = WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", ACTIONMOUSE, KM_CLICK, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "rotate_source", true); - kmi = WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", ACTIONMOUSE, KM_CLICK, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "rotate_source", false); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "MESH_OT_dissolve_mode", XKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "MESH_OT_dissolve_mode", DELKEY, KM_PRESS, KM_CTRL, 0); - - kmi = WM_keymap_add_item(keymap, "MESH_OT_knife_tool", KKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "use_occlude_geometry", true); - RNA_boolean_set(kmi->ptr, "only_selected", false); - -#ifdef USE_WM_KEYMAP_27X - kmi = WM_keymap_add_item(keymap, "MESH_OT_knife_tool", KKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "use_occlude_geometry", false); - RNA_boolean_set(kmi->ptr, "only_selected", true); -#endif - - WM_keymap_add_item(keymap, "OBJECT_OT_vertex_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); - - /* menus */ - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_specials", WKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_faces", FKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_edges", EKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_vertices", VKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_uv_map", UKEY, KM_PRESS, 0, 0); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_vertex_group", GKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_vertex_group_remove_from", GKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - -#ifdef USE_WM_KEYMAP_27X - /* useful stuff from object-mode */ - for (int i = 0; i <= 5; i++) { - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY + i, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "level", i); - } -#endif - - ED_keymap_proportional_cycle(keyconf, keymap); - ED_keymap_proportional_editmode(keyconf, keymap, true); - knifetool_modal_keymap(keyconf); point_normals_modal_keymap(keyconf); } diff --git a/source/blender/editors/metaball/mball_ops.c b/source/blender/editors/metaball/mball_ops.c index c3c404f37ac..0e029e36e0e 100644 --- a/source/blender/editors/metaball/mball_ops.c +++ b/source/blender/editors/metaball/mball_ops.c @@ -38,7 +38,6 @@ #include "ED_mball.h" #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_object.h" #include "mball_intern.h" @@ -71,29 +70,6 @@ void ED_operatormacros_metaball(void) void ED_keymap_metaball(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - - keymap = WM_keymap_ensure(keyconf, "Metaball", 0, 0); + wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Metaball", 0, 0); keymap->poll = ED_operator_editmball; - - WM_keymap_add_item(keymap, "OBJECT_OT_metaball_add", AKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "MBALL_OT_reveal_metaelems", HKEY, KM_PRESS, KM_ALT, 0); - kmi = WM_keymap_add_item(keymap, "MBALL_OT_hide_metaelems", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "MBALL_OT_hide_metaelems", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "MBALL_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - - ED_keymap_template_select_all(keymap, "MBALL_OT_select_all"); - - WM_keymap_add_item(keymap, "MBALL_OT_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0); - - ED_keymap_proportional_cycle(keyconf, keymap); - ED_keymap_proportional_editmode(keyconf, keymap, true); } diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 46598041100..eb9dd0bbe28 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -47,7 +47,6 @@ #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_object.h" #include "DEG_depsgraph.h" @@ -306,220 +305,12 @@ static bool object_mode_poll(bContext *C) void ED_keymap_object(wmKeyConfig *keyconf) { wmKeyMap *keymap; - wmKeyMapItem *kmi; /* Objects, Regardless of Mode -------------------------------------------------- */ keymap = WM_keymap_ensure(keyconf, "Object Non-modal", 0, 0); - /* modes */ - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", OB_MODE_EDIT); - RNA_boolean_set(kmi->ptr, "toggle", true); - -#if 0 - WM_keymap_add_menu_pie(keymap, "VIEW3D_MT_object_mode_pie", TABKEY, KM_PRESS, KM_CTRL, 0); -#else - WM_keymap_add_item(keymap, "VIEW3D_OT_object_mode_pie_or_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); -#endif - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "OBJECT_OT_origin_set", CKEY, KM_PRESS, KM_ALT | KM_SHIFT | KM_CTRL, 0); -#endif - /* Object Mode ---------------------------------------------------------------- */ /* Note: this keymap gets disabled in non-objectmode, */ keymap = WM_keymap_ensure(keyconf, "Object Mode", 0, 0); keymap->poll = object_mode_poll; - - /* object mode supports PET now */ - ED_keymap_proportional_cycle(keyconf, keymap); - ED_keymap_proportional_obmode(keyconf, keymap); - - ED_keymap_template_select_all(keymap, "OBJECT_OT_select_all"); - - WM_keymap_add_item(keymap, "OBJECT_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "OBJECT_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "OBJECT_OT_select_mirror", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); -#endif - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_enum_set_identifier(NULL, kmi->ptr, "direction", "PARENT"); - RNA_boolean_set(kmi->ptr, "extend", false); - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set_identifier(NULL, kmi->ptr, "direction", "PARENT"); - RNA_boolean_set(kmi->ptr, "extend", true); - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_enum_set_identifier(NULL, kmi->ptr, "direction", "CHILD"); - RNA_boolean_set(kmi->ptr, "extend", false); - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set_identifier(NULL, kmi->ptr, "direction", "CHILD"); - RNA_boolean_set(kmi->ptr, "extend", true); - - WM_keymap_verify_item(keymap, "OBJECT_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_verify_item(keymap, "OBJECT_OT_parent_no_inverse_set", PKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); -#endif - WM_keymap_verify_item(keymap, "OBJECT_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_verify_item(keymap, "OBJECT_OT_track_set", TKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_verify_item(keymap, "OBJECT_OT_track_clear", TKEY, KM_PRESS, KM_ALT, 0); -#endif - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_verify_item(keymap, "OBJECT_OT_constraint_add_with_targets", CKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "OBJECT_OT_constraints_clear", CKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); -#endif - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_location_clear", GKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "clear_delta", false); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_rotation_clear", RKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "clear_delta", false); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_scale_clear", SKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "clear_delta", false); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_verify_item(keymap, "OBJECT_OT_origin_clear", OKEY, KM_PRESS, KM_ALT, 0); -#endif - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_delete", XKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "use_global", false); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_delete", XKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "use_global", true); - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_delete", DELKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "use_global", false); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_delete", DELKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "use_global", true); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "OBJECT_OT_duplicates_make_real", AKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - -#endif - WM_keymap_add_menu(keymap, "VIEW3D_MT_object_apply", AKEY, KM_PRESS, KM_CTRL, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_menu(keymap, "VIEW3D_MT_make_single_user", UKEY, KM_PRESS, 0, 0); -#endif - WM_keymap_add_menu(keymap, "VIEW3D_MT_make_links", LKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "OBJECT_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_duplicate_move_linked", DKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "OBJECT_OT_join", JKEY, KM_PRESS, KM_CTRL, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "OBJECT_OT_convert", CKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_proxy_make", PKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_make_local", LKEY, KM_PRESS, 0, 0); -#endif - - /* XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith */ - WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_verify_item(keymap, "ANIM_OT_keying_set_active_set", IKEY, KM_PRESS, KM_CTRL | KM_SHIFT | KM_ALT, 0); - - WM_keymap_verify_item(keymap, "COLLECTION_OT_create", GKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_verify_item(keymap, "COLLECTION_OT_objects_remove", GKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - WM_keymap_verify_item(keymap, "COLLECTION_OT_objects_remove_all", GKEY, KM_PRESS, KM_SHIFT | KM_CTRL | KM_ALT, 0); - WM_keymap_verify_item(keymap, "COLLECTION_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - WM_keymap_verify_item(keymap, "COLLECTION_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_object_specials", WKEY, KM_PRESS, 0, 0); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_verify_item(keymap, "OBJECT_OT_data_transfer", TKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); -#endif - /* XXX No more available 'T' shortcuts... :/ */ - /* WM_keymap_verify_item(keymap, "OBJECT_OT_datalayout_transfer", TKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); */ - - for (int i = 0; i <= 5; i++) { - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY + i, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "level", i); - } - - WM_keymap_add_item(keymap, "OBJECT_OT_move_to_collection", MKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_link_to_collection", MKEY, KM_PRESS, KM_SHIFT, 0); - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_view_clear", HKEY, KM_PRESS, KM_ALT, 0); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_view_set", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_view_set", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_collection", HKEY, KM_PRESS, KM_CTRL, 0); - - /* Collection switching. */ - for (int i = 0; i < 10; i++) { - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_collection", ZEROKEY + i, KM_PRESS, KM_ANY, 0); - RNA_int_set(kmi->ptr, "collection_index", (i == 0) ? 10 : i); - } -} - -void ED_keymap_proportional_cycle(struct wmKeyConfig *UNUSED(keyconf), struct wmKeyMap *keymap) -{ - WM_keymap_add_menu_pie(keymap, "VIEW3D_MT_proportional_editing_falloff_pie", OKEY, KM_PRESS, KM_SHIFT, 0); -} - -void ED_keymap_proportional_obmode(struct wmKeyConfig *UNUSED(keyconf), struct wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", OKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_proportional_edit_objects"); -} - -void ED_keymap_proportional_maskmode(struct wmKeyConfig *UNUSED(keyconf), struct wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", OKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_proportional_edit_mask"); -} - -void ED_keymap_proportional_editmode(struct wmKeyConfig *UNUSED(keyconf), struct wmKeyMap *keymap, - const bool do_connected) -{ - wmKeyMapItem *kmi; - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_edit"); - RNA_string_set(kmi->ptr, "value_1", "DISABLED"); - RNA_string_set(kmi->ptr, "value_2", "ENABLED"); - - /* for modes/object types that allow 'connected' mode, add the Alt O key */ - if (do_connected) { - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_edit"); - RNA_string_set(kmi->ptr, "value_1", "DISABLED"); - RNA_string_set(kmi->ptr, "value_2", "CONNECTED"); - } -} - -/** - * Map 1..3 to Vert/Edge/Face. - */ -void ED_keymap_editmesh_elem_mode(struct wmKeyConfig *UNUSED(keyconf), struct wmKeyMap *keymap) -{ - for (int i = 0; i < 4; i++) { - const bool is_extend = (i & 1); - const bool is_expand = (i & 2); - const int key_modifier = (is_extend ? KM_SHIFT : 0) | (is_expand ? KM_CTRL : 0); - for (int j = 0; j < 3; j++) { - wmKeyMapItem *kmi = WM_keymap_add_item( - keymap, "MESH_OT_select_mode", ONEKEY + j, KM_PRESS, key_modifier, 0); - RNA_enum_set(kmi->ptr, "type", SCE_SELECT_VERTEX << j); - if (is_extend) { - RNA_boolean_set(kmi->ptr, "use_extend", true); - } - if (is_expand) { - RNA_boolean_set(kmi->ptr, "use_expand", true); - } - } - } } diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c index fc2a6bad561..06b0d557d86 100644 --- a/source/blender/editors/physics/physics_ops.c +++ b/source/blender/editors/physics/physics_ops.c @@ -35,7 +35,6 @@ #include "WM_types.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_physics.h" #include "ED_object.h" @@ -112,48 +111,8 @@ static void operatortypes_particle(void) static void keymap_particle(wmKeyConfig *keyconf) { - wmKeyMapItem *kmi; - wmKeyMap *keymap; - - keymap = WM_keymap_ensure(keyconf, "Particle", 0, 0); + wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Particle", 0, 0); keymap->poll = PE_poll; - - ED_keymap_template_select_all(keymap, "PARTICLE_OT_select_all"); - - WM_keymap_add_item(keymap, "PARTICLE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "PARTICLE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - kmi = WM_keymap_add_item(keymap, "PARTICLE_OT_select_linked", LKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "PARTICLE_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - WM_keymap_add_item(keymap, "PARTICLE_OT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PARTICLE_OT_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "PARTICLE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); - kmi = WM_keymap_add_item(keymap, "PARTICLE_OT_hide", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "PARTICLE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", LEFTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); - - /* size radial control */ - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.particle_edit.brush.size"); - - /* size radial control */ - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.particle_edit.brush.strength"); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_particle_specials", WKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "PARTICLE_OT_weight_set", KKEY, KM_PRESS, KM_SHIFT, 0); - - ED_keymap_proportional_cycle(keyconf, keymap); - ED_keymap_proportional_editmode(keyconf, keymap, false); } /******************************* boids *************************************/ @@ -202,16 +161,6 @@ static void operatortypes_dynamicpaint(void) WM_operatortype_append(DPAINT_OT_output_toggle); } -//static void keymap_pointcache(wmWindowManager *wm) -//{ -// wmKeyMap *keymap = WM_keymap_ensure(wm, "Pointcache", 0, 0); -// -// WM_keymap_add_item(keymap, "PHYSICS_OT_bake_all", AKEY, KM_PRESS, 0, 0); -// WM_keymap_add_item(keymap, "PHYSICS_OT_free_all", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); -// WM_keymap_add_item(keymap, "PHYSICS_OT_bake_particle_system", PADMINUS, KM_PRESS, KM_CTRL, 0); -// WM_keymap_add_item(keymap, "PHYSICS_OT_free_particle_system", LKEY, KM_PRESS, 0, 0); -//} - /****************************** general ************************************/ void ED_operatortypes_physics(void) @@ -226,5 +175,4 @@ void ED_operatortypes_physics(void) void ED_keymap_physics(wmKeyConfig *keyconf) { keymap_particle(keyconf); - //keymap_pointcache(keyconf); } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 3325985c829..5b7ddbd1a8a 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -4871,14 +4871,6 @@ static void keymap_modal_set(wmKeyConfig *keyconf) /* Standard Modal keymap ------------------------------------------------ */ keymap = WM_modalkeymap_add(keyconf, "Standard Modal Map", modal_items); - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, KM_MODAL_APPLY); - WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY); - WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY); - - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_SNAP_ON); - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, KM_MODAL_SNAP_OFF); - WM_modalkeymap_assign(keymap, "SCREEN_OT_area_move"); } @@ -4903,182 +4895,19 @@ static void blend_file_drop_copy(wmDrag *drag, wmDropBox *drop) void ED_keymap_screen(wmKeyConfig *keyconf) { ListBase *lb; - wmKeyMap *keymap; - wmKeyMapItem *kmi; /* Screen Editing ------------------------------------------------ */ - keymap = WM_keymap_ensure(keyconf, "Screen Editing", 0, 0); - - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "modifier", 0); - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "modifier", 1); - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "modifier", 2); - - /* screen tools */ - WM_keymap_verify_item(keymap, "SCREEN_OT_area_split", EVT_ACTIONZONE_AREA, 0, 0, 0); - WM_keymap_verify_item(keymap, "SCREEN_OT_area_join", EVT_ACTIONZONE_AREA, 0, 0, 0); - WM_keymap_verify_item(keymap, "SCREEN_OT_area_dupli", EVT_ACTIONZONE_AREA, 0, KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "SCREEN_OT_area_swap", EVT_ACTIONZONE_AREA, 0, KM_CTRL, 0); - WM_keymap_verify_item(keymap, "SCREEN_OT_region_scale", EVT_ACTIONZONE_REGION, 0, 0, 0); - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", EVT_ACTIONZONE_FULLSCREEN, 0, 0, 0); - RNA_boolean_set(kmi->ptr, "use_hide_panels", true); - /* area move after action zones */ - WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0); - - WM_keymap_verify_item(keymap, "SCREEN_OT_area_options", RIGHTMOUSE, KM_PRESS, 0, 0); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "SCREEN_OT_header", F9KEY, KM_PRESS, KM_ALT, 0); -#endif + WM_keymap_ensure(keyconf, "Screen Editing", 0, 0); /* Header Editing ------------------------------------------------ */ /* note: this is only used when the cursor is inside the header */ - keymap = WM_keymap_ensure(keyconf, "Header", 0, 0); - - WM_keymap_add_item(keymap, "SCREEN_OT_header_context_menu", RIGHTMOUSE, KM_PRESS, 0, 0); + WM_keymap_ensure(keyconf, "Header", 0, 0); /* Screen General ------------------------------------------------ */ - keymap = WM_keymap_ensure(keyconf, "Screen", 0, 0); - - /* standard timers */ - WM_keymap_add_item(keymap, "SCREEN_OT_animation_step", TIMER0, KM_ANY, KM_ANY, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_region_blend", TIMERREGION, KM_ANY, KM_ANY, 0); - -#ifdef USE_WM_KEYMAP_27X - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", 1); - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1); -#endif - WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", SPACEKEY, KM_PRESS, KM_CTRL, 0); - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", SPACEKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "use_hide_panels", true); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "SCREEN_OT_screenshot", F3KEY, KM_PRESS, KM_CTRL, 0); -#endif - - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_space_context_cycle", TABKEY, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_NEXT); - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_space_context_cycle", TABKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_PREV); - - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_workspace_cycle", PAGEDOWNKEY, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_NEXT); - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_workspace_cycle", PAGEUPKEY, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_PREV); - - /* tests */ - WM_keymap_add_item(keymap, "SCREEN_OT_region_quadview", QKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - - WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", RKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - WM_keymap_verify_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "SCRIPT_OT_reload", F8KEY, KM_PRESS, 0, 0); -#endif - - /* files */ - WM_keymap_add_item(keymap, "FILE_OT_execute", RETKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_execute", PADENTER, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_cancel", ESCKEY, KM_PRESS, 0, 0); - - /* undo */ -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "ED_OT_redo", ZKEY, KM_PRESS, KM_SHIFT | KM_OSKEY, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "ED_OT_undo_history", ZKEY, KM_PRESS, KM_ALT | KM_OSKEY, 0); -#endif -#endif - WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ED_OT_redo", ZKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "ED_OT_undo_history", ZKEY, KM_PRESS, KM_ALT | KM_CTRL, 0); -#endif - - /* render */ - kmi = WM_keymap_add_item(keymap, "RENDER_OT_render", F12KEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "use_viewport", true); - kmi = WM_keymap_add_item(keymap, "RENDER_OT_render", F12KEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "animation", true); - RNA_boolean_set(kmi->ptr, "use_viewport", true); - WM_keymap_add_item(keymap, "RENDER_OT_view_cancel", ESCKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "RENDER_OT_view_show", F11KEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "RENDER_OT_play_rendered_anim", F11KEY, KM_PRESS, KM_CTRL, 0); - - /* user prefs */ -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", COMMAKEY, KM_PRESS, KM_OSKEY, 0); -#endif -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", UKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); -#endif - + WM_keymap_ensure(keyconf, "Screen", 0, 0); /* Anim Playback ------------------------------------------------ */ - keymap = WM_keymap_ensure(keyconf, "Frames", 0, 0); - - /* frame offsets */ -#ifdef USE_WM_KEYMAP_27X - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", UPARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", 10); - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", DOWNARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", -10); -#endif - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", -1); - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", 1); - -#ifdef USE_WM_KEYMAP_27X - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", WHEELDOWNMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "delta", 1); - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", WHEELUPMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "delta", -1); - - RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", UPARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "end", true); - RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", DOWNARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "end", false); -#endif - RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", RIGHTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", true); - RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", LEFTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", false); - - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", UPARROWKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "next", true); - - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", DOWNARROWKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "next", false); - - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", MEDIALAST, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "next", true); - - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", MEDIAFIRST, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "next", false); - - -#ifdef USE_WM_KEYMAP_27X - /* play (forward and backwards) */ - WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set( - WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0)->ptr, - "reverse", true); -#else - /* play (forward and backwards) */ - WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", SPACEKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set( - WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", SPACEKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, - "reverse", true); -#endif - WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", ESCKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", MEDIAPLAY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", MEDIASTOP, KM_PRESS, 0, 0); - - /* Alternative keys for animation and sequencer playing */ -#if 0 /* XXX: disabled for restoring later... bad implementation */ - keymap = WM_keymap_ensure(keyconf, "Frames", 0, 0); - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "cycle_speed", true); - - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "reverse", true); - RNA_boolean_set(kmi->ptr, "cycle_speed", true); - - WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", DOWNARROWKEY, KM_PRESS, KM_ALT, 0); -#endif + WM_keymap_ensure(keyconf, "Frames", 0, 0); /* dropbox for entire window */ lb = WM_dropboxmap_find("Window", 0, 0); diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index 2f0b1ebd98f..b991755325a 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -306,20 +306,6 @@ typedef enum BrushStrokeMode { BRUSH_STROKE_SMOOTH } BrushStrokeMode; -/* paint_ops.c */ -typedef enum { - RC_COLOR = 1, - RC_ROTATION = 2, - RC_ZOOM = 4, - RC_WEIGHT = 8, - RC_SECONDARY_ROTATION = 16, - RC_COLOR_OVERRIDE = 32, -} RCFlags; - -void set_brush_rc_props( - struct PointerRNA *ptr, const char *paint, const char *prop, const char *secondary_prop, - RCFlags flags); - /* paint_hide.c */ typedef enum { diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 0d33098293c..316372ece4e 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -524,19 +524,6 @@ static void PAINT_OT_brush_select(wmOperatorType *ot) RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); } -static wmKeyMapItem *keymap_brush_select( - wmKeyMap *keymap, ePaintMode paint_mode, - int tool, int keymap_type, - int keymap_modifier) -{ - wmKeyMapItem *kmi; - kmi = WM_keymap_add_item(keymap, "PAINT_OT_brush_select", keymap_type, KM_PRESS, keymap_modifier, 0); - RNA_enum_set(kmi->ptr, "paint_mode", paint_mode); - const char *prop_id = BKE_paint_get_tool_prop_id_from_paintmode(paint_mode); - RNA_enum_set(kmi->ptr, prop_id, tool); - return kmi; -} - static int brush_uv_sculpt_tool_set_exec(bContext *C, wmOperator *op) { Brush *brush; @@ -973,28 +960,6 @@ static void BRUSH_OT_stencil_reset_transform(wmOperatorType *ot) } -static void ed_keymap_stencil(wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - kmi = WM_keymap_add_item(keymap, "BRUSH_OT_stencil_control", RIGHTMOUSE, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", STENCIL_TRANSLATE); - kmi = WM_keymap_add_item(keymap, "BRUSH_OT_stencil_control", RIGHTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "mode", STENCIL_SCALE); - kmi = WM_keymap_add_item(keymap, "BRUSH_OT_stencil_control", RIGHTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "mode", STENCIL_ROTATE); - - kmi = WM_keymap_add_item(keymap, "BRUSH_OT_stencil_control", RIGHTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", STENCIL_TRANSLATE); - RNA_enum_set(kmi->ptr, "texmode", STENCIL_SECONDARY); - kmi = WM_keymap_add_item(keymap, "BRUSH_OT_stencil_control", RIGHTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0); - RNA_enum_set(kmi->ptr, "texmode", STENCIL_SECONDARY); - RNA_enum_set(kmi->ptr, "mode", STENCIL_SCALE); - kmi = WM_keymap_add_item(keymap, "BRUSH_OT_stencil_control", RIGHTMOUSE, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_enum_set(kmi->ptr, "texmode", STENCIL_SECONDARY); - RNA_enum_set(kmi->ptr, "mode", STENCIL_ROTATE); -} - /**************************** registration **********************************/ void ED_operatormacros_paint(void) @@ -1097,376 +1062,40 @@ void ED_operatortypes_paint(void) WM_operatortype_append(PAINT_OT_mask_lasso_gesture); } -static void ed_keymap_paint_brush_size(wmKeyMap *keymap, const char *UNUSED(path)) -{ - wmKeyMapItem *kmi; - - kmi = WM_keymap_add_item(keymap, "BRUSH_OT_scale_size", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_float_set(kmi->ptr, "scalar", 0.9); - - kmi = WM_keymap_add_item(keymap, "BRUSH_OT_scale_size", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_float_set(kmi->ptr, "scalar", 10.0 / 9.0); // 1.1111.... -} - -static void set_brush_rc_path( - PointerRNA *ptr, const char *brush_path, - const char *output_name, const char *input_name) -{ - char *path; - - path = BLI_sprintfN("%s.%s", brush_path, input_name); - RNA_string_set(ptr, output_name, path); - MEM_freeN(path); -} - -void set_brush_rc_props( - PointerRNA *ptr, const char *paint, - const char *prop, const char *secondary_prop, - RCFlags flags) -{ - const char *ups_path = "tool_settings.unified_paint_settings"; - char *brush_path; - - brush_path = BLI_sprintfN("tool_settings.%s.brush", paint); - - set_brush_rc_path(ptr, brush_path, "data_path_primary", prop); - if (secondary_prop) { - set_brush_rc_path(ptr, ups_path, "use_secondary", secondary_prop); - set_brush_rc_path(ptr, ups_path, "data_path_secondary", prop); - } - else { - RNA_string_set(ptr, "use_secondary", ""); - RNA_string_set(ptr, "data_path_secondary", ""); - } - set_brush_rc_path(ptr, brush_path, "color_path", "cursor_color_add"); - if (flags & RC_SECONDARY_ROTATION) - set_brush_rc_path(ptr, brush_path, "rotation_path", "mask_texture_slot.angle"); - else - set_brush_rc_path(ptr, brush_path, "rotation_path", "texture_slot.angle"); - RNA_string_set(ptr, "image_id", brush_path); - - if (flags & RC_COLOR) { - set_brush_rc_path(ptr, brush_path, "fill_color_path", "color"); - } - else { - RNA_string_set(ptr, "fill_color_path", ""); - } - - if (flags & RC_COLOR_OVERRIDE) { - RNA_string_set(ptr, "fill_color_override_path", "tool_settings.unified_paint_settings.color"); - RNA_string_set(ptr, "fill_color_override_test_path", "tool_settings.unified_paint_settings.use_unified_color"); - } - else { - RNA_string_set(ptr, "fill_color_override_path", ""); - RNA_string_set(ptr, "fill_color_override_test_path", ""); - } - - if (flags & RC_ZOOM) - RNA_string_set(ptr, "zoom_path", "space_data.zoom"); - else - RNA_string_set(ptr, "zoom_path", ""); - - RNA_boolean_set(ptr, "secondary_tex", (flags & RC_SECONDARY_ROTATION) != 0); - - MEM_freeN(brush_path); -} - -static void ed_keymap_paint_brush_radial_control( - wmKeyMap *keymap, const char *paint, - RCFlags flags) -{ - wmKeyMapItem *kmi; - /* only size needs to follow zoom, strength shows fixed size circle */ - int flags_nozoom = flags & (~RC_ZOOM); - int flags_noradial_secondary = flags & (~(RC_SECONDARY_ROTATION | RC_ZOOM)); - - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); - set_brush_rc_props(kmi->ptr, paint, "size", "use_unified_size", flags); - - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0); - set_brush_rc_props(kmi->ptr, paint, "strength", "use_unified_strength", flags_nozoom); - - if (flags & RC_WEIGHT) { - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", WKEY, KM_PRESS, 0, 0); - set_brush_rc_props(kmi->ptr, paint, "weight", "use_unified_weight", flags_nozoom); - } - - if (flags & RC_ROTATION) { - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0); - set_brush_rc_props(kmi->ptr, paint, "texture_slot.angle", NULL, flags_noradial_secondary); - } - - if (flags & RC_SECONDARY_ROTATION) { - kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - set_brush_rc_props(kmi->ptr, paint, "mask_texture_slot.angle", NULL, flags_nozoom); - } -} - -static void paint_partial_visibility_keys(wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - /* Partial visibility */ - kmi = WM_keymap_add_item(keymap, "PAINT_OT_hide_show", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "action", PARTIALVIS_SHOW); - RNA_enum_set(kmi->ptr, "area", PARTIALVIS_INSIDE); - kmi = WM_keymap_add_item(keymap, "PAINT_OT_hide_show", HKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "action", PARTIALVIS_HIDE); - RNA_enum_set(kmi->ptr, "area", PARTIALVIS_INSIDE); - kmi = WM_keymap_add_item(keymap, "PAINT_OT_hide_show", HKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "action", PARTIALVIS_SHOW); - RNA_enum_set(kmi->ptr, "area", PARTIALVIS_ALL); -} - - -static void paint_keymap_curve(wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - WM_keymap_add_item(keymap, "PAINTCURVE_OT_add_point_slide", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "PAINTCURVE_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "PAINTCURVE_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - WM_keymap_add_item(keymap, "PAINTCURVE_OT_slide", ACTIONMOUSE, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "PAINTCURVE_OT_slide", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "align", true); - kmi = WM_keymap_add_item(keymap, "PAINTCURVE_OT_select", AKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "toggle", true); - - WM_keymap_add_item(keymap, "PAINTCURVE_OT_cursor", ACTIONMOUSE, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "PAINTCURVE_OT_delete_point", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PAINTCURVE_OT_delete_point", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "PAINTCURVE_OT_draw", RETKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PAINTCURVE_OT_draw", PADENTER, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); - WM_keymap_add_item(keymap, "TRANSFORM_OT_rotate", RKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "TRANSFORM_OT_resize", SKEY, KM_PRESS, 0, 0); -} - void ED_keymap_paint(wmKeyConfig *keyconf) { wmKeyMap *keymap; - wmKeyMapItem *kmi; - int i; keymap = WM_keymap_ensure(keyconf, "Paint Curve", 0, 0); keymap->poll = paint_curve_poll; - paint_keymap_curve(keymap); - /* Sculpt mode */ keymap = WM_keymap_ensure(keyconf, "Sculpt", 0, 0); keymap->poll = sculpt_mode_poll; - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "mode", BRUSH_STROKE_NORMAL); - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "mode", BRUSH_STROKE_INVERT); - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", BRUSH_STROKE_SMOOTH); - - /* Partial visibility, sculpt-only for now */ - paint_partial_visibility_keys(keymap); - - for (i = 0; i <= 5; i++) - RNA_int_set(WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY + i, KM_PRESS, KM_CTRL, 0)->ptr, "level", i); - - /* Clear mask */ - kmi = WM_keymap_add_item(keymap, "PAINT_OT_mask_flood_fill", MKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "mode", PAINT_MASK_FLOOD_VALUE); - RNA_float_set(kmi->ptr, "value", 0); - - /* Invert mask */ - kmi = WM_keymap_add_item(keymap, "PAINT_OT_mask_flood_fill", IKEY, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "mode", PAINT_MASK_INVERT); - - WM_keymap_add_item(keymap, "PAINT_OT_mask_lasso_gesture", LEFTMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - - /* Toggle mask visibility */ - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "scene.tool_settings.sculpt.show_mask"); - - /* Toggle dynamic topology */ - WM_keymap_add_item(keymap, "SCULPT_OT_dynamic_topology_toggle", DKEY, KM_PRESS, KM_CTRL, 0); - - /* Dynamic-topology detail size - * - * This should be improved further, perhaps by showing a triangle - * grid rather than brush alpha */ - kmi = WM_keymap_add_item(keymap, "SCULPT_OT_set_detail_size", DKEY, KM_PRESS, KM_SHIFT, 0); - - /* multires switch */ - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", PAGEUPKEY, KM_PRESS, 0, 0); - RNA_int_set(kmi->ptr, "level", 1); - RNA_boolean_set(kmi->ptr, "relative", true); - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", PAGEDOWNKEY, KM_PRESS, 0, 0); - RNA_int_set(kmi->ptr, "level", -1); - RNA_boolean_set(kmi->ptr, "relative", true); - - ed_keymap_paint_brush_size(keymap, "tool_settings.sculpt.brush.size"); - ed_keymap_paint_brush_radial_control(keymap, "sculpt", RC_ROTATION); - - ed_keymap_stencil(keymap); - - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_DRAW, XKEY, 0); - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_SMOOTH, SKEY, 0); - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_PINCH, PKEY, 0); - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_INFLATE, IKEY, 0); - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_GRAB, GKEY, 0); - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_LAYER, LKEY, 0); - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_FLATTEN, TKEY, KM_SHIFT); - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_CLAY, CKEY, 0); - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_CREASE, CKEY, KM_SHIFT); - keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_SNAKE_HOOK, KKEY, 0); - kmi = keymap_brush_select(keymap, ePaintSculpt, SCULPT_TOOL_MASK, MKEY, 0); - RNA_boolean_set(kmi->ptr, "toggle", 1); - RNA_boolean_set(kmi->ptr, "create_missing", 1); - - /* */ - kmi = WM_keymap_add_item(keymap, "WM_OT_context_menu_enum", EKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.stroke_method"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_smooth_stroke"); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_angle_control", RKEY, KM_PRESS, 0, 0); - /* Vertex Paint mode */ keymap = WM_keymap_ensure(keyconf, "Vertex Paint", 0, 0); keymap->poll = vertex_paint_mode_poll; - RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_vertex_paint", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "mode", BRUSH_STROKE_NORMAL); - RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_vertex_paint", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "mode", BRUSH_STROKE_INVERT); - WM_keymap_add_item(keymap, "PAINT_OT_brush_colors_flip", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PAINT_OT_sample_color", SKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "PAINT_OT_vertex_color_set", KKEY, KM_PRESS, KM_SHIFT, 0); - - ed_keymap_paint_brush_size(keymap, "tool_settings.vertex_paint.brush.size"); - ed_keymap_paint_brush_radial_control(keymap, "vertex_paint", RC_COLOR | RC_COLOR_OVERRIDE | RC_ROTATION); - - ed_keymap_stencil(keymap); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ - RNA_string_set(kmi->ptr, "data_path", "vertex_paint_object.data.use_paint_mask"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.vertex_paint.brush.use_smooth_stroke"); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_angle_control", RKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_menu_enum", EKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.vertex_paint.brush.stroke_method"); - /* Weight Paint mode */ keymap = WM_keymap_ensure(keyconf, "Weight Paint", 0, 0); keymap->poll = weight_paint_mode_poll; - WM_keymap_verify_item(keymap, "PAINT_OT_weight_paint", LEFTMOUSE, KM_PRESS, 0, 0); - - /* these keys are from 2.4x but could be changed */ - WM_keymap_verify_item(keymap, "PAINT_OT_weight_sample", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_verify_item(keymap, "PAINT_OT_weight_sample_group", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0); - - RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_weight_gradient", LEFTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "type", WPAINT_GRADIENT_TYPE_LINEAR); - RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_weight_gradient", LEFTMOUSE, KM_PRESS, KM_ALT | KM_CTRL, 0)->ptr, "type", WPAINT_GRADIENT_TYPE_RADIAL); - - WM_keymap_add_item(keymap, "PAINT_OT_weight_set", KKEY, KM_PRESS, KM_SHIFT, 0); - - ed_keymap_paint_brush_size(keymap, "tool_settings.weight_paint.brush.size"); - ed_keymap_paint_brush_radial_control(keymap, "weight_paint", RC_WEIGHT); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_menu_enum", EKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.vertex_paint.brush.stroke_method"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* face mask toggle */ - RNA_string_set(kmi->ptr, "data_path", "weight_paint_object.data.use_paint_mask"); - - /* note, conflicts with vertex paint, but this is more useful */ - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", VKEY, KM_PRESS, 0, 0); /* vert mask toggle */ - RNA_string_set(kmi->ptr, "data_path", "weight_paint_object.data.use_paint_mask_vertex"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.weight_paint.brush.use_smooth_stroke"); - /*Weight paint's Vertex Selection Mode */ keymap = WM_keymap_ensure(keyconf, "Weight Paint Vertex Selection", 0, 0); keymap->poll = vert_paint_poll; - ED_keymap_template_select_all(keymap, "PAINT_OT_vert_select_all"); - - WM_keymap_add_item(keymap, "VIEW3D_OT_select_box", BKEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "mode", SEL_OP_ADD); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT | KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "mode", SEL_OP_SUB); - WM_keymap_add_item(keymap, "VIEW3D_OT_select_circle", CKEY, KM_PRESS, 0, 0); - /* Image/Texture Paint mode */ keymap = WM_keymap_ensure(keyconf, "Image Paint", 0, 0); keymap->poll = image_texture_paint_poll; - RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "mode", BRUSH_STROKE_NORMAL); - RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "mode", BRUSH_STROKE_INVERT); - WM_keymap_add_item(keymap, "PAINT_OT_brush_colors_flip", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PAINT_OT_grab_clone", RIGHTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PAINT_OT_sample_color", SKEY, KM_PRESS, 0, 0); - - ed_keymap_paint_brush_size(keymap, "tool_settings.image_paint.brush.size"); - ed_keymap_paint_brush_radial_control( - keymap, "image_paint", - RC_COLOR | RC_COLOR_OVERRIDE | RC_ZOOM | RC_ROTATION | RC_SECONDARY_ROTATION); - - ed_keymap_stencil(keymap); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ - RNA_string_set(kmi->ptr, "data_path", "image_paint_object.data.use_paint_mask"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.image_paint.brush.use_smooth_stroke"); - - WM_keymap_add_menu(keymap, "VIEW3D_MT_angle_control", RKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_menu_enum", EKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.image_paint.brush.stroke_method"); - /* face-mask mode */ keymap = WM_keymap_ensure(keyconf, "Face Mask", 0, 0); keymap->poll = facemask_paint_poll; - ED_keymap_template_select_all(keymap, "PAINT_OT_face_select_all"); - - kmi = WM_keymap_add_item(keymap, "PAINT_OT_face_select_hide", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "PAINT_OT_face_select_hide", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - WM_keymap_add_item(keymap, "PAINT_OT_face_select_reveal", HKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "PAINT_OT_face_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); - kmi = WM_keymap_add_item(keymap, "PAINT_OT_face_select_linked_pick", LKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "PAINT_OT_face_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - keymap = WM_keymap_ensure(keyconf, "UV Sculpt", 0, 0); keymap->poll = uv_sculpt_keymap_poll; - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", QKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_uv_sculpt"); - - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_uv_sculpt_stroke", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "mode", BRUSH_STROKE_NORMAL); - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_uv_sculpt_stroke", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "mode", BRUSH_STROKE_INVERT); - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_uv_sculpt_stroke", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", BRUSH_STROKE_SMOOTH); - - ed_keymap_paint_brush_size(keymap, "tool_settings.uv_sculpt.brush.size"); - ed_keymap_paint_brush_radial_control(keymap, "uv_sculpt", 0); - - RNA_enum_set(WM_keymap_add_item(keymap, "BRUSH_OT_uv_sculpt_tool_set", SKEY, KM_PRESS, 0, 0)->ptr, "tool", UV_SCULPT_TOOL_RELAX); - RNA_enum_set(WM_keymap_add_item(keymap, "BRUSH_OT_uv_sculpt_tool_set", PKEY, KM_PRESS, 0, 0)->ptr, "tool", UV_SCULPT_TOOL_PINCH); - RNA_enum_set(WM_keymap_add_item(keymap, "BRUSH_OT_uv_sculpt_tool_set", GKEY, KM_PRESS, 0, 0)->ptr, "tool", UV_SCULPT_TOOL_GRAB); - /* paint stroke */ keymap = paint_stroke_modal_keymap(keyconf); WM_modalkeymap_assign(keymap, "SCULPT_OT_brush_stroke"); diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index e31a2617238..af2ed032931 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -938,10 +938,6 @@ struct wmKeyMap *paint_stroke_modal_keymap(struct wmKeyConfig *keyconf) /* this function is called for each spacetype, only needs to add map once */ if (!keymap) { keymap = WM_modalkeymap_add(keyconf, name, modal_items); - - /* items for modal map */ - WM_modalkeymap_add_item( - keymap, ESCKEY, KM_PRESS, KM_ANY, 0, PAINT_STROKE_MODAL_CANCEL); } return keymap; diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index bbd2f53ec78..79f7ad9a135 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -6052,6 +6052,17 @@ static void SCULPT_OT_sample_detail_size(wmOperatorType *ot) } +/* Dynamic-topology detail size + * + * This should be improved further, perhaps by showing a triangle + * grid rather than brush alpha */ +static void set_brush_rc_props(PointerRNA *ptr, const char *prop) +{ + char *path = BLI_sprintfN("tool_settings.sculpt.brush.%s", prop); + RNA_string_set(ptr, "data_path_primary", path); + MEM_freeN(path); +} + static int sculpt_set_detail_size_exec(bContext *C, wmOperator *UNUSED(op)) { Sculpt *sd = CTX_data_tool_settings(C)->sculpt; @@ -6062,15 +6073,15 @@ static int sculpt_set_detail_size_exec(bContext *C, wmOperator *UNUSED(op)) WM_operator_properties_create_ptr(&props_ptr, ot); if (sd->flags & (SCULPT_DYNTOPO_DETAIL_CONSTANT | SCULPT_DYNTOPO_DETAIL_MANUAL)) { - set_brush_rc_props(&props_ptr, "sculpt", "constant_detail_resolution", NULL, 0); + set_brush_rc_props(&props_ptr, "constant_detail_resolution"); RNA_string_set(&props_ptr, "data_path_primary", "tool_settings.sculpt.constant_detail_resolution"); } else if (sd->flags & SCULPT_DYNTOPO_DETAIL_BRUSH) { - set_brush_rc_props(&props_ptr, "sculpt", "constant_detail_resolution", NULL, 0); + set_brush_rc_props(&props_ptr, "constant_detail_resolution"); RNA_string_set(&props_ptr, "data_path_primary", "tool_settings.sculpt.detail_percent"); } else { - set_brush_rc_props(&props_ptr, "sculpt", "detail_size", NULL, 0); + set_brush_rc_props(&props_ptr, "detail_size"); RNA_string_set(&props_ptr, "data_path_primary", "tool_settings.sculpt.detail_size"); } diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c index 24798938fa6..bbcba93370d 100644 --- a/source/blender/editors/space_action/action_ops.c +++ b/source/blender/editors/space_action/action_ops.c @@ -41,7 +41,6 @@ #include "ED_transform.h" #include "ED_object.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "action_intern.h" @@ -120,168 +119,12 @@ void ED_operatormacros_action(void) /* ************************** registration - keymaps **********************************/ -static void action_keymap_keyframes(wmKeyConfig *keyconf, wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - /* action_select.c - selection tools */ - /* click-select: keyframe (replace) */ - kmi = WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "column", false); - RNA_boolean_set(kmi->ptr, "channel", false); - /* click-select: all on same frame (replace) */ - kmi = WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "column", true); - RNA_boolean_set(kmi->ptr, "channel", false); - /* click-select: keyframe (add) */ - kmi = WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "column", false); - RNA_boolean_set(kmi->ptr, "channel", false); - /* click-select: all on same frame (add) */ - kmi = WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "column", true); - RNA_boolean_set(kmi->ptr, "channel", false); - /* click-select: all on same channel (replace) */ - kmi = WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "column", false); - RNA_boolean_set(kmi->ptr, "channel", true); - /* click-select: all on same channel (add) */ - kmi = WM_keymap_add_item(keymap, "ACTION_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_ALT | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "column", false); - RNA_boolean_set(kmi->ptr, "channel", true); - - /* click-select: left/right */ - kmi = WM_keymap_add_item(keymap, "ACTION_OT_select_leftright", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_enum_set(kmi->ptr, "mode", ACTKEYS_LRSEL_TEST); - kmi = WM_keymap_add_item(keymap, "ACTION_OT_select_leftright", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_enum_set(kmi->ptr, "mode", ACTKEYS_LRSEL_TEST); - - kmi = WM_keymap_add_item(keymap, "ACTION_OT_select_leftright", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_enum_set(kmi->ptr, "mode", ACTKEYS_LRSEL_LEFT); - kmi = WM_keymap_add_item(keymap, "ACTION_OT_select_leftright", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_enum_set(kmi->ptr, "mode", ACTKEYS_LRSEL_RIGHT); - - /* deselect all */ - ED_keymap_template_select_all(keymap, "ACTION_OT_select_all"); - - /* box_select */ - kmi = WM_keymap_add_item(keymap, "ACTION_OT_select_box", BKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "axis_range", false); - kmi = WM_keymap_add_item(keymap, "ACTION_OT_select_box", BKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "axis_range", true); - - /* region select */ - kmi = WM_keymap_add_item(keymap, "ACTION_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "ACTION_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - WM_keymap_add_item(keymap, "ACTION_OT_select_circle", CKEY, KM_PRESS, 0, 0); - - /* column select */ - RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_KEYS); - RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_CFRA); - RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_COLUMN); - RNA_enum_set(WM_keymap_add_item(keymap, "ACTION_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", ACTKEYS_COLUMNSEL_MARKERS_BETWEEN); - - /* select more/less */ - WM_keymap_add_item(keymap, "ACTION_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ACTION_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - /* select linked */ - WM_keymap_add_item(keymap, "ACTION_OT_select_linked", LKEY, KM_PRESS, 0, 0); - - - /* action_edit.c */ - /* jump to selected keyframes */ - WM_keymap_add_item(keymap, "ACTION_OT_frame_jump", GKEY, KM_PRESS, KM_CTRL, 0); - - /* menu + single-step transform */ - WM_keymap_add_menu_pie(keymap, "DOPESHEET_MT_snap_pie", SKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACTION_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); - - /* menu + set setting */ - WM_keymap_add_item(keymap, "ACTION_OT_handle_type", VKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACTION_OT_interpolation_type", TKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACTION_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACTION_OT_keyframe_type", RKEY, KM_PRESS, 0, 0); - - /* specials */ - WM_keymap_add_menu(keymap, "DOPESHEET_MT_specials", WKEY, KM_PRESS, 0, 0); - - /* destructive */ - WM_keymap_add_item(keymap, "ACTION_OT_sample", OKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); - - WM_keymap_add_menu(keymap, "DOPESHEET_MT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "DOPESHEET_MT_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "ACTION_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ACTION_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); - - /* copy/paste */ - WM_keymap_add_item(keymap, "ACTION_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ACTION_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); - kmi = WM_keymap_add_item(keymap, "ACTION_OT_paste", VKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "flipped", true); -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "ACTION_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "ACTION_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); - kmi = WM_keymap_add_item(keymap, "ACTION_OT_paste", VKEY, KM_PRESS, KM_OSKEY | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "flipped", true); -#endif - - /* auto-set range */ - WM_keymap_add_item(keymap, "ACTION_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - WM_keymap_add_item(keymap, "ACTION_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "ACTION_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif - WM_keymap_add_item(keymap, "ACTION_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ACTION_OT_view_frame", PAD0, KM_PRESS, 0, 0); - - - /* animation module */ - /* channels list - * NOTE: these operators were originally for the channels list, but are added here too for convenience... - */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_editable_toggle", TABKEY, KM_PRESS, 0, 0); - - /* find (i.e. a shortcut for setting the name filter) */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_find", FKEY, KM_PRESS, KM_CTRL, 0); - - /* transform system */ - transform_keymap_for_space(keyconf, keymap, SPACE_ACTION); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", OKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_proportional_action"); - ED_keymap_proportional_cycle(keyconf, keymap); - - /* special markers hotkeys for anim editors: see note in definition of this function */ - ED_marker_keymap_animedit_conflictfree(keymap); -} - /* --------------- */ void action_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - /* keymap for all regions */ - keymap = WM_keymap_ensure(keyconf, "Dopesheet Generic", SPACE_ACTION, 0); - - /* region management... */ - WM_keymap_add_item(keymap, "ACTION_OT_properties", NKEY, KM_PRESS, 0, 0); - + WM_keymap_ensure(keyconf, "Dopesheet Generic", SPACE_ACTION, 0); /* channels */ /* Channels are not directly handled by the Action Editor module, but are inherited from the Animation module. @@ -290,6 +133,5 @@ void action_keymap(wmKeyConfig *keyconf) */ /* keyframes */ - keymap = WM_keymap_ensure(keyconf, "Dopesheet", SPACE_ACTION, 0); - action_keymap_keyframes(keyconf, keymap); + WM_keymap_ensure(keyconf, "Dopesheet", SPACE_ACTION, 0); } diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index dbbbe6d0edb..15587a5f39d 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -299,8 +299,6 @@ static void action_channel_region_init(wmWindowManager *wm, ARegion *ar) keymap = WM_keymap_ensure(wm->defaultconf, "Animation Channels", 0, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); - WM_keymap_add_menu(keymap, "DOPESHEET_MT_specials_channels", WKEY, KM_PRESS, 0, 0); - keymap = WM_keymap_ensure(wm->defaultconf, "Dopesheet Generic", SPACE_ACTION, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); } diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c index 3e343d5e35a..afaa3325f6b 100644 --- a/source/blender/editors/space_api/spacetypes.c +++ b/source/blender/editors/space_api/spacetypes.c @@ -68,6 +68,7 @@ #include "ED_mask.h" #include "ED_sequencer.h" #include "ED_gizmo_library.h" +#include "ED_transform.h" #include "io_ops.h" @@ -216,6 +217,8 @@ void ED_spacetypes_keymap(wmKeyConfig *keyconf) ED_keymap_view2d(keyconf); ED_keymap_ui(keyconf); + ED_keymap_transform(keyconf); + spacetypes = BKE_spacetypes_list(); for (stype = spacetypes->first; stype; stype = stype->next) { if (stype->keymap) diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index a4fc8fbdcc2..1f1f238daf6 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -353,15 +353,7 @@ static void buttons_operatortypes(void) static void buttons_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Property Editor", SPACE_BUTS, 0); - wmKeyMapItem *kmi; - - WM_keymap_add_item(keymap, "BUTTONS_OT_context_menu", RIGHTMOUSE, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_space_context_cycle", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_PREV); - kmi = WM_keymap_add_item(keymap, "SCREEN_OT_space_context_cycle", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "direction", SPACE_CONTEXT_CYCLE_NEXT); + WM_keymap_ensure(keyconf, "Property Editor", SPACE_BUTS, 0); } /* add handlers, stuff you only do once or on area/region changes */ diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c index a0b2e95817d..10f7777ee31 100644 --- a/source/blender/editors/space_clip/space_clip.c +++ b/source/blender/editors/space_clip/space_clip.c @@ -56,7 +56,6 @@ #include "ED_space_api.h" #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_clip.h" #include "ED_transform.h" #include "ED_uvedit.h" /* just for ED_image_draw_cursor */ @@ -539,264 +538,18 @@ static void clip_operatortypes(void) static void clip_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - /* ******** Global hotkeys avalaible for all regions ******** */ - - keymap = WM_keymap_ensure(keyconf, "Clip", SPACE_CLIP, 0); - - WM_keymap_add_item(keymap, "CLIP_OT_open", OKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "CLIP_OT_tools", TKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_properties", NKEY, KM_PRESS, 0, 0); - - /* 2d tracking */ - kmi = WM_keymap_add_item(keymap, "CLIP_OT_track_markers", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "backwards", true); - RNA_boolean_set(kmi->ptr, "sequence", false); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_track_markers", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "backwards", false); - RNA_boolean_set(kmi->ptr, "sequence", false); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_track_markers", TKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "backwards", false); - RNA_boolean_set(kmi->ptr, "sequence", true); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_track_markers", TKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "backwards", true); - RNA_boolean_set(kmi->ptr, "sequence", true); - - /* mode */ - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", TABKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.mode"); - RNA_string_set(kmi->ptr, "value_1", "TRACKING"); - RNA_string_set(kmi->ptr, "value_2", "MASK"); - - WM_keymap_add_item(keymap, "CLIP_OT_solve_camera", SKEY, KM_PRESS, KM_SHIFT, 0); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_set_solver_keyframe", QKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "keyframe", 0); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_set_solver_keyframe", EKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "keyframe", 1); - - /* io/playback */ - WM_keymap_add_item(keymap, "CLIP_OT_prefetch", PKEY, KM_PRESS, 0, 0); + WM_keymap_ensure(keyconf, "Clip", SPACE_CLIP, 0); /* ******** Hotkeys avalaible for main region only ******** */ - - keymap = WM_keymap_ensure(keyconf, "Clip Editor", SPACE_CLIP, 0); + WM_keymap_ensure(keyconf, "Clip Editor", SPACE_CLIP, 0); // keymap->poll = ED_space_clip_tracking_poll; - /* ** View/navigation ** */ - - WM_keymap_add_item(keymap, "CLIP_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_view_pan", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "CLIP_OT_view_pan", MOUSEPAN, 0, 0, 0); - - WM_keymap_add_item(keymap, "CLIP_OT_view_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "CLIP_OT_view_zoom", MOUSEZOOM, 0, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_view_zoom", MOUSEPAN, 0, KM_CTRL, 0); - WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_in", WHEELINMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_out", WHEELOUTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_in", PADPLUSKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_out", PADMINUS, KM_PRESS, 0, 0); - - /* ctrl now works as well, shift + numpad works as arrow keys on Windows */ - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_CTRL, 0)->ptr, "ratio", 8.0f); - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_CTRL, 0)->ptr, "ratio", 4.0f); - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_CTRL, 0)->ptr, "ratio", 2.0f); - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 8.0f); - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 4.0f); - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 2.0f); - - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD1, KM_PRESS, 0, 0)->ptr, "ratio", 1.0f); - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD2, KM_PRESS, 0, 0)->ptr, "ratio", 0.5f); - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f); - RNA_float_set(WM_keymap_add_item(keymap, "CLIP_OT_view_zoom_ratio", PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f); - - WM_keymap_add_item(keymap, "CLIP_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_view_all", FKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "fit_view", true); - - WM_keymap_add_item(keymap, "CLIP_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); - -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "CLIP_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_view_ndof", NDOF_MOTION, 0, 0, 0); -#endif - - /* jump to special frame */ - kmi = WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", LEFTARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "position", 0); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", RIGHTARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "position", 1); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", LEFTARROWKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "position", 2); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_frame_jump", RIGHTARROWKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "position", 3); - - /* "timeline" */ - WM_keymap_add_item(keymap, "CLIP_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0); - - /* selection */ - kmi = WM_keymap_add_item(keymap, "CLIP_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - - ED_keymap_template_select_all(keymap, "CLIP_OT_select_all"); - - WM_keymap_add_item(keymap, "CLIP_OT_select_box", BKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_select_circle", CKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "CLIP_MT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - /* marker */ - WM_keymap_add_item(keymap, "CLIP_OT_add_marker_slide", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "CLIP_OT_delete_marker", XKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "CLIP_OT_delete_marker", DELKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "CLIP_OT_slide_marker", LEFTMOUSE, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_disable_markers", DKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "action", 2); /* toggle */ - - /* tracks */ - WM_keymap_add_item(keymap, "CLIP_OT_delete_track", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_delete_track", DELKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_lock_tracks", LKEY, KM_PRESS, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "action", 0); /* lock */ - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_lock_tracks", LKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "action", 1); /* unlock */ - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_hide_tracks", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_hide_tracks", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - WM_keymap_add_item(keymap, "CLIP_OT_hide_tracks_clear", HKEY, KM_PRESS, KM_ALT, 0); - - /* plane tracks */ - WM_keymap_add_item(keymap, "CLIP_OT_slide_plane_marker", ACTIONMOUSE, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "CLIP_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_keyframe_delete", IKEY, KM_PRESS, KM_ALT, 0); - - /* clean-up */ - WM_keymap_add_item(keymap, "CLIP_OT_join_tracks", JKEY, KM_PRESS, KM_CTRL, 0); - - /* menus */ - WM_keymap_add_menu(keymap, "CLIP_MT_tracking_specials", WKEY, KM_PRESS, 0, 0); - - /* display */ - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.lock_selection"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", DKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.show_disabled"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.show_marker_search"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.use_mute_footage"); - - transform_keymap_for_space(keyconf, keymap, SPACE_CLIP); - - /* clean-up */ - kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_REMAINED); - RNA_boolean_set(kmi->ptr, "clear_active", false); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_UPTO); - RNA_boolean_set(kmi->ptr, "clear_active", false); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_ALL); - RNA_boolean_set(kmi->ptr, "clear_active", false); - - /* Cursor */ - WM_keymap_add_item(keymap, "CLIP_OT_cursor_set", ACTIONMOUSE, KM_PRESS, 0, 0); - - /* pivot point */ - WM_keymap_add_menu_pie(keymap, "CLIP_MT_pivot_pie", PERIODKEY, KM_PRESS, 0, 0); - - /* Copy-paste */ - WM_keymap_add_item(keymap, "CLIP_OT_copy_tracks", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "CLIP_OT_paste_tracks", VKEY, KM_PRESS, KM_CTRL, 0); /* ******** Hotkeys avalaible for preview region only ******** */ - - keymap = WM_keymap_ensure(keyconf, "Clip Graph Editor", SPACE_CLIP, 0); - - /* "timeline" */ - WM_keymap_add_item(keymap, "CLIP_OT_change_frame", ACTIONMOUSE, KM_PRESS, 0, 0); - - /* selection */ - kmi = WM_keymap_add_item(keymap, "CLIP_OT_graph_select", SELECTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_graph_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - - ED_keymap_template_select_all(keymap, "CLIP_OT_graph_select_all_markers"); - - WM_keymap_add_item(keymap, "CLIP_OT_graph_select_box", BKEY, KM_PRESS, 0, 0); - - /* delete */ - WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_curve", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_curve", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_knot", XKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "CLIP_OT_graph_delete_knot", DELKEY, KM_PRESS, KM_SHIFT, 0); - - /* view */ - WM_keymap_add_item(keymap, "CLIP_OT_graph_view_all", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "CLIP_OT_graph_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif - WM_keymap_add_item(keymap, "CLIP_OT_graph_center_current_frame", PAD0, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", LKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.lock_time_cursor"); - - /* clean-up */ - kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_REMAINED); - RNA_boolean_set(kmi->ptr, "clear_active", true); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_UPTO); - RNA_boolean_set(kmi->ptr, "clear_active", true); - kmi = WM_keymap_add_item(keymap, "CLIP_OT_clear_track_path", TKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "action", TRACK_CLEAR_ALL); - RNA_boolean_set(kmi->ptr, "clear_active", true); - - /* tracks */ - kmi = WM_keymap_add_item(keymap, "CLIP_OT_graph_disable_markers", DKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "action", 2); /* toggle */ - - transform_keymap_for_space(keyconf, keymap, SPACE_CLIP); + WM_keymap_ensure(keyconf, "Clip Graph Editor", SPACE_CLIP, 0); /* ******** Hotkeys avalaible for channels region only ******** */ - - keymap = WM_keymap_ensure(keyconf, "Clip Dopesheet Editor", SPACE_CLIP, 0); - - kmi = WM_keymap_add_item(keymap, "CLIP_OT_dopesheet_select_channel", LEFTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", true); /* toggle */ - - WM_keymap_add_item(keymap, "CLIP_OT_dopesheet_view_all", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "CLIP_OT_dopesheet_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif + WM_keymap_ensure(keyconf, "Clip Dopesheet Editor", SPACE_CLIP, 0); } /* DO NOT make this static, this hides the symbol and breaks API generation script. */ diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index ddfeb2119d9..596d66da9a6 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -265,87 +265,7 @@ static void console_operatortypes(void) static void console_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Console", SPACE_CONSOLE, 0); - wmKeyMapItem *kmi; - -#ifdef __APPLE__ - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", LEFTARROWKEY, KM_PRESS, KM_OSKEY, 0)->ptr, "type", LINE_BEGIN); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", RIGHTARROWKEY, KM_PRESS, KM_OSKEY, 0)->ptr, "type", LINE_END); -#endif - - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", PREV_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", NEXT_WORD); - - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", HOMEKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_BEGIN); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); - RNA_boolean_set(kmi->ptr, "reverse", false); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); - RNA_boolean_set(kmi->ptr, "reverse", true); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); - RNA_boolean_set(kmi->ptr, "reverse", false); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADMINUS, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); - RNA_boolean_set(kmi->ptr, "reverse", true); - - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_CHAR); - - RNA_boolean_set(WM_keymap_add_item(keymap, "CONSOLE_OT_history_cycle", UPARROWKEY, KM_PRESS, 0, 0)->ptr, "reverse", true); - RNA_boolean_set(WM_keymap_add_item(keymap, "CONSOLE_OT_history_cycle", DOWNARROWKEY, KM_PRESS, 0, 0)->ptr, "reverse", false); - -#if 0 - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", PREV_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", UPARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", DOWNARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", PAGEUPKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_PAGE); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", PAGEDOWNKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_PAGE); -#endif - - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_delete", DELKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_NEXT_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_PREV_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_delete", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", DEL_PREV_CHAR); /* same as above [#26623] */ - - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_delete", DELKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", DEL_NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_delete", BACKSPACEKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", DEL_PREV_WORD); - - WM_keymap_add_item(keymap, "CONSOLE_OT_clear_line", RETKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "CONSOLE_OT_clear_line", PADENTER, KM_PRESS, KM_SHIFT, 0); - -#ifdef WITH_PYTHON - kmi = WM_keymap_add_item(keymap, "CONSOLE_OT_execute", RETKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "interactive", true); - kmi = WM_keymap_add_item(keymap, "CONSOLE_OT_execute", PADENTER, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "interactive", true); - - WM_keymap_add_item(keymap, "CONSOLE_OT_autocomplete", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* python operator - space_text.py */ -#endif - - WM_keymap_add_item(keymap, "CONSOLE_OT_copy_as_script", CKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - WM_keymap_add_item(keymap, "CONSOLE_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "CONSOLE_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "CONSOLE_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "CONSOLE_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); -#endif - - WM_keymap_add_item(keymap, "CONSOLE_OT_select_set", LEFTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CONSOLE_OT_select_word", LEFTMOUSE, KM_DBL_CLICK, 0, 0); - - RNA_string_set(WM_keymap_add_item(keymap, "CONSOLE_OT_insert", TABKEY, KM_PRESS, KM_CTRL, 0)->ptr, "text", "\t"); /* fake tabs */ - - WM_keymap_add_item(keymap, "CONSOLE_OT_indent", TABKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CONSOLE_OT_unindent", TABKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "CONSOLE_OT_insert", KM_TEXTINPUT, KM_ANY, KM_ANY, 0); // last! + WM_keymap_ensure(keyconf, "Console", SPACE_CONSOLE, 0); } /****************** header region ******************/ diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index cdad11d8ad0..e0413e48346 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -489,137 +489,14 @@ static void file_operatortypes(void) /* NOTE: do not add .blend file reading on this level */ static void file_keymap(struct wmKeyConfig *keyconf) { - wmKeyMapItem *kmi; /* keys for all regions */ - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "File Browser", SPACE_FILE, 0); - - /* More common 'fliebrowser-like navigation' shortcuts. */ - WM_keymap_add_item(keymap, "FILE_OT_parent", UPARROWKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "FILE_OT_previous", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "FILE_OT_next", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "FILE_OT_refresh", RKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_previous", BACKSPACEKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_next", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0); - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", HKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.params.show_hidden"); - WM_keymap_add_item(keymap, "FILE_OT_directory_new", IKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "FILE_OT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_verify_item(keymap, "FILE_OT_smoothscroll", TIMER1, KM_ANY, KM_ANY, 0); - - WM_keymap_add_item(keymap, "FILE_OT_bookmark_toggle", TKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_bookmark_add", BKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_ensure(keyconf, "File Browser", SPACE_FILE, 0); /* keys for main region */ - keymap = WM_keymap_ensure(keyconf, "File Browser Main", SPACE_FILE, 0); - kmi = WM_keymap_add_item(keymap, "FILE_OT_execute", LEFTMOUSE, KM_DBL_CLICK, 0, 0); - RNA_boolean_set(kmi->ptr, "need_active", true); - - WM_keymap_add_item(keymap, "FILE_OT_refresh", PADPERIOD, KM_PRESS, 0, 0); - - /* left mouse selects and opens */ - WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, 0, 0); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "fill", true); - - /* right mouse selects without opening */ - kmi = WM_keymap_add_item(keymap, "FILE_OT_select", RIGHTMOUSE, KM_CLICK, 0, 0); - RNA_boolean_set(kmi->ptr, "open", false); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select", RIGHTMOUSE, KM_CLICK, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "open", false); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select", RIGHTMOUSE, KM_CLICK, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "fill", true); - RNA_boolean_set(kmi->ptr, "open", false); - - - /* arrow keys navigation (walk selecting) */ - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", UPARROWKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_UP); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", UPARROWKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_UP); - RNA_boolean_set(kmi->ptr, "extend", true); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", UPARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_UP); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "fill", true); - - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", DOWNARROWKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_DOWN); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", DOWNARROWKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_DOWN); - RNA_boolean_set(kmi->ptr, "extend", true); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", DOWNARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_DOWN); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "fill", true); - - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", LEFTARROWKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_LEFT); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", LEFTARROWKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_LEFT); - RNA_boolean_set(kmi->ptr, "extend", true); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", LEFTARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_LEFT); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "fill", true); - - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", RIGHTARROWKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_RIGHT); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", RIGHTARROWKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_RIGHT); - RNA_boolean_set(kmi->ptr, "extend", true); - kmi = WM_keymap_add_item(keymap, "FILE_OT_select_walk", RIGHTARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "direction", FILE_SELECT_WALK_RIGHT); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "fill", true); - - - /* front and back mouse folder navigation */ - WM_keymap_add_item(keymap, "FILE_OT_previous", BUTTON4MOUSE, KM_CLICK, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_next", BUTTON5MOUSE, KM_CLICK, 0, 0); - - WM_keymap_add_item(keymap, "FILE_OT_select_all", AKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_select_box", BKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_select_box", EVT_TWEAK_L, KM_ANY, 0, 0); - WM_keymap_add_item(keymap, "FILE_OT_rename", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "FILE_OT_highlight", MOUSEMOVE, KM_ANY, KM_ANY, 0); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0); - RNA_int_set(kmi->ptr, "increment", 1); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0); - RNA_int_set(kmi->ptr, "increment", 10); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "increment", 100); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, 0, 0); - RNA_int_set(kmi->ptr, "increment", -1); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_SHIFT, 0); - RNA_int_set(kmi->ptr, "increment", -10); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "increment", -100); - + WM_keymap_ensure(keyconf, "File Browser Main", SPACE_FILE, 0); /* keys for button region (top) */ - keymap = WM_keymap_ensure(keyconf, "File Browser Buttons", SPACE_FILE, 0); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0); - RNA_int_set(kmi->ptr, "increment", 1); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0); - RNA_int_set(kmi->ptr, "increment", 10); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "increment", 100); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, 0, 0); - RNA_int_set(kmi->ptr, "increment", -1); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_SHIFT, 0); - RNA_int_set(kmi->ptr, "increment", -10); - kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_CTRL, 0); - RNA_int_set(kmi->ptr, "increment", -100); + WM_keymap_ensure(keyconf, "File Browser Buttons", SPACE_FILE, 0); } diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index b3a72066b79..1b3d154f804 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -49,7 +49,6 @@ #include "ED_markers.h" #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_transform.h" #include "ED_object.h" @@ -491,212 +490,10 @@ void ED_operatormacros_graph(void) /* ************************** registration - keymaps **********************************/ -static void graphedit_keymap_keyframes(wmKeyConfig *keyconf, wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - /* view */ - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", HKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.show_handles"); - - /* NOTE: 'ACTIONMOUSE' not 'LEFTMOUSE', as user may have swapped mouse-buttons - * This keymap is supposed to override ANIM_OT_change_frame, which does the same except it doesn't do y-values - */ - WM_keymap_add_item(keymap, "GRAPH_OT_cursor_set", ACTIONMOUSE, KM_PRESS, 0, 0); - - - /* graph_select.c - selection tools */ - /* click-select: keyframe (replace) */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_clickselect", SELECTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "curves", false); - RNA_boolean_set(kmi->ptr, "column", false); - /* click-select: all keyframes on same frame (replace) */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "curves", false); - RNA_boolean_set(kmi->ptr, "column", true); - /* click-select: keyframe (add) */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "curves", false); - RNA_boolean_set(kmi->ptr, "column", false); - /* click-select: all keyframes on same frame (add) */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_ALT | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "curves", false); - RNA_boolean_set(kmi->ptr, "column", true); - /* click-select: all keyframes in same curve (replace) */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "curves", true); - RNA_boolean_set(kmi->ptr, "column", false); - /* click-select: all keyframes in same curve (add) */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_clickselect", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_ALT | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "curves", true); - RNA_boolean_set(kmi->ptr, "column", false); - - /* click-select left/right */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_leftright", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_enum_set(kmi->ptr, "mode", GRAPHKEYS_LRSEL_TEST); - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_leftright", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_enum_set(kmi->ptr, "mode", GRAPHKEYS_LRSEL_TEST); - - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_leftright", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_enum_set(kmi->ptr, "mode", GRAPHKEYS_LRSEL_LEFT); - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_leftright", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_enum_set(kmi->ptr, "mode", GRAPHKEYS_LRSEL_RIGHT); - - /* deselect all */ - ED_keymap_template_select_all(keymap, "GRAPH_OT_select_all"); - - /* box_select */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_box", BKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "axis_range", false); - RNA_boolean_set(kmi->ptr, "include_handles", false); - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_box", BKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "axis_range", true); - RNA_boolean_set(kmi->ptr, "include_handles", false); - - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_box", BKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "axis_range", false); - RNA_boolean_set(kmi->ptr, "include_handles", true); - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_box", BKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "axis_range", true); - RNA_boolean_set(kmi->ptr, "include_handles", true); - - /* region select */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - WM_keymap_add_item(keymap, "GRAPH_OT_select_circle", CKEY, KM_PRESS, 0, 0); - - /* column select */ - RNA_enum_set(WM_keymap_add_item(keymap, "GRAPH_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", GRAPHKEYS_COLUMNSEL_KEYS); - RNA_enum_set(WM_keymap_add_item(keymap, "GRAPH_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", GRAPHKEYS_COLUMNSEL_CFRA); - RNA_enum_set(WM_keymap_add_item(keymap, "GRAPH_OT_select_column", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", GRAPHKEYS_COLUMNSEL_MARKERS_COLUMN); - RNA_enum_set(WM_keymap_add_item(keymap, "GRAPH_OT_select_column", KKEY, KM_PRESS, KM_ALT, 0)->ptr, "mode", GRAPHKEYS_COLUMNSEL_MARKERS_BETWEEN); - - /* select more/less */ - WM_keymap_add_item(keymap, "GRAPH_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - /* select linked */ - WM_keymap_add_item(keymap, "GRAPH_OT_select_linked", LKEY, KM_PRESS, 0, 0); - - - /* graph_edit.c */ - /* jump to selected keyframes */ - WM_keymap_add_item(keymap, "GRAPH_OT_frame_jump", GKEY, KM_PRESS, KM_CTRL, 0); - - /* menu + single-step transform */ - WM_keymap_add_menu_pie(keymap, "GRAPH_MT_snap_pie", SKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "GRAPH_OT_handle_type", VKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "GRAPH_OT_interpolation_type", TKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_easing_type", EKEY, KM_PRESS, KM_CTRL, 0); - - /* destructive */ - WM_keymap_add_item(keymap, "GRAPH_OT_smooth", OKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_sample", OKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); - - WM_keymap_add_item(keymap, "GRAPH_OT_bake", CKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_menu(keymap, "GRAPH_MT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "GRAPH_MT_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_menu(keymap, "GRAPH_MT_specials", WKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "GRAPH_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - - /* insertkey */ - WM_keymap_add_item(keymap, "GRAPH_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_click_insert", ACTIONMOUSE, KM_CLICK, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_click_insert", ACTIONMOUSE, KM_CLICK, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - - /* copy/paste */ - WM_keymap_add_item(keymap, "GRAPH_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_paste", VKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "flipped", true); -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "GRAPH_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_paste", VKEY, KM_PRESS, KM_OSKEY | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "flipped", true); -#endif - - /* auto-set range */ - WM_keymap_add_item(keymap, "GRAPH_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "GRAPH_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif - WM_keymap_add_item(keymap, "GRAPH_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_view_frame", PAD0, KM_PRESS, 0, 0); - - /* F-Modifiers */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_fmodifier_add", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "only_active", false); - - /* animation module */ - /* channels list - * NOTE: these operators were originally for the channels list, but are added here too for convenience... - */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_editable_toggle", TABKEY, KM_PRESS, 0, 0); - - /* transform system */ - transform_keymap_for_space(keyconf, keymap, SPACE_IPO); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", OKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_proportional_fcurve"); - ED_keymap_proportional_cycle(keyconf, keymap); - - /* pivot point settings */ - WM_keymap_add_menu_pie(keymap, "GRAPH_MT_pivot_pie", PERIODKEY, KM_PRESS, 0, 0); - - /* special markers hotkeys for anim editors: see note in definition of this function */ - ED_marker_keymap_animedit_conflictfree(keymap); -} - -/* --------------- */ - void graphedit_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - /* keymap for all regions */ - keymap = WM_keymap_ensure(keyconf, "Graph Editor Generic", SPACE_IPO, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_properties", NKEY, KM_PRESS, 0, 0); - - /* extrapolation works on channels, not keys */ - WM_keymap_add_item(keymap, "GRAPH_OT_extrapolation_type", EKEY, KM_PRESS, KM_SHIFT, 0); - - /* find (i.e. a shortcut for setting the name filter) */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_find", FKEY, KM_PRESS, KM_CTRL, 0); - - /* hide/reveal selected curves */ - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_hide", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - - kmi = WM_keymap_add_item(keymap, "GRAPH_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - WM_keymap_add_item(keymap, "GRAPH_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); - + WM_keymap_ensure(keyconf, "Graph Editor Generic", SPACE_IPO, 0); /* channels */ /* Channels are not directly handled by the Graph Editor module, but are inherited from the Animation module. @@ -705,6 +502,5 @@ void graphedit_keymap(wmKeyConfig *keyconf) */ /* keyframes */ - keymap = WM_keymap_ensure(keyconf, "Graph Editor", SPACE_IPO, 0); - graphedit_keymap_keyframes(keyconf, keymap); + WM_keymap_ensure(keyconf, "Graph Editor", SPACE_IPO, 0); } diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 2854f52ac18..8218216f9a6 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -293,87 +293,8 @@ static void image_operatortypes(void) static void image_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Image Generic", SPACE_IMAGE, 0); - wmKeyMapItem *kmi; - int i; - - WM_keymap_add_item(keymap, "IMAGE_OT_new", NKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_open", OKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_reload", RKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_read_viewlayers", RKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_save", SKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_save_as", SKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_properties", NKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_toolshelf", TKEY, KM_PRESS, 0, 0); - - WM_keymap_add_menu(keymap, "IMAGE_MT_specials", WKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "IMAGE_OT_cycle_render_slot", JKEY, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "IMAGE_OT_cycle_render_slot", JKEY, KM_PRESS, KM_ALT, 0)->ptr, "reverse", true); - - keymap = WM_keymap_ensure(keyconf, "Image", SPACE_IMAGE, 0); - - WM_keymap_add_item(keymap, "IMAGE_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "IMAGE_OT_view_all", HOMEKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "fit_view", true); - - WM_keymap_add_item(keymap, "IMAGE_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_pan", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_pan", MOUSEPAN, 0, 0, 0); - -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "IMAGE_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); // or view selected? - WM_keymap_add_item(keymap, "IMAGE_OT_view_ndof", NDOF_MOTION, 0, 0, 0); -#endif - - WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_in", WHEELINMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_out", WHEELOUTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_in", PADPLUSKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_out", PADMINUS, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom", MOUSEZOOM, 0, 0, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom", MOUSEPAN, 0, KM_CTRL, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_border", BKEY, KM_PRESS, KM_SHIFT, 0); - - /* ctrl now works as well, shift + numpad works as arrow keys on Windows */ - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_CTRL, 0)->ptr, "ratio", 8.0f); - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_CTRL, 0)->ptr, "ratio", 4.0f); - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_CTRL, 0)->ptr, "ratio", 2.0f); - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 8.0f); - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 4.0f); - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 2.0f); - - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD1, KM_PRESS, 0, 0)->ptr, "ratio", 1.0f); - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD2, KM_PRESS, 0, 0)->ptr, "ratio", 0.5f); - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f); - RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f); - - WM_keymap_add_item(keymap, "IMAGE_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "IMAGE_OT_sample", ACTIONMOUSE, KM_PRESS, 0, 0); - RNA_enum_set(WM_keymap_add_item(keymap, "IMAGE_OT_curves_point_set", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "point", 0); - RNA_enum_set(WM_keymap_add_item(keymap, "IMAGE_OT_curves_point_set", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "point", 1); - - /* toggle editmode is handy to have while UV unwrapping */ - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", OB_MODE_EDIT); - RNA_boolean_set(kmi->ptr, "toggle", true); - - /* fast switch to render slots */ - for (i = 0; i < 9; i++) { - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_int", ONEKEY + i, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.image.render_slots.active_index"); - RNA_int_set(kmi->ptr, "value", i); - } - - /* pivot */ - WM_keymap_add_menu_pie(keymap, "IMAGE_MT_pivot_pie", PERIODKEY, KM_PRESS, 0, 0); - - /* render border */ - WM_keymap_add_item(keymap, "IMAGE_OT_render_border", BKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "IMAGE_OT_clear_render_border", BKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); + WM_keymap_ensure(keyconf, "Image Generic", SPACE_IMAGE, 0); + WM_keymap_ensure(keyconf, "Image", SPACE_IMAGE, 0); } /* dropboxes */ diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index ab7d688cebb..d2b6d07541e 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -207,28 +207,8 @@ static void info_operatortypes(void) static void info_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Window", 0, 0); - - WM_keymap_verify_item(keymap, "INFO_OT_reports_display_update", TIMERREPORT, KM_ANY, KM_ANY, 0); - - /* info space */ - keymap = WM_keymap_ensure(keyconf, "Info", SPACE_INFO, 0); - - - /* report selection */ - WM_keymap_add_item(keymap, "INFO_OT_select_pick", SELECTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "INFO_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "INFO_OT_select_box", BKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "INFO_OT_report_replay", RKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "INFO_OT_report_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "INFO_OT_report_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "INFO_OT_report_copy", CKEY, KM_PRESS, KM_CTRL, 0); -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "INFO_OT_report_copy", CKEY, KM_PRESS, KM_OSKEY, 0); -#endif + WM_keymap_ensure(keyconf, "Window", 0, 0); + WM_keymap_ensure(keyconf, "Info", SPACE_INFO, 0); } /* add handlers, stuff you only do once or on area/region changes */ diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index 531d85f517f..1896d7ec3a2 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -178,16 +178,7 @@ static void logic_operatortypes(void) static void logic_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Logic Editor", SPACE_LOGIC, 0); - - WM_keymap_add_item(keymap, "LOGIC_OT_properties", NKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "LOGIC_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_menu(keymap, "LOGIC_MT_logicbricks_add", AKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "LOGIC_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "LOGIC_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif + WM_keymap_ensure(keyconf, "Logic Editor", SPACE_LOGIC, 0); } static void logic_refresh(const bContext *UNUSED(C), ScrArea *UNUSED(sa)) diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c index 46c682170cd..abe99eca381 100644 --- a/source/blender/editors/space_nla/nla_ops.c +++ b/source/blender/editors/space_nla/nla_ops.c @@ -40,7 +40,6 @@ #include "ED_markers.h" #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_transform.h" #include "WM_api.h" @@ -173,167 +172,10 @@ void nla_operatortypes(void) /* ************************** registration - keymaps **********************************/ -static void nla_keymap_channels(wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - /* keymappings here are NLA-specific (different to standard channels keymap) */ - - /* selection --------------------------------------------------------------------- */ - /* click-select */ - // XXX for now, only leftmouse.... - kmi = WM_keymap_add_item(keymap, "NLA_OT_channels_click", LEFTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "NLA_OT_channels_click", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - - /* channel operations ------------------------------------------------------------ */ - /* add tracks */ - kmi = WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "above_selected", false); - kmi = WM_keymap_add_item(keymap, "NLA_OT_tracks_add", AKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "above_selected", true); - - /* delete tracks */ - WM_keymap_add_item(keymap, "NLA_OT_tracks_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NLA_OT_tracks_delete", DELKEY, KM_PRESS, 0, 0); -} - -static void nla_keymap_main(wmKeyConfig *keyconf, wmKeyMap *keymap) -{ - wmKeyMapItem *kmi; - - /* selection ------------------------------------------------ */ - /* click select */ - kmi = WM_keymap_add_item(keymap, "NLA_OT_click_select", SELECTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "NLA_OT_click_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - - /* select left/right */ - kmi = WM_keymap_add_item(keymap, "NLA_OT_select_leftright", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_enum_set(kmi->ptr, "mode", NLAEDIT_LRSEL_TEST); - kmi = WM_keymap_add_item(keymap, "NLA_OT_select_leftright", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_enum_set(kmi->ptr, "mode", NLAEDIT_LRSEL_TEST); - - kmi = WM_keymap_add_item(keymap, "NLA_OT_select_leftright", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_enum_set(kmi->ptr, "mode", NLAEDIT_LRSEL_LEFT); - kmi = WM_keymap_add_item(keymap, "NLA_OT_select_leftright", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_enum_set(kmi->ptr, "mode", NLAEDIT_LRSEL_RIGHT); - - /* deselect all */ - ED_keymap_template_select_all(keymap, "NLA_OT_select_all"); - - /* box_select */ - kmi = WM_keymap_add_item(keymap, "NLA_OT_select_box", BKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "axis_range", false); - kmi = WM_keymap_add_item(keymap, "NLA_OT_select_box", BKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "axis_range", true); - - /* view ---------------------------------------------------- */ - /* auto-set range */ - WM_keymap_add_item(keymap, "NLA_OT_previewrange_set", PKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - - WM_keymap_add_item(keymap, "NLA_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "NLA_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif - WM_keymap_add_item(keymap, "NLA_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NLA_OT_view_frame", PAD0, KM_PRESS, 0, 0); - - /* editing ------------------------------------------------ */ - - /* add strips */ - WM_keymap_add_item(keymap, "NLA_OT_actionclip_add", AKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NLA_OT_transition_add", TKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NLA_OT_soundclip_add", KKEY, KM_PRESS, KM_SHIFT, 0); - - /* meta-strips */ - WM_keymap_add_item(keymap, "NLA_OT_meta_add", GKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "NLA_OT_meta_remove", GKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - - /* duplicate */ - kmi = WM_keymap_add_item(keymap, "NLA_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "linked", false); - - kmi = WM_keymap_add_item(keymap, "NLA_OT_duplicate", DKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "linked", true); - - /* single user */ - WM_keymap_add_item(keymap, "NLA_OT_make_single_user", UKEY, KM_PRESS, 0, 0); - - /* delete */ - WM_keymap_add_item(keymap, "NLA_OT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NLA_OT_delete", DELKEY, KM_PRESS, 0, 0); - - /* split */ - WM_keymap_add_item(keymap, "NLA_OT_split", YKEY, KM_PRESS, 0, 0); - - /* toggles */ - WM_keymap_add_item(keymap, "NLA_OT_mute_toggle", HKEY, KM_PRESS, 0, 0); - - /* swap */ - WM_keymap_add_item(keymap, "NLA_OT_swap", FKEY, KM_PRESS, KM_ALT, 0); - - /* move up */ - WM_keymap_add_item(keymap, "NLA_OT_move_up", PAGEUPKEY, KM_PRESS, 0, 0); - /* move down */ - WM_keymap_add_item(keymap, "NLA_OT_move_down", PAGEDOWNKEY, KM_PRESS, 0, 0); - - /* apply scale */ - WM_keymap_add_item(keymap, "NLA_OT_apply_scale", AKEY, KM_PRESS, KM_CTRL, 0); - /* clear scale */ - WM_keymap_add_item(keymap, "NLA_OT_clear_scale", SKEY, KM_PRESS, KM_ALT, 0); - - /* snap */ - WM_keymap_add_menu_pie(keymap, "NLA_MT_snap_pie", SKEY, KM_PRESS, KM_SHIFT, 0); - - /* add f-modifier */ - WM_keymap_add_item(keymap, "NLA_OT_fmodifier_add", MKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - - /* transform system */ - transform_keymap_for_space(keyconf, keymap, SPACE_NLA); - - /* special markers hotkeys for anim editors: see note in definition of this function */ - ED_marker_keymap_animedit_conflictfree(keymap); -} - -/* --------------- */ - void nla_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - /* keymap for all regions ------------------------------------------- */ - keymap = WM_keymap_ensure(keyconf, "NLA Generic", SPACE_NLA, 0); - - /* region management */ - WM_keymap_add_item(keymap, "NLA_OT_properties", NKEY, KM_PRESS, 0, 0); - - /* tweakmode - * - enter and exit are separate operators with the same hotkey... - * This works as they use different poll()'s - */ - WM_keymap_add_item(keymap, "NLA_OT_tweakmode_enter", TABKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NLA_OT_tweakmode_exit", TABKEY, KM_PRESS, 0, 0); - - /* tweakmode for stashed actions - * - similar to normal tweakmode, except we mark the tracks as being "solo" - * too so that the action can be edited in isolation - */ - kmi = WM_keymap_add_item(keymap, "NLA_OT_tweakmode_enter", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "isolate_action", true); - - kmi = WM_keymap_add_item(keymap, "NLA_OT_tweakmode_exit", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "isolate_action", true); - - /* find (i.e. a shortcut for setting the name filter) */ - WM_keymap_add_item(keymap, "ANIM_OT_channels_find", FKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_ensure(keyconf, "NLA Generic", SPACE_NLA, 0); /* channels ---------------------------------------------------------- */ /* Channels are not directly handled by the NLA Editor module, but are inherited from the Animation module. @@ -342,10 +184,8 @@ void nla_keymap(wmKeyConfig *keyconf) * * However, those operations which involve clicking on channels and/or the placement of them in the view are implemented here instead */ - keymap = WM_keymap_ensure(keyconf, "NLA Channels", SPACE_NLA, 0); - nla_keymap_channels(keymap); + WM_keymap_ensure(keyconf, "NLA Channels", SPACE_NLA, 0); /* data ------------------------------------------------------------- */ - keymap = WM_keymap_ensure(keyconf, "NLA Editor", SPACE_NLA, 0); - nla_keymap_main(keyconf, keymap); + WM_keymap_ensure(keyconf, "NLA Editor", SPACE_NLA, 0); } diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c index a996c6835f1..1eead941c97 100644 --- a/source/blender/editors/space_node/node_ops.c +++ b/source/blender/editors/space_node/node_ops.c @@ -38,7 +38,6 @@ #include "ED_node.h" /* own include */ #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_transform.h" #include "RNA_access.h" @@ -203,154 +202,11 @@ void ED_operatormacros_node(void) WM_operatortype_macro_define(ot, "NODE_OT_translate_attach"); } -/* helper function for repetitive select operator keymap */ -static void node_select_keymap(wmKeyMap *keymap, int extend) -{ - /* modifier combinations */ - const int mod_single[] = { 0, KM_CTRL, KM_ALT, KM_CTRL | KM_ALT, - -1 /* terminator */ - }; - const int mod_extend[] = { KM_SHIFT, KM_SHIFT | KM_CTRL, - KM_SHIFT | KM_ALT, KM_SHIFT | KM_CTRL | KM_ALT, - -1 /* terminator */ - }; - const int *mod = (extend ? mod_extend : mod_single); - wmKeyMapItem *kmi; - int i; - - for (i = 0; mod[i] >= 0; ++i) { - kmi = WM_keymap_add_item(keymap, "NODE_OT_select", ACTIONMOUSE, KM_PRESS, mod[i], 0); - RNA_boolean_set(kmi->ptr, "extend", extend); - kmi = WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, mod[i], 0); - RNA_boolean_set(kmi->ptr, "extend", extend); - } -} - void node_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - /* Entire Editor only ----------------- */ - keymap = WM_keymap_ensure(keyconf, "Node Generic", SPACE_NODE, 0); - - WM_keymap_add_item(keymap, "NODE_OT_properties", NKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NODE_OT_toolbar", TKEY, KM_PRESS, 0, 0); + WM_keymap_ensure(keyconf, "Node Generic", SPACE_NODE, 0); /* Main Region only ----------------- */ - keymap = WM_keymap_ensure(keyconf, "Node Editor", SPACE_NODE, 0); - - /* mouse select in nodes used to be both keys, but perhaps this should be reduced? - * NOTE: mouse-clicks on left-mouse will fall through to allow transform-tweak, but also link/resize - * NOTE 2: socket select is part of the node select operator, to handle overlapping cases - * NOTE 3: select op is registered for various combinations of modifier key, so the specialized - * grab operators (unlink, attach, etc.) can work easily on single nodes. - */ - node_select_keymap(keymap, false); - node_select_keymap(keymap, true); - - kmi = WM_keymap_add_item(keymap, "NODE_OT_select_box", EVT_TWEAK_S, KM_ANY, 0, 0); - RNA_boolean_set(kmi->ptr, "tweak", true); - - kmi = WM_keymap_add_item(keymap, "NODE_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "NODE_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - WM_keymap_add_item(keymap, "NODE_OT_select_circle", CKEY, KM_PRESS, 0, 0); - - /* each of these falls through if not handled... */ - kmi = WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "detach", false); - kmi = WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "detach", true); - - WM_keymap_add_item(keymap, "NODE_OT_resize", LEFTMOUSE, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "NODE_OT_add_reroute", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NODE_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "NODE_OT_select_link_viewer", LEFTMOUSE, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - - WM_keymap_add_item(keymap, "NODE_OT_backimage_move", MIDDLEMOUSE, KM_PRESS, KM_ALT, 0); - kmi = WM_keymap_add_item(keymap, "NODE_OT_backimage_zoom", VKEY, KM_PRESS, 0, 0); - RNA_float_set(kmi->ptr, "factor", 0.83333f); - kmi = WM_keymap_add_item(keymap, "NODE_OT_backimage_zoom", VKEY, KM_PRESS, KM_ALT, 0); - RNA_float_set(kmi->ptr, "factor", 1.2f); - WM_keymap_add_item(keymap, "NODE_OT_backimage_fit", HOMEKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "NODE_OT_backimage_sample", ACTIONMOUSE, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_menu(keymap, "NODE_MT_specials", WKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "replace", false); - kmi = WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "replace", true); - - WM_keymap_add_menu(keymap, "NODE_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NODE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - /* modified operator call for duplicating with input links */ - WM_keymap_add_item(keymap, "NODE_OT_duplicate_move_keep_inputs", DKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - - WM_keymap_add_item(keymap, "NODE_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "NODE_OT_detach", PKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "NODE_OT_join", JKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "NODE_OT_hide_toggle", HKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NODE_OT_mute_toggle", MKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NODE_OT_preview_toggle", HKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NODE_OT_hide_socket_toggle", HKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "NODE_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "NODE_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif - WM_keymap_add_item(keymap, "NODE_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "NODE_OT_select_box", BKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "tweak", false); - - WM_keymap_add_item(keymap, "NODE_OT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NODE_OT_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "NODE_OT_delete_reconnect", XKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "NODE_OT_delete_reconnect", DELKEY, KM_PRESS, KM_CTRL, 0); - - ED_keymap_template_select_all(keymap, "NODE_OT_select_all"); - - WM_keymap_add_item(keymap, "NODE_OT_select_linked_to", LKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NODE_OT_select_linked_from", LKEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "NODE_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "NODE_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - - kmi = WM_keymap_add_item(keymap, "NODE_OT_select_same_type_step", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "prev", false); - kmi = WM_keymap_add_item(keymap, "NODE_OT_select_same_type_step", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "prev", true); - - WM_keymap_add_item(keymap, "NODE_OT_find_node", FKEY, KM_PRESS, KM_CTRL, 0); - - /* node group operators */ - WM_keymap_add_item(keymap, "NODE_OT_group_make", GKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "NODE_OT_group_ungroup", GKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - WM_keymap_add_item(keymap, "NODE_OT_group_separate", PKEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "exit", false); - kmi = WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "exit", true); - - WM_keymap_add_item(keymap, "NODE_OT_read_viewlayers", RKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "NODE_OT_render_changed", ZKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "NODE_OT_clipboard_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "NODE_OT_clipboard_paste", VKEY, KM_PRESS, KM_CTRL, 0); -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "NODE_OT_clipboard_copy", CKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "NODE_OT_clipboard_paste", VKEY, KM_PRESS, KM_OSKEY, 0); -#endif - WM_keymap_add_item(keymap, "NODE_OT_viewer_border", BKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "NODE_OT_clear_viewer_border", BKEY, KM_PRESS, KM_ALT | KM_CTRL, 0); - - transform_keymap_for_space(keyconf, keymap, SPACE_NODE); + WM_keymap_ensure(keyconf, "Node Editor", SPACE_NODE, 0); } diff --git a/source/blender/editors/space_outliner/outliner_ops.c b/source/blender/editors/space_outliner/outliner_ops.c index 089b153fa26..87c9827a15a 100644 --- a/source/blender/editors/space_outliner/outliner_ops.c +++ b/source/blender/editors/space_outliner/outliner_ops.c @@ -53,7 +53,6 @@ #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "outliner_intern.h" @@ -121,87 +120,5 @@ void outliner_operatortypes(void) void outliner_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Outliner", SPACE_OUTLINER, 0); - wmKeyMapItem *kmi; - - WM_keymap_add_item(keymap, "OUTLINER_OT_highlight_update", MOUSEMOVE, KM_ANY, KM_ANY, 0); - - WM_keymap_add_item(keymap, "OUTLINER_OT_item_rename", LEFTMOUSE, KM_DBL_CLICK, 0, 0); - - kmi = WM_keymap_add_item(keymap, "OUTLINER_OT_item_activate", LEFTMOUSE, KM_CLICK, 0, 0); - RNA_boolean_set(kmi->ptr, "recursive", false); - RNA_boolean_set(kmi->ptr, "extend", false); - - kmi = WM_keymap_add_item(keymap, "OUTLINER_OT_item_activate", LEFTMOUSE, KM_CLICK, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "recursive", false); - RNA_boolean_set(kmi->ptr, "extend", true); - - kmi = WM_keymap_add_item(keymap, "OUTLINER_OT_item_activate", LEFTMOUSE, KM_CLICK, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "recursive", true); - RNA_boolean_set(kmi->ptr, "extend", false); - - kmi = WM_keymap_add_item(keymap, "OUTLINER_OT_item_activate", LEFTMOUSE, KM_CLICK, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "recursive", true); - RNA_boolean_set(kmi->ptr, "extend", true); - - - WM_keymap_add_item(keymap, "OUTLINER_OT_select_box", BKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "OUTLINER_OT_item_openclose", RETKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "all", false); - kmi = WM_keymap_add_item(keymap, "OUTLINER_OT_item_openclose", RETKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "all", true); - - WM_keymap_add_item(keymap, "OUTLINER_OT_item_rename", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "OUTLINER_OT_operation", RIGHTMOUSE, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "OUTLINER_OT_item_drag_drop", EVT_TWEAK_L, KM_ANY, 0, 0); - WM_keymap_add_item(keymap, "OUTLINER_OT_item_drag_drop", EVT_TWEAK_L, KM_ANY, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "OUTLINER_OT_show_hierarchy", HOMEKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "OUTLINER_OT_show_active", PERIODKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "OUTLINER_OT_show_active", PADPERIOD, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "OUTLINER_OT_scroll_page", PAGEDOWNKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "up", false); - kmi = WM_keymap_add_item(keymap, "OUTLINER_OT_scroll_page", PAGEUPKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "up", true); - - WM_keymap_add_item(keymap, "OUTLINER_OT_show_one_level", PADPLUSKEY, KM_PRESS, 0, 0); /* open */ - kmi = WM_keymap_add_item(keymap, "OUTLINER_OT_show_one_level", PADMINUS, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "open", false); /* close */ - - ED_keymap_template_select_all(keymap, "OUTLINER_OT_select_all"); - - WM_keymap_add_item(keymap, "OUTLINER_OT_expanded_toggle", AKEY, KM_PRESS, KM_SHIFT, 0); - - /* keying sets - only for databrowse */ - WM_keymap_add_item(keymap, "OUTLINER_OT_keyingset_add_selected", KKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "OUTLINER_OT_keyingset_remove_selected", KKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "ANIM_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ANIM_OT_keyframe_delete", IKEY, KM_PRESS, KM_ALT, 0); - - /* Note: was D, Alt-D, keep these free for duplicate. */ - WM_keymap_add_item(keymap, "OUTLINER_OT_drivers_add_selected", DKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "OUTLINER_OT_drivers_delete_selected", DKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - - WM_keymap_add_item(keymap, "OUTLINER_OT_collection_new", CKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "OUTLINER_OT_collection_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "OUTLINER_OT_collection_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "OBJECT_OT_move_to_collection", MKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_link_to_collection", MKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "OUTLINER_OT_collection_exclude_set", EKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "OUTLINER_OT_collection_exclude_clear", EKEY, KM_PRESS, KM_ALT, 0); - - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_view_clear", HKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "select", false); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_view_set", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_hide_view_set", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); + WM_keymap_ensure(keyconf, "Outliner", SPACE_OUTLINER, 0); } diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 2b84466a353..cdba163f574 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -40,7 +40,6 @@ #include "ED_markers.h" #include "ED_transform.h" /* transform keymap */ #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "BKE_sequencer.h" @@ -135,234 +134,14 @@ void sequencer_operatortypes(void) void sequencer_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - /* Common items ------------------------------------------------------------------ */ - keymap = WM_keymap_ensure(keyconf, "SequencerCommon", SPACE_SEQ, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_properties", NKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", OKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "scene.sequence_editor.show_overlay"); - - /* operators common to sequence and preview view */ - WM_keymap_add_item(keymap, "SEQUENCER_OT_view_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_ensure(keyconf, "SequencerCommon", SPACE_SEQ, 0); /* Strips Region --------------------------------------------------------------- */ - keymap = WM_keymap_ensure(keyconf, "Sequencer", SPACE_SEQ, 0); - - ED_keymap_template_select_all(keymap, "SEQUENCER_OT_select_all"); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_cut", KKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "type", SEQ_CUT_SOFT); - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_cut", KKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", SEQ_CUT_HARD); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_mute", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_mute", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_unmute", HKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_unmute", HKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_lock", LKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_unlock", LKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_reassign_inputs", RKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_ALT, 0); - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "adjust_length", true); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_offset_clear", OKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", XKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", DELKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "SEQUENCER_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); -#endif - - WM_keymap_add_item(keymap, "SEQUENCER_OT_images_separate", YKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_meta_toggle", TABKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_meta_make", GKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_meta_separate", GKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif - WM_keymap_add_item(keymap, "SEQUENCER_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_view_frame", PAD0, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_strip_jump", PAGEUPKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "next", true); - RNA_boolean_set(kmi->ptr, "center", false); - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_strip_jump", PAGEDOWNKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "next", false); - RNA_boolean_set(kmi->ptr, "center", false); - - /* alt for center */ - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_strip_jump", PAGEUPKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "next", true); - RNA_boolean_set(kmi->ptr, "center", true); - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_strip_jump", PAGEDOWNKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "next", false); - RNA_boolean_set(kmi->ptr, "center", true); - - RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_swap", LEFTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "side", SEQ_SIDE_LEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_swap", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "side", SEQ_SIDE_RIGHT); - - RNA_boolean_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_gap_remove", BACKSPACEKEY, KM_PRESS, 0, 0)->ptr, "all", false); - RNA_boolean_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_gap_remove", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "all", true); - WM_keymap_add_item(keymap, "SEQUENCER_OT_gap_insert", EQUALKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_inputs", SKEY, KM_PRESS, KM_ALT, 0); - - /* multicam editing keyboard layout, switch to camera 1-10 using - * regular number keys */ - { - int keys[] = { ONEKEY, TWOKEY, THREEKEY, FOURKEY, FIVEKEY, - SIXKEY, SEVENKEY, EIGHTKEY, NINEKEY, ZEROKEY }; - int i; - - for (i = 1; i <= 10; i++) { - RNA_int_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_cut_multicam", keys[i - 1], KM_PRESS, 0, 0)->ptr, "camera", i); - } - } - - /* Mouse selection, a bit verbose :/ */ - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "linked_handle", false); - RNA_enum_set(kmi->ptr, "left_right", SEQ_SELECT_LR_NONE); - RNA_boolean_set(kmi->ptr, "linked_time", false); - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "linked_handle", false); - RNA_enum_set(kmi->ptr, "left_right", SEQ_SELECT_LR_NONE); - RNA_boolean_set(kmi->ptr, "linked_time", false); - - - /* 2.4x method, now use Alt for handles and select the side based on which handle was selected */ -#if 0 - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "linked_left", true); - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "linked_right", true); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "linked_left", true); - RNA_boolean_set(kmi->ptr, "linked_right", true); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "linked_left", true); - RNA_boolean_set(kmi->ptr, "linked_right", true); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "linked_left", true); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "linked_right", true); -#endif - - /* 2.5 method, Alt and use selected handle */ - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "linked_handle", true); - RNA_enum_set(kmi->ptr, "left_right", SEQ_SELECT_LR_NONE); - RNA_boolean_set(kmi->ptr, "linked_time", false); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "linked_handle", true); - RNA_enum_set(kmi->ptr, "left_right", SEQ_SELECT_LR_NONE); - RNA_boolean_set(kmi->ptr, "linked_time", false); - - /* match action editor */ - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "linked_handle", false); - RNA_enum_set(kmi->ptr, "left_right", SEQ_SELECT_LR_MOUSE); /* grr, these conflict - only use left_right if not over an active seq */ - RNA_boolean_set(kmi->ptr, "linked_time", true); - /* adjusted since 2.4 */ - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "linked_handle", false); - RNA_enum_set(kmi->ptr, "left_right", SEQ_SELECT_LR_NONE); - RNA_boolean_set(kmi->ptr, "linked_time", true); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_select_box", BKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_menu(keymap, "SEQUENCER_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_menu(keymap, "SEQUENCER_MT_change", CKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "SEQUENCER_OT_slip", SKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_int", OKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "scene.sequence_editor.overlay_frame"); - RNA_int_set(kmi->ptr, "value", 0); - - transform_keymap_for_space(keyconf, keymap, SPACE_SEQ); - - /* special markers hotkeys for anim editors: see note in definition of this function */ - ED_marker_keymap_animedit_conflictfree(keymap); - + WM_keymap_ensure(keyconf, "Sequencer", SPACE_SEQ, 0); /* Preview Region ----------------------------------------------------------- */ - keymap = WM_keymap_ensure(keyconf, "SequencerPreview", SPACE_SEQ, 0); - WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all_preview", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all_preview", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif - - WM_keymap_add_item(keymap, "SEQUENCER_OT_view_ghost_border", OKEY, KM_PRESS, 0, 0); - - /* would prefer to use numpad keys for job */ - RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD1, KM_PRESS, 0, 0)->ptr, "ratio", 1.0f); - - /* Setting zoom levels is not that useful, except for back to zoom level 1, removing keymap because of conflicts for now */ -#if 0 - RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 8.0f); - RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 4.0f); - RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 2.0f); - - RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD2, KM_PRESS, 0, 0)->ptr, "ratio", 0.5f); - RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f); - RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f); -#endif - - /* sample */ - WM_keymap_add_item(keymap, "SEQUENCER_OT_sample", ACTIONMOUSE, KM_PRESS, 0, 0); + WM_keymap_ensure(keyconf, "SequencerPreview", SPACE_SEQ, 0); } void ED_operatormacros_sequencer(void) diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 7f2ce59361e..27b75f49b44 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -241,160 +241,8 @@ static void text_operatortypes(void) static void text_keymap(struct wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - - keymap = WM_keymap_ensure(keyconf, "Text Generic", SPACE_TEXT, 0); - WM_keymap_add_item(keymap, "TEXT_OT_start_find", FKEY, KM_PRESS, KM_CTRL, 0); -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "TEXT_OT_start_find", FKEY, KM_PRESS, KM_OSKEY, 0); -#endif - WM_keymap_add_item(keymap, "TEXT_OT_jump", JKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_find", GKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_replace", HKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_properties", TKEY, KM_PRESS, KM_CTRL, 0); - - keymap = WM_keymap_ensure(keyconf, "Text", SPACE_TEXT, 0); - -#ifdef __APPLE__ - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, KM_OSKEY, 0)->ptr, "type", LINE_BEGIN); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_OSKEY, 0)->ptr, "type", LINE_END); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "type", PREV_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "type", NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", UPARROWKEY, KM_PRESS, KM_OSKEY, 0)->ptr, "type", FILE_TOP); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", DOWNARROWKEY, KM_PRESS, KM_OSKEY, 0)->ptr, "type", FILE_BOTTOM); - - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", LEFTARROWKEY, KM_PRESS, KM_SHIFT | KM_OSKEY, 0)->ptr, "type", LINE_BEGIN); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", RIGHTARROWKEY, KM_PRESS, KM_SHIFT | KM_OSKEY, 0)->ptr, "type", LINE_END); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", LEFTARROWKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0)->ptr, "type", PREV_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", RIGHTARROWKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0)->ptr, "type", NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", UPARROWKEY, KM_PRESS, KM_SHIFT | KM_OSKEY, 0)->ptr, "type", FILE_TOP); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", DOWNARROWKEY, KM_PRESS, KM_SHIFT | KM_OSKEY, 0)->ptr, "type", FILE_BOTTOM); - - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", BACKSPACEKEY, KM_PRESS, KM_ALT, 0)->ptr, "type", DEL_PREV_WORD); - - WM_keymap_add_item(keymap, "TEXT_OT_save", SKEY, KM_PRESS, KM_ALT | KM_OSKEY, 0); - WM_keymap_add_item(keymap, "TEXT_OT_save_as", SKEY, KM_PRESS, KM_ALT | KM_SHIFT | KM_OSKEY, 0); - WM_keymap_add_item(keymap, "TEXT_OT_cut", XKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "TEXT_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "TEXT_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "TEXT_OT_find_set_selected", EKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "TEXT_OT_select_all", AKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "TEXT_OT_select_line", AKEY, KM_PRESS, KM_SHIFT | KM_OSKEY, 0); -#endif - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); - RNA_boolean_set(kmi->ptr, "reverse", false); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); - RNA_boolean_set(kmi->ptr, "reverse", true); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); - RNA_boolean_set(kmi->ptr, "reverse", false); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADMINUS, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); - RNA_boolean_set(kmi->ptr, "reverse", true); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "TEXT_OT_new", NKEY, KM_PRESS, KM_CTRL, 0); -#else - WM_keymap_add_item(keymap, "TEXT_OT_new", NKEY, KM_PRESS, KM_ALT, 0); -#endif - WM_keymap_add_item(keymap, "TEXT_OT_open", OKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "TEXT_OT_reload", RKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "TEXT_OT_save", SKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "TEXT_OT_save_as", SKEY, KM_PRESS, KM_ALT | KM_SHIFT | KM_CTRL, 0); - - WM_keymap_add_item(keymap, "TEXT_OT_run_script", PKEY, KM_PRESS, KM_ALT, 0); - - WM_keymap_add_item(keymap, "TEXT_OT_cut", XKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "TEXT_OT_cut", DELKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "TEXT_OT_copy", INSERTKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_paste", INSERTKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "TEXT_OT_duplicate_line", DKEY, KM_PRESS, KM_CTRL, 0); - - if (U.uiflag & USER_MMB_PASTE) { // XXX not dynamic - kmi = WM_keymap_add_item(keymap, "TEXT_OT_paste", MIDDLEMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "selection", true); - } - - WM_keymap_add_item(keymap, "TEXT_OT_select_all", AKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_select_line", AKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - WM_keymap_add_item(keymap, "TEXT_OT_select_word", LEFTMOUSE, KM_DBL_CLICK, 0, 0); - - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_lines", UPARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0)->ptr, "direction", TXT_MOVE_LINE_UP); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_lines", DOWNARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0)->ptr, "direction", TXT_MOVE_LINE_DOWN); - - WM_keymap_add_item(keymap, "TEXT_OT_indent", TABKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "TEXT_OT_unindent", TABKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "TEXT_OT_uncomment", DKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", HOMEKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_BEGIN); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END); - - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", EKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_END); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", EKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "type", LINE_END); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", PREV_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", UPARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", DOWNARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", PAGEUPKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_PAGE); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", PAGEDOWNKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_PAGE); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", HOMEKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", FILE_TOP); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", FILE_BOTTOM); - - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", HOMEKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", LINE_BEGIN); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", ENDKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", LINE_END); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", LEFTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", PREV_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", RIGHTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", NEXT_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", LEFTARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0)->ptr, "type", PREV_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", RIGHTARROWKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0)->ptr, "type", NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", UPARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", PREV_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", DOWNARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", NEXT_LINE); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", PAGEUPKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", PREV_PAGE); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", PAGEDOWNKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", NEXT_PAGE); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", HOMEKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0)->ptr, "type", FILE_TOP); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", ENDKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0)->ptr, "type", FILE_BOTTOM); - - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", DELKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_NEXT_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_PREV_CHAR); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", DEL_PREV_CHAR); /* same as above [#26623] */ - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", DELKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", DEL_NEXT_WORD); - RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", BACKSPACEKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", DEL_PREV_WORD); - - WM_keymap_add_item(keymap, "TEXT_OT_overwrite_toggle", INSERTKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "TEXT_OT_scroll_bar", LEFTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "TEXT_OT_scroll_bar", MIDDLEMOUSE, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "TEXT_OT_scroll", MIDDLEMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "TEXT_OT_scroll", MOUSEPAN, 0, 0, 0); - WM_keymap_add_item(keymap, "TEXT_OT_selection_set", EVT_TWEAK_L, KM_ANY, 0, 0); - WM_keymap_add_item(keymap, "TEXT_OT_cursor_set", LEFTMOUSE, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "TEXT_OT_selection_set", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "select", true); - RNA_int_set(WM_keymap_add_item(keymap, "TEXT_OT_scroll", WHEELUPMOUSE, KM_PRESS, 0, 0)->ptr, "lines", -1); - RNA_int_set(WM_keymap_add_item(keymap, "TEXT_OT_scroll", WHEELDOWNMOUSE, KM_PRESS, 0, 0)->ptr, "lines", 1); - - WM_keymap_add_item(keymap, "TEXT_OT_line_break", RETKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "TEXT_OT_line_break", PADENTER, KM_PRESS, 0, 0); - - WM_keymap_add_menu(keymap, "TEXT_MT_toolbox", RIGHTMOUSE, KM_PRESS, KM_ANY, 0); - - WM_keymap_add_item(keymap, "TEXT_OT_autocomplete", SPACEKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "TEXT_OT_line_number", KM_TEXTINPUT, KM_ANY, KM_ANY, 0); - WM_keymap_add_item(keymap, "TEXT_OT_insert", KM_TEXTINPUT, KM_ANY, KM_ANY, 0); // last! + WM_keymap_ensure(keyconf, "Text Generic", SPACE_TEXT, 0); + WM_keymap_ensure(keyconf, "Text", SPACE_TEXT, 0); } const char *text_context_dir[] = {"edit_text", NULL}; diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c index a68bd2a9fbb..6962af52bb1 100644 --- a/source/blender/editors/space_time/time_ops.c +++ b/source/blender/editors/space_time/time_ops.c @@ -214,13 +214,5 @@ void time_operatortypes(void) void time_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Timeline", SPACE_TIME, 0); - - WM_keymap_add_item(keymap, "TIME_OT_start_frame_set", SKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "TIME_OT_end_frame_set", EKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "TIME_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); -#ifdef WITH_INPUT_NDOF - WM_keymap_add_item(keymap, "TIME_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); -#endif - WM_keymap_add_item(keymap, "TIME_OT_view_frame", PAD0, KM_PRESS, 0, 0); + WM_keymap_ensure(keyconf, "Timeline", SPACE_TIME, 0); } diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 53442ff86fb..7f102189121 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -583,13 +583,6 @@ void viewrotate_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "View3D Rotate Modal", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM); - - WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_ENABLE); - WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_DISABLE); - /* disabled mode switching for now, can re-implement better, later on */ #if 0 WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM); @@ -1787,10 +1780,6 @@ void viewzoom_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "View3D Zoom Modal", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM); - /* disabled mode switching for now, can re-implement better, later on */ #if 0 WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE); @@ -2322,10 +2311,6 @@ void viewdolly_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "View3D Dolly Modal", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM); - /* disabled mode switching for now, can re-implement better, later on */ #if 0 WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE); diff --git a/source/blender/editors/space_view3d/view3d_fly.c b/source/blender/editors/space_view3d/view3d_fly.c index ae883f53f18..345d9fe39de 100644 --- a/source/blender/editors/space_view3d/view3d_fly.c +++ b/source/blender/editors/space_view3d/view3d_fly.c @@ -137,56 +137,6 @@ void fly_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "View3D Fly Modal", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_ANY, KM_ANY, 0, FLY_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, FLY_MODAL_CANCEL); - - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, FLY_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, FLY_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, SPACEKEY, KM_PRESS, KM_ANY, 0, FLY_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, FLY_MODAL_CONFIRM); - - WM_modalkeymap_add_item(keymap, PADPLUSKEY, KM_PRESS, KM_ANY, 0, FLY_MODAL_ACCELERATE); - WM_modalkeymap_add_item(keymap, PADMINUS, KM_PRESS, KM_ANY, 0, FLY_MODAL_DECELERATE); - WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, KM_ANY, 0, FLY_MODAL_ACCELERATE); - WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, KM_ANY, 0, FLY_MODAL_DECELERATE); - - WM_modalkeymap_add_item(keymap, MOUSEPAN, 0, 0, 0, FLY_MODAL_SPEED); - - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, KM_ANY, 0, FLY_MODAL_PAN_ENABLE); - /* XXX - Bug in the event system, middle mouse release doesn't work */ - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, FLY_MODAL_PAN_DISABLE); - - /* WASD */ - WM_modalkeymap_add_item(keymap, WKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_FORWARD); - WM_modalkeymap_add_item(keymap, SKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_BACKWARD); - WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_LEFT); - WM_modalkeymap_add_item(keymap, DKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_RIGHT); - WM_modalkeymap_add_item(keymap, EKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_UP); - WM_modalkeymap_add_item(keymap, QKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_DOWN); - - /* for legacy reasons, leave R/F working */ - WM_modalkeymap_add_item(keymap, RKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_UP); - WM_modalkeymap_add_item(keymap, FKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_DOWN); - - WM_modalkeymap_add_item(keymap, UPARROWKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_FORWARD); - WM_modalkeymap_add_item(keymap, DOWNARROWKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_BACKWARD); - WM_modalkeymap_add_item(keymap, LEFTARROWKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_LEFT); - WM_modalkeymap_add_item(keymap, RIGHTARROWKEY, KM_PRESS, 0, 0, FLY_MODAL_DIR_RIGHT); - - WM_modalkeymap_add_item(keymap, XKEY, KM_PRESS, 0, 0, FLY_MODAL_AXIS_LOCK_X); - WM_modalkeymap_add_item(keymap, ZKEY, KM_PRESS, 0, 0, FLY_MODAL_AXIS_LOCK_Z); - - WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_PRESS, KM_ANY, 0, FLY_MODAL_PRECISION_ENABLE); - WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_RELEASE, KM_ANY, 0, FLY_MODAL_PRECISION_DISABLE); - - /* for legacy reasons, leave shift working */ - WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, FLY_MODAL_PRECISION_ENABLE); - WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_RELEASE, KM_ANY, 0, FLY_MODAL_PRECISION_DISABLE); - - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, FLY_MODAL_FREELOOK_ENABLE); - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, FLY_MODAL_FREELOOK_DISABLE); - /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW3D_OT_fly"); } diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 9ed59759e4d..6c56bd7e72b 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -233,300 +233,10 @@ void view3d_operatortypes(void) void view3d_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap; - wmKeyMapItem *kmi; - - keymap = WM_keymap_ensure(keyconf, "3D View Generic", SPACE_VIEW3D, 0); - - WM_keymap_add_item(keymap, "VIEW3D_OT_properties", NKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_toolshelf", TKEY, KM_PRESS, 0, 0); + WM_keymap_ensure(keyconf, "3D View Generic", SPACE_VIEW3D, 0); /* only for region 3D window */ - keymap = WM_keymap_ensure(keyconf, "3D View", SPACE_VIEW3D, 0); - - WM_keymap_verify_item(keymap, "VIEW3D_OT_cursor3d", ACTIONMOUSE, KM_CLICK, 0, 0); - - WM_keymap_verify_item(keymap, "VIEW3D_OT_rotate", MIDDLEMOUSE, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "VIEW3D_OT_move", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "VIEW3D_OT_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_verify_item(keymap, "VIEW3D_OT_dolly", MIDDLEMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_selected", PADPERIOD, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "use_all_regions", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "use_all_regions", false); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_verify_item(keymap, "VIEW3D_OT_view_lock_to_active", PADPERIOD, KM_PRESS, KM_SHIFT, 0); - WM_keymap_verify_item(keymap, "VIEW3D_OT_view_lock_clear", PADPERIOD, KM_PRESS, KM_ALT, 0); - - WM_keymap_verify_item(keymap, "VIEW3D_OT_navigate", FKEY, KM_PRESS, KM_SHIFT, 0); -#endif - - WM_keymap_verify_item(keymap, "VIEW3D_OT_smoothview", TIMER1, KM_ANY, KM_ANY, 0); - - WM_keymap_add_item(keymap, "VIEW3D_OT_rotate", MOUSEPAN, 0, 0, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_rotate", MOUSEROTATE, 0, 0, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_move", MOUSEPAN, 0, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", MOUSEZOOM, 0, 0, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", MOUSEPAN, 0, KM_CTRL, 0); - - /*numpad +/-*/ - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", PADPLUSKEY, KM_PRESS, 0, 0)->ptr, "delta", 1); - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", PADMINUS, KM_PRESS, 0, 0)->ptr, "delta", -1); - /*ctrl +/-*/ - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", EQUALKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", 1); - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", MINUSKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1); - - /*wheel mouse forward/back*/ - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELINMOUSE, KM_PRESS, 0, 0)->ptr, "delta", 1); - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELOUTMOUSE, KM_PRESS, 0, 0)->ptr, "delta", -1); - - /* ... and for dolly */ - /*numpad +/-*/ - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_dolly", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", 1); - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_dolly", PADMINUS, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", -1); - /*ctrl +/-*/ - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_dolly", EQUALKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "delta", 1); - RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_dolly", MINUSKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "delta", -1); - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "VIEW3D_OT_zoom_camera_1_to_1", PADENTER, KM_PRESS, KM_SHIFT, 0); -#endif - - WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_camera", HOMEKEY, KM_PRESS, 0, 0); /* only with camera view */ - WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_lock", HOMEKEY, KM_PRESS, 0, 0); /* only with lock view */ - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_cursor", HOMEKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_pick", FKEY, KM_PRESS, KM_ALT, 0); -#endif - - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "center", false); /* only without camera view */ - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", HOMEKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "use_all_regions", true); - RNA_boolean_set(kmi->ptr, "center", false); /* only without camera view */ -#ifdef USE_WM_KEYMAP_27X - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", CKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "center", true); -#endif - - WM_keymap_add_menu_pie(keymap, "VIEW3D_MT_view_pie", ACCENTGRAVEKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_navigate", ACCENTGRAVEKEY, KM_PRESS, KM_SHIFT, 0); - - /* numpad view hotkeys*/ - WM_keymap_add_item(keymap, "VIEW3D_OT_view_camera", PAD0, KM_PRESS, 0, 0); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD1, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_FRONT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD2, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPDOWN); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD3, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_RIGHT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD4, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPLEFT); - WM_keymap_add_item(keymap, "VIEW3D_OT_view_persportho", PAD5, KM_PRESS, 0, 0); - - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD6, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPRIGHT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD7, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_TOP); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD8, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPUP); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD1, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BACK); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD3, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_LEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD7, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BOTTOM); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD2, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANDOWN); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD4, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANLEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD6, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANRIGHT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD8, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANUP); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_roll", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "type", V3D_VIEW_STEPLEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_roll", PAD6, KM_PRESS, KM_SHIFT, 0)->ptr, "type", V3D_VIEW_STEPRIGHT); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD9, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "type", V3D_VIEW_STEPRIGHT); - RNA_float_set(kmi->ptr, "angle", (float)M_PI); - -#ifdef USE_WM_KEYMAP_27X - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANRIGHT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANLEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", WHEELUPMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "type", V3D_VIEW_PANUP); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "type", V3D_VIEW_PANDOWN); - - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELUPMOUSE, KM_PRESS, KM_CTRL | KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPLEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL | KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPRIGHT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELUPMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPUP); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPDOWN); - - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_roll", WHEELUPMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "type", V3D_VIEW_STEPLEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_roll", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "type", V3D_VIEW_STEPRIGHT); -#endif - - /* active aligned, replaces '*' key in 2.4x */ - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD1, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_FRONT); - RNA_boolean_set(kmi->ptr, "align_active", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD3, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_RIGHT); - RNA_boolean_set(kmi->ptr, "align_active", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD7, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_TOP); - RNA_boolean_set(kmi->ptr, "align_active", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD1, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BACK); - RNA_boolean_set(kmi->ptr, "align_active", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD3, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_LEFT); - RNA_boolean_set(kmi->ptr, "align_active", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", PAD7, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BOTTOM); - RNA_boolean_set(kmi->ptr, "align_active", true); - - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", EVT_TWEAK_M, EVT_GESTURE_N, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_TOP); - RNA_boolean_set(kmi->ptr, "relative", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", EVT_TWEAK_M, EVT_GESTURE_S, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BOTTOM); - RNA_boolean_set(kmi->ptr, "relative", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", EVT_TWEAK_M, EVT_GESTURE_E, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_RIGHT); - RNA_boolean_set(kmi->ptr, "relative", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", EVT_TWEAK_M, EVT_GESTURE_W, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_LEFT); - RNA_boolean_set(kmi->ptr, "relative", true); - -#ifdef WITH_INPUT_NDOF - /* note: positioned here so keymaps show keyboard keys if assigned */ - /* 3D mouse */ - WM_keymap_add_item(keymap, "VIEW3D_OT_ndof_orbit_zoom", NDOF_MOTION, 0, 0, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_ndof_orbit", NDOF_MOTION, 0, KM_CTRL, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_ndof_pan", NDOF_MOTION, 0, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_ndof_all", NDOF_MOTION, 0, KM_CTRL | KM_SHIFT, 0); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_selected", NDOF_BUTTON_FIT, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "use_all_regions", false); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_roll", NDOF_BUTTON_ROLL_CCW, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPLEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_roll", NDOF_BUTTON_ROLL_CCW, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPRIGHT); - - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", NDOF_BUTTON_FRONT, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_FRONT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", NDOF_BUTTON_BACK, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_BACK); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", NDOF_BUTTON_LEFT, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_LEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", NDOF_BUTTON_RIGHT, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_RIGHT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", NDOF_BUTTON_TOP, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_TOP); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", NDOF_BUTTON_BOTTOM, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_BOTTOM); - - /* 3D mouse align */ - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", NDOF_BUTTON_FRONT, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_FRONT); - RNA_boolean_set(kmi->ptr, "align_active", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", NDOF_BUTTON_RIGHT, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_RIGHT); - RNA_boolean_set(kmi->ptr, "align_active", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_axis", NDOF_BUTTON_TOP, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_TOP); - RNA_boolean_set(kmi->ptr, "align_active", true); -#endif /* WITH_INPUT_NDOF */ - - /* drawtype */ - WM_keymap_add_menu_pie(keymap, "VIEW3D_MT_shading_pie", ZKEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_toggle_shading", ZKEY, KM_PRESS, KM_ALT, 0); - RNA_enum_set(kmi->ptr, "type", OB_MATERIAL); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_toggle_shading", ZKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", OB_RENDER); - - /* selection*/ - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", false); - RNA_boolean_set(kmi->ptr, "center", false); - RNA_boolean_set(kmi->ptr, "object", false); - RNA_boolean_set(kmi->ptr, "enumerate", false); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", true); - RNA_boolean_set(kmi->ptr, "center", false); - RNA_boolean_set(kmi->ptr, "object", false); - RNA_boolean_set(kmi->ptr, "enumerate", false); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", false); - RNA_boolean_set(kmi->ptr, "center", true); - RNA_boolean_set(kmi->ptr, "object", true); /* use Ctrl+Select for 2 purposes */ - RNA_boolean_set(kmi->ptr, "enumerate", false); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", false); - RNA_boolean_set(kmi->ptr, "center", false); - RNA_boolean_set(kmi->ptr, "object", false); - RNA_boolean_set(kmi->ptr, "enumerate", true); - - /* selection key-combinations */ - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", true); - RNA_boolean_set(kmi->ptr, "center", true); - RNA_boolean_set(kmi->ptr, "object", false); - RNA_boolean_set(kmi->ptr, "enumerate", false); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", false); - RNA_boolean_set(kmi->ptr, "center", true); - RNA_boolean_set(kmi->ptr, "object", false); - RNA_boolean_set(kmi->ptr, "enumerate", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", true); - RNA_boolean_set(kmi->ptr, "center", false); - RNA_boolean_set(kmi->ptr, "object", false); - RNA_boolean_set(kmi->ptr, "enumerate", true); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", false); - RNA_boolean_set(kmi->ptr, "toggle", true); - RNA_boolean_set(kmi->ptr, "center", true); - RNA_boolean_set(kmi->ptr, "object", false); - RNA_boolean_set(kmi->ptr, "enumerate", true); - - WM_keymap_add_item(keymap, "VIEW3D_OT_select_box", BKEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "mode", SEL_OP_ADD); - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT | KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "mode", SEL_OP_SUB); - WM_keymap_add_item(keymap, "VIEW3D_OT_select_circle", CKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, "VIEW3D_OT_clip_border", BKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_zoom_border", BKEY, KM_PRESS, KM_SHIFT, 0); - - kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_render_border", BKEY, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_item(keymap, "VIEW3D_OT_clear_render_border", BKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - - WM_keymap_add_item(keymap, "VIEW3D_OT_camera_to_view", PAD0, KM_PRESS, KM_ALT | KM_CTRL, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_object_as_camera", PAD0, KM_PRESS, KM_CTRL, 0); - - WM_keymap_add_menu_pie(keymap, "VIEW3D_MT_snap_pie", SKEY, KM_PRESS, KM_SHIFT, 0); - -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "VIEW3D_OT_copybuffer", CKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_pastebuffer", VKEY, KM_PRESS, KM_OSKEY, 0); -#endif - WM_keymap_add_item(keymap, "VIEW3D_OT_copybuffer", CKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "VIEW3D_OT_pastebuffer", VKEY, KM_PRESS, KM_CTRL, 0); - - /* context ops */ - WM_keymap_add_menu_pie(keymap, "VIEW3D_MT_pivot_pie", PERIODKEY, KM_PRESS, 0, 0); - WM_keymap_add_menu_pie(keymap, "VIEW3D_MT_orientations_pie", COMMAKEY, KM_PRESS, 0, 0); - -#ifdef USE_WM_KEYMAP_27X - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */ - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_transform_pivot_point_align"); -#endif - -#ifdef USE_WM_KEYMAP_27X - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* new in 2.5 */ -#else - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", ACCENTGRAVEKEY, KM_PRESS, KM_CTRL, 0); -#endif - RNA_string_set(kmi->ptr, "data_path", "space_data.show_gizmo_tool"); - - transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D); + WM_keymap_ensure(keyconf, "3D View", SPACE_VIEW3D, 0); fly_modal_keymap(keyconf); walk_modal_keymap(keyconf); diff --git a/source/blender/editors/space_view3d/view3d_walk.c b/source/blender/editors/space_view3d/view3d_walk.c index c5b7725541c..68a40f33368 100644 --- a/source/blender/editors/space_view3d/view3d_walk.c +++ b/source/blender/editors/space_view3d/view3d_walk.c @@ -177,59 +177,6 @@ void walk_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "View3D Walk Modal", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_ANY, KM_ANY, 0, WALK_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_CANCEL); - - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, WALK_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, WALK_MODAL_CONFIRM); - - WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_FAST_ENABLE); - WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_FAST_DISABLE); - - WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_SLOW_ENABLE); - WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_SLOW_DISABLE); - - /* WASD */ - WM_modalkeymap_add_item(keymap, WKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_DIR_FORWARD); - WM_modalkeymap_add_item(keymap, SKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_DIR_BACKWARD); - WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_DIR_LEFT); - WM_modalkeymap_add_item(keymap, DKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_DIR_RIGHT); - WM_modalkeymap_add_item(keymap, EKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_DIR_UP); - WM_modalkeymap_add_item(keymap, QKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_DIR_DOWN); - - WM_modalkeymap_add_item(keymap, WKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_FORWARD_STOP); - WM_modalkeymap_add_item(keymap, SKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_BACKWARD_STOP); - WM_modalkeymap_add_item(keymap, AKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_LEFT_STOP); - WM_modalkeymap_add_item(keymap, DKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_RIGHT_STOP); - WM_modalkeymap_add_item(keymap, EKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_UP_STOP); - WM_modalkeymap_add_item(keymap, QKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_DOWN_STOP); - - WM_modalkeymap_add_item(keymap, UPARROWKEY, KM_PRESS, 0, 0, WALK_MODAL_DIR_FORWARD); - WM_modalkeymap_add_item(keymap, DOWNARROWKEY, KM_PRESS, 0, 0, WALK_MODAL_DIR_BACKWARD); - WM_modalkeymap_add_item(keymap, LEFTARROWKEY, KM_PRESS, 0, 0, WALK_MODAL_DIR_LEFT); - WM_modalkeymap_add_item(keymap, RIGHTARROWKEY, KM_PRESS, 0, 0, WALK_MODAL_DIR_RIGHT); - - WM_modalkeymap_add_item(keymap, UPARROWKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_FORWARD_STOP); - WM_modalkeymap_add_item(keymap, DOWNARROWKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_BACKWARD_STOP); - WM_modalkeymap_add_item(keymap, LEFTARROWKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_LEFT_STOP); - WM_modalkeymap_add_item(keymap, RIGHTARROWKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_DIR_RIGHT_STOP); - - WM_modalkeymap_add_item(keymap, TABKEY, KM_PRESS, 0, 0, WALK_MODAL_TOGGLE); - WM_modalkeymap_add_item(keymap, GKEY, KM_PRESS, 0, 0, WALK_MODAL_TOGGLE); - - WM_modalkeymap_add_item(keymap, VKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_JUMP); - WM_modalkeymap_add_item(keymap, VKEY, KM_RELEASE, KM_ANY, 0, WALK_MODAL_JUMP_STOP); - - WM_modalkeymap_add_item(keymap, SPACEKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_TELEPORT); - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_ANY, KM_ANY, 0, WALK_MODAL_TELEPORT); - - WM_modalkeymap_add_item(keymap, PADPLUSKEY, KM_PRESS, KM_ANY, 0, WALK_MODAL_ACCELERATE); - WM_modalkeymap_add_item(keymap, PADMINUS, KM_PRESS, KM_ANY, 0, WALK_MODAL_DECELERATE); - WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, KM_ANY, 0, WALK_MODAL_ACCELERATE); - WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, KM_ANY, 0, WALK_MODAL_DECELERATE); - /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW3D_OT_walk"); } diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 29214565836..069245b7560 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -940,65 +940,9 @@ wmKeyMap *transform_modal_keymap(wmKeyConfig *keyconf) wmKeyMap *keymap = WM_modalkeymap_get(keyconf, "Transform Modal Map"); - /* this function is called for each spacetype, only needs to add map once */ - if (keymap && keymap->modal_items) return NULL; - keymap = WM_modalkeymap_add(keyconf, "Transform Modal Map", modal_items); keymap->poll_modal_item = transform_modal_item_poll; - /* items for modal map */ - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, TFM_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, TFM_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_PRESS, KM_ANY, 0, TFM_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_CANCEL); - - WM_modalkeymap_add_item(keymap, XKEY, KM_PRESS, 0, 0, TFM_MODAL_AXIS_X); - WM_modalkeymap_add_item(keymap, YKEY, KM_PRESS, 0, 0, TFM_MODAL_AXIS_Y); - WM_modalkeymap_add_item(keymap, ZKEY, KM_PRESS, 0, 0, TFM_MODAL_AXIS_Z); - - WM_modalkeymap_add_item(keymap, XKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_PLANE_X); - WM_modalkeymap_add_item(keymap, YKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_PLANE_Y); - WM_modalkeymap_add_item(keymap, ZKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_PLANE_Z); - - WM_modalkeymap_add_item(keymap, CKEY, KM_PRESS, 0, 0, TFM_MODAL_CONS_OFF); - - WM_modalkeymap_add_item(keymap, GKEY, KM_PRESS, 0, 0, TFM_MODAL_TRANSLATE); - WM_modalkeymap_add_item(keymap, RKEY, KM_PRESS, 0, 0, TFM_MODAL_ROTATE); - WM_modalkeymap_add_item(keymap, SKEY, KM_PRESS, 0, 0, TFM_MODAL_RESIZE); - - WM_modalkeymap_add_item(keymap, TABKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_SNAP_TOGGLE); - - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_SNAP_INV_ON); - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, TFM_MODAL_SNAP_INV_OFF); - - WM_modalkeymap_add_item(keymap, RIGHTCTRLKEY, KM_PRESS, KM_ANY, 0, TFM_MODAL_SNAP_INV_ON); - WM_modalkeymap_add_item(keymap, RIGHTCTRLKEY, KM_RELEASE, KM_ANY, 0, TFM_MODAL_SNAP_INV_OFF); - - WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, TFM_MODAL_ADD_SNAP); - WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, TFM_MODAL_REMOVE_SNAP); - - WM_modalkeymap_add_item(keymap, PAGEUPKEY, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_UP); - WM_modalkeymap_add_item(keymap, PAGEDOWNKEY, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_DOWN); - WM_modalkeymap_add_item(keymap, PAGEUPKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_PROPSIZE_UP); - WM_modalkeymap_add_item(keymap, PAGEDOWNKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_PROPSIZE_DOWN); - WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_UP); - WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_DOWN); - WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_PROPSIZE_UP); - WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_PROPSIZE_DOWN); - WM_modalkeymap_add_item(keymap, MOUSEPAN, 0, 0, 0, TFM_MODAL_PROPSIZE); - - WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, KM_ALT, 0, TFM_MODAL_EDGESLIDE_UP); - WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, KM_ALT, 0, TFM_MODAL_EDGESLIDE_DOWN); - - WM_modalkeymap_add_item(keymap, PAGEUPKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_AUTOIK_LEN_INC); - WM_modalkeymap_add_item(keymap, PAGEDOWNKEY, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_AUTOIK_LEN_DEC); - WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_AUTOIK_LEN_INC); - WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, KM_SHIFT, 0, TFM_MODAL_AUTOIK_LEN_DEC); - - /* node editor only */ - WM_modalkeymap_add_item(keymap, TKEY, KM_PRESS, 0, 0, TFM_MODAL_INSERTOFS_TOGGLE_DIR); - return keymap; } diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index ee0b11ead11..853816e8dc9 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -1194,170 +1194,14 @@ void transform_operatortypes(void) WM_operatortype_append(TRANSFORM_OT_from_gizmo); } -void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spaceid) +void ED_keymap_transform(wmKeyConfig *keyconf) { - wmKeyMapItem *kmi; - wmKeyMap *modalmap; + wmKeyMap *modalmap = transform_modal_keymap(keyconf); - /* transform.c, only adds modal map once, checks if it's there */ - modalmap = transform_modal_keymap(keyconf); - - /* assign map to operators only the first time */ - if (modalmap) { - TransformModeItem *tmode; - - for (tmode = transform_modes; tmode->idname; tmode++) { - WM_modalkeymap_assign(modalmap, tmode->idname); - } - WM_modalkeymap_assign(modalmap, "TRANSFORM_OT_transform"); - } - - switch (spaceid) { - case SPACE_VIEW3D: - WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); - - WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_BEND, WKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_item(keymap, OP_TOSPHERE, SKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0); - - WM_keymap_add_item(keymap, OP_SHEAR, SKEY, KM_PRESS, KM_ALT | KM_CTRL | KM_SHIFT, 0); - -#ifdef USE_WM_KEYMAP_27X - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_create_orientation", SPACEKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "use", true); -#endif - - WM_keymap_add_item(keymap, OP_MIRROR, MKEY, KM_PRESS, KM_CTRL, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_snap"); - - WM_keymap_add_panel(keymap, "VIEW3D_PT_snapping", TABKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - - /* Will fall-through to texture-space transform. */ - kmi = WM_keymap_add_item(keymap, "OBJECT_OT_transform_axis_target", TKEY, KM_PRESS, KM_SHIFT, 0); - -#ifdef USE_WM_KEYMAP_27X - kmi = WM_keymap_add_item(keymap, OP_TRANSLATION, TKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "texture_space", true); - - kmi = WM_keymap_add_item(keymap, OP_RESIZE, TKEY, KM_PRESS, KM_SHIFT | KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "texture_space", true); -#endif - - WM_keymap_add_item(keymap, OP_SKIN_RESIZE, AKEY, KM_PRESS, KM_CTRL, 0); + TransformModeItem *tmode; - break; - case SPACE_ACTION: - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", GKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TIME_TRANSLATE); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TIME_TRANSLATE); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TIME_EXTEND); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TIME_SCALE); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", TKEY, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TIME_SLIDE); - break; - case SPACE_IPO: - WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TIME_EXTEND); - - WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); - break; - case SPACE_NLA: - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", GKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TRANSLATION); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TRANSLATION); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TIME_EXTEND); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TIME_SCALE); - break; - case SPACE_NODE: - WM_keymap_add_item(keymap, "NODE_OT_translate_attach", GKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NODE_OT_translate_attach", EVT_TWEAK_A, KM_ANY, 0, 0); - WM_keymap_add_item(keymap, "NODE_OT_translate_attach", EVT_TWEAK_S, KM_ANY, 0, 0); - /* NB: small trick: macro operator poll may fail due to library data edit, - * in that case the secondary regular operators are called with same keymap. - */ - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "release_confirm", true); - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_A, KM_ANY, 0, 0); - RNA_boolean_set(kmi->ptr, "release_confirm", true); - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", EVT_TWEAK_S, KM_ANY, 0, 0); - RNA_boolean_set(kmi->ptr, "release_confirm", true); - - WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); - - /* detach and translate */ - WM_keymap_add_item(keymap, "NODE_OT_move_detach_links", DKEY, KM_PRESS, KM_ALT, 0); - /* XXX release_confirm is set in the macro operator definition */ - WM_keymap_add_item(keymap, "NODE_OT_move_detach_links_release", EVT_TWEAK_A, KM_ANY, KM_ALT, 0); - WM_keymap_add_item(keymap, "NODE_OT_move_detach_links", EVT_TWEAK_S, KM_ANY, KM_ALT, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_snap"); - kmi = WM_keymap_add_item(keymap, "WM_OT_context_menu_enum", TABKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.snap_node_element"); - break; - case SPACE_SEQ: - WM_keymap_add_item(keymap, OP_SEQ_SLIDE, GKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_SEQ_SLIDE, EVT_TWEAK_S, KM_ANY, 0, 0); - - kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); - RNA_enum_set(kmi->ptr, "mode", TFM_TIME_EXTEND); - break; - case SPACE_IMAGE: - WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); - - WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); - - WM_keymap_add_item(keymap, OP_SHEAR, SKEY, KM_PRESS, KM_ALT | KM_CTRL | KM_SHIFT, 0); - - WM_keymap_add_item(keymap, "TRANSFORM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_snap"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_menu_enum", TABKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.snap_uv_element"); - break; - case SPACE_CLIP: - WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); - WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - break; - default: - break; + for (tmode = transform_modes; tmode->idname; tmode++) { + WM_modalkeymap_assign(modalmap, tmode->idname); } + WM_modalkeymap_assign(modalmap, "TRANSFORM_OT_transform"); } diff --git a/source/blender/editors/util/CMakeLists.txt b/source/blender/editors/util/CMakeLists.txt index 82fced0a3c7..6bef0f77e1a 100644 --- a/source/blender/editors/util/CMakeLists.txt +++ b/source/blender/editors/util/CMakeLists.txt @@ -43,7 +43,6 @@ set(SRC ed_transverts.c ed_util.c gizmo_utils.c - keymap_templates.c numinput.c select_utils.c @@ -65,7 +64,6 @@ set(SRC ../include/ED_keyframes_draw.h ../include/ED_keyframes_edit.h ../include/ED_keyframing.h - ../include/ED_keymap_templates.h ../include/ED_lattice.h ../include/ED_logic.h ../include/ED_markers.h diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 9bf1bb3df20..2d9995d3ccc 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -79,7 +79,6 @@ #include "ED_object.h" #include "ED_screen.h" #include "ED_select_utils.h" -#include "ED_keymap_templates.h" #include "ED_transform.h" #include "RNA_access.h" @@ -4697,107 +4696,9 @@ void ED_operatortypes_uvedit(void) void ED_keymap_uvedit(wmKeyConfig *keyconf) { wmKeyMap *keymap; - wmKeyMapItem *kmi; keymap = WM_keymap_ensure(keyconf, "UV Editor", 0, 0); keymap->poll = ED_operator_uvedit_can_uv_sculpt; - - /* cursor */ - WM_keymap_add_item(keymap, "UV_OT_cursor_set", ACTIONMOUSE, KM_CLICK, 0, 0); - -#ifdef USE_WM_KEYMAP_27X - /* Uv sculpt toggle */ - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", QKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_uv_sculpt"); -#endif - - /* Select Element (Sync Select: on) */ - ED_keymap_editmesh_elem_mode(keyconf, keymap); - /* Hack to prevent fall-through, when the button isn't visible. */ - WM_keymap_add_item(keymap, "MESH_OT_select_mode", FOURKEY, KM_PRESS, 0, 0); - /* Select Element (Sync Select: off) */ - WM_keymap_add_context_enum_set_items( - keymap, rna_enum_mesh_select_mode_uv_items, "tool_settings.uv_select_mode", - ONEKEY, KM_PRESS, 0, 0); - - /* Mark edge seam */ - WM_keymap_add_item(keymap, "UV_OT_mark_seam", EKEY, KM_PRESS, KM_CTRL, 0); - - /* pick selection */ - RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select", SELECTMOUSE, KM_PRESS, 0, 0)->ptr, "extend", false); - RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", true); - RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select_loop", SELECTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "extend", false); - RNA_boolean_set(WM_keymap_add_item(keymap, "UV_OT_select_loop", SELECTMOUSE, KM_PRESS, KM_SHIFT | KM_ALT, 0)->ptr, "extend", true); - WM_keymap_add_item(keymap, "UV_OT_select_split", YKEY, KM_PRESS, 0, 0); - - /* box/circle selection */ - kmi = WM_keymap_add_item(keymap, "UV_OT_select_box", BKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "pinned", false); - kmi = WM_keymap_add_item(keymap, "UV_OT_select_box", BKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "pinned", true); - - WM_keymap_add_item(keymap, "UV_OT_select_circle", CKEY, KM_PRESS, 0, 0); - - kmi = WM_keymap_add_item(keymap, "UV_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "UV_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "deselect", true); - - /* selection manipulation */ - kmi = WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "UV_OT_select_linked_pick", LKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "extend", true); - RNA_boolean_set(kmi->ptr, "deselect", false); - kmi = WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", true); - kmi = WM_keymap_add_item(keymap, "UV_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "extend", false); - RNA_boolean_set(kmi->ptr, "deselect", true); - - /* select more/less */ - WM_keymap_add_item(keymap, "UV_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "UV_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); - - ED_keymap_template_select_all(keymap, "UV_OT_select_all"); - - WM_keymap_add_item(keymap, "UV_OT_select_pinned", PKEY, KM_PRESS, KM_SHIFT, 0); - - WM_keymap_add_menu(keymap, "IMAGE_MT_uvs_weldalign", WKEY, KM_PRESS, KM_SHIFT, 0); - - /* uv operations */ - WM_keymap_add_item(keymap, "UV_OT_stitch", VKEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "UV_OT_pin", PKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "clear", false); - kmi = WM_keymap_add_item(keymap, "UV_OT_pin", PKEY, KM_PRESS, KM_ALT, 0); - RNA_boolean_set(kmi->ptr, "clear", true); - - /* unwrap */ - WM_keymap_add_item(keymap, "UV_OT_unwrap", UKEY, KM_PRESS, 0, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "UV_OT_minimize_stretch", VKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "UV_OT_pack_islands", PKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "UV_OT_average_islands_scale", AKEY, KM_PRESS, KM_CTRL, 0); -#endif - - /* hide */ - kmi = WM_keymap_add_item(keymap, "UV_OT_hide", HKEY, KM_PRESS, 0, 0); - RNA_boolean_set(kmi->ptr, "unselected", false); - kmi = WM_keymap_add_item(keymap, "UV_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "unselected", true); - - WM_keymap_add_item(keymap, "UV_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); - - /* menus */ - WM_keymap_add_menu_pie(keymap, "IMAGE_MT_uvs_snap_pie", SKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_menu(keymap, "IMAGE_MT_uvs_select_mode", TABKEY, KM_PRESS, KM_CTRL, 0); - - ED_keymap_proportional_cycle(keyconf, keymap); - ED_keymap_proportional_editmode(keyconf, keymap, false); - - transform_keymap_for_space(keyconf, keymap, SPACE_IMAGE); } /** \} */ diff --git a/source/blender/windowmanager/WM_keymap.h b/source/blender/windowmanager/WM_keymap.h index dfa29321bdf..b27d6b44ab0 100644 --- a/source/blender/windowmanager/WM_keymap.h +++ b/source/blender/windowmanager/WM_keymap.h @@ -100,6 +100,8 @@ void WM_keymap_add_context_enum_set_items( wmKeyMap *WM_keymap_guess_opname(const struct bContext *C, const char *opname); +void WM_keymap_fix_linking(void); + /* Modal Keymap */ int WM_modalkeymap_items_to_string( diff --git a/source/blender/windowmanager/intern/wm_keymap_utils.c b/source/blender/windowmanager/intern/wm_keymap_utils.c index ba1874b992c..47dc07f556e 100644 --- a/source/blender/windowmanager/intern/wm_keymap_utils.c +++ b/source/blender/windowmanager/intern/wm_keymap_utils.c @@ -357,4 +357,8 @@ wmKeyMap *WM_keymap_guess_opname(const bContext *C, const char *opname) return km; } +void WM_keymap_fix_linking(void) +{ +} + /** \} */ diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 7862ed9fd1b..56171167b99 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -3214,31 +3214,6 @@ static void gesture_circle_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "View3D Gesture Circle", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_ANY, KM_ANY, 0, GESTURE_MODAL_CANCEL); - - WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, 0, 0, GESTURE_MODAL_CONFIRM); - - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_SELECT); - - /* Note: use 'KM_ANY' for release, so the circle exits on any mouse release, - * this is needed when circle select is activated as a tool. */ - - /* left mouse shift for deselect too */ - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_SHIFT, 0, GESTURE_MODAL_DESELECT); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_ANY, 0, GESTURE_MODAL_NOP); - - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_DESELECT); // default 2.4x - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, GESTURE_MODAL_NOP); // default 2.4x - - WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_CIRCLE_SUB); - WM_modalkeymap_add_item(keymap, PADMINUS, KM_PRESS, 0, 0, GESTURE_MODAL_CIRCLE_SUB); - WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_CIRCLE_ADD); - WM_modalkeymap_add_item(keymap, PADPLUSKEY, KM_PRESS, 0, 0, GESTURE_MODAL_CIRCLE_ADD); - WM_modalkeymap_add_item(keymap, MOUSEPAN, 0, 0, 0, GESTURE_MODAL_CIRCLE_SIZE); - /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW3D_OT_select_circle"); WM_modalkeymap_assign(keymap, "UV_OT_select_circle"); @@ -3248,7 +3223,6 @@ static void gesture_circle_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_assign(keymap, "GPENCIL_OT_select_circle"); WM_modalkeymap_assign(keymap, "GRAPH_OT_select_circle"); WM_modalkeymap_assign(keymap, "ACTION_OT_select_circle"); - } /* straight line modal operators */ @@ -3268,13 +3242,6 @@ static void gesture_straightline_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "Gesture Straight Line", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_ANY, KM_ANY, 0, GESTURE_MODAL_CANCEL); - - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_BEGIN); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_ANY, 0, GESTURE_MODAL_SELECT); - /* assign map to operators */ WM_modalkeymap_assign(keymap, "IMAGE_OT_sample_line"); WM_modalkeymap_assign(keymap, "PAINT_OT_weight_gradient"); @@ -3300,24 +3267,6 @@ static void gesture_box_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "Gesture Box", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL); - - /* Note: cancel only on press otherwise you cannot map this to RMB-gesture */ - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_RELEASE, KM_ANY, 0, GESTURE_MODAL_SELECT); - - /* allow shift leftclick for deselect too */ - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_SHIFT, 0, GESTURE_MODAL_BEGIN); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_SHIFT, 0, GESTURE_MODAL_DESELECT); - - /* any unhandled leftclick release handles select */ - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_BEGIN); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_ANY, 0, GESTURE_MODAL_SELECT); - - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_BEGIN); - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_DESELECT); - /* assign map to operators */ WM_modalkeymap_assign(keymap, "ACTION_OT_select_box"); WM_modalkeymap_assign(keymap, "ANIM_OT_channels_select_box"); @@ -3366,16 +3315,6 @@ static void gesture_zoom_border_modal_keymap(wmKeyConfig *keyconf) keymap = WM_modalkeymap_add(keyconf, "Gesture Zoom Border", modal_items); - /* items for modal map */ - WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL); - WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_ANY, KM_ANY, 0, GESTURE_MODAL_CANCEL); - - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_BEGIN); - WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_IN); - - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_BEGIN); - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_OUT); - /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW2D_OT_zoom_border"); WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom_border"); @@ -3385,142 +3324,15 @@ static void gesture_zoom_border_modal_keymap(wmKeyConfig *keyconf) /* default keymap for windows and screens, only call once per WM */ void wm_window_keymap(wmKeyConfig *keyconf) { - wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Window", 0, 0); - wmKeyMapItem *kmi; - - /* note, this doesn't replace existing keymap items */ -#ifdef USE_WM_KEYMAP_27X - WM_keymap_verify_item(keymap, "WM_OT_window_new", WKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); -#endif - -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "WM_OT_read_homefile", NKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_menu(keymap, "TOPBAR_MT_file_open_recent", OKEY, KM_PRESS, KM_SHIFT | KM_OSKEY, 0); - WM_keymap_add_item(keymap, "WM_OT_open_mainfile", OKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "WM_OT_save_mainfile", SKEY, KM_PRESS, KM_OSKEY, 0); - WM_keymap_add_item(keymap, "WM_OT_save_as_mainfile", SKEY, KM_PRESS, KM_SHIFT | KM_OSKEY, 0); - WM_keymap_add_item(keymap, "WM_OT_quit_blender", QKEY, KM_PRESS, KM_OSKEY, 0); -#endif - WM_keymap_add_item(keymap, "WM_OT_read_homefile", NKEY, KM_PRESS, KM_CTRL, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "WM_OT_save_homefile", UKEY, KM_PRESS, KM_CTRL, 0); -#endif - WM_keymap_add_menu(keymap, "TOPBAR_MT_file_open_recent", OKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); - WM_keymap_add_item(keymap, "WM_OT_open_mainfile", OKEY, KM_PRESS, KM_CTRL, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "WM_OT_open_mainfile", F1KEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "WM_OT_link", OKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - WM_keymap_add_item(keymap, "WM_OT_append", F1KEY, KM_PRESS, KM_SHIFT, 0); -#endif - - WM_keymap_add_item(keymap, "WM_OT_save_mainfile", SKEY, KM_PRESS, KM_CTRL, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "WM_OT_save_mainfile", WKEY, KM_PRESS, KM_CTRL, 0); -#endif - WM_keymap_add_item(keymap, "WM_OT_save_as_mainfile", SKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "WM_OT_save_as_mainfile", F2KEY, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "WM_OT_save_as_mainfile", SKEY, KM_PRESS, KM_ALT | KM_CTRL, 0); - RNA_boolean_set(kmi->ptr, "copy", true); - - WM_keymap_verify_item(keymap, "WM_OT_window_fullscreen_toggle", F11KEY, KM_PRESS, KM_ALT, 0); -#endif - - WM_keymap_add_item(keymap, "WM_OT_quit_blender", QKEY, KM_PRESS, KM_CTRL, 0); - - /* F-Keys are a hassle on some macos systems. */ -#ifdef __APPLE__ - WM_keymap_add_item(keymap, "WM_OT_search_menu", FKEY, KM_PRESS, KM_OSKEY, 0); -#endif - -#ifdef USE_WM_KEYMAP_27X - WM_keymap_add_item(keymap, "WM_OT_doc_view_manual_ui_context", F1KEY, KM_PRESS, KM_ALT, 0); - - /* debug/testing */ - WM_keymap_verify_item(keymap, "WM_OT_redraw_timer", TKEY, KM_PRESS, KM_ALT | KM_CTRL, 0); - WM_keymap_verify_item(keymap, "WM_OT_debug_menu", DKEY, KM_PRESS, KM_ALT | KM_CTRL, 0); -#else - WM_keymap_add_item(keymap, "WM_OT_doc_view_manual_ui_context", F1KEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "TOPBAR_MT_file_specials", F2KEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "WM_OT_search_menu", F3KEY, KM_PRESS, 0, 0); - WM_keymap_add_menu(keymap, "TOPBAR_MT_window_specials", F4KEY, KM_PRESS, 0, 0); -#endif - - /* menus that can be accessed anywhere in blender */ - WM_keymap_add_menu(keymap, "SCREEN_MT_user_menu", QKEY, KM_PRESS, 0, 0); - -#ifdef WITH_INPUT_NDOF - WM_keymap_add_menu(keymap, "USERPREF_MT_ndof_settings", NDOF_BUTTON_MENU, KM_PRESS, 0, 0); -#endif - - WM_keymap_add_item(keymap, "WM_OT_toolbar", SPACEKEY, KM_PRESS, 0, 0); - - /* Space switching */ - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F3KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "NODE_EDITOR"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F4KEY, KM_PRESS, KM_SHIFT, 0); /* new in 2.5x, was data browser */ - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "CONSOLE"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F5KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "VIEW_3D"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F6KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "GRAPH_EDITOR"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F7KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "PROPERTIES"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F8KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "SEQUENCE_EDITOR"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F9KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "OUTLINER"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F10KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "IMAGE_EDITOR"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F11KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "TEXT_EDITOR"); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F12KEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", "area.type"); - RNA_string_set(kmi->ptr, "value", "DOPESHEET_EDITOR"); - -#ifdef WITH_INPUT_NDOF - /* ndof speed */ - const char *data_path = "user_preferences.inputs.ndof_sensitivity"; - kmi = WM_keymap_add_item(keymap, "WM_OT_context_scale_float", NDOF_BUTTON_PLUS, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", data_path); - RNA_float_set(kmi->ptr, "value", 1.1f); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_scale_float", NDOF_BUTTON_MINUS, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "data_path", data_path); - RNA_float_set(kmi->ptr, "value", 1.0f / 1.1f); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_scale_float", NDOF_BUTTON_PLUS, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", data_path); - RNA_float_set(kmi->ptr, "value", 1.5f); - - kmi = WM_keymap_add_item(keymap, "WM_OT_context_scale_float", NDOF_BUTTON_MINUS, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "data_path", data_path); - RNA_float_set(kmi->ptr, "value", 1.0f / 1.5f); -#endif /* WITH_INPUT_NDOF */ + WM_keymap_ensure(keyconf, "Window", 0, 0); wm_gizmos_keymap(keyconf); gesture_circle_modal_keymap(keyconf); gesture_box_modal_keymap(keyconf); gesture_zoom_border_modal_keymap(keyconf); gesture_straightline_modal_keymap(keyconf); + + WM_keymap_fix_linking(); } /** -- cgit v1.2.3