1 # ##### BEGIN GPL LICENSE BLOCK #####
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software Foundation,
15 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 # ##### END GPL LICENSE BLOCK #####
20 # ------------------------------------------------------------------------------
21 # Configurable Parameters
37 "use_mouse_emulate_3_button",
41 # Swap 'Space/Shift-Space'.
43 # Key toggles selection with 'A'.
44 "use_select_all_toggle",
45 # Use pie menu for tab by default (swap 'Tab/Ctrl-Tab').
47 # Use extended pie menu for shading.
48 "use_v3d_shade_ex_pie"
56 use_mouse_emulate_3_button=False,
59 spacebar_action='TOOL',
60 use_select_all_toggle=False,
62 use_v3d_tab_menu=False,
63 use_v3d_shade_ex_pie=False,
67 self.apple = platform.system() == 'Darwin'
70 if select_mouse == 'RIGHT':
72 self.select_mouse = 'RIGHTMOUSE'
73 self.select_mouse_value = 'PRESS'
74 self.select_tweak = 'EVT_TWEAK_R'
75 self.action_mouse = 'LEFTMOUSE'
76 self.action_tweak = 'EVT_TWEAK_L'
77 self.tool_mouse = 'LEFTMOUSE'
78 self.tool_tweak = 'EVT_TWEAK_L'
79 self.context_menu_event = {"type": 'W', "value": 'PRESS'}
80 self.cursor_set_event = {"type": 'LEFTMOUSE', "value": 'CLICK'}
81 self.cursor_tweak_event = None
83 # Left mouse select uses Click event for selection. This is a little
84 # less immediate, but is needed to distinguish between click and tweak
85 # events on the same mouse buttons.
86 self.select_mouse = 'LEFTMOUSE'
87 self.select_mouse_value = 'CLICK'
88 self.select_tweak = 'EVT_TWEAK_L'
89 self.action_mouse = 'RIGHTMOUSE'
90 self.action_tweak = 'EVT_TWEAK_R'
91 self.tool_mouse = 'LEFTMOUSE'
92 self.tool_tweak = 'EVT_TWEAK_L'
95 self.context_menu_event = {"type": 'W', "value": 'PRESS'}
97 self.context_menu_event = {"type": 'RIGHTMOUSE', "value": 'PRESS'}
99 self.cursor_set_event = {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True}
100 self.cursor_tweak_event = {"type": 'EVT_TWEAK_R', "value": 'ANY', "shift": True}
102 self.use_mouse_emulate_3_button = use_mouse_emulate_3_button
105 self.spacebar_action = spacebar_action
106 self.use_select_all_toggle = use_select_all_toggle
107 self.use_v3d_tab_menu = use_v3d_tab_menu
108 self.use_v3d_shade_ex_pie = use_v3d_shade_ex_pie
111 # ------------------------------------------------------------------------------
116 NUMBERS_1 = ('ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN', 'EIGHT', 'NINE', 'ZERO')
118 NUMBERS_0 = ('ZERO', 'ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN', 'EIGHT', 'NINE')
121 # ------------------------------------------------------------------------------
122 # Keymap Item Wrappers
124 def op_menu(menu, kmi_args):
125 return ("wm.call_menu", kmi_args, {"properties": [("name", menu)]})
128 def op_menu_pie(menu, kmi_args):
129 return ("wm.call_menu_pie", kmi_args, {"properties": [("name", menu)]})
132 def op_panel(menu, kmi_args, kmi_data=()):
133 return ("wm.call_panel", kmi_args, {"properties": [("name", menu), *kmi_data]})
136 def op_tool(tool, kmi_args):
137 return ("wm.tool_set_by_name", kmi_args, {"properties": [("name", tool)]})
140 def op_tool_cycle(tool, kmi_args):
141 return ("wm.tool_set_by_name", kmi_args, {"properties": [("name", tool), ("cycle", True)]})
144 # ------------------------------------------------------------------------------
147 def _template_items_select_actions(params, operator):
148 if not params.use_select_all_toggle:
150 (operator, {"type": 'A', "value": 'PRESS'}, {"properties": [("action", 'SELECT')]}),
151 (operator, {"type": 'A', "value": 'PRESS', "alt": True}, {"properties": [("action", 'DESELECT')]}),
152 (operator, {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}),
153 (operator, {"type": 'A', "value": 'DOUBLE_CLICK'}, {"properties": [("action", 'DESELECT')]}),
157 (operator, {"type": 'A', "value": 'PRESS'}, {"properties": [("action", 'TOGGLE')]}),
158 (operator, {"type": 'A', "value": 'PRESS', "alt": True}, {"properties": [("action", 'DESELECT')]}),
159 (operator, {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}),
163 def _template_items_object_subdivision_set():
165 ("object.subdivision_set",
166 {"type": NUMBERS_0[i], "value": 'PRESS', "ctrl": True},
167 {"properties": [("level", i), ("relative", False)]})
172 def _template_items_gizmo_tweak_value():
174 ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
178 def _template_items_gizmo_tweak_modal():
180 ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None),
181 ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None),
182 ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None),
183 ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None),
184 ("PRECISION_ON", {"type": 'RIGHT_SHIFT', "value": 'PRESS', "any": True}, None),
185 ("PRECISION_OFF", {"type": 'RIGHT_SHIFT', "value": 'RELEASE', "any": True}, None),
186 ("PRECISION_ON", {"type": 'LEFT_SHIFT', "value": 'PRESS', "any": True}, None),
187 ("PRECISION_OFF", {"type": 'LEFT_SHIFT', "value": 'RELEASE', "any": True}, None),
188 ("SNAP_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None),
189 ("SNAP_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None),
190 ("SNAP_ON", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None),
191 ("SNAP_OFF", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None),
195 def _template_items_editmode_mesh_select_mode():
199 {"type": k, "value": 'PRESS', **key_expand, **key_extend},
200 {"properties": [*prop_extend, *prop_expand, ("type", e)]}
202 for key_expand, prop_expand in (({}, ()), ({"ctrl": True}, (("use_expand", True),)))
203 for key_extend, prop_extend in (({}, ()), ({"shift": True}, (("use_extend", True),)))
204 for k, e in (('ONE', 'VERT'), ('TWO', 'EDGE'), ('THREE', 'FACE'))
208 def _template_items_proportional_editing(*, connected=False):
210 op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
211 ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS'},
212 {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'ENABLED')]}),
213 *(() if not connected else (
214 ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS', "alt": True},
215 {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'CONNECTED')]}),
220 # Tool System Templates
222 def _template_items_tool_select(params, operator, cursor_operator):
223 if params.select_mouse == 'LEFTMOUSE':
224 # Immediate select without quick delay.
225 return [(operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None)]
227 # For right mouse, set the cursor.
229 (cursor_operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
230 ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'},
231 {"properties": [("release_confirm", True), ("cursor_transform", True)]}),
235 def _template_items_tool_select_actions(operator, *, type, value):
236 kmi_args = {"type": type, "value": value}
238 (operator, kmi_args, None),
239 (operator, {**kmi_args, "shift": True},
240 {"properties": [("mode", 'ADD')]}),
241 (operator, {**kmi_args, "ctrl": True},
242 {"properties": [("mode", 'SUB')]}),
243 (operator, {**kmi_args, "shift": True, "ctrl": True},
244 {"properties": [("mode", 'AND')]}),
248 def _template_items_tool_select_actions_simple(operator, *, type, value):
249 kmi_args = {"type": type, "value": value}
252 {"properties": [("mode", 'SET')]}),
253 (operator, {**kmi_args, "shift": True},
254 {"properties": [("mode", 'ADD')]}),
255 (operator, {**kmi_args, "ctrl": True},
256 {"properties": [("mode", 'SUB')]}),
259 # ------------------------------------------------------------------------------
260 # Window, Screen, Areas, Regions
262 def km_window(params):
266 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
271 # Apple standard shortcuts. Cmd+F for search since F-keys are not easy to use.
273 ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "oskey": True}, None),
274 op_menu("TOPBAR_MT_file_open_recent", {"type": 'O', "value": 'PRESS', "shift": True, "oskey": True}),
275 ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "oskey": True}, None),
276 ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "oskey": True},
277 {"properties": [("check_existing", False)]}),
278 ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "oskey": True}, None),
279 ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "oskey": True}, None),
280 ("wm.search_menu", {"type": 'F', "value": 'PRESS', "oskey": True}, None),
285 ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
286 op_menu("TOPBAR_MT_file_open_recent", {"type": 'O', "value": 'PRESS', "shift": True, "ctrl": True}),
287 ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "ctrl": True}, None),
288 ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True},
289 {"properties": [("check_existing", False)]}),
290 ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True}, None),
291 ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "ctrl": True}, None),
293 # Quick menu and toolbar
294 op_menu("SCREEN_MT_user_menu", {"type": 'Q', "value": 'PRESS'}),
296 # Fast editor switching
298 ("screen.space_type_set_or_cycle",
299 {"type": k, "value": 'PRESS', "shift": True},
300 {"properties": [("space_type", t)]})
302 ('F1', 'FILE_BROWSER'),
303 ('F2', 'CLIP_EDITOR'),
304 ('F3', 'NODE_EDITOR'),
307 ('F6', 'GRAPH_EDITOR'),
308 ('F7', 'PROPERTIES'),
309 ('F8', 'SEQUENCE_EDITOR'),
311 ('F10', 'IMAGE_EDITOR'),
312 ('F11', 'TEXT_EDITOR'),
313 ('F12', 'DOPESHEET_EDITOR'),
318 op_menu("USERPREF_MT_ndof_settings", {"type": 'NDOF_BUTTON_MENU', "value": 'PRESS'}),
319 ("wm.context_scale_float", {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS'},
320 {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 1.1)]}),
321 ("wm.context_scale_float", {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS'},
322 {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 1.0 / 1.1)]}),
323 ("wm.context_scale_float", {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS', "shift": True},
324 {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 1.5)]}),
325 ("wm.context_scale_float", {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS', "shift": True},
326 {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 2.0 / 3.0)]}),
327 ("info.reports_display_update", {"type": 'TIMER_REPORT', "value": 'ANY', "any": True}, None),
330 if not params.legacy:
333 ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS'}, None),
334 op_menu("TOPBAR_MT_file_specials", {"type": 'F2', "value": 'PRESS'}),
335 ("wm.search_menu", {"type": 'F3', "value": 'PRESS'}, None),
336 op_menu("TOPBAR_MT_window_specials", {"type": 'F4', "value": 'PRESS'}),
339 if params.spacebar_action == 'TOOL':
341 ("wm.toolbar", {"type": 'SPACE', "value": 'PRESS'}, None),
343 elif params.spacebar_action == 'PLAY':
345 ("wm.toolbar", {"type": 'SPACE', "value": 'PRESS', "shift": True}, None),
347 elif params.spacebar_action == 'SEARCH':
349 ("wm.search_menu", {"type": 'SPACE', "value": 'PRESS'}, None),
357 ("wm.window_new", {"type": 'W', "value": 'PRESS', "ctrl": True, "alt": True}, None),
358 ("wm.save_homefile", {"type": 'U', "value": 'PRESS', "ctrl": True}, None),
359 ("wm.open_mainfile", {"type": 'F1', "value": 'PRESS'}, None),
360 ("wm.link", {"type": 'O', "value": 'PRESS', "ctrl": True, "alt": True}, None),
361 ("wm.append", {"type": 'F1', "value": 'PRESS', "shift": True}, None),
362 ("wm.save_mainfile", {"type": 'W', "value": 'PRESS', "ctrl": True}, None),
363 ("wm.save_as_mainfile", {"type": 'F2', "value": 'PRESS'}, None),
364 ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
365 {"properties": [("copy", True)]}),
366 ("wm.window_fullscreen_toggle", {"type": 'F11', "value": 'PRESS', "alt": True}, None),
367 ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS', "alt": True}, None),
368 ("wm.search_menu", {"type": 'SPACE', "value": 'PRESS'}, None),
369 ("wm.redraw_timer", {"type": 'T', "value": 'PRESS', "ctrl": True, "alt": True}, None),
370 ("wm.debug_menu", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
376 def km_screen(params):
380 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
386 ("screen.animation_step", {"type": 'TIMER0', "value": 'ANY', "any": True}, None),
387 ("screen.region_blend", {"type": 'TIMERREGION', "value": 'ANY', "any": True}, None),
388 # Full screen and cycling
389 ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None),
390 ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True},
391 {"properties": [("use_hide_panels", True)]}),
392 ("screen.space_context_cycle", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
393 {"properties": [("direction", 'NEXT')]}),
394 ("screen.space_context_cycle", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
395 {"properties": [("direction", 'PREV')]}),
396 ("screen.workspace_cycle", {"type": 'PAGE_DOWN', "value": 'PRESS', "ctrl": True},
397 {"properties": [("direction", 'NEXT')]}),
398 ("screen.workspace_cycle", {"type": 'PAGE_UP', "value": 'PRESS', "ctrl": True},
399 {"properties": [("direction", 'PREV')]}),
401 ("screen.region_quadview", {"type": 'Q', "value": 'PRESS', "ctrl": True, "alt": True}, None),
403 ("screen.repeat_last", {"type": 'R', "value": 'PRESS', "shift": True}, None),
405 ("file.execute", {"type": 'RET', "value": 'PRESS'}, None),
406 ("file.execute", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
407 ("file.cancel", {"type": 'ESC', "value": 'PRESS'}, None),
409 ("ed.undo", {"type": 'Z', "value": 'PRESS', "ctrl": True}, None),
410 ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "ctrl": True}, None),
412 ("render.render", {"type": 'F12', "value": 'PRESS'},
413 {"properties": [("use_viewport", True)]}),
414 ("render.render", {"type": 'F12', "value": 'PRESS', "ctrl": True},
415 {"properties": [("animation", True), ("use_viewport", True)]}),
416 ("render.view_cancel", {"type": 'ESC', "value": 'PRESS'}, None),
417 ("render.view_show", {"type": 'F11', "value": 'PRESS'}, None),
418 ("render.play_rendered_anim", {"type": 'F11', "value": 'PRESS', "ctrl": True}, None),
424 ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "ctrl": True, "alt": True}, None),
425 ("screen.screen_set", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
426 {"properties": [("delta", 1)]}),
427 ("screen.screen_set", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
428 {"properties": [("delta", -1)]}),
429 ("screen.screenshot", {"type": 'F3', "value": 'PRESS', "ctrl": True}, None),
430 ("screen.repeat_history", {"type": 'R', "value": 'PRESS', "ctrl": True, "alt": True}, None),
431 ("screen.region_flip", {"type": 'F5', "value": 'PRESS'}, None),
432 ("screen.redo_last", {"type": 'F6', "value": 'PRESS'}, None),
433 ("script.reload", {"type": 'F8', "value": 'PRESS'}, None),
434 ("screen.userpref_show", {"type": 'U', "value": 'PRESS', "ctrl": True, "alt": True}, None),
438 # Apple undo and user prefs
440 ("ed.undo", {"type": 'Z', "value": 'PRESS', "oskey": True}, None),
441 ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "oskey": True}, None),
442 ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "alt": True, "oskey": True}, None),
443 ("screen.userpref_show", {"type": 'COMMA', "value": 'PRESS', "oskey": True}, None),
449 def km_screen_editing(params):
451 keymap = ("Screen Editing",
452 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
457 ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS'},
458 {"properties": [("modifier", 0)]}),
459 ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
460 {"properties": [("modifier", 1)]}),
461 ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
462 {"properties": [("modifier", 2)]}),
464 ("screen.area_split", {"type": 'ACTIONZONE_AREA', "value": 'ANY'}, None),
465 ("screen.area_join", {"type": 'ACTIONZONE_AREA', "value": 'ANY'}, None),
466 ("screen.area_dupli", {"type": 'ACTIONZONE_AREA', "value": 'ANY', "shift": True}, None),
467 ("screen.area_swap", {"type": 'ACTIONZONE_AREA', "value": 'ANY', "ctrl": True}, None),
468 ("screen.region_scale", {"type": 'ACTIONZONE_REGION', "value": 'ANY'}, None),
469 ("screen.screen_full_area", {"type": 'ACTIONZONE_FULLSCREEN', "value": 'ANY'},
470 {"properties": [("use_hide_panels", True)]}),
471 # Area move after action zones
472 ("screen.area_move", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
473 ("screen.area_options", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
478 ("screen.header", {"type": 'F9', "value": 'PRESS', "alt": True}, None),
484 def km_header(_params):
488 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
493 ("screen.header_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
499 def km_view2d(_params):
503 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
509 ("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
510 ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
512 ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
513 ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
514 ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
515 ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, None),
516 ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, None),
517 ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None),
518 ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None),
519 ("view2d.ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
520 # Zoom with single step
521 ("view2d.zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
522 ("view2d.zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
523 ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
524 ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
525 ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
526 ("view2d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
527 # Scroll up/down, only when zoom is not available.
528 ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
529 ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
530 ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
531 ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
532 # Zoom with drag and border
533 ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
534 ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
535 ("view2d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
541 def km_view2d_buttons_list(_params):
544 "View2D Buttons List",
545 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
551 ("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
552 ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
554 ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
555 ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
556 ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
557 ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
558 ("view2d.scroll_down", {"type": 'PAGE_DOWN', "value": 'PRESS'},
559 {"properties": [("page", True)]}),
560 ("view2d.scroll_up", {"type": 'PAGE_UP', "value": 'PRESS'},
561 {"properties": [("page", True)]}),
563 ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
564 ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
565 ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
566 ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
567 ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
568 ("view2d.reset", {"type": 'HOME', "value": 'PRESS'}, None),
574 def km_user_interface(_params):
578 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
583 # Eyedroppers all have the same event, and pass it through until
584 # a suitable eyedropper handles it.
585 ("ui.eyedropper_color", {"type": 'E', "value": 'PRESS'}, None),
586 ("ui.eyedropper_colorband", {"type": 'E', "value": 'PRESS'}, None),
587 ("ui.eyedropper_colorband_point", {"type": 'E', "value": 'PRESS', "alt": True}, None),
588 ("ui.eyedropper_id", {"type": 'E', "value": 'PRESS'}, None),
589 ("ui.eyedropper_depth", {"type": 'E', "value": 'PRESS'}, None),
591 ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None),
592 ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
593 {"properties": [("full_path", True)]}),
594 # Keyframes and drivers
595 ("anim.keyframe_insert_button", {"type": 'I', "value": 'PRESS'}, None),
596 ("anim.keyframe_delete_button", {"type": 'I', "value": 'PRESS', "alt": True}, None),
597 ("anim.keyframe_clear_button", {"type": 'I', "value": 'PRESS', "shift": True, "alt": True}, None),
598 ("anim.driver_button_add", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
599 ("anim.driver_button_remove", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
600 ("anim.keyingset_button_add", {"type": 'K', "value": 'PRESS'}, None),
601 ("anim.keyingset_button_remove", {"type": 'K', "value": 'PRESS', "alt": True}, None),
607 # ------------------------------------------------------------------------------
611 def km_property_editor(_params):
615 {"space_type": 'PROPERTIES', "region_type": 'WINDOW'},
620 ("buttons.context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
621 ("screen.space_context_cycle", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
622 {"properties": [("direction", 'PREV'), ], },),
623 ("screen.space_context_cycle", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
624 {"properties": [("direction", 'NEXT'), ], },),
630 def km_outliner(params):
634 {"space_type": 'OUTLINER', "region_type": 'WINDOW'},
639 ("outliner.highlight_update", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None),
640 ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
641 ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK'},
642 {"properties": [("extend", False), ("recursive", False)]}),
643 ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True},
644 {"properties": [("extend", True), ("recursive", False)]}),
645 ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True},
646 {"properties": [("extend", False), ("recursive", True)]}),
647 ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True},
648 {"properties": [("extend", True), ("recursive", True)]}),
649 ("outliner.select_box", {"type": 'B', "value": 'PRESS'}, None),
650 ("outliner.item_openclose", {"type": 'RET', "value": 'PRESS'},
651 {"properties": [("all", False)]}),
652 ("outliner.item_openclose", {"type": 'RET', "value": 'PRESS', "shift": True},
653 {"properties": [("all", True)]}),
654 ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
655 ("outliner.operation", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
656 ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
657 ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, None),
658 ("outliner.show_hierarchy", {"type": 'HOME', "value": 'PRESS'}, None),
659 ("outliner.show_active", {"type": 'PERIOD', "value": 'PRESS'}, None),
660 ("outliner.show_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
661 ("outliner.scroll_page", {"type": 'PAGE_DOWN', "value": 'PRESS'},
662 {"properties": [("up", False)]}),
663 ("outliner.scroll_page", {"type": 'PAGE_UP', "value": 'PRESS'},
664 {"properties": [("up", True)]}),
665 ("outliner.show_one_level", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
666 ("outliner.show_one_level", {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
667 {"properties": [("open", False)]}),
668 *_template_items_select_actions(params, "outliner.select_all"),
669 ("outliner.expanded_toggle", {"type": 'A', "value": 'PRESS', "shift": True}, None),
670 ("outliner.keyingset_add_selected", {"type": 'K', "value": 'PRESS'}, None),
671 ("outliner.keyingset_remove_selected", {"type": 'K', "value": 'PRESS', "alt": True}, None),
672 ("anim.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
673 ("anim.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None),
674 ("outliner.drivers_add_selected", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
675 ("outliner.drivers_delete_selected", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
676 ("outliner.collection_new", {"type": 'C', "value": 'PRESS'}, None),
677 ("outliner.collection_delete", {"type": 'X', "value": 'PRESS'}, None),
678 ("outliner.collection_delete", {"type": 'DEL', "value": 'PRESS'}, None),
679 ("object.move_to_collection", {"type": 'M', "value": 'PRESS'}, None),
680 ("object.link_to_collection", {"type": 'M', "value": 'PRESS', "shift": True}, None),
681 ("outliner.collection_exclude_set", {"type": 'E', "value": 'PRESS'}, None),
682 ("outliner.collection_exclude_clear", {"type": 'E', "value": 'PRESS', "alt": True}, None),
683 ("object.hide_view_clear", {"type": 'H', "value": 'PRESS', "alt": True},
684 {"properties": [("select", False)]}),
685 ("object.hide_view_set", {"type": 'H', "value": 'PRESS'},
686 {"properties": [("unselected", False)]}),
687 ("object.hide_view_set", {"type": 'H', "value": 'PRESS', "shift": True},
688 {"properties": [("unselected", True)]}),
694 def km_uv_editor(params):
698 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
704 *_template_items_editmode_mesh_select_mode(),
705 ("mesh.select_mode", {"type": 'FOUR', "value": 'PRESS'}, None),
706 ("wm.context_set_enum", {"type": 'ONE', "value": 'PRESS'},
707 {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'VERTEX')]}),
708 ("wm.context_set_enum", {"type": 'TWO', "value": 'PRESS'},
709 {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'EDGE')]}),
710 ("wm.context_set_enum", {"type": 'THREE', "value": 'PRESS'},
711 {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'FACE')]}),
712 ("wm.context_set_enum", {"type": 'FOUR', "value": 'PRESS'},
713 {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'ISLAND')]}),
714 ("uv.mark_seam", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
715 ("uv.select", {"type": params.select_mouse, "value": params.select_mouse_value},
716 {"properties": [("extend", False)]}),
717 ("uv.select", {"type": params.select_mouse, "value": params.select_mouse_value, "shift": True},
718 {"properties": [("extend", True)]}),
719 ("uv.select_loop", {"type": params.select_mouse, "value": params.select_mouse_value, "alt": True},
720 {"properties": [("extend", False)]}),
721 ("uv.select_loop", {"type": params.select_mouse, "value": params.select_mouse_value, "shift": True, "alt": True},
722 {"properties": [("extend", True)]}),
723 ("uv.select_split", {"type": 'Y', "value": 'PRESS'}, None),
724 ("uv.select_box", {"type": 'B', "value": 'PRESS'},
725 {"properties": [("pinned", False)]}),
726 ("uv.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True},
727 {"properties": [("pinned", True)]}),
728 ("uv.circle_select", {"type": 'C', "value": 'PRESS'}, None),
729 ("uv.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True},
730 {"properties": [("mode", 'ADD')]}),
731 ("uv.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True},
732 {"properties": [("mode", 'SUB')]}),
733 ("uv.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True},
734 {"properties": [("extend", True), ("deselect", False)]}),
735 ("uv.select_linked_pick", {"type": 'L', "value": 'PRESS'},
736 {"properties": [("extend", True), ("deselect", False)]}),
737 ("uv.select_linked", {"type": 'L', "value": 'PRESS', "shift": True, "ctrl": True},
738 {"properties": [("extend", False), ("deselect", True)]}),
739 ("uv.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True},
740 {"properties": [("extend", False), ("deselect", True)]}),
741 ("uv.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
742 ("uv.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
743 *_template_items_select_actions(params, "uv.select_all"),
744 ("uv.select_pinned", {"type": 'P', "value": 'PRESS', "shift": True}, None),
745 op_menu("IMAGE_MT_uvs_weldalign", {"type": 'W', "value": 'PRESS', "shift": True}),
746 ("uv.stitch", {"type": 'V', "value": 'PRESS'}, None),
747 ("uv.pin", {"type": 'P', "value": 'PRESS'},
748 {"properties": [("clear", False)]}),
749 ("uv.pin", {"type": 'P', "value": 'PRESS', "alt": True},
750 {"properties": [("clear", True)]}),
751 ("uv.unwrap", {"type": 'U', "value": 'PRESS'}, None),
752 ("uv.hide", {"type": 'H', "value": 'PRESS'},
753 {"properties": [("unselected", False)]}),
754 ("uv.hide", {"type": 'H', "value": 'PRESS', "shift": True},
755 {"properties": [("unselected", True)]}),
756 ("uv.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
757 op_menu_pie("IMAGE_MT_uvs_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
758 op_menu("IMAGE_MT_uvs_select_mode", {"type": 'TAB', "value": 'PRESS', "ctrl": True}),
759 *_template_items_proportional_editing(connected=False),
760 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
761 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
762 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
763 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
764 ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
765 ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
766 ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True},
767 {"properties": [("data_path", 'tool_settings.use_snap')]}),
768 ("wm.context_menu_enum", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
769 {"properties": [("data_path", 'tool_settings.snap_uv_element')]}),
773 if params.cursor_tweak_event:
775 ("uv.cursor_set", params.cursor_set_event, None),
776 ("transform.translate", params.cursor_tweak_event,
777 {"properties": [("release_confirm", True), ("cursor_transform", True)]}),
781 ("uv.cursor_set", params.cursor_set_event, None),
786 ("uv.minimize_stretch", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
787 ("uv.pack_islands", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
788 ("uv.average_islands_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
789 ("wm.context_toggle", {"type": 'Q', "value": 'PRESS'},
790 {"properties": [("data_path", 'tool_settings.use_uv_sculpt')]}),
793 if params.select_mouse == 'LEFTMOUSE' and not params.legacy:
794 # Quick switch to select tool, since left select can't easily
795 # select with any tool active.
797 op_tool_cycle("Select Box", {"type": 'W', "value": 'PRESS'}),
803 def km_uv_sculpt(_params):
807 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
812 ("wm.context_toggle", {"type": 'Q', "value": 'PRESS'},
813 {"properties": [("data_path", 'tool_settings.use_uv_sculpt')]}),
814 ("sculpt.uv_sculpt_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS'},
815 {"properties": [("mode", 'NORMAL')]}),
816 ("sculpt.uv_sculpt_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
817 {"properties": [("mode", 'INVERT')]}),
818 ("sculpt.uv_sculpt_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
819 {"properties": [("mode", 'RELAX')]}),
820 ("brush.scale_size", {"type": 'LEFT_BRACKET', "value": 'PRESS'},
821 {"properties": [("scalar", 0.9)]}),
822 ("brush.scale_size", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
823 {"properties": [("scalar", 1.0 / 0.9)]}),
824 *_template_paint_radial_control("uv_sculpt"),
825 ("brush.uv_sculpt_tool_set", {"type": 'S', "value": 'PRESS'},
826 {"properties": [("tool", 'RELAX')]}),
827 ("brush.uv_sculpt_tool_set", {"type": 'P', "value": 'PRESS'},
828 {"properties": [("tool", 'PINCH')]}),
829 ("brush.uv_sculpt_tool_set", {"type": 'G', "value": 'PRESS'},
830 {"properties": [("tool", 'GRAB')]}),
836 # 3D View: all regions.
837 def km_view3d_generic(_params):
841 {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
846 ("view3d.properties", {"type": 'N', "value": 'PRESS'}, None),
847 ("view3d.toolshelf", {"type": 'T', "value": 'PRESS'}, None),
853 # 3D View: main region.
854 def km_view3d(params):
858 {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
863 if params.cursor_tweak_event:
865 ("view3d.cursor3d", params.cursor_set_event, None),
866 ("transform.translate", params.cursor_tweak_event,
867 {"properties": [("release_confirm", True), ("cursor_transform", True)]}),
871 ("view3d.cursor3d", params.cursor_set_event, None),
876 ("view3d.localview", {"type": 'NUMPAD_SLASH', "value": 'PRESS'}, None),
877 ("view3d.localview", {"type": 'SLASH', "value": 'PRESS'}, None),
878 ("view3d.localview_remove_from", {"type": 'M', "value": 'PRESS'}, None),
880 ("view3d.rotate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
881 ("view3d.move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
882 ("view3d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
883 ("view3d.dolly", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None),
884 ("view3d.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "ctrl": True},
885 {"properties": [("use_all_regions", True)]}),
886 ("view3d.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'},
887 {"properties": [("use_all_regions", False)]}),
888 ("view3d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
889 ("view3d.rotate", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
890 ("view3d.rotate", {"type": 'MOUSEROTATE', "value": 'ANY'}, None),
891 ("view3d.move", {"type": 'TRACKPADPAN', "value": 'ANY', "shift": True}, None),
892 ("view3d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
893 ("view3d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
894 ("view3d.zoom", {"type": 'NUMPAD_PLUS', "value": 'PRESS'},
895 {"properties": [("delta", 1)]}),
896 ("view3d.zoom", {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
897 {"properties": [("delta", -1)]}),
898 ("view3d.zoom", {"type": 'EQUAL', "value": 'PRESS', "ctrl": True},
899 {"properties": [("delta", 1)]}),
900 ("view3d.zoom", {"type": 'MINUS', "value": 'PRESS', "ctrl": True},
901 {"properties": [("delta", -1)]}),
902 ("view3d.zoom", {"type": 'WHEELINMOUSE', "value": 'PRESS'},
903 {"properties": [("delta", 1)]}),
904 ("view3d.zoom", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'},
905 {"properties": [("delta", -1)]}),
906 ("view3d.dolly", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True},
907 {"properties": [("delta", 1)]}),
908 ("view3d.dolly", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True},
909 {"properties": [("delta", -1)]}),
910 ("view3d.dolly", {"type": 'EQUAL', "value": 'PRESS', "shift": True, "ctrl": True},
911 {"properties": [("delta", 1)]}),
912 ("view3d.dolly", {"type": 'MINUS', "value": 'PRESS', "shift": True, "ctrl": True},
913 {"properties": [("delta", -1)]}),
914 ("view3d.view_center_camera", {"type": 'HOME', "value": 'PRESS'}, None),
915 ("view3d.view_center_lock", {"type": 'HOME', "value": 'PRESS'}, None),
916 ("view3d.view_all", {"type": 'HOME', "value": 'PRESS'},
917 {"properties": [("center", False)]}),
918 ("view3d.view_all", {"type": 'HOME', "value": 'PRESS', "ctrl": True},
919 {"properties": [("use_all_regions", True), ("center", False)]}),
920 ("view3d.view_all", {"type": 'C', "value": 'PRESS', "shift": True},
921 {"properties": [("center", True)]}),
922 op_menu_pie("VIEW3D_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}),
923 ("view3d.navigate", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "shift": True}, None),
925 ("view3d.view_camera", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
926 ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS'},
927 {"properties": [("type", 'FRONT')]}),
928 ("view3d.view_orbit", {"type": 'NUMPAD_2', "value": 'PRESS'},
929 {"properties": [("type", 'ORBITDOWN')]}),
930 ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS'},
931 {"properties": [("type", 'RIGHT')]}),
932 ("view3d.view_orbit", {"type": 'NUMPAD_4', "value": 'PRESS'},
933 {"properties": [("type", 'ORBITLEFT')]}),
934 ("view3d.view_persportho", {"type": 'NUMPAD_5', "value": 'PRESS'}, None),
935 ("view3d.view_orbit", {"type": 'NUMPAD_6', "value": 'PRESS'},
936 {"properties": [("type", 'ORBITRIGHT')]}),
937 ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS'},
938 {"properties": [("type", 'TOP')]}),
939 ("view3d.view_orbit", {"type": 'NUMPAD_8', "value": 'PRESS'},
940 {"properties": [("type", 'ORBITUP')]}),
941 ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "ctrl": True},
942 {"properties": [("type", 'BACK')]}),
943 ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "ctrl": True},
944 {"properties": [("type", 'LEFT')]}),
945 ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "ctrl": True},
946 {"properties": [("type", 'BOTTOM')]}),
947 ("view3d.view_pan", {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True},
948 {"properties": [("type", 'PANDOWN')]}),
949 ("view3d.view_pan", {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True},
950 {"properties": [("type", 'PANLEFT')]}),
951 ("view3d.view_pan", {"type": 'NUMPAD_6', "value": 'PRESS', "ctrl": True},
952 {"properties": [("type", 'PANRIGHT')]}),
953 ("view3d.view_pan", {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True},
954 {"properties": [("type", 'PANUP')]}),
955 ("view3d.view_roll", {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True},
956 {"properties": [("type", 'LEFT')]}),
957 ("view3d.view_roll", {"type": 'NUMPAD_6', "value": 'PRESS', "shift": True},
958 {"properties": [("type", 'RIGHT')]}),
959 ("view3d.view_orbit", {"type": 'NUMPAD_9', "value": 'PRESS'},
960 {"properties": [("angle", 3.1415927), ("type", 'ORBITRIGHT')]}),
961 ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True},
962 {"properties": [("type", 'FRONT'), ("align_active", True)]}),
963 ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True},
964 {"properties": [("type", 'RIGHT'), ("align_active", True)]}),
965 ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True},
966 {"properties": [("type", 'TOP'), ("align_active", True)]}),
967 ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True, "ctrl": True},
968 {"properties": [("type", 'BACK'), ("align_active", True)]}),
969 ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True, "ctrl": True},
970 {"properties": [("type", 'LEFT'), ("align_active", True)]}),
971 ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True, "ctrl": True},
972 {"properties": [("type", 'BOTTOM'), ("align_active", True)]}),
973 ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'NORTH', "alt": True},
974 {"properties": [("type", 'TOP'), ("relative", True)]}),
975 ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'SOUTH', "alt": True},
976 {"properties": [("type", 'BOTTOM'), ("relative", True)]}),
977 ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'EAST', "alt": True},
978 {"properties": [("type", 'RIGHT'), ("relative", True)]}),
979 ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'WEST', "alt": True},
980 {"properties": [("type", 'LEFT'), ("relative", True)]}),
981 ("view3d.view_center_pick", {"type": 'MIDDLEMOUSE', "value": 'CLICK', "alt": True}, None),
982 ("view3d.ndof_orbit_zoom", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
983 ("view3d.ndof_orbit", {"type": 'NDOF_MOTION', "value": 'ANY', "ctrl": True}, None),
984 ("view3d.ndof_pan", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True}, None),
985 ("view3d.ndof_all", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True, "ctrl": True}, None),
986 ("view3d.view_selected", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'},
987 {"properties": [("use_all_regions", False)]}),
988 ("view3d.view_roll", {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'},
989 {"properties": [("type", 'LEFT')]}),
990 ("view3d.view_roll", {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'},
991 {"properties": [("type", 'RIGHT')]}),
992 ("view3d.view_axis", {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS'},
993 {"properties": [("type", 'FRONT')]}),
994 ("view3d.view_axis", {"type": 'NDOF_BUTTON_BACK', "value": 'PRESS'},
995 {"properties": [("type", 'BACK')]}),
996 ("view3d.view_axis", {"type": 'NDOF_BUTTON_LEFT', "value": 'PRESS'},
997 {"properties": [("type", 'LEFT')]}),
998 ("view3d.view_axis", {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS'},
999 {"properties": [("type", 'RIGHT')]}),
1000 ("view3d.view_axis", {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS'},
1001 {"properties": [("type", 'TOP')]}),
1002 ("view3d.view_axis", {"type": 'NDOF_BUTTON_BOTTOM', "value": 'PRESS'},
1003 {"properties": [("type", 'BOTTOM')]}),
1004 ("view3d.view_axis", {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS', "shift": True},
1005 {"properties": [("type", 'FRONT'), ("align_active", True)]}),
1006 ("view3d.view_axis", {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS', "shift": True},
1007 {"properties": [("type", 'RIGHT'), ("align_active", True)]}),
1008 ("view3d.view_axis", {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS', "shift": True},
1009 {"properties": [("type", 'TOP'), ("align_active", True)]}),
1012 {"type": params.select_mouse, "value": params.select_mouse_value, **{m: True for m in mods}},
1013 {"properties": [(c, True) for c in props]},
1014 ) for operator, props, mods in (
1015 ("view3d.select_or_deselect_all" if not params.legacy else "view3d.select", (), ()),
1016 ("view3d.select", ("toggle",), ("shift",)),
1017 ("view3d.select", ("center", "object"), ("ctrl",)),
1018 ("view3d.select", ("enumerate",), ("alt",)),
1019 ("view3d.select", ("extend", "toggle", "center"), ("shift", "ctrl")),
1020 ("view3d.select", ("center", "enumerate"), ("ctrl", "alt")),
1021 ("view3d.select", ("toggle", "enumerate"), ("shift", "alt")),
1022 ("view3d.select", ("toggle", "center", "enumerate"), ("shift", "ctrl", "alt")),
1024 ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None),
1025 ("view3d.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True},
1026 {"properties": [("mode", 'ADD')]}),
1027 ("view3d.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True},
1028 {"properties": [("mode", 'SUB')]}),
1029 ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1031 # ("view3d.clip_border", {"type": 'B', "value": 'PRESS', "alt": True}, None),
1032 ("view3d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
1033 ("view3d.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1034 ("view3d.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1036 ("view3d.camera_to_view", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1037 ("view3d.object_as_camera", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True}, None),
1039 ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1040 ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1042 op_menu_pie("VIEW3D_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
1044 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
1045 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
1046 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
1047 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
1048 ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None),
1049 ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
1050 ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
1051 ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1052 ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True},
1053 {"properties": [("data_path", 'tool_settings.use_snap')]}),
1054 op_panel("VIEW3D_PT_snapping", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True}, [("keep_open", False)]),
1055 ("object.transform_axis_target", {"type": 'T', "value": 'PRESS', "shift": True}, None),
1056 ("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
1061 ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1062 ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
1065 if not params.legacy:
1068 ("wm.context_toggle", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True},
1069 {"properties": [("data_path", 'space_data.show_gizmo_tool')]}),
1070 op_menu_pie("VIEW3D_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
1071 op_menu_pie("VIEW3D_MT_orientations_pie", {"type": 'COMMA', "value": 'PRESS'}),
1072 ("wm.context_toggle", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True},
1073 {"properties": [("data_path", 'space_data.show_gizmo_tool')]}),
1075 "VIEW3D_MT_shading_pie" if not params.use_v3d_shade_ex_pie else
1076 "VIEW3D_MT_shading_ex_pie", {"type": 'Z', "value": 'PRESS'}),
1077 ("view3d.toggle_shading", {"type": 'Z', "value": 'PRESS', "shift": True},
1078 {"properties": [("type", 'WIREFRAME')]}),
1079 ("view3d.toggle_xray", {"type": 'Z', "value": 'PRESS', "alt": True}, None),
1080 ("wm.context_toggle", {"type": 'Z', "value": 'PRESS', "alt": True, "shift": True},
1081 {"properties": [("data_path", "space_data.overlay.show_overlays")]}),
1086 ("view3d.view_lock_to_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "shift": True}, None),
1087 ("view3d.view_lock_clear", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "alt": True}, None),
1088 ("view3d.navigate", {"type": 'F', "value": 'PRESS', "shift": True}, None),
1089 ("view3d.zoom_camera_1_to_1", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None),
1090 ("view3d.view_center_cursor", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
1091 ("view3d.view_center_pick", {"type": 'F', "value": 'PRESS', "alt": True}, None),
1092 ("view3d.view_pan", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
1093 {"properties": [("type", 'PANRIGHT')]}),
1094 ("view3d.view_pan", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
1095 {"properties": [("type", 'PANLEFT')]}),
1096 ("view3d.view_pan", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True},
1097 {"properties": [("type", 'PANUP')]}),
1098 ("view3d.view_pan", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True},
1099 {"properties": [("type", 'PANDOWN')]}),
1100 ("view3d.view_orbit", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
1101 {"properties": [("type", 'ORBITLEFT')]}),
1102 ("view3d.view_orbit", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
1103 {"properties": [("type", 'ORBITRIGHT')]}),
1104 ("view3d.view_orbit", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "alt": True},
1105 {"properties": [("type", 'ORBITUP')]}),
1106 ("view3d.view_orbit", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "alt": True},
1107 {"properties": [("type", 'ORBITDOWN')]}),
1108 ("view3d.view_roll", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
1109 {"properties": [("type", 'LEFT')]}),
1110 ("view3d.view_roll", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
1111 {"properties": [("type", 'RIGHT')]}),
1112 ("transform.create_orientation", {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True},
1113 {"properties": [("use", True)]}),
1114 ("transform.translate", {"type": 'T', "value": 'PRESS', "shift": True},
1115 {"properties": [("texture_space", True)]}),
1116 ("transform.resize", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
1117 {"properties": [("texture_space", True)]}),
1119 ("wm.context_set_enum", {"type": 'COMMA', "value": 'PRESS'},
1120 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'BOUNDING_BOX_CENTER')]}),
1121 ("wm.context_set_enum", {"type": 'COMMA', "value": 'PRESS', "ctrl": True},
1122 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'MEDIAN_POINT')]}),
1123 ("wm.context_toggle", {"type": 'COMMA', "value": 'PRESS', "alt": True},
1124 {"properties": [("data_path", 'tool_settings.use_transform_pivot_point_align')]}),
1125 ("wm.context_toggle", {"type": 'SPACE', "value": 'PRESS', "ctrl": True},
1126 {"properties": [("data_path", 'space_data.show_gizmo_tool')]}),
1127 ("wm.context_set_enum", {"type": 'PERIOD', "value": 'PRESS'},
1128 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'CURSOR')]}),
1129 ("wm.context_set_enum", {"type": 'PERIOD', "value": 'PRESS', "ctrl": True},
1130 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'INDIVIDUAL_ORIGINS')]}),
1131 ("wm.context_set_enum", {"type": 'PERIOD', "value": 'PRESS', "alt": True},
1132 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'ACTIVE_ELEMENT')]}),
1134 ("wm.context_toggle_enum", {"type": 'Z', "value": 'PRESS'},
1135 {"properties": [("data_path", 'space_data.shading.type'), ("value_1", 'WIREFRAME'), ("value_2", 'SOLID')]}),
1136 ("wm.context_toggle_enum", {"type": 'Z', "value": 'PRESS', "shift": True},
1137 {"properties": [("data_path", 'space_data.shading.type'), ("value_1", 'RENDERED'), ("value_2", 'SOLID')]}),
1138 ("wm.context_toggle_enum", {"type": 'Z', "value": 'PRESS', "alt": True},
1139 {"properties": [("data_path", 'space_data.shading.type'), ("value_1", 'MATERIAL'), ("value_2", 'SOLID')]}),
1142 if params.select_mouse == 'LEFTMOUSE' and not params.legacy:
1143 # Quick switch to select tool, since left select can't easily
1144 # select with any tool active.
1146 op_tool_cycle("Select Box", {"type": 'W', "value": 'PRESS'}),
1152 def km_mask_editing(params):
1156 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
1161 ("mask.new", {"type": 'N', "value": 'PRESS', "alt": True}, None),
1162 op_menu("MASK_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}),
1163 op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
1164 ("wm.context_toggle", {"type": 'O', "value": 'PRESS'},
1165 {"properties": [("data_path", 'tool_settings.use_proportional_edit_mask')]}),
1166 ("mask.add_vertex_slide", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True}, None),
1167 ("mask.add_feather_vertex_slide", {"type": params.action_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, None),
1168 ("mask.delete", {"type": 'X', "value": 'PRESS'}, None),
1169 ("mask.delete", {"type": 'DEL', "value": 'PRESS'}, None),
1170 ("mask.select", {"type": params.select_mouse, "value": params.select_mouse_value},
1171 {"properties": [("extend", False), ("deselect", False), ("toggle", False)]}),
1172 ("mask.select", {"type": params.select_mouse, "value": params.select_mouse_value, "shift": True},
1173 {"properties": [("extend", False), ("deselect", False), ("toggle", True)]}),
1174 *_template_items_select_actions(params, "mask.select_all"),
1175 ("mask.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
1176 ("mask.select_linked_pick", {"type": 'L', "value": 'PRESS'},
1177 {"properties": [("deselect", False)]}),
1178 ("mask.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True},
1179 {"properties": [("deselect", True)]}),
1180 ("mask.select_box", {"type": 'B', "value": 'PRESS'}, None),
1181 ("mask.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1182 ("mask.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True},
1183 {"properties": [("deselect", False)]}),
1184 ("mask.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
1185 {"properties": [("deselect", True)]}),
1186 ("mask.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
1187 ("mask.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
1188 ("mask.hide_view_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None),
1189 ("mask.hide_view_set", {"type": 'H', "value": 'PRESS'},
1190 {"properties": [("unselected", False)]}),
1191 ("mask.hide_view_set", {"type": 'H', "value": 'PRESS', "shift": True},
1192 {"properties": [("unselected", True)]}),
1193 ("clip.select", {"type": params.select_mouse, "value": params.select_mouse_value, "ctrl": True},
1194 {"properties": [("extend", False)]}),
1195 ("mask.cyclic_toggle", {"type": 'C', "value": 'PRESS', "alt": True}, None),
1196 ("mask.slide_point", {"type": params.action_mouse, "value": 'PRESS'}, None),
1197 ("mask.slide_spline_curvature", {"type": params.action_mouse, "value": 'PRESS'}, None),
1198 ("mask.handle_type_set", {"type": 'V', "value": 'PRESS'}, None),
1199 ("mask.normals_make_consistent", {"type": 'N', "value": 'PRESS', "ctrl" if params.legacy else "shift": True}, None),
1200 ("mask.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
1201 ("mask.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None),
1202 ("mask.shape_key_insert", {"type": 'I', "value": 'PRESS'}, None),
1203 ("mask.shape_key_clear", {"type": 'I', "value": 'PRESS', "alt": True}, None),
1204 ("mask.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1205 ("mask.copy_splines", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1206 ("mask.paste_splines", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1207 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
1208 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
1209 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
1210 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
1211 ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True},
1212 {"properties": [("mode", 'MASK_SHRINKFATTEN')]}),
1216 if params.cursor_tweak_event:
1218 ("uv.cursor_set", params.cursor_set_event, None),
1219 ("transform.translate", params.cursor_tweak_event,
1220 {"properties": [("release_confirm", True), ("cursor_transform", True)]}),
1224 ("uv.cursor_set", params.cursor_set_event, None),
1230 def km_markers(params):
1234 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
1239 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
1240 ("marker.move", {"type": params.select_tweak, "value": 'ANY'}, None),
1241 ("marker.duplicate", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1242 ("marker.select", {"type": params.select_mouse, "value": 'PRESS'}, None),
1243 ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
1244 {"properties": [("extend", True)]}),
1245 ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
1246 {"properties": [("extend", False), ("camera", True)]}),
1247 ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1248 {"properties": [("extend", True), ("camera", True)]}),
1249 ("marker.select_box", {"type": 'B', "value": 'PRESS'}, None),
1250 *_template_items_select_actions(params, "marker.select_all"),
1251 ("marker.delete", {"type": 'X', "value": 'PRESS'}, None),
1252 ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, None),
1253 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1254 ("marker.move", {"type": 'G', "value": 'PRESS'}, None),
1255 ("marker.camera_bind", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1261 def km_graph_editor_generic(_params):
1264 "Graph Editor Generic",
1265 {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'},
1270 ("graph.properties", {"type": 'N', "value": 'PRESS'}, None),
1271 ("graph.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None),
1272 ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
1273 ("graph.hide", {"type": 'H', "value": 'PRESS'},
1274 {"properties": [("unselected", False)]}),
1275 ("graph.hide", {"type": 'H', "value": 'PRESS', "shift": True},
1276 {"properties": [("unselected", True)]}),
1277 ("graph.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
1278 ("wm.context_set_enum", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
1279 {"properties": [("data_path", 'area.type'), ("value", 'DOPESHEET_EDITOR')]}),
1285 def km_graph_editor(params):
1289 {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'},
1294 ("wm.context_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True},
1295 {"properties": [("data_path", 'space_data.show_handles')]}),
1296 ("graph.cursor_set", {"type": params.action_mouse, "value": 'PRESS'}, None),
1297 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS'},
1298 {"properties": [("extend", False), ("column", False), ("curves", False)]}),
1299 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "alt": True},
1300 {"properties": [("extend", False), ("column", True), ("curves", False)]}),
1301 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
1302 {"properties": [("extend", True), ("column", False), ("curves", False)]}),
1303 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True},
1304 {"properties": [("extend", True), ("column", True), ("curves", False)]}),
1305 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True},
1306 {"properties": [("extend", False), ("column", False), ("curves", True)]}),
1307 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
1308 {"properties": [("extend", True), ("column", False), ("curves", True)]}),
1309 ("graph.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
1310 {"properties": [("mode", 'CHECK'), ("extend", False)]}),
1311 ("graph.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1312 {"properties": [("mode", 'CHECK'), ("extend", True)]}),
1313 ("graph.select_leftright", {"type": 'LEFT_BRACKET', "value": 'PRESS'},
1314 {"properties": [("mode", 'LEFT'), ("extend", False)]}),
1315 ("graph.select_leftright", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
1316 {"properties": [("mode", 'RIGHT'), ("extend", False)]}),
1317 *_template_items_select_actions(params, "graph.select_all"),
1318 ("graph.select_box", {"type": 'B', "value": 'PRESS'},
1319 {"properties": [("axis_range", False), ("include_handles", False)]}),
1320 ("graph.select_box", {"type": 'B', "value": 'PRESS', "alt": True},
1321 {"properties": [("axis_range", True), ("include_handles", False)]}),
1322 ("graph.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True},
1323 {"properties": [("axis_range", False), ("include_handles", True)]}),
1324 ("graph.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True},
1325 {"properties": [("axis_range", True), ("include_handles", True)]}),
1326 ("graph.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True},
1327 {"properties": [("deselect", False)]}),
1328 ("graph.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True},
1329 {"properties": [("deselect", True)]}),
1330 ("graph.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1331 ("graph.select_column", {"type": 'K', "value": 'PRESS'},
1332 {"properties": [("mode", 'KEYS')]}),
1333 ("graph.select_column", {"type": 'K', "value": 'PRESS', "ctrl": True},
1334 {"properties": [("mode", 'CFRA')]}),
1335 ("graph.select_column", {"type": 'K', "value": 'PRESS', "shift": True},
1336 {"properties": [("mode", 'MARKERS_COLUMN')]}),
1337 ("graph.select_column", {"type": 'K', "value": 'PRESS', "alt": True},
1338 {"properties": [("mode", 'MARKERS_BETWEEN')]}),
1339 ("graph.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
1340 ("graph.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
1341 ("graph.select_linked", {"type": 'L', "value": 'PRESS'}, None),
1342 ("graph.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
1343 op_menu_pie("GRAPH_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
1344 ("graph.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1345 ("graph.handle_type", {"type": 'V', "value": 'PRESS'}, None),
1346 ("graph.interpolation_type", {"type": 'T', "value": 'PRESS'}, None),
1347 ("graph.easing_type", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
1348 ("graph.smooth", {"type": 'O', "value": 'PRESS', "alt": True}, None),
1349 ("graph.sample", {"type": 'O', "value": 'PRESS', "shift": True, "alt": True}, None),
1350 ("graph.bake", {"type": 'C', "value": 'PRESS', "alt": True}, None),
1351 op_menu("GRAPH_MT_delete", {"type": 'X', "value": 'PRESS'}),
1352 op_menu("GRAPH_MT_delete", {"type": 'DEL', "value": 'PRESS'}),
1353 op_menu("GRAPH_MT_specials", params.context_menu_event),
1354 ("graph.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1355 ("graph.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
1356 ("graph.click_insert", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True},
1357 {"properties": [("extend", False)]}),
1358 ("graph.click_insert", {"type": params.action_mouse, "value": 'CLICK', "shift": True, "ctrl": True},
1359 {"properties": [("extend", True)]}),
1360 ("graph.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1361 ("graph.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1362 ("graph.paste", {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True},
1363 {"properties": [("flipped", True)]}),
1364 ("graph.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1365 ("graph.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1366 ("graph.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1367 ("graph.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1368 ("graph.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
1369 ("graph.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True},
1370 {"properties": [("only_active", False)]}),
1371 ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
1372 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
1373 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
1374 ("transform.transform", {"type": 'E', "value": 'PRESS'},
1375 {"properties": [("mode", 'TIME_EXTEND')]}),
1376 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
1377 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
1378 ("wm.context_toggle", {"type": 'O', "value": 'PRESS'},
1379 {"properties": [("data_path", 'tool_settings.use_proportional_fcurve')]}),
1380 op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
1381 op_menu_pie("GRAPH_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
1382 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
1383 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1388 ("graph.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1389 ("graph.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
1390 ("graph.paste", {"type": 'V', "value": 'PRESS', "shift": True, "oskey": True},
1391 {"properties": [("flipped", True)]}),
1397 def km_image_generic(params):
1401 {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
1406 ("image.new", {"type": 'N', "value": 'PRESS', "alt": True}, None),
1407 ("image.open", {"type": 'O', "value": 'PRESS', "alt": True}, None),
1408 ("image.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None),
1409 ("image.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None),
1410 ("image.save", {"type": 'S', "value": 'PRESS', "alt": True}, None),
1411 ("image.save_as", {"type": 'S', "value": 'PRESS', "shift": True}, None),
1412 ("image.properties", {"type": 'N', "value": 'PRESS'}, None),
1413 ("image.toolshelf", {"type": 'T', "value": 'PRESS'}, None),
1414 op_menu("IMAGE_MT_specials", params.context_menu_event),
1415 ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS'}, None),
1416 ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS', "alt": True},
1417 {"properties": [("reverse", True)]}),
1423 def km_image(params):
1427 {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
1432 ("image.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1433 ("image.view_all", {"type": 'HOME', "value": 'PRESS', "shift": True},
1434 {"properties": [("fit_view", True)]}),
1435 ("image.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1436 ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
1437 ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
1438 ("image.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
1439 ("image.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1440 ("image.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
1441 ("image.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
1442 ("image.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
1443 ("image.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
1444 ("image.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
1445 ("image.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
1446 ("image.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
1447 ("image.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
1448 ("image.view_zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
1449 ("image.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True},
1450 {"properties": [("ratio", 8.0)]}),
1451 ("image.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True},
1452 {"properties": [("ratio", 4.0)]}),
1453 ("image.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True},
1454 {"properties": [("ratio", 2.0)]}),
1455 ("image.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True},
1456 {"properties": [("ratio", 8.0)]}),
1457 ("image.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True},
1458 {"properties": [("ratio", 4.0)]}),
1459 ("image.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True},
1460 {"properties": [("ratio", 2.0)]}),
1461 ("image.view_zoom_ratio", {"type": 'NUMPAD_1', "value": 'PRESS'},
1462 {"properties": [("ratio", 1.0)]}),
1463 ("image.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS'},
1464 {"properties": [("ratio", 0.5)]}),
1465 ("image.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS'},
1466 {"properties": [("ratio", 0.25)]}),
1467 ("image.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS'},
1468 {"properties": [("ratio", 0.125)]}),
1469 ("image.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
1470 ("image.sample", {"type": params.action_mouse, "value": 'PRESS'}, None),
1471 ("image.curves_point_set", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True},
1472 {"properties": [("point", 'BLACK_POINT')]}),
1473 ("image.curves_point_set", {"type": params.action_mouse, "value": 'PRESS', "shift": True},
1474 {"properties": [("point", 'WHITE_POINT')]}),
1475 ("object.mode_set", {"type": 'TAB', "value": 'PRESS'},
1476 {"properties": [("mode", 'EDIT'), ("toggle", True)]}),
1478 (("wm.context_set_int",
1479 {"type": NUMBERS_1[i], "value": 'PRESS'},
1480 {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", i)]})
1484 op_menu_pie("IMAGE_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
1485 ("image.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1486 ("image.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1492 def km_node_generic(_params):
1496 {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
1501 ("node.properties", {"type": 'N', "value": 'PRESS'}, None),
1502 ("node.toolbar", {"type": 'T', "value": 'PRESS'}, None),
1508 def km_node_editor(params):
1512 {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
1517 ("node.select", {"type": 'LEFTMOUSE', "value": 'PRESS'},
1518 {"properties": [("extend", False)]}),
1519 ("node.select", {"type": params.select_mouse, "value": 'PRESS'},
1520 {"properties": [("extend", False)]}),
1521 ("node.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
1522 {"properties": [("extend", False)]}),
1523 ("node.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
1524 {"properties": [("extend", False)]}),
1525 ("node.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True},
1526 {"properties": [("extend", False)]}),
1527 ("node.select", {"type": params.select_mouse, "value": 'PRESS', "alt": True},
1528 {"properties": [("extend", False)]}),
1529 ("node.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
1530 {"properties": [("extend", False)]}),
1531 ("node.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True},
1532 {"properties": [("extend", False)]}),
1533 ("node.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
1534 {"properties": [("extend", True)]}),
1535 ("node.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
1536 {"properties": [("extend", True)]}),
1537 ("node.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
1538 {"properties": [("extend", True)]}),
1539 ("node.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1540 {"properties": [("extend", True)]}),
1541 ("node.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
1542 {"properties": [("extend", True)]}),
1543 ("node.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True},
1544 {"properties": [("extend", True)]}),
1545 ("node.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
1546 {"properties": [("extend", True)]}),
1547 ("node.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
1548 {"properties": [("extend", True)]}),
1549 ("node.select_box", {"type": params.select_tweak, "value": 'ANY'},
1550 {"properties": [("tweak", True)]}),
1551 ("node.select_lasso", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True, "alt": True},
1552 {"properties": [("deselect", False)]}),
1553 ("node.select_lasso", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
1554 {"properties": [("deselect", True)]}),
1555 ("node.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1556 ("node.link", {"type": 'LEFTMOUSE', "value": 'PRESS'},
1557 {"properties": [("detach", False)]}),
1558 ("node.link", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
1559 {"properties": [("detach", True)]}),
1560 ("node.resize", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
1561 ("node.add_reroute", {"type": params.action_tweak, "value": 'ANY', "shift": True}, None),
1562 ("node.links_cut", {"type": params.action_tweak, "value": 'ANY', "ctrl": True}, None),
1563 ("node.select_link_viewer", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None),
1564 ("node.backimage_move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "alt": True}, None),
1565 ("node.backimage_zoom", {"type": 'V', "value": 'PRESS'},
1566 {"properties": [("factor", 1.0 / 1.2)]}),
1567 ("node.backimage_zoom", {"type": 'V', "value": 'PRESS', "alt": True},
1568 {"properties": [("factor", 1.2)]}),
1569 ("node.backimage_fit", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
1570 ("node.backimage_sample", {"type": params.action_mouse, "value": 'PRESS', "alt": True}, None),
1571 op_menu("NODE_MT_specials", params.context_menu_event),
1572 ("node.link_make", {"type": 'F', "value": 'PRESS'},
1573 {"properties": [("replace", False)]}),
1574 ("node.link_make", {"type": 'F', "value": 'PRESS', "shift": True},
1575 {"properties": [("replace", True)]}),
1576 op_menu("NODE_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}),
1577 ("node.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1578 ("node.duplicate_move_keep_inputs", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None),
1579 ("node.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
1580 ("node.detach", {"type": 'P', "value": 'PRESS', "alt": True}, None),
1581 ("node.join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
1582 ("node.hide_toggle", {"type": 'H', "value": 'PRESS'}, None),
1583 ("node.mute_toggle", {"type": 'M', "value": 'PRESS'}, None),
1584 ("node.preview_toggle", {"type": 'H', "value": 'PRESS', "shift": True}, None),
1585 ("node.hide_socket_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, None),
1586 ("node.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1587 ("node.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1588 ("node.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1589 ("node.select_box", {"type": 'B', "value": 'PRESS'},
1590 {"properties": [("tweak", False)]}),
1591 ("node.delete", {"type": 'X', "value": 'PRESS'}, None),
1592 ("node.delete", {"type": 'DEL', "value": 'PRESS'}, None),
1593 ("node.delete_reconnect", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
1594 ("node.delete_reconnect", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None),
1595 *_template_items_select_actions(params, "node.select_all"),
1596 ("node.select_linked_to", {"type": 'L', "value": 'PRESS', "shift": True}, None),
1597 ("node.select_linked_from", {"type": 'L', "value": 'PRESS'}, None),
1598 ("node.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True},
1599 {"properties": [("extend", False)]}),
1600 ("node.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True},
1601 {"properties": [("extend", True)]}),
1602 ("node.select_same_type_step", {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True},
1603 {"properties": [("prev", False)]}),
1604 ("node.select_same_type_step", {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True},
1605 {"properties": [("prev", True)]}),
1606 ("node.find_node", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
1607 ("node.group_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
1608 ("node.group_ungroup", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1609 ("node.group_separate", {"type": 'P', "value": 'PRESS'}, None),
1610 ("node.group_edit", {"type": 'TAB', "value": 'PRESS'},
1611 {"properties": [("exit", False)]}),
1612 ("node.group_edit", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
1613 {"properties": [("exit", True)]}),
1614 ("node.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None),
1615 ("node.render_changed", {"type": 'Z', "value": 'PRESS'}, None),
1616 ("node.clipboard_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1617 ("node.clipboard_paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1618 ("node.viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1619 ("node.clear_viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1620 ("node.translate_attach", {"type": 'G', "value": 'PRESS'}, None),
1621 ("node.translate_attach", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
1622 ("node.translate_attach", {"type": params.select_tweak, "value": 'ANY'}, None),
1623 ("transform.translate", {"type": 'G', "value": 'PRESS'},
1624 {"properties": [("release_confirm", True)]}),
1625 ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'},
1626 {"properties": [("release_confirm", True)]}),
1627 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'},
1628 {"properties": [("release_confirm", True)]}),
1629 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
1630 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
1631 ("node.move_detach_links", {"type": 'D', "value": 'PRESS', "alt": True}, None),
1632 ("node.move_detach_links_release", {"type": params.action_tweak, "value": 'ANY', "alt": True}, None),
1633 ("node.move_detach_links", {"type": params.select_tweak, "value": 'ANY', "alt": True}, None),
1634 ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True},
1635 {"properties": [("data_path", 'tool_settings.use_snap')]}),
1636 ("wm.context_menu_enum", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
1637 {"properties": [("data_path", 'tool_settings.snap_node_element')]}),
1642 ("node.clipboard_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1643 ("node.clipboard_paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
1649 def km_info(params):
1653 {"space_type": 'INFO', "region_type": 'WINDOW'},
1658 ("info.select_pick", {"type": params.select_mouse, "value": 'PRESS'}, None),
1659 ("info.select_all_toggle", {"type": 'A', "value": 'PRESS'}, None),
1660 ("info.select_box", {"type": 'B', "value": 'PRESS'}, None),
1661 ("info.report_replay", {"type": 'R', "value": 'PRESS'}, None),
1662 ("info.report_delete", {"type": 'X', "value": 'PRESS'}, None),
1663 ("info.report_delete", {"type": 'DEL', "value": 'PRESS'}, None),
1664 ("info.report_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1669 ("info.report_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1675 def km_file_browser(_params):
1679 {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'},
1684 ("file.parent", {"type": 'UP_ARROW', "value": 'PRESS', "alt": True}, None),
1685 ("file.previous", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, None),
1686 ("file.next", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, None),
1687 ("file.refresh", {"type": 'R', "value": 'PRESS'}, None),
1688 ("file.parent", {"type": 'P', "value": 'PRESS'}, None),
1689 ("file.previous", {"type": 'BACK_SPACE', "value": 'PRESS'}, None),
1690 ("file.next", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, None),
1691 ("wm.context_toggle", {"type": 'H', "value": 'PRESS'},
1692 {"properties": [("data_path", 'space_data.params.show_hidden')]}),
1693 ("file.directory_new", {"type": 'I', "value": 'PRESS'}, None),
1694 ("file.delete", {"type": 'X', "value": 'PRESS'}, None),
1695 ("file.delete", {"type": 'DEL', "value": 'PRESS'}, None),
1696 ("file.smoothscroll", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
1697 ("file.bookmark_toggle", {"type": 'T', "value": 'PRESS'}, None),
1698 ("file.bookmark_add", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1704 def km_file_browser_main(_params):
1707 "File Browser Main",
1708 {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'},
1713 ("file.execute", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'},
1714 {"properties": [("need_active", True)]}),
1715 ("file.refresh", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1716 ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK'}, None),
1717 ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True},
1718 {"properties": [("extend", True)]}),
1719 ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True},
1720 {"properties": [("extend", True), ("fill", True)]}),
1721 ("file.select", {"type": 'RIGHTMOUSE', "value": 'CLICK'},
1722 {"properties": [("open", False)]}),
1723 ("file.select", {"type": 'RIGHTMOUSE', "value": 'CLICK', "shift": True},
1724 {"properties": [("extend", True), ("open", False)]}),
1725 ("file.select", {"type": 'RIGHTMOUSE', "value": 'CLICK', "alt": True},
1726 {"properties": [("extend", True), ("fill", True), ("open", False)]}),
1727 ("file.select_walk", {"type": 'UP_ARROW', "value": 'PRESS'},
1728 {"properties": [("direction", 'UP')]}),
1729 ("file.select_walk", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
1730 {"properties": [("direction", 'UP'), ("extend", True)]}),
1731 ("file.select_walk", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
1732 {"properties": [("direction", 'UP'), ("extend", True), ("fill", True)]}),
1733 ("file.select_walk", {"type": 'DOWN_ARROW', "value": 'PRESS'},
1734 {"properties": [("direction", 'DOWN')]}),
1735 ("file.select_walk", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
1736 {"properties": [("direction", 'DOWN'), ("extend", True)]}),
1737 ("file.select_walk", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
1738 {"properties": [("direction", 'DOWN'), ("extend", True), ("fill", True)]}),
1739 ("file.select_walk", {"type": 'LEFT_ARROW', "value": 'PRESS'},
1740 {"properties": [("direction", 'LEFT')]}),
1741 ("file.select_walk", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
1742 {"properties": [("direction", 'LEFT'), ("extend", True)]}),
1743 ("file.select_walk", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
1744 {"properties": [("direction", 'LEFT'), ("extend", True), ("fill", True)]}),
1745 ("file.select_walk", {"type": 'RIGHT_ARROW', "value": 'PRESS'},
1746 {"properties": [("direction", 'RIGHT')]}),
1747 ("file.select_walk", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
1748 {"properties": [("direction", 'RIGHT'), ("extend", True)]}),
1749 ("file.select_walk", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
1750 {"properties": [("direction", 'RIGHT'), ("extend", True), ("fill", True)]}),
1751 ("file.previous", {"type": 'BUTTON4MOUSE', "value": 'CLICK'}, None),
1752 ("file.next", {"type": 'BUTTON5MOUSE', "value": 'CLICK'}, None),
1753 ("file.select_all", {"type": 'A', "value": 'PRESS'}, None),
1754 ("file.select_box", {"type": 'B', "value": 'PRESS'}, None),
1755 ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
1756 ("file.rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
1757 ("file.highlight", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None),
1758 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS'},
1759 {"properties": [("increment", 1)]}),
1760 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True},
1761 {"properties": [("increment", 10)]}),
1762 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
1763 {"properties": [("increment", 100)]}),
1764 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
1765 {"properties": [("increment", -1)]}),
1766 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True},
1767 {"properties": [("increment", -10)]}),
1768 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
1769 {"properties": [("increment", -100)]}),
1775 def km_file_browser_buttons(_params):
1778 "File Browser Buttons",
1779 {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'},
1784 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS'},
1785 {"properties": [("increment", 1)]}),
1786 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True},
1787 {"properties": [("increment", 10)]}),
1788 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
1789 {"properties": [("increment", 100)]}),
1790 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
1791 {"properties": [("increment", -1)]}),
1792 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True},
1793 {"properties": [("increment", -10)]}),
1794 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
1795 {"properties": [("increment", -100)]}),
1801 def km_dopesheet_generic(_params):
1804 "Dopesheet Generic",
1805 {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'},
1810 ("action.properties", {"type": 'N', "value": 'PRESS'}, None),
1811 ("wm.context_set_enum", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
1812 {"properties": [("data_path", 'area.type'), ("value", 'GRAPH_EDITOR')]})
1818 def km_dopesheet(params):
1822 {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'},
1827 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS'},
1828 {"properties": [("extend", False), ("column", False), ("channel", False)]}),
1829 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "alt": True},
1830 {"properties": [("extend", False), ("column", True), ("channel", False)]}),
1831 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
1832 {"properties": [("extend", True), ("column", False), ("channel", False)]}),
1833 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True},
1834 {"properties": [("extend", True), ("column", True), ("channel", False)]}),
1835 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True},
1836 {"properties": [("extend", False), ("column", False), ("channel", True)]}),
1837 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
1838 {"properties": [("extend", True), ("column", False), ("channel", True)]}),
1839 ("action.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
1840 {"properties": [("mode", 'CHECK'), ("extend", False)]}),
1841 ("action.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1842 {"properties": [("mode", 'CHECK'), ("extend", True)]}),
1843 ("action.select_leftright", {"type": 'LEFT_BRACKET', "value": 'PRESS'},
1844 {"properties": [("mode", 'LEFT'), ("extend", False)]}),
1845 ("action.select_leftright", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
1846 {"properties": [("mode", 'RIGHT'), ("extend", False)]}),
1847 *_template_items_select_actions(params, "action.select_all"),
1848 ("action.select_box", {"type": 'B', "value": 'PRESS'},
1849 {"properties": [("axis_range", False)]}),
1850 ("action.select_box", {"type": 'B', "value": 'PRESS', "alt": True},
1851 {"properties": [("axis_range", True)]}),
1852 ("action.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True},
1853 {"properties": [("deselect", False)]}),
1854 ("action.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True},
1855 {"properties": [("deselect", True)]}),
1856 ("action.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1857 ("action.select_column", {"type": 'K', "value": 'PRESS'},
1858 {"properties": [("mode", 'KEYS')]}),
1859 ("action.select_column", {"type": 'K', "value": 'PRESS', "ctrl": True},
1860 {"properties": [("mode", 'CFRA')]}),
1861 ("action.select_column", {"type": 'K', "value": 'PRESS', "shift": True},
1862 {"properties": [("mode", 'MARKERS_COLUMN')]}),
1863 ("action.select_column", {"type": 'K', "value": 'PRESS', "alt": True},
1864 {"properties": [("mode", 'MARKERS_BETWEEN')]}),
1865 ("action.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
1866 ("action.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
1867 ("action.select_linked", {"type": 'L', "value": 'PRESS'}, None),
1868 ("action.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
1869 op_menu_pie("DOPESHEET_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
1870 ("action.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1871 ("action.handle_type", {"type": 'V', "value": 'PRESS'}, None),
1872 ("action.interpolation_type", {"type": 'T', "value": 'PRESS'}, None),
1873 ("action.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None),
1874 ("action.keyframe_type", {"type": 'R', "value": 'PRESS'}, None),
1875 op_menu("DOPESHEET_MT_specials", params.context_menu_event),
1876 ("action.sample", {"type": 'O', "value": 'PRESS', "shift": True, "alt": True}, None),
1877 op_menu("DOPESHEET_MT_delete", {"type": 'X', "value": 'PRESS'}),
1878 op_menu("DOPESHEET_MT_delete", {"type": 'DEL', "value": 'PRESS'}),
1879 ("action.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1880 ("action.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
1881 ("action.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1882 ("action.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1883 ("action.paste", {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True},
1884 {"properties": [("flipped", True)]}),
1885 ("action.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1886 ("action.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1887 ("action.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1888 ("action.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1889 ("action.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
1890 ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
1891 ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
1892 ("transform.transform", {"type": 'G', "value": 'PRESS'},
1893 {"properties": [("mode", 'TIME_TRANSLATE')]}),
1894 ("transform.transform", {"type": params.select_tweak, "value": 'ANY'},
1895 {"properties": [("mode", 'TIME_TRANSLATE')]}),
1896 ("transform.transform", {"type": 'E', "value": 'PRESS'},
1897 {"properties": [("mode", 'TIME_EXTEND')]}),
1898 ("transform.transform", {"type": 'S', "value": 'PRESS'},
1899 {"properties": [("mode", 'TIME_SCALE')]}),
1900 ("transform.transform", {"type": 'T', "value": 'PRESS', "shift": True},
1901 {"properties": [("mode", 'TIME_SLIDE')]}),
1902 ("wm.context_toggle", {"type": 'O', "value": 'PRESS'},
1903 {"properties": [("data_path", 'tool_settings.use_proportional_action')]}),
1904 op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
1905 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
1906 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1911 ("action.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1912 ("action.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
1913 ("action.paste", {"type": 'V', "value": 'PRESS', "shift": True, "oskey": True},
1914 {"properties": [("flipped", True)]}),
1920 def km_nla_generic(_params):
1924 {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'},
1929 ("nla.properties", {"type": 'N', "value": 'PRESS'}, None),
1930 ("nla.tweakmode_enter", {"type": 'TAB', "value": 'PRESS'}, None),
1931 ("nla.tweakmode_exit", {"type": 'TAB', "value": 'PRESS'}, None),
1932 ("nla.tweakmode_enter", {"type": 'TAB', "value": 'PRESS', "shift": True},
1933 {"properties": [("isolate_action", True)]}),
1934 ("nla.tweakmode_exit", {"type": 'TAB', "value": 'PRESS', "shift": True},
1935 {"properties": [("isolate_action", True)]}),
1936 ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
1942 def km_nla_channels(_params):
1946 {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'},
1951 ("nla.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS'},
1952 {"properties": [("extend", False)]}),
1953 ("nla.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
1954 {"properties": [("extend", True)]}),
1955 ("nla.tracks_add", {"type": 'A', "value": 'PRESS', "shift": True},
1956 {"properties": [("above_selected", False)]}),
1957 ("nla.tracks_add", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True},
1958 {"properties": [("above_selected", True)]}),
1959 ("nla.tracks_delete", {"type": 'X', "value": 'PRESS'}, None),
1960 ("nla.tracks_delete", {"type": 'DEL', "value": 'PRESS'}, None),
1966 def km_nla_editor(params):
1970 {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'},
1975 ("nla.click_select", {"type": params.select_mouse, "value": 'PRESS'},
1976 {"properties": [("extend", False)]}),
1977 ("nla.click_select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
1978 {"properties": [("extend", True)]}),
1979 ("nla.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
1980 {"properties": [("mode", 'CHECK'), ("extend", False)]}),
1981 ("nla.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1982 {"properties": [("mode", 'CHECK'), ("extend", True)]}),
1983 ("nla.select_leftright", {"type": 'LEFT_BRACKET', "value": 'PRESS'},
1984 {"properties": [("mode", 'LEFT'), ("extend", False)]}),
1985 ("nla.select_leftright", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
1986 {"properties": [("mode", 'RIGHT'), ("extend", False)]}),
1987 *_template_items_select_actions(params, "nla.select_all"),
1988 ("nla.select_box", {"type": 'B', "value": 'PRESS'},
1989 {"properties": [("axis_range", False)]}),
1990 ("nla.select_box", {"type": 'B', "value": 'PRESS', "alt": True},
1991 {"properties": [("axis_range", True)]}),
1992 ("nla.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1993 ("nla.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1994 ("nla.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1995 ("nla.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1996 ("nla.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
1997 ("nla.actionclip_add", {"type": 'A', "value": 'PRESS', "shift": True}, None),
1998 ("nla.transition_add", {"type": 'T', "value": 'PRESS', "shift": True}, None),
1999 ("nla.soundclip_add", {"type": 'K', "value": 'PRESS', "shift": True}, None),
2000 ("nla.meta_add", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
2001 ("nla.meta_remove", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
2002 ("nla.duplicate", {"type": 'D', "value": 'PRESS', "shift": True},
2003 {"properties": [("linked", False)]}),
2004 ("nla.duplicate", {"type": 'D', "value": 'PRESS', "alt": True},
2005 {"properties": [("linked", True)]}),
2006 ("nla.make_single_user", {"type": 'U', "value": 'PRESS'}, None),
2007 ("nla.delete", {"type": 'X', "value": 'PRESS'}, None),
2008 ("nla.delete", {"type": 'DEL', "value": 'PRESS'}, None),
2009 ("nla.split", {"type": 'Y', "value": 'PRESS'}, None),
2010 ("nla.mute_toggle", {"type": 'H', "value": 'PRESS'}, None),
2011 ("nla.swap", {"type": 'F', "value": 'PRESS', "alt": True}, None),
2012 ("nla.move_up", {"type": 'PAGE_UP', "value": 'PRESS'}, None),
2013 ("nla.move_down", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None),
2014 ("nla.apply_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
2015 ("nla.clear_scale", {"type": 'S', "value": 'PRESS', "alt": True}, None),
2016 op_menu_pie("NLA_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
2017 ("nla.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None),
2018 ("transform.transform", {"type": 'G', "value": 'PRESS'},
2019 {"properties": [("mode", 'TRANSLATION')]}),
2020 ("transform.transform", {"type": params.select_tweak, "value": 'ANY'},
2021 {"properties": [("mode", 'TRANSLATION')]}),
2022 ("transform.transform", {"type": 'E', "value": 'PRESS'},
2023 {"properties": [("mode", 'TIME_EXTEND')]}),
2024 ("transform.transform", {"type": 'S', "value": 'PRESS'},
2025 {"properties": [("mode", 'TIME_SCALE')]}),
2026 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
2027 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
2033 def km_text_generic(params):
2037 {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'},
2042 ("text.start_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
2043 ("text.jump", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
2044 ("text.find", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
2045 ("text.replace", {"type": 'H', "value": 'PRESS', "ctrl": True}, None),
2046 ("text.properties", {"type": 'T', "value": 'PRESS', "ctrl": True}, None),
2051 ("text.start_find", {"type": 'F', "value": 'PRESS', "oskey": True}, None),
2057 def km_text(params):
2061 {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'},
2067 ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "oskey": True},
2068 {"properties": [("type", 'LINE_BEGIN')]}),
2069 ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "oskey": True},
2070 {"properties": [("type", 'LINE_END')]}),
2071 ("text.move", {"type": 'UP_ARROW', "value": 'PRESS', "oskey": True},
2072 {"properties": [("type", 'FILE_TOP')]}),
2073 ("text.move", {"type": 'DOWN_ARROW', "value": 'PRESS', "oskey": True},
2074 {"properties": [("type", 'FILE_BOTTOM')]}),
2075 ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "oskey": True},
2076 {"properties": [("type", 'LINE_BEGIN')]}),
2077 ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "oskey": True},
2078 {"properties": [("type", 'LINE_END')]}),
2079 ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
2080 {"properties": [("type", 'PREVIOUS_WORD')]}),
2081 ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
2082 {"properties": [("type", 'NEXT_WORD')]}),
2083 ("text.move_select", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "oskey": True},
2084 {"properties": [("type", 'FILE_TOP')]}),
2085 ("text.move_select", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "oskey": True},
2086 {"properties": [("type", 'FILE_BOTTOM')]}),
2087 ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "alt": True},
2088 {"properties": [("type", 'PREVIOUS_WORD')]}),
2089 ("text.save", {"type": 'S', "value": 'PRESS', "alt": True, "oskey": True}, None),
2090 ("text.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True, "oskey": True}, None),
2091 ("text.cut", {"type": 'X', "value": 'PRESS', "oskey": True}, None),
2092 ("text.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
2093 ("text.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
2094 ("text.find_set_selected", {"type": 'E', "value": 'PRESS', "oskey": True}, None),
2095 ("text.select_all", {"type": 'A', "value": 'PRESS', "oskey": True}, None),
2096 ("text.select_line", {"type": 'A', "value": 'PRESS', "shift": True, "oskey": True}, None),
2100 ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True},
2101 {"properties": [("type", 'PREVIOUS_WORD')]}),
2102 ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True},
2103 {"properties": [("type", 'NEXT_WORD')]}),
2104 ("wm.context_cycle_int", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
2105 {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}),
2106 ("wm.context_cycle_int", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
2107 {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}),
2108 ("wm.context_cycle_int", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
2109 {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}),
2110 ("wm.context_cycle_int", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
2111 {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}),
2114 if not params.legacy:
2116 ("text.new", {"type": 'N', "value": 'PRESS', "alt": True}, None),
2120 ("text.new", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
2124 ("text.open", {"type": 'O', "value": 'PRESS', "alt": True}, None),
2125 ("text.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None),
2126 ("text.save", {"type": 'S', "value": 'PRESS', "alt": True}, None),
2127 ("text.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
2128 ("text.run_script", {"type": 'P', "value": 'PRESS', "alt": True}, None),
2129 ("text.cut", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
2130 ("text.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
2131 ("text.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
2132 ("text.cut", {"type": 'DEL', "value": 'PRESS', "shift": True}, None),
2133 ("text.copy", {"type": 'INSERT', "value": 'PRESS', "ctrl": True}, None),
2134 ("text.paste", {"type": 'INSERT', "value": 'PRESS', "shift": True}, None),
2135 ("text.duplicate_line", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
2136 ("text.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
2137 ("text.select_line", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, None),
2138 ("text.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
2139 ("text.move_lines", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2140 {"properties": [("direction", 'UP')]}),
2141 ("text.move_lines", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2142 {"properties": [("direction", 'DOWN')]}),
2143 ("text.indent", {"type": 'TAB', "value": 'PRESS'}, None),
2144 ("text.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None),
2145 ("text.uncomment", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None),
2146 ("text.move", {"type": 'HOME', "value": 'PRESS'},
2147 {"properties": [("type", 'LINE_BEGIN')]}),
2148 ("text.move", {"type": 'END', "value": 'PRESS'},
2149 {"properties": [("type", 'LINE_END')]}),
2150 ("text.move", {"type": 'E', "value": 'PRESS', "ctrl": True},
2151 {"properties": [("type", 'LINE_END')]}),
2152 ("text.move", {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True},
2153 {"properties": [("type", 'LINE_END')]}),
2154 ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS'},
2155 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2156 ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS'},
2157 {"properties": [("type", 'NEXT_CHARACTER')]}),
2158 ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
2159 {"properties": [("type", 'PREVIOUS_WORD')]}),
2160 ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
2161 {"properties": [("type", 'NEXT_WORD')]}),
2162 ("text.move", {"type": 'UP_ARROW', "value": 'PRESS'},
2163 {"properties": [("type", 'PREVIOUS_LINE')]}),
2164 ("text.move", {"type": 'DOWN_ARROW', "value": 'PRESS'},
2165 {"properties": [("type", 'NEXT_LINE')]}),
2166 ("text.move", {"type": 'PAGE_UP', "value": 'PRESS'},
2167 {"properties": [("type", 'PREVIOUS_PAGE')]}),
2168 ("text.move", {"type": 'PAGE_DOWN', "value": 'PRESS'},
2169 {"properties": [("type", 'NEXT_PAGE')]}),
2170 ("text.move", {"type": 'HOME', "value": 'PRESS', "ctrl": True},
2171 {"properties": [("type", 'FILE_TOP')]}),
2172 ("text.move", {"type": 'END', "value": 'PRESS', "ctrl": True},
2173 {"properties": [("type", 'FILE_BOTTOM')]}),
2174 ("text.move_select", {"type": 'HOME', "value": 'PRESS', "shift": True},
2175 {"properties": [("type", 'LINE_BEGIN')]}),
2176 ("text.move_select", {"type": 'END', "value": 'PRESS', "shift": True},
2177 {"properties": [("type", 'LINE_END')]}),
2178 ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
2179 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2180 ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
2181 {"properties": [("type", 'NEXT_CHARACTER')]}),
2182 ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2183 {"properties": [("type", 'PREVIOUS_WORD')]}),
2184 ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2185 {"properties": [("type", 'NEXT_WORD')]}),
2186 ("text.move_select", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
2187 {"properties": [("type", 'PREVIOUS_LINE')]}),
2188 ("text.move_select", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
2189 {"properties": [("type", 'NEXT_LINE')]}),
2190 ("text.move_select", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True},
2191 {"properties": [("type", 'PREVIOUS_PAGE')]}),
2192 ("text.move_select", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True},
2193 {"properties": [("type", 'NEXT_PAGE')]}),
2194 ("text.move_select", {"type": 'HOME', "value": 'PRESS', "shift": True, "ctrl": True},
2195 {"properties": [("type", 'FILE_TOP')]}),
2196 ("text.move_select", {"type": 'END', "value": 'PRESS', "shift": True, "ctrl": True},
2197 {"properties": [("type", 'FILE_BOTTOM')]}),
2198 ("text.delete", {"type": 'DEL', "value": 'PRESS'},
2199 {"properties": [("type", 'NEXT_CHARACTER')]}),
2200 ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS'},
2201 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2202 ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
2203 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2204 ("text.delete", {"type": 'DEL', "value": 'PRESS', "ctrl": True},
2205 {"properties": [("type", 'NEXT_WORD')]}),
2206 ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True},
2207 {"properties": [("type", 'PREVIOUS_WORD')]}),
2208 ("text.overwrite_toggle", {"type": 'INSERT', "value": 'PRESS'}, None),
2209 ("text.scroll_bar", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2210 ("text.scroll_bar", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
2211 ("text.scroll", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
2212 ("text.scroll", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
2213 ("text.selection_set", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
2214 ("text.cursor_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2215 ("text.selection_set", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
2216 {"properties": [("select", True)]}),
2217 ("text.scroll", {"type": 'WHEELUPMOUSE', "value": 'PRESS'},
2218 {"properties": [("lines", -1)]}),
2219 ("text.scroll", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'},
2220 {"properties": [("lines", 1)]}),
2221 ("text.line_break", {"type": 'RET', "value": 'PRESS'}, None),
2222 ("text.line_break", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
2223 op_menu("TEXT_MT_toolbox", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}),
2224 ("text.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None),
2225 ("text.line_number", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
2226 ("text.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
2232 def km_sequencercommon(_params):
2236 {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
2241 ("sequencer.properties", {"type": 'N', "value": 'PRESS'}, None),
2242 ("wm.context_toggle", {"type": 'O', "value": 'PRESS', "shift": True},
2243 {"properties": [("data_path", 'scene.sequence_editor.show_overlay')]}),
2244 ("sequencer.view_toggle", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, None),
2250 def km_sequencer(params):
2254 {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
2259 *_template_items_select_actions(params, "sequencer.select_all"),
2260 ("sequencer.cut", {"type": 'K', "value": 'PRESS'},
2261 {"properties": [("type", 'SOFT')]}),
2262 ("sequencer.cut", {"type": 'K', "value": 'PRESS', "shift": True},
2263 {"properties": [("type", 'HARD')]}),
2264 ("sequencer.mute", {"type": 'H', "value": 'PRESS'},
2265 {"properties": [("unselected", False)]}),
2266 ("sequencer.mute", {"type": 'H', "value": 'PRESS', "shift": True},
2267 {"properties": [("unselected", True)]}),
2268 ("sequencer.unmute", {"type": 'H', "value": 'PRESS', "alt": True},
2269 {"properties": [("unselected", False)]}),
2270 ("sequencer.unmute", {"type": 'H', "value": 'PRESS', "shift": True, "alt": True},
2271 {"properties": [("unselected", True)]}),
2272 ("sequencer.lock", {"type": 'L', "value": 'PRESS', "shift": True}, None),
2273 ("sequencer.unlock", {"type": 'L', "value": 'PRESS', "shift": True, "alt": True}, None),
2274 ("sequencer.reassign_inputs", {"type": 'R', "value": 'PRESS'}, None),
2275 ("sequencer.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None),
2276 ("sequencer.reload", {"type": 'R', "value": 'PRESS', "shift": True, "alt": True},
2277 {"properties": [("adjust_length", True)]}),
2278 ("sequencer.offset_clear", {"type": 'O', "value": 'PRESS', "alt": True}, None),
2279 ("sequencer.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
2280 ("sequencer.delete", {"type": 'X', "value": 'PRESS'}, None),
2281 ("sequencer.delete", {"type": 'DEL', "value": 'PRESS'}, None),
2282 ("sequencer.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
2283 ("sequencer.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
2284 ("sequencer.images_separate", {"type": 'Y', "value": 'PRESS'}, None),
2285 ("sequencer.meta_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
2286 ("sequencer.meta_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
2287 ("sequencer.meta_separate", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
2288 ("sequencer.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
2289 ("sequencer.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2290 ("sequencer.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
2291 ("sequencer.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
2292 ("sequencer.strip_jump", {"type": 'PAGE_UP', "value": 'PRESS'},
2293 {"properties": [("next", True), ("center", False)]}),
2294 ("sequencer.strip_jump", {"type": 'PAGE_DOWN', "value": 'PRESS'},
2295 {"properties": [("next", False), ("center", False)]}),
2296 ("sequencer.strip_jump", {"type": 'PAGE_UP', "value": 'PRESS', "alt": True},
2297 {"properties": [("next", True), ("center", True)]}),
2298 ("sequencer.strip_jump", {"type": 'PAGE_DOWN', "value": 'PRESS', "alt": True},
2299 {"properties": [("next", False), ("center", True)]}),
2300 ("sequencer.swap", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True},
2301 {"properties": [("side", 'LEFT')]}),
2302 ("sequencer.swap", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True},
2303 {"properties": [("side", 'RIGHT')]}),
2304 ("sequencer.gap_remove", {"type": 'BACK_SPACE', "value": 'PRESS'},
2305 {"properties": [("all", False)]}),
2306 ("sequencer.gap_remove", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
2307 {"properties": [("all", True)]}),
2308 ("sequencer.gap_insert", {"type": 'EQUAL', "value": 'PRESS', "shift": True}, None),
2309 ("sequencer.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None),
2310 ("sequencer.swap_inputs", {"type": 'S', "value": 'PRESS', "alt": True}, None),
2312 (("sequencer.cut_multicam",
2313 {"type": NUMBERS_1[i], "value": 'PRESS'},
2314 {"properties": [("camera", i + 1)]})
2318 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS'},
2319 {"properties": [("extend", False), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", False)]}),
2320 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
2321 {"properties": [("extend", True), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", False)]}),
2322 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "alt": True},
2323 {"properties": [("extend", False), ("linked_handle", True), ("left_right", 'NONE'), ("linked_time", False)]}),
2324 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True},
2325 {"properties": [("extend", True), ("linked_handle", True), ("left_right", 'NONE'), ("linked_time", False)]}),
2326 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
2327 {"properties": [("extend", False), ("linked_handle", False), ("left_right", 'MOUSE'), ("linked_time", True)]}),
2328 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
2329 {"properties": [("extend", True), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", True)]}),
2330 ("sequencer.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
2331 ("sequencer.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
2332 ("sequencer.select_linked_pick", {"type": 'L', "value": 'PRESS'},
2333 {"properties": [("extend", False)]}),
2334 ("sequencer.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True},
2335 {"properties": [("extend", True)]}),
2336 ("sequencer.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
2337 ("sequencer.select_box", {"type": 'B', "value": 'PRESS'}, None),
2338 ("sequencer.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None),
2339 op_menu("SEQUENCER_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}),
2340 op_menu("SEQUENCER_MT_change", {"type": 'C', "value": 'PRESS'}),
2341 ("sequencer.slip", {"type": 'S', "value": 'PRESS'}, None),
2342 ("wm.context_set_int", {"type": 'O', "value": 'PRESS'},
2343 {"properties": [("data_path", 'scene.sequence_editor.overlay_frame'), ("value", 0)]}),
2344 ("transform.seq_slide", {"type": 'G', "value": 'PRESS'}, None),
2345 ("transform.seq_slide", {"type": params.select_tweak, "value": 'ANY'}, None),
2346 ("transform.transform", {"type": 'E', "value": 'PRESS'},
2347 {"properties": [("mode", 'TIME_EXTEND')]}),
2348 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
2349 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
2354 ("sequencer.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
2355 ("sequencer.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
2361 def km_sequencerpreview(params):
2365 {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
2370 ("sequencer.view_all_preview", {"type": 'HOME', "value": 'PRESS'}, None),
2371 ("sequencer.view_all_preview", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2372 ("sequencer.view_ghost_border", {"type": 'O', "value": 'PRESS'}, None),
2373 ("sequencer.view_zoom_ratio", {"type": 'NUMPAD_1', "value": 'PRESS'},
2374 {"properties": [("ratio", 1.0)]}),
2375 ("sequencer.sample", {"type": params.action_mouse, "value": 'PRESS'}, None),
2381 def km_console(params):
2385 {"space_type": 'CONSOLE', "region_type": 'WINDOW'},
2391 ("console.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "oskey": True},
2392 {"properties": [("type", 'LINE_BEGIN')]}),
2393 ("console.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "oskey": True},
2394 {"properties": [("type", 'LINE_END')]}),
2395 ("console.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
2396 ("console.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
2400 ("console.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
2401 {"properties": [("type", 'PREVIOUS_WORD')]}),
2402 ("console.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
2403 {"properties": [("type", 'NEXT_WORD')]}),
2404 ("console.move", {"type": 'HOME', "value": 'PRESS'},
2405 {"properties": [("type", 'LINE_BEGIN')]}),
2406 ("console.move", {"type": 'END', "value": 'PRESS'},
2407 {"properties": [("type", 'LINE_END')]}),
2408 ("wm.context_cycle_int", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
2409 {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}),
2410 ("wm.context_cycle_int", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
2411 {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}),
2412 ("wm.context_cycle_int", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
2413 {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}),
2414 ("wm.context_cycle_int", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
2415 {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}),
2416 ("console.move", {"type": 'LEFT_ARROW', "value": 'PRESS'},
2417 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2418 ("console.move", {"type": 'RIGHT_ARROW', "value": 'PRESS'},
2419 {"properties": [("type", 'NEXT_CHARACTER')]}),
2420 ("console.history_cycle", {"type": 'UP_ARROW', "value": 'PRESS'},
2421 {"properties": [("reverse", True)]}),
2422 ("console.history_cycle", {"type": 'DOWN_ARROW', "value": 'PRESS'},
2423 {"properties": [("reverse", False)]}),
2424 ("console.delete", {"type": 'DEL', "value": 'PRESS'},
2425 {"properties": [("type", 'NEXT_CHARACTER')]}),
2426 ("console.delete", {"type": 'BACK_SPACE', "value": 'PRESS'},
2427 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2428 ("console.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
2429 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2430 ("console.delete", {"type": 'DEL', "value": 'PRESS', "ctrl": True},
2431 {"properties": [("type", 'NEXT_WORD')]}),
2432 ("console.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True},
2433 {"properties": [("type", 'PREVIOUS_WORD')]}),
2434 ("console.clear_line", {"type": 'RET', "value": 'PRESS', "shift": True}, None),
2435 ("console.clear_line", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None),
2436 ("console.execute", {"type": 'RET', "value": 'PRESS'},
2437 {"properties": [("interactive", True)]}),
2438 ("console.execute", {"type": 'NUMPAD_ENTER', "value": 'PRESS'},
2439 {"properties": [("interactive", True)]}),
2440 ("console.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None),
2441 ("console.copy_as_script", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None),
2442 ("console.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
2443 ("console.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
2444 ("console.select_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2445 ("console.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
2446 ("console.insert", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
2447 {"properties": [("text", '\t')]}),
2448 ("console.indent", {"type": 'TAB', "value": 'PRESS'}, None),
2449 ("console.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None),
2450 ("console.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
2456 def km_clip(_params):
2460 {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
2465 ("clip.open", {"type": 'O', "value": 'PRESS', "alt": True}, None),
2466 ("clip.tools", {"type": 'T', "value": 'PRESS'}, None),
2467 ("clip.properties", {"type": 'N', "value": 'PRESS'}, None),
2468 ("clip.track_markers", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True},
2469 {"properties": [("backwards", True), ("sequence", False)]}),
2470 ("clip.track_markers", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True},
2471 {"properties": [("backwards", False), ("sequence", False)]}),
2472 ("clip.track_markers", {"type": 'T', "value": 'PRESS', "ctrl": True},
2473 {"properties": [("backwards", False), ("sequence", True)]}),
2474 ("clip.track_markers", {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True},
2475 {"properties": [("backwards", True), ("sequence", True)]}),
2476 ("wm.context_toggle_enum", {"type": 'TAB', "value": 'PRESS'},
2477 {"properties": [("data_path", 'space_data.mode'), ("value_1", 'TRACKING'), ("value_2", 'MASK')]}),
2478 ("clip.solve_camera", {"type": 'S', "value": 'PRESS', "shift": True}, None),
2479 ("clip.prefetch", {"type": 'P', "value": 'PRESS'}, None),
2485 def km_clip_editor(params):
2489 {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
2494 ("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
2495 ("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
2496 ("clip.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
2497 ("clip.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
2498 ("clip.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
2499 ("clip.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
2500 ("clip.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
2501 ("clip.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
2502 ("clip.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
2503 ("clip.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
2504 ("clip.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True},
2505 {"properties": [("ratio", 8.0)]}),
2506 ("clip.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True},
2507 {"properties": [("ratio", 4.0)]}),
2508 ("clip.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True},
2509 {"properties": [("ratio", 2.0)]}),
2510 ("clip.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True},
2511 {"properties": [("ratio", 8.0)]}),
2512 ("clip.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True},
2513 {"properties": [("ratio", 4.0)]}),
2514 ("clip.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True},
2515 {"properties": [("ratio", 2.0)]}),
2516 ("clip.view_zoom_ratio", {"type": 'NUMPAD_1', "value": 'PRESS'},
2517 {"properties": [("ratio", 1.0)]}),
2518 ("clip.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS'},
2519 {"properties": [("ratio", 0.5)]}),
2520 ("clip.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS'},
2521 {"properties": [("ratio", 0.25)]}),
2522 ("clip.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS'},
2523 {"properties": [("ratio", 0.125)]}),
2524 ("clip.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
2525 ("clip.view_all", {"type": 'F', "value": 'PRESS'},
2526 {"properties": [("fit_view", True)]}),
2527 ("clip.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
2528 ("clip.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2529 ("clip.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
2530 ("clip.frame_jump", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2531 {"properties": [("position", 'PATHSTART')]}),
2532 ("clip.frame_jump", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2533 {"properties": [("position", 'PATHEND')]}),
2534 ("clip.frame_jump", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
2535 {"properties": [("position", 'FAILEDPREV')]}),
2536 ("clip.frame_jump", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
2537 {"properties": [("position", 'PATHSTART')]}),
2538 ("clip.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2539 ("clip.select", {"type": params.select_mouse, "value": 'PRESS'},
2540 {"properties": [("extend", False)]}),
2541 ("clip.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
2542 {"properties": [("extend", True)]}),
2543 *_template_items_select_actions(params, "clip.select_all"),
2544 ("clip.select_box", {"type": 'B', "value": 'PRESS'}, None),
2545 ("clip.select_circle", {"type": 'C', "value": 'PRESS'}, None),
2546 op_menu("CLIP_MT_select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}),
2547 ("clip.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True},
2548 {"properties": [("deselect", False)]}),
2549 ("clip.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
2550 {"properties": [("deselect", True)]}),
2551 ("clip.add_marker_slide", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
2552 ("clip.delete_marker", {"type": 'X', "value": 'PRESS', "shift": True}, None),
2553 ("clip.delete_marker", {"type": 'DEL', "value": 'PRESS', "shift": True}, None),
2554 ("clip.slide_marker", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2555 ("clip.disable_markers", {"type": 'D', "value": 'PRESS', "shift": True},
2556 {"properties": [("action", 'TOGGLE')]}),
2557 ("clip.delete_track", {"type": 'X', "value": 'PRESS'}, None),
2558 ("clip.delete_track", {"type": 'DEL', "value": 'PRESS'}, None),
2559 ("clip.lock_tracks", {"type": 'L', "value": 'PRESS', "ctrl": True},
2560 {"properties": [("action", 'LOCK')]}),
2561 ("clip.lock_tracks", {"type": 'L', "value": 'PRESS', "alt": True},
2562 {"properties": [("action", 'UNLOCK')]}),
2563 ("clip.hide_tracks", {"type": 'H', "value": 'PRESS'},
2564 {"properties": [("unselected", False)]}),
2565 ("clip.hide_tracks", {"type": 'H', "value": 'PRESS', "shift": True},
2566 {"properties": [("unselected", True)]}),
2567 ("clip.hide_tracks_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None),
2568 ("clip.slide_plane_marker", {"type": params.action_mouse, "value": 'PRESS'}, None),
2569 ("clip.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
2570 ("clip.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None),
2571 ("clip.join_tracks", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
2572 op_menu("CLIP_MT_tracking_specials", params.context_menu_event),
2573 ("wm.context_toggle", {"type": 'L', "value": 'PRESS'},
2574 {"properties": [("data_path", 'space_data.lock_selection')]}),
2575 ("wm.context_toggle", {"type": 'D', "value": 'PRESS', "alt": True},
2576 {"properties": [("data_path", 'space_data.show_disabled')]}),
2577 ("wm.context_toggle", {"type": 'S', "value": 'PRESS', "alt": True},
2578 {"properties": [("data_path", 'space_data.show_marker_search')]}),
2579 ("wm.context_toggle", {"type": 'M', "value": 'PRESS'},
2580 {"properties": [("data_path", 'space_data.use_mute_footage')]}),
2581 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
2582 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
2583 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
2584 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
2585 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True},
2586 {"properties": [("action", 'REMAINED'), ("clear_active", False)]}),
2587 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True},
2588 {"properties": [("action", 'UPTO'), ("clear_active", False)]}),
2589 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
2590 {"properties": [("action", 'ALL'), ("clear_active", False)]}),
2591 ("clip.cursor_set", params.cursor_set_event, None),
2592 op_menu_pie("CLIP_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
2593 ("clip.copy_tracks", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
2594 ("clip.paste_tracks", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
2600 def km_clip_graph_editor(params):
2603 "Clip Graph Editor",
2604 {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
2609 ("clip.change_frame", {"type": params.action_mouse, "value": 'PRESS'}, None),
2610 ("clip.graph_select", {"type": params.select_mouse, "value": 'PRESS'},
2611 {"properties": [("extend", False)]}),
2612 ("clip.graph_select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
2613 {"properties": [("extend", True)]}),
2614 *_template_items_select_actions(params, "clip.graph_select_all_markers"),
2615 ("clip.graph_select_box", {"type": 'B', "value": 'PRESS'}, None),
2616 ("clip.graph_delete_curve", {"type": 'X', "value": 'PRESS'}, None),
2617 ("clip.graph_delete_curve", {"type": 'DEL', "value": 'PRESS'}, None),
2618 ("clip.graph_delete_knot", {"type": 'X', "value": 'PRESS', "shift": True}, None),
2619 ("clip.graph_delete_knot", {"type": 'DEL', "value": 'PRESS', "shift": True}, None),
2620 ("clip.graph_view_all", {"type": 'HOME', "value": 'PRESS'}, None),
2621 ("clip.graph_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2622 ("clip.graph_center_current_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
2623 ("wm.context_toggle", {"type": 'L', "value": 'PRESS'},
2624 {"properties": [("data_path", 'space_data.lock_time_cursor')]}),
2625 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True},
2626 {"properties": [("action", 'REMAINED'), ("clear_active", True)]}),
2627 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True},
2628 {"properties": [("action", 'UPTO'), ("clear_active", True)]}),
2629 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
2630 {"properties": [("action", 'ALL'), ("clear_active", True)]}),
2631 ("clip.graph_disable_markers", {"type": 'D', "value": 'PRESS', "shift": True},
2632 {"properties": [("action", 'TOGGLE')]}),
2633 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
2634 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
2635 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
2636 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
2642 def km_clip_dopesheet_editor(_params):
2645 "Clip Dopesheet Editor",
2646 {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
2651 ("clip.dopesheet_select_channel", {"type": 'LEFTMOUSE', "value": 'PRESS'},
2652 {"properties": [("extend", True)]}),
2653 ("clip.dopesheet_view_all", {"type": 'HOME', "value": 'PRESS'}, None),
2654 ("clip.dopesheet_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2660 # ------------------------------------------------------------------------------
2664 def km_frames(params):
2668 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
2674 ("screen.frame_offset", {"type": 'LEFT_ARROW', "value": 'PRESS'},
2675 {"properties": [("delta", -1)]}),
2676 ("screen.frame_offset", {"type": 'RIGHT_ARROW', "value": 'PRESS'},
2677 {"properties": [("delta", 1)]}),
2678 ("screen.frame_jump", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
2679 {"properties": [("end", True)]}),
2680 ("screen.frame_jump", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
2681 {"properties": [("end", False)]}),
2682 ("screen.keyframe_jump", {"type": 'UP_ARROW', "value": 'PRESS'},
2683 {"properties": [("next", True)]}),
2684 ("screen.keyframe_jump", {"type": 'DOWN_ARROW', "value": 'PRESS'},
2685 {"properties": [("next", False)]}),
2686 ("screen.keyframe_jump", {"type": 'MEDIA_LAST', "value": 'PRESS'},
2687 {"properties": [("next", True)]}),
2688 ("screen.keyframe_jump", {"type": 'MEDIA_FIRST', "value": 'PRESS'},
2689 {"properties": [("next", False)]}),
2692 if not params.legacy:
2694 if params.spacebar_action in {'TOOL', 'SEARCH'}:
2696 ("screen.animation_play", {"type": 'SPACE', "value": 'PRESS', "shift": True}, None),
2698 elif params.spacebar_action == 'PLAY':
2700 ("screen.animation_play", {"type": 'SPACE', "value": 'PRESS'}, None),
2706 ("screen.animation_play", {"type": 'SPACE', "value": 'PRESS', "shift": True, "ctrl": True},
2707 {"properties": [("reverse", True)]}),
2712 ("screen.frame_offset", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
2713 {"properties": [("delta", 10)]}),
2714 ("screen.frame_offset", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
2715 {"properties": [("delta", -10)]}),
2716 ("screen.frame_offset", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "alt": True},
2717 {"properties": [("delta", 1)]}),
2718 ("screen.frame_offset", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "alt": True},
2719 {"properties": [("delta", -1)]}),
2720 ("screen.frame_jump", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2721 {"properties": [("end", True)]}),
2722 ("screen.frame_jump", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2723 {"properties": [("end", False)]}),
2724 ("screen.animation_play", {"type": 'A', "value": 'PRESS', "alt": True}, None),
2725 ("screen.animation_play", {"type": 'A', "value": 'PRESS', "shift": True, "alt": True},
2726 {"properties": [("reverse", True)]}),
2730 ("screen.animation_cancel", {"type": 'ESC', "value": 'PRESS'}, None),
2731 ("screen.animation_play", {"type": 'MEDIA_PLAY', "value": 'PRESS'}, None),
2732 ("screen.animation_cancel", {"type": 'MEDIA_STOP', "value": 'PRESS'}, None),
2738 def km_animation(params):
2742 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
2748 ("anim.change_frame", {"type": params.action_mouse, "value": 'PRESS'}, None),
2749 ("wm.context_toggle", {"type": 'T', "value": 'PRESS', "ctrl": True},
2750 {"properties": [("data_path", 'space_data.show_seconds')]}),
2752 ("anim.previewrange_set", {"type": 'P', "value": 'PRESS'}, None),
2753 ("anim.previewrange_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None),
2759 def km_animation_channels(params):
2762 "Animation Channels",
2763 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
2769 ("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2770 ("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
2771 {"properties": [("extend", True)]}),
2772 ("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
2773 {"properties": [("children_only", True)]}),
2775 ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
2776 ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),