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')]}),
156 # Alt+A is for playback in legacy keymap.
158 (operator, {"type": 'A', "value": 'PRESS'}, {"properties": [("action", 'TOGGLE')]}),
159 (operator, {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}),
163 (operator, {"type": 'A', "value": 'PRESS'}, {"properties": [("action", 'TOGGLE')]}),
164 (operator, {"type": 'A', "value": 'PRESS', "alt": True}, {"properties": [("action", 'DESELECT')]}),
165 (operator, {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}),
169 def _template_items_object_subdivision_set():
171 ("object.subdivision_set",
172 {"type": NUMBERS_0[i], "value": 'PRESS', "ctrl": True},
173 {"properties": [("level", i), ("relative", False)]})
178 def _template_items_gizmo_tweak_value():
180 ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
184 def _template_items_gizmo_tweak_modal():
186 ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None),
187 ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None),
188 ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None),
189 ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None),
190 ("PRECISION_ON", {"type": 'RIGHT_SHIFT', "value": 'PRESS', "any": True}, None),
191 ("PRECISION_OFF", {"type": 'RIGHT_SHIFT', "value": 'RELEASE', "any": True}, None),
192 ("PRECISION_ON", {"type": 'LEFT_SHIFT', "value": 'PRESS', "any": True}, None),
193 ("PRECISION_OFF", {"type": 'LEFT_SHIFT', "value": 'RELEASE', "any": True}, None),
194 ("SNAP_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None),
195 ("SNAP_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None),
196 ("SNAP_ON", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None),
197 ("SNAP_OFF", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None),
201 def _template_items_editmode_mesh_select_mode():
205 {"type": k, "value": 'PRESS', **key_expand, **key_extend},
206 {"properties": [*prop_extend, *prop_expand, ("type", e)]}
208 for key_expand, prop_expand in (({}, ()), ({"ctrl": True}, (("use_expand", True),)))
209 for key_extend, prop_extend in (({}, ()), ({"shift": True}, (("use_extend", True),)))
210 for k, e in (('ONE', 'VERT'), ('TWO', 'EDGE'), ('THREE', 'FACE'))
214 def _template_items_proportional_editing(*, connected=False):
216 op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
217 ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS'},
218 {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'ENABLED')]}),
219 *(() if not connected else (
220 ("wm.context_toggle_enum", {"type": 'O', "value": 'PRESS', "alt": True},
221 {"properties": [("data_path", 'tool_settings.proportional_edit'), ("value_1", 'DISABLED'), ("value_2", 'CONNECTED')]}),
226 # Tool System Templates
228 def _template_items_tool_select(params, operator, cursor_operator):
229 if params.select_mouse == 'LEFTMOUSE':
230 # Immediate select without quick delay.
231 return [(operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None)]
233 # For right mouse, set the cursor.
235 (cursor_operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
236 ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'},
237 {"properties": [("release_confirm", True), ("cursor_transform", True)]}),
241 def _template_items_tool_select_actions(operator, *, type, value):
242 kmi_args = {"type": type, "value": value}
244 (operator, kmi_args, None),
245 (operator, {**kmi_args, "shift": True},
246 {"properties": [("mode", 'ADD')]}),
247 (operator, {**kmi_args, "ctrl": True},
248 {"properties": [("mode", 'SUB')]}),
249 (operator, {**kmi_args, "shift": True, "ctrl": True},
250 {"properties": [("mode", 'AND')]}),
254 def _template_items_tool_select_actions_simple(operator, *, type, value):
255 kmi_args = {"type": type, "value": value}
258 {"properties": [("mode", 'SET')]}),
259 (operator, {**kmi_args, "shift": True},
260 {"properties": [("mode", 'ADD')]}),
261 (operator, {**kmi_args, "ctrl": True},
262 {"properties": [("mode", 'SUB')]}),
265 # ------------------------------------------------------------------------------
266 # Window, Screen, Areas, Regions
268 def km_window(params):
272 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
277 # Apple standard shortcuts. Cmd+F for search since F-keys are not easy to use.
279 ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "oskey": True}, None),
280 op_menu("TOPBAR_MT_file_open_recent", {"type": 'O', "value": 'PRESS', "shift": True, "oskey": True}),
281 ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "oskey": True}, None),
282 ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "oskey": True},
283 {"properties": [("check_existing", False)]}),
284 ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "oskey": True}, None),
285 ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "oskey": True}, None),
286 ("wm.search_menu", {"type": 'F', "value": 'PRESS', "oskey": True}, None),
291 ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
292 op_menu("TOPBAR_MT_file_open_recent", {"type": 'O', "value": 'PRESS', "shift": True, "ctrl": True}),
293 ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "ctrl": True}, None),
294 ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True},
295 {"properties": [("check_existing", False)]}),
296 ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True}, None),
297 ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "ctrl": True}, None),
299 # Quick menu and toolbar
300 op_menu("SCREEN_MT_user_menu", {"type": 'Q', "value": 'PRESS'}),
302 # Fast editor switching
304 ("screen.space_type_set_or_cycle",
305 {"type": k, "value": 'PRESS', "shift": True},
306 {"properties": [("space_type", t)]})
308 ('F1', 'FILE_BROWSER'),
309 ('F2', 'CLIP_EDITOR'),
310 ('F3', 'NODE_EDITOR'),
313 ('F6', 'GRAPH_EDITOR'),
314 ('F7', 'PROPERTIES'),
315 ('F8', 'SEQUENCE_EDITOR'),
317 ('F10', 'IMAGE_EDITOR'),
318 ('F11', 'TEXT_EDITOR'),
319 ('F12', 'DOPESHEET_EDITOR'),
324 op_menu("USERPREF_MT_ndof_settings", {"type": 'NDOF_BUTTON_MENU', "value": 'PRESS'}),
325 ("wm.context_scale_float", {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS'},
326 {"properties": [("data_path", 'preferences.inputs.ndof_sensitivity'), ("value", 1.1)]}),
327 ("wm.context_scale_float", {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS'},
328 {"properties": [("data_path", 'preferences.inputs.ndof_sensitivity'), ("value", 1.0 / 1.1)]}),
329 ("wm.context_scale_float", {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS', "shift": True},
330 {"properties": [("data_path", 'preferences.inputs.ndof_sensitivity'), ("value", 1.5)]}),
331 ("wm.context_scale_float", {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS', "shift": True},
332 {"properties": [("data_path", 'preferences.inputs.ndof_sensitivity'), ("value", 2.0 / 3.0)]}),
333 ("info.reports_display_update", {"type": 'TIMER_REPORT', "value": 'ANY', "any": True}, None),
336 if not params.legacy:
339 ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS'}, None),
340 op_menu("TOPBAR_MT_file_specials", {"type": 'F2', "value": 'PRESS'}),
341 ("wm.search_menu", {"type": 'F3', "value": 'PRESS'}, None),
342 op_menu("TOPBAR_MT_window_specials", {"type": 'F4', "value": 'PRESS'}),
345 if params.spacebar_action == 'TOOL':
347 ("wm.toolbar", {"type": 'SPACE', "value": 'PRESS'}, None),
349 elif params.spacebar_action == 'PLAY':
351 ("wm.toolbar", {"type": 'SPACE', "value": 'PRESS', "shift": True}, None),
353 elif params.spacebar_action == 'SEARCH':
355 ("wm.search_menu", {"type": 'SPACE', "value": 'PRESS'}, None),
363 ("wm.window_new", {"type": 'W', "value": 'PRESS', "ctrl": True, "alt": True}, None),
364 ("wm.save_homefile", {"type": 'U', "value": 'PRESS', "ctrl": True}, None),
365 ("wm.open_mainfile", {"type": 'F1', "value": 'PRESS'}, None),
366 ("wm.link", {"type": 'O', "value": 'PRESS', "ctrl": True, "alt": True}, None),
367 ("wm.append", {"type": 'F1', "value": 'PRESS', "shift": True}, None),
368 ("wm.save_mainfile", {"type": 'W', "value": 'PRESS', "ctrl": True}, None),
369 ("wm.save_as_mainfile", {"type": 'F2', "value": 'PRESS'}, None),
370 ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
371 {"properties": [("copy", True)]}),
372 ("wm.window_fullscreen_toggle", {"type": 'F11', "value": 'PRESS', "alt": True}, None),
373 ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS', "alt": True}, None),
374 ("wm.search_menu", {"type": 'SPACE', "value": 'PRESS'}, None),
375 ("wm.redraw_timer", {"type": 'T', "value": 'PRESS', "ctrl": True, "alt": True}, None),
376 ("wm.debug_menu", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
382 def km_screen(params):
386 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
392 ("screen.animation_step", {"type": 'TIMER0', "value": 'ANY', "any": True}, None),
393 ("screen.region_blend", {"type": 'TIMERREGION', "value": 'ANY', "any": True}, None),
394 # Full screen and cycling
395 ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None),
396 ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True},
397 {"properties": [("use_hide_panels", True)]}),
398 ("screen.space_context_cycle", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
399 {"properties": [("direction", 'NEXT')]}),
400 ("screen.space_context_cycle", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
401 {"properties": [("direction", 'PREV')]}),
402 ("screen.workspace_cycle", {"type": 'PAGE_DOWN', "value": 'PRESS', "ctrl": True},
403 {"properties": [("direction", 'NEXT')]}),
404 ("screen.workspace_cycle", {"type": 'PAGE_UP', "value": 'PRESS', "ctrl": True},
405 {"properties": [("direction", 'PREV')]}),
407 ("screen.region_quadview", {"type": 'Q', "value": 'PRESS', "ctrl": True, "alt": True}, None),
409 ("screen.repeat_last", {"type": 'R', "value": 'PRESS', "shift": True}, None),
411 ("file.execute", {"type": 'RET', "value": 'PRESS'}, None),
412 ("file.execute", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
413 ("file.cancel", {"type": 'ESC', "value": 'PRESS'}, None),
415 ("ed.undo", {"type": 'Z', "value": 'PRESS', "ctrl": True}, None),
416 ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "ctrl": True}, None),
418 ("render.render", {"type": 'F12', "value": 'PRESS'},
419 {"properties": [("use_viewport", True)]}),
420 ("render.render", {"type": 'F12', "value": 'PRESS', "ctrl": True},
421 {"properties": [("animation", True), ("use_viewport", True)]}),
422 ("render.view_cancel", {"type": 'ESC', "value": 'PRESS'}, None),
423 ("render.view_show", {"type": 'F11', "value": 'PRESS'}, None),
424 ("render.play_rendered_anim", {"type": 'F11', "value": 'PRESS', "ctrl": True}, None),
430 ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "ctrl": True, "alt": True}, None),
431 ("screen.screen_set", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
432 {"properties": [("delta", 1)]}),
433 ("screen.screen_set", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
434 {"properties": [("delta", -1)]}),
435 ("screen.screenshot", {"type": 'F3', "value": 'PRESS', "ctrl": True}, None),
436 ("screen.repeat_history", {"type": 'R', "value": 'PRESS', "ctrl": True, "alt": True}, None),
437 ("screen.region_flip", {"type": 'F5', "value": 'PRESS'}, None),
438 ("screen.redo_last", {"type": 'F6', "value": 'PRESS'}, None),
439 ("script.reload", {"type": 'F8', "value": 'PRESS'}, None),
440 ("screen.userpref_show", {"type": 'U', "value": 'PRESS', "ctrl": True, "alt": True}, None),
444 # Apple undo and user prefs
446 ("ed.undo", {"type": 'Z', "value": 'PRESS', "oskey": True}, None),
447 ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "oskey": True}, None),
448 ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "alt": True, "oskey": True}, None),
449 ("screen.userpref_show", {"type": 'COMMA', "value": 'PRESS', "oskey": True}, None),
455 def km_screen_editing(params):
457 keymap = ("Screen Editing",
458 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
463 ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS'},
464 {"properties": [("modifier", 0)]}),
465 ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
466 {"properties": [("modifier", 1)]}),
467 ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
468 {"properties": [("modifier", 2)]}),
470 ("screen.area_split", {"type": 'ACTIONZONE_AREA', "value": 'ANY'}, None),
471 ("screen.area_join", {"type": 'ACTIONZONE_AREA', "value": 'ANY'}, None),
472 ("screen.area_dupli", {"type": 'ACTIONZONE_AREA', "value": 'ANY', "shift": True}, None),
473 ("screen.area_swap", {"type": 'ACTIONZONE_AREA', "value": 'ANY', "ctrl": True}, None),
474 ("screen.region_scale", {"type": 'ACTIONZONE_REGION', "value": 'ANY'}, None),
475 ("screen.screen_full_area", {"type": 'ACTIONZONE_FULLSCREEN', "value": 'ANY'},
476 {"properties": [("use_hide_panels", True)]}),
477 # Area move after action zones
478 ("screen.area_move", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
479 ("screen.area_options", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
484 ("screen.header", {"type": 'F9', "value": 'PRESS', "alt": True}, None),
490 def km_header(_params):
494 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
499 ("screen.header_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
505 def km_view2d(_params):
509 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
515 ("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
516 ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
518 ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
519 ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
520 ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
521 ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, None),
522 ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, None),
523 ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None),
524 ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None),
525 ("view2d.ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
526 # Zoom with single step
527 ("view2d.zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
528 ("view2d.zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
529 ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
530 ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
531 ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
532 ("view2d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
533 # Scroll up/down, only when zoom is not available.
534 ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
535 ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
536 ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
537 ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
538 # Zoom with drag and border
539 ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
540 ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
541 ("view2d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
547 def km_view2d_buttons_list(_params):
550 "View2D Buttons List",
551 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
557 ("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
558 ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
560 ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
561 ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
562 ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
563 ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
564 ("view2d.scroll_down", {"type": 'PAGE_DOWN', "value": 'PRESS'},
565 {"properties": [("page", True)]}),
566 ("view2d.scroll_up", {"type": 'PAGE_UP', "value": 'PRESS'},
567 {"properties": [("page", True)]}),
569 ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
570 ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
571 ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
572 ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
573 ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
574 ("view2d.reset", {"type": 'HOME', "value": 'PRESS'}, None),
580 def km_user_interface(_params):
584 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
589 # Eyedroppers all have the same event, and pass it through until
590 # a suitable eyedropper handles it.
591 ("ui.eyedropper_color", {"type": 'E', "value": 'PRESS'}, None),
592 ("ui.eyedropper_colorband", {"type": 'E', "value": 'PRESS'}, None),
593 ("ui.eyedropper_colorband_point", {"type": 'E', "value": 'PRESS', "alt": True}, None),
594 ("ui.eyedropper_id", {"type": 'E', "value": 'PRESS'}, None),
595 ("ui.eyedropper_depth", {"type": 'E', "value": 'PRESS'}, None),
597 ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None),
598 ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
599 {"properties": [("full_path", True)]}),
600 # Keyframes and drivers
601 ("anim.keyframe_insert_button", {"type": 'I', "value": 'PRESS'}, None),
602 ("anim.keyframe_delete_button", {"type": 'I', "value": 'PRESS', "alt": True}, None),
603 ("anim.keyframe_clear_button", {"type": 'I', "value": 'PRESS', "shift": True, "alt": True}, None),
604 ("anim.driver_button_add", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
605 ("anim.driver_button_remove", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
606 ("anim.keyingset_button_add", {"type": 'K', "value": 'PRESS'}, None),
607 ("anim.keyingset_button_remove", {"type": 'K', "value": 'PRESS', "alt": True}, None),
613 # ------------------------------------------------------------------------------
617 def km_property_editor(_params):
621 {"space_type": 'PROPERTIES', "region_type": 'WINDOW'},
626 ("buttons.context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
627 ("screen.space_context_cycle", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
628 {"properties": [("direction", 'PREV'), ], },),
629 ("screen.space_context_cycle", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
630 {"properties": [("direction", 'NEXT'), ], },),
636 def km_outliner(params):
640 {"space_type": 'OUTLINER', "region_type": 'WINDOW'},
645 ("outliner.highlight_update", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None),
646 ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
647 ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK'},
648 {"properties": [("extend", False), ("recursive", False)]}),
649 ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True},
650 {"properties": [("extend", True), ("recursive", False)]}),
651 ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True},
652 {"properties": [("extend", False), ("recursive", True)]}),
653 ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True},
654 {"properties": [("extend", True), ("recursive", True)]}),
655 ("outliner.select_box", {"type": 'B', "value": 'PRESS'}, None),
656 ("outliner.item_openclose", {"type": 'RET', "value": 'PRESS'},
657 {"properties": [("all", False)]}),
658 ("outliner.item_openclose", {"type": 'RET', "value": 'PRESS', "shift": True},
659 {"properties": [("all", True)]}),
660 ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
661 ("outliner.operation", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
662 ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
663 ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, None),
664 ("outliner.show_hierarchy", {"type": 'HOME', "value": 'PRESS'}, None),
665 ("outliner.show_active", {"type": 'PERIOD', "value": 'PRESS'}, None),
666 ("outliner.show_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
667 ("outliner.scroll_page", {"type": 'PAGE_DOWN', "value": 'PRESS'},
668 {"properties": [("up", False)]}),
669 ("outliner.scroll_page", {"type": 'PAGE_UP', "value": 'PRESS'},
670 {"properties": [("up", True)]}),
671 ("outliner.show_one_level", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
672 ("outliner.show_one_level", {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
673 {"properties": [("open", False)]}),
674 *_template_items_select_actions(params, "outliner.select_all"),
675 ("outliner.expanded_toggle", {"type": 'A', "value": 'PRESS', "shift": True}, None),
676 ("outliner.keyingset_add_selected", {"type": 'K', "value": 'PRESS'}, None),
677 ("outliner.keyingset_remove_selected", {"type": 'K', "value": 'PRESS', "alt": True}, None),
678 ("anim.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
679 ("anim.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None),
680 ("outliner.drivers_add_selected", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
681 ("outliner.drivers_delete_selected", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
682 ("outliner.collection_new", {"type": 'C', "value": 'PRESS'}, None),
683 ("outliner.collection_delete", {"type": 'X', "value": 'PRESS'}, None),
684 ("outliner.collection_delete", {"type": 'DEL', "value": 'PRESS'}, None),
685 ("object.move_to_collection", {"type": 'M', "value": 'PRESS'}, None),
686 ("object.link_to_collection", {"type": 'M', "value": 'PRESS', "shift": True}, None),
687 ("outliner.collection_exclude_set", {"type": 'E', "value": 'PRESS'}, None),
688 ("outliner.collection_exclude_clear", {"type": 'E', "value": 'PRESS', "alt": True}, None),
689 ("object.hide_view_clear", {"type": 'H', "value": 'PRESS', "alt": True},
690 {"properties": [("select", False)]}),
691 ("object.hide_view_set", {"type": 'H', "value": 'PRESS'},
692 {"properties": [("unselected", False)]}),
693 ("object.hide_view_set", {"type": 'H', "value": 'PRESS', "shift": True},
694 {"properties": [("unselected", True)]}),
700 def km_uv_editor(params):
704 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
710 *_template_items_editmode_mesh_select_mode(),
711 ("mesh.select_mode", {"type": 'FOUR', "value": 'PRESS'}, None),
712 ("wm.context_set_enum", {"type": 'ONE', "value": 'PRESS'},
713 {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'VERTEX')]}),
714 ("wm.context_set_enum", {"type": 'TWO', "value": 'PRESS'},
715 {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'EDGE')]}),
716 ("wm.context_set_enum", {"type": 'THREE', "value": 'PRESS'},
717 {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'FACE')]}),
718 ("wm.context_set_enum", {"type": 'FOUR', "value": 'PRESS'},
719 {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'ISLAND')]}),
720 ("uv.mark_seam", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
721 ("uv.select", {"type": params.select_mouse, "value": params.select_mouse_value},
722 {"properties": [("extend", False)]}),
723 ("uv.select", {"type": params.select_mouse, "value": params.select_mouse_value, "shift": True},
724 {"properties": [("extend", True)]}),
725 ("uv.select_loop", {"type": params.select_mouse, "value": params.select_mouse_value, "alt": True},
726 {"properties": [("extend", False)]}),
727 ("uv.select_loop", {"type": params.select_mouse, "value": params.select_mouse_value, "shift": True, "alt": True},
728 {"properties": [("extend", True)]}),
729 ("uv.select_split", {"type": 'Y', "value": 'PRESS'}, None),
730 ("uv.select_box", {"type": 'B', "value": 'PRESS'},
731 {"properties": [("pinned", False)]}),
732 ("uv.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True},
733 {"properties": [("pinned", True)]}),
734 ("uv.select_circle", {"type": 'C', "value": 'PRESS'}, None),
735 ("uv.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True},
736 {"properties": [("mode", 'ADD')]}),
737 ("uv.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True},
738 {"properties": [("mode", 'SUB')]}),
739 ("uv.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True},
740 {"properties": [("extend", True), ("deselect", False)]}),
741 ("uv.select_linked_pick", {"type": 'L', "value": 'PRESS'},
742 {"properties": [("extend", True), ("deselect", False)]}),
743 ("uv.select_linked", {"type": 'L', "value": 'PRESS', "shift": True, "ctrl": True},
744 {"properties": [("extend", False), ("deselect", True)]}),
745 ("uv.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True},
746 {"properties": [("extend", False), ("deselect", True)]}),
747 ("uv.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
748 ("uv.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
749 *_template_items_select_actions(params, "uv.select_all"),
750 ("uv.select_pinned", {"type": 'P', "value": 'PRESS', "shift": True}, None),
751 op_menu("IMAGE_MT_uvs_weldalign", {"type": 'W', "value": 'PRESS', "shift": True}),
752 ("uv.stitch", {"type": 'V', "value": 'PRESS'}, None),
753 ("uv.pin", {"type": 'P', "value": 'PRESS'},
754 {"properties": [("clear", False)]}),
755 ("uv.pin", {"type": 'P', "value": 'PRESS', "alt": True},
756 {"properties": [("clear", True)]}),
757 ("uv.unwrap", {"type": 'U', "value": 'PRESS'}, None),
758 ("uv.hide", {"type": 'H', "value": 'PRESS'},
759 {"properties": [("unselected", False)]}),
760 ("uv.hide", {"type": 'H', "value": 'PRESS', "shift": True},
761 {"properties": [("unselected", True)]}),
762 ("uv.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
763 op_menu_pie("IMAGE_MT_uvs_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
764 op_menu("IMAGE_MT_uvs_select_mode", {"type": 'TAB', "value": 'PRESS', "ctrl": True}),
765 *_template_items_proportional_editing(connected=False),
766 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
767 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
768 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
769 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
770 ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
771 ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
772 ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True},
773 {"properties": [("data_path", 'tool_settings.use_snap')]}),
774 ("wm.context_menu_enum", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
775 {"properties": [("data_path", 'tool_settings.snap_uv_element')]}),
776 op_menu("IMAGE_MT_uvs_specials", params.context_menu_event),
780 if params.cursor_tweak_event:
782 ("uv.cursor_set", params.cursor_set_event, None),
783 ("transform.translate", params.cursor_tweak_event,
784 {"properties": [("release_confirm", True), ("cursor_transform", True)]}),
788 ("uv.cursor_set", params.cursor_set_event, None),
793 ("uv.minimize_stretch", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
794 ("uv.pack_islands", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
795 ("uv.average_islands_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
796 ("wm.context_toggle", {"type": 'Q', "value": 'PRESS'},
797 {"properties": [("data_path", 'tool_settings.use_uv_sculpt')]}),
800 if params.select_mouse == 'LEFTMOUSE' and not params.legacy:
801 # Quick switch to select tool, since left select can't easily
802 # select with any tool active.
804 op_tool_cycle("Select Box", {"type": 'W', "value": 'PRESS'}),
810 def km_uv_sculpt(_params):
814 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
819 ("wm.context_toggle", {"type": 'Q', "value": 'PRESS'},
820 {"properties": [("data_path", 'tool_settings.use_uv_sculpt')]}),
821 ("sculpt.uv_sculpt_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS'},
822 {"properties": [("mode", 'NORMAL')]}),
823 ("sculpt.uv_sculpt_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
824 {"properties": [("mode", 'INVERT')]}),
825 ("sculpt.uv_sculpt_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
826 {"properties": [("mode", 'RELAX')]}),
827 ("brush.scale_size", {"type": 'LEFT_BRACKET', "value": 'PRESS'},
828 {"properties": [("scalar", 0.9)]}),
829 ("brush.scale_size", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
830 {"properties": [("scalar", 1.0 / 0.9)]}),
831 *_template_paint_radial_control("uv_sculpt"),
832 ("brush.uv_sculpt_tool_set", {"type": 'S', "value": 'PRESS'},
833 {"properties": [("tool", 'RELAX')]}),
834 ("brush.uv_sculpt_tool_set", {"type": 'P', "value": 'PRESS'},
835 {"properties": [("tool", 'PINCH')]}),
836 ("brush.uv_sculpt_tool_set", {"type": 'G', "value": 'PRESS'},
837 {"properties": [("tool", 'GRAB')]}),
843 # 3D View: all regions.
844 def km_view3d_generic(_params):
848 {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
853 ("view3d.properties", {"type": 'N', "value": 'PRESS'}, None),
854 ("view3d.toolshelf", {"type": 'T', "value": 'PRESS'}, None),
860 # 3D View: main region.
861 def km_view3d(params):
865 {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
870 if params.cursor_tweak_event:
872 ("view3d.cursor3d", params.cursor_set_event, None),
873 ("transform.translate", params.cursor_tweak_event,
874 {"properties": [("release_confirm", True), ("cursor_transform", True)]}),
878 ("view3d.cursor3d", params.cursor_set_event, None),
883 ("view3d.localview", {"type": 'NUMPAD_SLASH', "value": 'PRESS'}, None),
884 ("view3d.localview", {"type": 'SLASH', "value": 'PRESS'}, None),
885 ("view3d.localview_remove_from", {"type": 'M', "value": 'PRESS'}, None),
887 ("view3d.rotate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
888 ("view3d.move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
889 ("view3d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
890 ("view3d.dolly", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None),
891 ("view3d.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "ctrl": True},
892 {"properties": [("use_all_regions", True)]}),
893 ("view3d.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'},
894 {"properties": [("use_all_regions", False)]}),
895 ("view3d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
896 ("view3d.rotate", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
897 ("view3d.rotate", {"type": 'MOUSEROTATE', "value": 'ANY'}, None),
898 ("view3d.move", {"type": 'TRACKPADPAN', "value": 'ANY', "shift": True}, None),
899 ("view3d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
900 ("view3d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
901 ("view3d.zoom", {"type": 'NUMPAD_PLUS', "value": 'PRESS'},
902 {"properties": [("delta", 1)]}),
903 ("view3d.zoom", {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
904 {"properties": [("delta", -1)]}),
905 ("view3d.zoom", {"type": 'EQUAL', "value": 'PRESS', "ctrl": True},
906 {"properties": [("delta", 1)]}),
907 ("view3d.zoom", {"type": 'MINUS', "value": 'PRESS', "ctrl": True},
908 {"properties": [("delta", -1)]}),
909 ("view3d.zoom", {"type": 'WHEELINMOUSE', "value": 'PRESS'},
910 {"properties": [("delta", 1)]}),
911 ("view3d.zoom", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'},
912 {"properties": [("delta", -1)]}),
913 ("view3d.dolly", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True},
914 {"properties": [("delta", 1)]}),
915 ("view3d.dolly", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True},
916 {"properties": [("delta", -1)]}),
917 ("view3d.dolly", {"type": 'EQUAL', "value": 'PRESS', "shift": True, "ctrl": True},
918 {"properties": [("delta", 1)]}),
919 ("view3d.dolly", {"type": 'MINUS', "value": 'PRESS', "shift": True, "ctrl": True},
920 {"properties": [("delta", -1)]}),
921 ("view3d.view_center_camera", {"type": 'HOME', "value": 'PRESS'}, None),
922 ("view3d.view_center_lock", {"type": 'HOME', "value": 'PRESS'}, None),
923 ("view3d.view_all", {"type": 'HOME', "value": 'PRESS'},
924 {"properties": [("center", False)]}),
925 ("view3d.view_all", {"type": 'HOME', "value": 'PRESS', "ctrl": True},
926 {"properties": [("use_all_regions", True), ("center", False)]}),
927 ("view3d.view_all", {"type": 'C', "value": 'PRESS', "shift": True},
928 {"properties": [("center", True)]}),
929 op_menu_pie("VIEW3D_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}),
930 ("view3d.navigate", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "shift": True}, None),
932 ("view3d.view_camera", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
933 ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS'},
934 {"properties": [("type", 'FRONT')]}),
935 ("view3d.view_orbit", {"type": 'NUMPAD_2', "value": 'PRESS'},
936 {"properties": [("type", 'ORBITDOWN')]}),
937 ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS'},
938 {"properties": [("type", 'RIGHT')]}),
939 ("view3d.view_orbit", {"type": 'NUMPAD_4', "value": 'PRESS'},
940 {"properties": [("type", 'ORBITLEFT')]}),
941 ("view3d.view_persportho", {"type": 'NUMPAD_5', "value": 'PRESS'}, None),
942 ("view3d.view_orbit", {"type": 'NUMPAD_6', "value": 'PRESS'},
943 {"properties": [("type", 'ORBITRIGHT')]}),
944 ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS'},
945 {"properties": [("type", 'TOP')]}),
946 ("view3d.view_orbit", {"type": 'NUMPAD_8', "value": 'PRESS'},
947 {"properties": [("type", 'ORBITUP')]}),
948 ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "ctrl": True},
949 {"properties": [("type", 'BACK')]}),
950 ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "ctrl": True},
951 {"properties": [("type", 'LEFT')]}),
952 ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "ctrl": True},
953 {"properties": [("type", 'BOTTOM')]}),
954 ("view3d.view_pan", {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True},
955 {"properties": [("type", 'PANDOWN')]}),
956 ("view3d.view_pan", {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True},
957 {"properties": [("type", 'PANLEFT')]}),
958 ("view3d.view_pan", {"type": 'NUMPAD_6', "value": 'PRESS', "ctrl": True},
959 {"properties": [("type", 'PANRIGHT')]}),
960 ("view3d.view_pan", {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True},
961 {"properties": [("type", 'PANUP')]}),
962 ("view3d.view_roll", {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True},
963 {"properties": [("type", 'LEFT')]}),
964 ("view3d.view_roll", {"type": 'NUMPAD_6', "value": 'PRESS', "shift": True},
965 {"properties": [("type", 'RIGHT')]}),
966 ("view3d.view_orbit", {"type": 'NUMPAD_9', "value": 'PRESS'},
967 {"properties": [("angle", 3.1415927), ("type", 'ORBITRIGHT')]}),
968 ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True},
969 {"properties": [("type", 'FRONT'), ("align_active", True)]}),
970 ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True},
971 {"properties": [("type", 'RIGHT'), ("align_active", True)]}),
972 ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True},
973 {"properties": [("type", 'TOP'), ("align_active", True)]}),
974 ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True, "ctrl": True},
975 {"properties": [("type", 'BACK'), ("align_active", True)]}),
976 ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True, "ctrl": True},
977 {"properties": [("type", 'LEFT'), ("align_active", True)]}),
978 ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True, "ctrl": True},
979 {"properties": [("type", 'BOTTOM'), ("align_active", True)]}),
980 ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'NORTH', "alt": True},
981 {"properties": [("type", 'TOP'), ("relative", True)]}),
982 ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'SOUTH', "alt": True},
983 {"properties": [("type", 'BOTTOM'), ("relative", True)]}),
984 ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'EAST', "alt": True},
985 {"properties": [("type", 'RIGHT'), ("relative", True)]}),
986 ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'WEST', "alt": True},
987 {"properties": [("type", 'LEFT'), ("relative", True)]}),
988 ("view3d.view_center_pick", {"type": 'MIDDLEMOUSE', "value": 'CLICK', "alt": True}, None),
989 ("view3d.ndof_orbit_zoom", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
990 ("view3d.ndof_orbit", {"type": 'NDOF_MOTION', "value": 'ANY', "ctrl": True}, None),
991 ("view3d.ndof_pan", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True}, None),
992 ("view3d.ndof_all", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True, "ctrl": True}, None),
993 ("view3d.view_selected", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'},
994 {"properties": [("use_all_regions", False)]}),
995 ("view3d.view_roll", {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'},
996 {"properties": [("type", 'LEFT')]}),
997 ("view3d.view_roll", {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'},
998 {"properties": [("type", 'RIGHT')]}),
999 ("view3d.view_axis", {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS'},
1000 {"properties": [("type", 'FRONT')]}),
1001 ("view3d.view_axis", {"type": 'NDOF_BUTTON_BACK', "value": 'PRESS'},
1002 {"properties": [("type", 'BACK')]}),
1003 ("view3d.view_axis", {"type": 'NDOF_BUTTON_LEFT', "value": 'PRESS'},
1004 {"properties": [("type", 'LEFT')]}),
1005 ("view3d.view_axis", {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS'},
1006 {"properties": [("type", 'RIGHT')]}),
1007 ("view3d.view_axis", {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS'},
1008 {"properties": [("type", 'TOP')]}),
1009 ("view3d.view_axis", {"type": 'NDOF_BUTTON_BOTTOM', "value": 'PRESS'},
1010 {"properties": [("type", 'BOTTOM')]}),
1011 ("view3d.view_axis", {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS', "shift": True},
1012 {"properties": [("type", 'FRONT'), ("align_active", True)]}),
1013 ("view3d.view_axis", {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS', "shift": True},
1014 {"properties": [("type", 'RIGHT'), ("align_active", True)]}),
1015 ("view3d.view_axis", {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS', "shift": True},
1016 {"properties": [("type", 'TOP'), ("align_active", True)]}),
1019 {"type": params.select_mouse, "value": params.select_mouse_value, **{m: True for m in mods}},
1020 {"properties": [(c, True) for c in props]},
1021 ) for operator, props, mods in (
1022 ("view3d.select_or_deselect_all" if not params.legacy else "view3d.select", (), ()),
1023 ("view3d.select", ("toggle",), ("shift",)),
1024 ("view3d.select", ("center", "object"), ("ctrl",)),
1025 ("view3d.select", ("enumerate",), ("alt",)),
1026 ("view3d.select", ("extend", "toggle", "center"), ("shift", "ctrl")),
1027 ("view3d.select", ("center", "enumerate"), ("ctrl", "alt")),
1028 ("view3d.select", ("toggle", "enumerate"), ("shift", "alt")),
1029 ("view3d.select", ("toggle", "center", "enumerate"), ("shift", "ctrl", "alt")),
1031 ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None),
1032 ("view3d.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True},
1033 {"properties": [("mode", 'ADD')]}),
1034 ("view3d.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True},
1035 {"properties": [("mode", 'SUB')]}),
1036 ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1038 ("view3d.clip_border", {"type": 'B', "value": 'PRESS', "alt": True}, None),
1039 ("view3d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
1040 ("view3d.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1041 ("view3d.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1043 ("view3d.camera_to_view", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1044 ("view3d.object_as_camera", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True}, None),
1046 ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1047 ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1049 op_menu_pie("VIEW3D_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
1051 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
1052 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
1053 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
1054 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
1055 ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None),
1056 ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
1057 ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
1058 ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1059 ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True},
1060 {"properties": [("data_path", 'tool_settings.use_snap')]}),
1061 op_panel("VIEW3D_PT_snapping", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True}, [("keep_open", False)]),
1062 ("object.transform_axis_target", {"type": 'T', "value": 'PRESS', "shift": True}, None),
1063 ("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
1068 ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1069 ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
1072 if not params.legacy:
1075 ("wm.context_toggle", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True},
1076 {"properties": [("data_path", 'space_data.show_gizmo_tool')]}),
1077 op_menu_pie("VIEW3D_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
1078 op_menu_pie("VIEW3D_MT_orientations_pie", {"type": 'COMMA', "value": 'PRESS'}),
1079 ("wm.context_toggle", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True},
1080 {"properties": [("data_path", 'space_data.show_gizmo_tool')]}),
1082 "VIEW3D_MT_shading_pie" if not params.use_v3d_shade_ex_pie else
1083 "VIEW3D_MT_shading_ex_pie", {"type": 'Z', "value": 'PRESS'}),
1084 ("view3d.toggle_shading", {"type": 'Z', "value": 'PRESS', "shift": True},
1085 {"properties": [("type", 'WIREFRAME')]}),
1086 ("view3d.toggle_xray", {"type": 'Z', "value": 'PRESS', "alt": True}, None),
1087 ("wm.context_toggle", {"type": 'Z', "value": 'PRESS', "alt": True, "shift": True},
1088 {"properties": [("data_path", "space_data.overlay.show_overlays")]}),
1093 ("view3d.view_lock_to_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "shift": True}, None),
1094 ("view3d.view_lock_clear", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "alt": True}, None),
1095 ("view3d.navigate", {"type": 'F', "value": 'PRESS', "shift": True}, None),
1096 ("view3d.zoom_camera_1_to_1", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None),
1097 ("view3d.view_center_cursor", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
1098 ("view3d.view_center_pick", {"type": 'F', "value": 'PRESS', "alt": True}, None),
1099 ("view3d.view_pan", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
1100 {"properties": [("type", 'PANRIGHT')]}),
1101 ("view3d.view_pan", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
1102 {"properties": [("type", 'PANLEFT')]}),
1103 ("view3d.view_pan", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True},
1104 {"properties": [("type", 'PANUP')]}),
1105 ("view3d.view_pan", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True},
1106 {"properties": [("type", 'PANDOWN')]}),
1107 ("view3d.view_orbit", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
1108 {"properties": [("type", 'ORBITLEFT')]}),
1109 ("view3d.view_orbit", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
1110 {"properties": [("type", 'ORBITRIGHT')]}),
1111 ("view3d.view_orbit", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "alt": True},
1112 {"properties": [("type", 'ORBITUP')]}),
1113 ("view3d.view_orbit", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "alt": True},
1114 {"properties": [("type", 'ORBITDOWN')]}),
1115 ("view3d.view_roll", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
1116 {"properties": [("type", 'LEFT')]}),
1117 ("view3d.view_roll", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
1118 {"properties": [("type", 'RIGHT')]}),
1119 ("transform.create_orientation", {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True},
1120 {"properties": [("use", True)]}),
1121 ("transform.translate", {"type": 'T', "value": 'PRESS', "shift": True},
1122 {"properties": [("texture_space", True)]}),
1123 ("transform.resize", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
1124 {"properties": [("texture_space", True)]}),
1126 ("wm.context_set_enum", {"type": 'COMMA', "value": 'PRESS'},
1127 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'BOUNDING_BOX_CENTER')]}),
1128 ("wm.context_set_enum", {"type": 'COMMA', "value": 'PRESS', "ctrl": True},
1129 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'MEDIAN_POINT')]}),
1130 ("wm.context_toggle", {"type": 'COMMA', "value": 'PRESS', "alt": True},
1131 {"properties": [("data_path", 'tool_settings.use_transform_pivot_point_align')]}),
1132 ("wm.context_toggle", {"type": 'SPACE', "value": 'PRESS', "ctrl": True},
1133 {"properties": [("data_path", 'space_data.show_gizmo_tool')]}),
1134 ("wm.context_set_enum", {"type": 'PERIOD', "value": 'PRESS'},
1135 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'CURSOR')]}),
1136 ("wm.context_set_enum", {"type": 'PERIOD', "value": 'PRESS', "ctrl": True},
1137 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'INDIVIDUAL_ORIGINS')]}),
1138 ("wm.context_set_enum", {"type": 'PERIOD', "value": 'PRESS', "alt": True},
1139 {"properties": [("data_path", 'tool_settings.transform_pivot_point'), ("value", 'ACTIVE_ELEMENT')]}),
1141 ("wm.context_toggle_enum", {"type": 'Z', "value": 'PRESS'},
1142 {"properties": [("data_path", 'space_data.shading.type'), ("value_1", 'WIREFRAME'), ("value_2", 'SOLID')]}),
1143 ("wm.context_toggle_enum", {"type": 'Z', "value": 'PRESS', "shift": True},
1144 {"properties": [("data_path", 'space_data.shading.type'), ("value_1", 'RENDERED'), ("value_2", 'SOLID')]}),
1145 ("wm.context_toggle_enum", {"type": 'Z', "value": 'PRESS', "alt": True},
1146 {"properties": [("data_path", 'space_data.shading.type'), ("value_1", 'MATERIAL'), ("value_2", 'SOLID')]}),
1149 if params.select_mouse == 'LEFTMOUSE' and not params.legacy:
1150 # Quick switch to select tool, since left select can't easily
1151 # select with any tool active.
1153 op_tool_cycle("Select Box", {"type": 'W', "value": 'PRESS'}),
1159 def km_mask_editing(params):
1163 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
1168 ("mask.new", {"type": 'N', "value": 'PRESS', "alt": True}, None),
1169 op_menu("MASK_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}),
1170 op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
1171 ("wm.context_toggle", {"type": 'O', "value": 'PRESS'},
1172 {"properties": [("data_path", 'tool_settings.use_proportional_edit_mask')]}),
1173 ("mask.add_vertex_slide", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True}, None),
1174 ("mask.add_feather_vertex_slide", {"type": params.action_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, None),
1175 ("mask.delete", {"type": 'X', "value": 'PRESS'}, None),
1176 ("mask.delete", {"type": 'DEL', "value": 'PRESS'}, None),
1177 ("mask.select", {"type": params.select_mouse, "value": params.select_mouse_value},
1178 {"properties": [("extend", False), ("deselect", False), ("toggle", False)]}),
1179 ("mask.select", {"type": params.select_mouse, "value": params.select_mouse_value, "shift": True},
1180 {"properties": [("extend", False), ("deselect", False), ("toggle", True)]}),
1181 *_template_items_select_actions(params, "mask.select_all"),
1182 ("mask.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
1183 ("mask.select_linked_pick", {"type": 'L', "value": 'PRESS'},
1184 {"properties": [("deselect", False)]}),
1185 ("mask.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True},
1186 {"properties": [("deselect", True)]}),
1187 ("mask.select_box", {"type": 'B', "value": 'PRESS'}, None),
1188 ("mask.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1189 ("mask.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True},
1190 {"properties": [("deselect", False)]}),
1191 ("mask.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
1192 {"properties": [("deselect", True)]}),
1193 ("mask.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
1194 ("mask.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
1195 ("mask.hide_view_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None),
1196 ("mask.hide_view_set", {"type": 'H', "value": 'PRESS'},
1197 {"properties": [("unselected", False)]}),
1198 ("mask.hide_view_set", {"type": 'H', "value": 'PRESS', "shift": True},
1199 {"properties": [("unselected", True)]}),
1200 ("clip.select", {"type": params.select_mouse, "value": params.select_mouse_value, "ctrl": True},
1201 {"properties": [("extend", False)]}),
1202 ("mask.cyclic_toggle", {"type": 'C', "value": 'PRESS', "alt": True}, None),
1203 ("mask.slide_point", {"type": params.action_mouse, "value": 'PRESS'}, None),
1204 ("mask.slide_spline_curvature", {"type": params.action_mouse, "value": 'PRESS'}, None),
1205 ("mask.handle_type_set", {"type": 'V', "value": 'PRESS'}, None),
1206 ("mask.normals_make_consistent", {"type": 'N', "value": 'PRESS', "ctrl" if params.legacy else "shift": True}, None),
1207 ("mask.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
1208 ("mask.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None),
1209 ("mask.shape_key_insert", {"type": 'I', "value": 'PRESS'}, None),
1210 ("mask.shape_key_clear", {"type": 'I', "value": 'PRESS', "alt": True}, None),
1211 ("mask.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1212 ("mask.copy_splines", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1213 ("mask.paste_splines", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1214 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
1215 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
1216 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
1217 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
1218 ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True},
1219 {"properties": [("mode", 'MASK_SHRINKFATTEN')]}),
1223 if params.cursor_tweak_event:
1225 ("uv.cursor_set", params.cursor_set_event, None),
1226 ("transform.translate", params.cursor_tweak_event,
1227 {"properties": [("release_confirm", True), ("cursor_transform", True)]}),
1231 ("uv.cursor_set", params.cursor_set_event, None),
1237 def km_markers(params):
1241 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
1246 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
1247 ("marker.move", {"type": params.select_tweak, "value": 'ANY'}, None),
1248 ("marker.duplicate", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1249 ("marker.select", {"type": params.select_mouse, "value": 'PRESS'}, None),
1250 ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
1251 {"properties": [("extend", True)]}),
1252 ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
1253 {"properties": [("extend", False), ("camera", True)]}),
1254 ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1255 {"properties": [("extend", True), ("camera", True)]}),
1256 ("marker.select_box", {"type": 'B', "value": 'PRESS'}, None),
1257 *_template_items_select_actions(params, "marker.select_all"),
1258 ("marker.delete", {"type": 'X', "value": 'PRESS'}, None),
1259 ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, None),
1260 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1261 ("marker.move", {"type": 'G', "value": 'PRESS'}, None),
1262 ("marker.camera_bind", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1268 def km_graph_editor_generic(_params):
1271 "Graph Editor Generic",
1272 {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'},
1277 ("graph.properties", {"type": 'N', "value": 'PRESS'}, None),
1278 ("graph.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None),
1279 ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
1280 ("graph.hide", {"type": 'H', "value": 'PRESS'},
1281 {"properties": [("unselected", False)]}),
1282 ("graph.hide", {"type": 'H', "value": 'PRESS', "shift": True},
1283 {"properties": [("unselected", True)]}),
1284 ("graph.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
1285 ("wm.context_set_enum", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
1286 {"properties": [("data_path", 'area.type'), ("value", 'DOPESHEET_EDITOR')]}),
1292 def km_graph_editor(params):
1296 {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'},
1301 ("wm.context_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True},
1302 {"properties": [("data_path", 'space_data.show_handles')]}),
1303 ("graph.cursor_set", {"type": params.action_mouse, "value": 'PRESS'}, None),
1304 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS'},
1305 {"properties": [("extend", False), ("column", False), ("curves", False)]}),
1306 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "alt": True},
1307 {"properties": [("extend", False), ("column", True), ("curves", False)]}),
1308 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
1309 {"properties": [("extend", True), ("column", False), ("curves", False)]}),
1310 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True},
1311 {"properties": [("extend", True), ("column", True), ("curves", False)]}),
1312 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True},
1313 {"properties": [("extend", False), ("column", False), ("curves", True)]}),
1314 ("graph.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
1315 {"properties": [("extend", True), ("column", False), ("curves", True)]}),
1316 ("graph.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
1317 {"properties": [("mode", 'CHECK'), ("extend", False)]}),
1318 ("graph.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1319 {"properties": [("mode", 'CHECK'), ("extend", True)]}),
1320 ("graph.select_leftright", {"type": 'LEFT_BRACKET', "value": 'PRESS'},
1321 {"properties": [("mode", 'LEFT'), ("extend", False)]}),
1322 ("graph.select_leftright", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
1323 {"properties": [("mode", 'RIGHT'), ("extend", False)]}),
1324 *_template_items_select_actions(params, "graph.select_all"),
1325 ("graph.select_box", {"type": 'B', "value": 'PRESS'},
1326 {"properties": [("axis_range", False), ("include_handles", False)]}),
1327 ("graph.select_box", {"type": 'B', "value": 'PRESS', "alt": True},
1328 {"properties": [("axis_range", True), ("include_handles", False)]}),
1329 ("graph.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True},
1330 {"properties": [("axis_range", False), ("include_handles", True)]}),
1331 ("graph.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True},
1332 {"properties": [("axis_range", True), ("include_handles", True)]}),
1333 ("graph.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True},
1334 {"properties": [("deselect", False)]}),
1335 ("graph.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True},
1336 {"properties": [("deselect", True)]}),
1337 ("graph.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1338 ("graph.select_column", {"type": 'K', "value": 'PRESS'},
1339 {"properties": [("mode", 'KEYS')]}),
1340 ("graph.select_column", {"type": 'K', "value": 'PRESS', "ctrl": True},
1341 {"properties": [("mode", 'CFRA')]}),
1342 ("graph.select_column", {"type": 'K', "value": 'PRESS', "shift": True},
1343 {"properties": [("mode", 'MARKERS_COLUMN')]}),
1344 ("graph.select_column", {"type": 'K', "value": 'PRESS', "alt": True},
1345 {"properties": [("mode", 'MARKERS_BETWEEN')]}),
1346 ("graph.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
1347 ("graph.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
1348 ("graph.select_linked", {"type": 'L', "value": 'PRESS'}, None),
1349 ("graph.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
1350 op_menu_pie("GRAPH_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
1351 ("graph.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1352 ("graph.handle_type", {"type": 'V', "value": 'PRESS'}, None),
1353 ("graph.interpolation_type", {"type": 'T', "value": 'PRESS'}, None),
1354 ("graph.easing_type", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
1355 ("graph.smooth", {"type": 'O', "value": 'PRESS', "alt": True}, None),
1356 ("graph.sample", {"type": 'O', "value": 'PRESS', "shift": True, "alt": True}, None),
1357 ("graph.bake", {"type": 'C', "value": 'PRESS', "alt": True}, None),
1358 op_menu("GRAPH_MT_delete", {"type": 'X', "value": 'PRESS'}),
1359 op_menu("GRAPH_MT_delete", {"type": 'DEL', "value": 'PRESS'}),
1360 op_menu("GRAPH_MT_specials", params.context_menu_event),
1361 ("graph.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1362 ("graph.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
1363 ("graph.click_insert", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True},
1364 {"properties": [("extend", False)]}),
1365 ("graph.click_insert", {"type": params.action_mouse, "value": 'CLICK', "shift": True, "ctrl": True},
1366 {"properties": [("extend", True)]}),
1367 ("graph.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1368 ("graph.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1369 ("graph.paste", {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True},
1370 {"properties": [("flipped", True)]}),
1371 ("graph.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1372 ("graph.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1373 ("graph.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1374 ("graph.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1375 ("graph.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
1376 ("graph.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True},
1377 {"properties": [("only_active", False)]}),
1378 ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
1379 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
1380 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
1381 ("transform.transform", {"type": 'E', "value": 'PRESS'},
1382 {"properties": [("mode", 'TIME_EXTEND')]}),
1383 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
1384 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
1385 ("wm.context_toggle", {"type": 'O', "value": 'PRESS'},
1386 {"properties": [("data_path", 'tool_settings.use_proportional_fcurve')]}),
1387 op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
1388 op_menu_pie("GRAPH_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
1389 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
1390 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1395 ("graph.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1396 ("graph.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
1397 ("graph.paste", {"type": 'V', "value": 'PRESS', "shift": True, "oskey": True},
1398 {"properties": [("flipped", True)]}),
1404 def km_image_generic(params):
1408 {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
1413 ("image.new", {"type": 'N', "value": 'PRESS', "alt": True}, None),
1414 ("image.open", {"type": 'O', "value": 'PRESS', "alt": True}, None),
1415 ("image.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None),
1416 ("image.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None),
1417 ("image.save", {"type": 'S', "value": 'PRESS', "alt": True}, None),
1418 ("image.save_as", {"type": 'S', "value": 'PRESS', "shift": True}, None),
1419 ("image.properties", {"type": 'N', "value": 'PRESS'}, None),
1420 ("image.toolshelf", {"type": 'T', "value": 'PRESS'}, None),
1421 ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS'}, None),
1422 ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS', "alt": True},
1423 {"properties": [("reverse", True)]}),
1429 def km_image(params):
1433 {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
1438 ("image.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1439 ("image.view_all", {"type": 'HOME', "value": 'PRESS', "shift": True},
1440 {"properties": [("fit_view", True)]}),
1441 ("image.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1442 ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
1443 ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
1444 ("image.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
1445 ("image.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1446 ("image.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
1447 ("image.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
1448 ("image.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
1449 ("image.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
1450 ("image.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
1451 ("image.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
1452 ("image.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
1453 ("image.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
1454 ("image.view_zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
1455 ("image.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True},
1456 {"properties": [("ratio", 8.0)]}),
1457 ("image.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True},
1458 {"properties": [("ratio", 4.0)]}),
1459 ("image.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True},
1460 {"properties": [("ratio", 2.0)]}),
1461 ("image.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True},
1462 {"properties": [("ratio", 8.0)]}),
1463 ("image.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True},
1464 {"properties": [("ratio", 4.0)]}),
1465 ("image.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True},
1466 {"properties": [("ratio", 2.0)]}),
1467 ("image.view_zoom_ratio", {"type": 'NUMPAD_1', "value": 'PRESS'},
1468 {"properties": [("ratio", 1.0)]}),
1469 ("image.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS'},
1470 {"properties": [("ratio", 0.5)]}),
1471 ("image.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS'},
1472 {"properties": [("ratio", 0.25)]}),
1473 ("image.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS'},
1474 {"properties": [("ratio", 0.125)]}),
1475 ("image.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
1476 ("image.sample", {"type": params.action_mouse, "value": 'PRESS'}, None),
1477 ("image.curves_point_set", {"type": params.action_mouse, "value": 'PRESS', "ctrl": True},
1478 {"properties": [("point", 'BLACK_POINT')]}),
1479 ("image.curves_point_set", {"type": params.action_mouse, "value": 'PRESS', "shift": True},
1480 {"properties": [("point", 'WHITE_POINT')]}),
1481 ("object.mode_set", {"type": 'TAB', "value": 'PRESS'},
1482 {"properties": [("mode", 'EDIT'), ("toggle", True)]}),
1484 (("wm.context_set_int",
1485 {"type": NUMBERS_1[i], "value": 'PRESS'},
1486 {"properties": [("data_path", 'space_data.image.render_slots.active_index'), ("value", i)]})
1490 op_menu_pie("IMAGE_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
1491 ("image.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1492 ("image.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1498 def km_node_generic(_params):
1502 {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
1507 ("node.properties", {"type": 'N', "value": 'PRESS'}, None),
1508 ("node.toolbar", {"type": 'T', "value": 'PRESS'}, None),
1514 def km_node_editor(params):
1518 {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
1522 def node_select_ops(select_mouse):
1524 ("node.select", {"type": select_mouse, "value": 'PRESS'},
1525 {"properties": [("extend", False)]}),
1526 ("node.select", {"type": select_mouse, "value": 'PRESS', "ctrl": True},
1527 {"properties": [("extend", False)]}),
1528 ("node.select", {"type": select_mouse, "value": 'PRESS', "alt": True},
1529 {"properties": [("extend", False)]}),
1530 ("node.select", {"type": select_mouse, "value": 'PRESS', "ctrl": True, "alt": True},
1531 {"properties": [("extend", False)]}),
1532 ("node.select", {"type": select_mouse, "value": 'PRESS', "shift": True},
1533 {"properties": [("extend", True)]}),
1534 ("node.select", {"type": select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1535 {"properties": [("extend", True)]}),
1536 ("node.select", {"type": select_mouse, "value": 'PRESS', "shift": True, "alt": True},
1537 {"properties": [("extend", True)]}),
1538 ("node.select", {"type": select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
1539 {"properties": [("extend", True)]}),
1542 # Allow node selection with both for RMB select
1543 if params.select_mouse == 'RIGHTMOUSE':
1544 items.extend(node_select_ops('LEFTMOUSE'))
1545 items.extend(node_select_ops('RIGHTMOUSE'))
1547 items.extend(node_select_ops('LEFTMOUSE'))
1550 ("node.select_box", {"type": params.select_tweak, "value": 'ANY'},
1551 {"properties": [("tweak", True)]}),
1552 ("node.select_lasso", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True, "alt": True},
1553 {"properties": [("deselect", False)]}),
1554 ("node.select_lasso", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
1555 {"properties": [("deselect", True)]}),
1556 ("node.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1557 ("node.link", {"type": 'LEFTMOUSE', "value": 'PRESS'},
1558 {"properties": [("detach", False)]}),
1559 ("node.link", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
1560 {"properties": [("detach", True)]}),
1561 ("node.resize", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
1562 ("node.add_reroute", {"type": params.action_tweak, "value": 'ANY', "shift": True}, None),
1563 ("node.links_cut", {"type": params.action_tweak, "value": 'ANY', "ctrl": True}, None),
1564 ("node.select_link_viewer", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None),
1565 ("node.backimage_move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "alt": True}, None),
1566 ("node.backimage_zoom", {"type": 'V', "value": 'PRESS'},
1567 {"properties": [("factor", 1.0 / 1.2)]}),
1568 ("node.backimage_zoom", {"type": 'V', "value": 'PRESS', "alt": True},
1569 {"properties": [("factor", 1.2)]}),
1570 ("node.backimage_fit", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
1571 ("node.backimage_sample", {"type": params.action_mouse, "value": 'PRESS', "alt": True}, None),
1572 op_menu("NODE_MT_specials", params.context_menu_event),
1573 ("node.link_make", {"type": 'F', "value": 'PRESS'},
1574 {"properties": [("replace", False)]}),
1575 ("node.link_make", {"type": 'F', "value": 'PRESS', "shift": True},
1576 {"properties": [("replace", True)]}),
1577 op_menu("NODE_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}),
1578 ("node.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1579 ("node.duplicate_move_keep_inputs", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None),
1580 ("node.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
1581 ("node.detach", {"type": 'P', "value": 'PRESS', "alt": True}, None),
1582 ("node.join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
1583 ("node.hide_toggle", {"type": 'H', "value": 'PRESS'}, None),
1584 ("node.mute_toggle", {"type": 'M', "value": 'PRESS'}, None),
1585 ("node.preview_toggle", {"type": 'H', "value": 'PRESS', "shift": True}, None),
1586 ("node.hide_socket_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, None),
1587 ("node.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1588 ("node.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1589 ("node.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1590 ("node.select_box", {"type": 'B', "value": 'PRESS'},
1591 {"properties": [("tweak", False)]}),
1592 ("node.delete", {"type": 'X', "value": 'PRESS'}, None),
1593 ("node.delete", {"type": 'DEL', "value": 'PRESS'}, None),
1594 ("node.delete_reconnect", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
1595 ("node.delete_reconnect", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None),
1596 *_template_items_select_actions(params, "node.select_all"),
1597 ("node.select_linked_to", {"type": 'L', "value": 'PRESS', "shift": True}, None),
1598 ("node.select_linked_from", {"type": 'L', "value": 'PRESS'}, None),
1599 ("node.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True},
1600 {"properties": [("extend", False)]}),
1601 ("node.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True},
1602 {"properties": [("extend", True)]}),
1603 ("node.select_same_type_step", {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True},
1604 {"properties": [("prev", False)]}),
1605 ("node.select_same_type_step", {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True},
1606 {"properties": [("prev", True)]}),
1607 ("node.find_node", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
1608 ("node.group_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
1609 ("node.group_ungroup", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1610 ("node.group_separate", {"type": 'P', "value": 'PRESS'}, None),
1611 ("node.group_edit", {"type": 'TAB', "value": 'PRESS'},
1612 {"properties": [("exit", False)]}),
1613 ("node.group_edit", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
1614 {"properties": [("exit", True)]}),
1615 ("node.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None),
1616 ("node.render_changed", {"type": 'Z', "value": 'PRESS'}, None),
1617 ("node.clipboard_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1618 ("node.clipboard_paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1619 ("node.viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1620 ("node.clear_viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1621 ("node.translate_attach", {"type": 'G', "value": 'PRESS'}, None),
1622 ("node.translate_attach", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
1623 ("node.translate_attach", {"type": params.select_tweak, "value": 'ANY'}, None),
1624 ("transform.translate", {"type": 'G', "value": 'PRESS'},
1625 {"properties": [("release_confirm", True)]}),
1626 ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'},
1627 {"properties": [("release_confirm", True)]}),
1628 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'},
1629 {"properties": [("release_confirm", True)]}),
1630 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
1631 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
1632 ("node.move_detach_links", {"type": 'D', "value": 'PRESS', "alt": True}, None),
1633 ("node.move_detach_links_release", {"type": params.action_tweak, "value": 'ANY', "alt": True}, None),
1634 ("node.move_detach_links", {"type": params.select_tweak, "value": 'ANY', "alt": True}, None),
1635 ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True},
1636 {"properties": [("data_path", 'tool_settings.use_snap')]}),
1637 ("wm.context_menu_enum", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
1638 {"properties": [("data_path", 'tool_settings.snap_node_element')]}),
1643 ("node.clipboard_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1644 ("node.clipboard_paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
1650 def km_info(params):
1654 {"space_type": 'INFO', "region_type": 'WINDOW'},
1659 ("info.select_pick", {"type": params.select_mouse, "value": 'PRESS'}, None),
1660 ("info.select_all_toggle", {"type": 'A', "value": 'PRESS'}, None),
1661 ("info.select_box", {"type": 'B', "value": 'PRESS'}, None),
1662 ("info.report_replay", {"type": 'R', "value": 'PRESS'}, None),
1663 ("info.report_delete", {"type": 'X', "value": 'PRESS'}, None),
1664 ("info.report_delete", {"type": 'DEL', "value": 'PRESS'}, None),
1665 ("info.report_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1670 ("info.report_copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1676 def km_file_browser(_params):
1680 {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'},
1685 ("file.parent", {"type": 'UP_ARROW', "value": 'PRESS', "alt": True}, None),
1686 ("file.previous", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, None),
1687 ("file.next", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, None),
1688 ("file.refresh", {"type": 'R', "value": 'PRESS'}, None),
1689 ("file.parent", {"type": 'P', "value": 'PRESS'}, None),
1690 ("file.previous", {"type": 'BACK_SPACE', "value": 'PRESS'}, None),
1691 ("file.next", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, None),
1692 ("wm.context_toggle", {"type": 'H', "value": 'PRESS'},
1693 {"properties": [("data_path", 'space_data.params.show_hidden')]}),
1694 ("file.directory_new", {"type": 'I', "value": 'PRESS'}, None),
1695 ("file.delete", {"type": 'X', "value": 'PRESS'}, None),
1696 ("file.delete", {"type": 'DEL', "value": 'PRESS'}, None),
1697 ("file.smoothscroll", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
1698 ("file.bookmark_toggle", {"type": 'T', "value": 'PRESS'}, None),
1699 ("file.bookmark_add", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
1705 def km_file_browser_main(_params):
1708 "File Browser Main",
1709 {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'},
1714 ("file.execute", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'},
1715 {"properties": [("need_active", True)]}),
1716 ("file.refresh", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1717 ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK'}, None),
1718 ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True},
1719 {"properties": [("extend", True)]}),
1720 ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True},
1721 {"properties": [("extend", True), ("fill", True)]}),
1722 ("file.select", {"type": 'RIGHTMOUSE', "value": 'CLICK'},
1723 {"properties": [("open", False)]}),
1724 ("file.select", {"type": 'RIGHTMOUSE', "value": 'CLICK', "shift": True},
1725 {"properties": [("extend", True), ("open", False)]}),
1726 ("file.select", {"type": 'RIGHTMOUSE', "value": 'CLICK', "alt": True},
1727 {"properties": [("extend", True), ("fill", True), ("open", False)]}),
1728 ("file.select_walk", {"type": 'UP_ARROW', "value": 'PRESS'},
1729 {"properties": [("direction", 'UP')]}),
1730 ("file.select_walk", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
1731 {"properties": [("direction", 'UP'), ("extend", True)]}),
1732 ("file.select_walk", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
1733 {"properties": [("direction", 'UP'), ("extend", True), ("fill", True)]}),
1734 ("file.select_walk", {"type": 'DOWN_ARROW', "value": 'PRESS'},
1735 {"properties": [("direction", 'DOWN')]}),
1736 ("file.select_walk", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
1737 {"properties": [("direction", 'DOWN'), ("extend", True)]}),
1738 ("file.select_walk", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
1739 {"properties": [("direction", 'DOWN'), ("extend", True), ("fill", True)]}),
1740 ("file.select_walk", {"type": 'LEFT_ARROW', "value": 'PRESS'},
1741 {"properties": [("direction", 'LEFT')]}),
1742 ("file.select_walk", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
1743 {"properties": [("direction", 'LEFT'), ("extend", True)]}),
1744 ("file.select_walk", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
1745 {"properties": [("direction", 'LEFT'), ("extend", True), ("fill", True)]}),
1746 ("file.select_walk", {"type": 'RIGHT_ARROW', "value": 'PRESS'},
1747 {"properties": [("direction", 'RIGHT')]}),
1748 ("file.select_walk", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
1749 {"properties": [("direction", 'RIGHT'), ("extend", True)]}),
1750 ("file.select_walk", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
1751 {"properties": [("direction", 'RIGHT'), ("extend", True), ("fill", True)]}),
1752 ("file.previous", {"type": 'BUTTON4MOUSE', "value": 'CLICK'}, None),
1753 ("file.next", {"type": 'BUTTON5MOUSE', "value": 'CLICK'}, None),
1754 ("file.select_all", {"type": 'A', "value": 'PRESS'}, None),
1755 ("file.select_box", {"type": 'B', "value": 'PRESS'}, None),
1756 ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
1757 ("file.rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
1758 ("file.highlight", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None),
1759 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS'},
1760 {"properties": [("increment", 1)]}),
1761 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True},
1762 {"properties": [("increment", 10)]}),
1763 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
1764 {"properties": [("increment", 100)]}),
1765 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
1766 {"properties": [("increment", -1)]}),
1767 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True},
1768 {"properties": [("increment", -10)]}),
1769 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
1770 {"properties": [("increment", -100)]}),
1776 def km_file_browser_buttons(_params):
1779 "File Browser Buttons",
1780 {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'},
1785 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS'},
1786 {"properties": [("increment", 1)]}),
1787 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True},
1788 {"properties": [("increment", 10)]}),
1789 ("file.filenum", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
1790 {"properties": [("increment", 100)]}),
1791 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
1792 {"properties": [("increment", -1)]}),
1793 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True},
1794 {"properties": [("increment", -10)]}),
1795 ("file.filenum", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
1796 {"properties": [("increment", -100)]}),
1802 def km_dopesheet_generic(_params):
1805 "Dopesheet Generic",
1806 {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'},
1811 ("action.properties", {"type": 'N', "value": 'PRESS'}, None),
1812 ("wm.context_set_enum", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
1813 {"properties": [("data_path", 'area.type'), ("value", 'GRAPH_EDITOR')]})
1819 def km_dopesheet(params):
1823 {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'},
1828 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS'},
1829 {"properties": [("extend", False), ("column", False), ("channel", False)]}),
1830 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "alt": True},
1831 {"properties": [("extend", False), ("column", True), ("channel", False)]}),
1832 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
1833 {"properties": [("extend", True), ("column", False), ("channel", False)]}),
1834 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True},
1835 {"properties": [("extend", True), ("column", True), ("channel", False)]}),
1836 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True, "alt": True},
1837 {"properties": [("extend", False), ("column", False), ("channel", True)]}),
1838 ("action.clickselect", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
1839 {"properties": [("extend", True), ("column", False), ("channel", True)]}),
1840 ("action.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
1841 {"properties": [("mode", 'CHECK'), ("extend", False)]}),
1842 ("action.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1843 {"properties": [("mode", 'CHECK'), ("extend", True)]}),
1844 ("action.select_leftright", {"type": 'LEFT_BRACKET', "value": 'PRESS'},
1845 {"properties": [("mode", 'LEFT'), ("extend", False)]}),
1846 ("action.select_leftright", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
1847 {"properties": [("mode", 'RIGHT'), ("extend", False)]}),
1848 *_template_items_select_actions(params, "action.select_all"),
1849 ("action.select_box", {"type": 'B', "value": 'PRESS'},
1850 {"properties": [("axis_range", False)]}),
1851 ("action.select_box", {"type": 'B', "value": 'PRESS', "alt": True},
1852 {"properties": [("axis_range", True)]}),
1853 ("action.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True},
1854 {"properties": [("deselect", False)]}),
1855 ("action.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True},
1856 {"properties": [("deselect", True)]}),
1857 ("action.select_circle", {"type": 'C', "value": 'PRESS'}, None),
1858 ("action.select_column", {"type": 'K', "value": 'PRESS'},
1859 {"properties": [("mode", 'KEYS')]}),
1860 ("action.select_column", {"type": 'K', "value": 'PRESS', "ctrl": True},
1861 {"properties": [("mode", 'CFRA')]}),
1862 ("action.select_column", {"type": 'K', "value": 'PRESS', "shift": True},
1863 {"properties": [("mode", 'MARKERS_COLUMN')]}),
1864 ("action.select_column", {"type": 'K', "value": 'PRESS', "alt": True},
1865 {"properties": [("mode", 'MARKERS_BETWEEN')]}),
1866 ("action.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
1867 ("action.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
1868 ("action.select_linked", {"type": 'L', "value": 'PRESS'}, None),
1869 ("action.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
1870 op_menu_pie("DOPESHEET_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
1871 ("action.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1872 ("action.handle_type", {"type": 'V', "value": 'PRESS'}, None),
1873 ("action.interpolation_type", {"type": 'T', "value": 'PRESS'}, None),
1874 ("action.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None),
1875 ("action.keyframe_type", {"type": 'R', "value": 'PRESS'}, None),
1876 op_menu("DOPESHEET_MT_specials", params.context_menu_event),
1877 ("action.sample", {"type": 'O', "value": 'PRESS', "shift": True, "alt": True}, None),
1878 op_menu("DOPESHEET_MT_delete", {"type": 'X', "value": 'PRESS'}),
1879 op_menu("DOPESHEET_MT_delete", {"type": 'DEL', "value": 'PRESS'}),
1880 ("action.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
1881 ("action.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
1882 ("action.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
1883 ("action.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
1884 ("action.paste", {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True},
1885 {"properties": [("flipped", True)]}),
1886 ("action.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1887 ("action.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1888 ("action.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1889 ("action.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1890 ("action.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
1891 ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
1892 ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
1893 ("transform.transform", {"type": 'G', "value": 'PRESS'},
1894 {"properties": [("mode", 'TIME_TRANSLATE')]}),
1895 ("transform.transform", {"type": params.select_tweak, "value": 'ANY'},
1896 {"properties": [("mode", 'TIME_TRANSLATE')]}),
1897 ("transform.transform", {"type": 'E', "value": 'PRESS'},
1898 {"properties": [("mode", 'TIME_EXTEND')]}),
1899 ("transform.transform", {"type": 'S', "value": 'PRESS'},
1900 {"properties": [("mode", 'TIME_SCALE')]}),
1901 ("transform.transform", {"type": 'T', "value": 'PRESS', "shift": True},
1902 {"properties": [("mode", 'TIME_SLIDE')]}),
1903 ("wm.context_toggle", {"type": 'O', "value": 'PRESS'},
1904 {"properties": [("data_path", 'tool_settings.use_proportional_action')]}),
1905 op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
1906 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
1907 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
1912 ("action.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
1913 ("action.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
1914 ("action.paste", {"type": 'V', "value": 'PRESS', "shift": True, "oskey": True},
1915 {"properties": [("flipped", True)]}),
1921 def km_nla_generic(_params):
1925 {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'},
1930 ("nla.properties", {"type": 'N', "value": 'PRESS'}, None),
1931 ("nla.tweakmode_enter", {"type": 'TAB', "value": 'PRESS'}, None),
1932 ("nla.tweakmode_exit", {"type": 'TAB', "value": 'PRESS'}, None),
1933 ("nla.tweakmode_enter", {"type": 'TAB', "value": 'PRESS', "shift": True},
1934 {"properties": [("isolate_action", True)]}),
1935 ("nla.tweakmode_exit", {"type": 'TAB', "value": 'PRESS', "shift": True},
1936 {"properties": [("isolate_action", True)]}),
1937 ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
1943 def km_nla_channels(_params):
1947 {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'},
1952 ("nla.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS'},
1953 {"properties": [("extend", False)]}),
1954 ("nla.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
1955 {"properties": [("extend", True)]}),
1956 ("nla.tracks_add", {"type": 'A', "value": 'PRESS', "shift": True},
1957 {"properties": [("above_selected", False)]}),
1958 ("nla.tracks_add", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True},
1959 {"properties": [("above_selected", True)]}),
1960 ("nla.tracks_delete", {"type": 'X', "value": 'PRESS'}, None),
1961 ("nla.tracks_delete", {"type": 'DEL', "value": 'PRESS'}, None),
1967 def km_nla_editor(params):
1971 {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'},
1976 ("nla.click_select", {"type": params.select_mouse, "value": 'PRESS'},
1977 {"properties": [("extend", False)]}),
1978 ("nla.click_select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
1979 {"properties": [("extend", True)]}),
1980 ("nla.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
1981 {"properties": [("mode", 'CHECK'), ("extend", False)]}),
1982 ("nla.select_leftright", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
1983 {"properties": [("mode", 'CHECK'), ("extend", True)]}),
1984 ("nla.select_leftright", {"type": 'LEFT_BRACKET', "value": 'PRESS'},
1985 {"properties": [("mode", 'LEFT'), ("extend", False)]}),
1986 ("nla.select_leftright", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
1987 {"properties": [("mode", 'RIGHT'), ("extend", False)]}),
1988 *_template_items_select_actions(params, "nla.select_all"),
1989 ("nla.select_box", {"type": 'B', "value": 'PRESS'},
1990 {"properties": [("axis_range", False)]}),
1991 ("nla.select_box", {"type": 'B', "value": 'PRESS', "alt": True},
1992 {"properties": [("axis_range", True)]}),
1993 ("nla.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
1994 ("nla.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
1995 ("nla.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
1996 ("nla.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
1997 ("nla.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
1998 ("nla.actionclip_add", {"type": 'A', "value": 'PRESS', "shift": True}, None),
1999 ("nla.transition_add", {"type": 'T', "value": 'PRESS', "shift": True}, None),
2000 ("nla.soundclip_add", {"type": 'K', "value": 'PRESS', "shift": True}, None),
2001 ("nla.meta_add", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
2002 ("nla.meta_remove", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
2003 ("nla.duplicate", {"type": 'D', "value": 'PRESS', "shift": True},
2004 {"properties": [("linked", False)]}),
2005 ("nla.duplicate", {"type": 'D', "value": 'PRESS', "alt": True},
2006 {"properties": [("linked", True)]}),
2007 ("nla.make_single_user", {"type": 'U', "value": 'PRESS'}, None),
2008 ("nla.delete", {"type": 'X', "value": 'PRESS'}, None),
2009 ("nla.delete", {"type": 'DEL', "value": 'PRESS'}, None),
2010 ("nla.split", {"type": 'Y', "value": 'PRESS'}, None),
2011 ("nla.mute_toggle", {"type": 'H', "value": 'PRESS'}, None),
2012 ("nla.swap", {"type": 'F', "value": 'PRESS', "alt": True}, None),
2013 ("nla.move_up", {"type": 'PAGE_UP', "value": 'PRESS'}, None),
2014 ("nla.move_down", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None),
2015 ("nla.apply_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
2016 ("nla.clear_scale", {"type": 'S', "value": 'PRESS', "alt": True}, None),
2017 op_menu_pie("NLA_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
2018 ("nla.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None),
2019 ("transform.transform", {"type": 'G', "value": 'PRESS'},
2020 {"properties": [("mode", 'TRANSLATION')]}),
2021 ("transform.transform", {"type": params.select_tweak, "value": 'ANY'},
2022 {"properties": [("mode", 'TRANSLATION')]}),
2023 ("transform.transform", {"type": 'E', "value": 'PRESS'},
2024 {"properties": [("mode", 'TIME_EXTEND')]}),
2025 ("transform.transform", {"type": 'S', "value": 'PRESS'},
2026 {"properties": [("mode", 'TIME_SCALE')]}),
2027 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
2028 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
2034 def km_text_generic(params):
2038 {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'},
2043 ("text.start_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
2044 ("text.jump", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
2045 ("text.find", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
2046 ("text.replace", {"type": 'H', "value": 'PRESS', "ctrl": True}, None),
2047 ("text.properties", {"type": 'T', "value": 'PRESS', "ctrl": True}, None),
2052 ("text.start_find", {"type": 'F', "value": 'PRESS', "oskey": True}, None),
2058 def km_text(params):
2062 {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'},
2068 ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "oskey": True},
2069 {"properties": [("type", 'LINE_BEGIN')]}),
2070 ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "oskey": True},
2071 {"properties": [("type", 'LINE_END')]}),
2072 ("text.move", {"type": 'UP_ARROW', "value": 'PRESS', "oskey": True},
2073 {"properties": [("type", 'FILE_TOP')]}),
2074 ("text.move", {"type": 'DOWN_ARROW', "value": 'PRESS', "oskey": True},
2075 {"properties": [("type", 'FILE_BOTTOM')]}),
2076 ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "oskey": True},
2077 {"properties": [("type", 'LINE_BEGIN')]}),
2078 ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "oskey": True},
2079 {"properties": [("type", 'LINE_END')]}),
2080 ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
2081 {"properties": [("type", 'PREVIOUS_WORD')]}),
2082 ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
2083 {"properties": [("type", 'NEXT_WORD')]}),
2084 ("text.move_select", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "oskey": True},
2085 {"properties": [("type", 'FILE_TOP')]}),
2086 ("text.move_select", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "oskey": True},
2087 {"properties": [("type", 'FILE_BOTTOM')]}),
2088 ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "alt": True},
2089 {"properties": [("type", 'PREVIOUS_WORD')]}),
2090 ("text.save", {"type": 'S', "value": 'PRESS', "alt": True, "oskey": True}, None),
2091 ("text.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True, "oskey": True}, None),
2092 ("text.cut", {"type": 'X', "value": 'PRESS', "oskey": True}, None),
2093 ("text.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
2094 ("text.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
2095 ("text.find_set_selected", {"type": 'E', "value": 'PRESS', "oskey": True}, None),
2096 ("text.select_all", {"type": 'A', "value": 'PRESS', "oskey": True}, None),
2097 ("text.select_line", {"type": 'A', "value": 'PRESS', "shift": True, "oskey": True}, None),
2101 ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True},
2102 {"properties": [("type", 'PREVIOUS_WORD')]}),
2103 ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True},
2104 {"properties": [("type", 'NEXT_WORD')]}),
2105 ("wm.context_cycle_int", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
2106 {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}),
2107 ("wm.context_cycle_int", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
2108 {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}),
2109 ("wm.context_cycle_int", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
2110 {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}),
2111 ("wm.context_cycle_int", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
2112 {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}),
2115 if not params.legacy:
2117 ("text.new", {"type": 'N', "value": 'PRESS', "alt": True}, None),
2121 ("text.new", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
2125 ("text.open", {"type": 'O', "value": 'PRESS', "alt": True}, None),
2126 ("text.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None),
2127 ("text.save", {"type": 'S', "value": 'PRESS', "alt": True}, None),
2128 ("text.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
2129 ("text.run_script", {"type": 'P', "value": 'PRESS', "alt": True}, None),
2130 ("text.cut", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
2131 ("text.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
2132 ("text.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
2133 ("text.cut", {"type": 'DEL', "value": 'PRESS', "shift": True}, None),
2134 ("text.copy", {"type": 'INSERT', "value": 'PRESS', "ctrl": True}, None),
2135 ("text.paste", {"type": 'INSERT', "value": 'PRESS', "shift": True}, None),
2136 ("text.duplicate_line", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
2137 ("text.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
2138 ("text.select_line", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, None),
2139 ("text.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
2140 ("text.move_lines", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2141 {"properties": [("direction", 'UP')]}),
2142 ("text.move_lines", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2143 {"properties": [("direction", 'DOWN')]}),
2144 ("text.indent", {"type": 'TAB', "value": 'PRESS'}, None),
2145 ("text.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None),
2146 ("text.uncomment", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None),
2147 ("text.move", {"type": 'HOME', "value": 'PRESS'},
2148 {"properties": [("type", 'LINE_BEGIN')]}),
2149 ("text.move", {"type": 'END', "value": 'PRESS'},
2150 {"properties": [("type", 'LINE_END')]}),
2151 ("text.move", {"type": 'E', "value": 'PRESS', "ctrl": True},
2152 {"properties": [("type", 'LINE_END')]}),
2153 ("text.move", {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True},
2154 {"properties": [("type", 'LINE_END')]}),
2155 ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS'},
2156 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2157 ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS'},
2158 {"properties": [("type", 'NEXT_CHARACTER')]}),
2159 ("text.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
2160 {"properties": [("type", 'PREVIOUS_WORD')]}),
2161 ("text.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
2162 {"properties": [("type", 'NEXT_WORD')]}),
2163 ("text.move", {"type": 'UP_ARROW', "value": 'PRESS'},
2164 {"properties": [("type", 'PREVIOUS_LINE')]}),
2165 ("text.move", {"type": 'DOWN_ARROW', "value": 'PRESS'},
2166 {"properties": [("type", 'NEXT_LINE')]}),
2167 ("text.move", {"type": 'PAGE_UP', "value": 'PRESS'},
2168 {"properties": [("type", 'PREVIOUS_PAGE')]}),
2169 ("text.move", {"type": 'PAGE_DOWN', "value": 'PRESS'},
2170 {"properties": [("type", 'NEXT_PAGE')]}),
2171 ("text.move", {"type": 'HOME', "value": 'PRESS', "ctrl": True},
2172 {"properties": [("type", 'FILE_TOP')]}),
2173 ("text.move", {"type": 'END', "value": 'PRESS', "ctrl": True},
2174 {"properties": [("type", 'FILE_BOTTOM')]}),
2175 ("text.move_select", {"type": 'HOME', "value": 'PRESS', "shift": True},
2176 {"properties": [("type", 'LINE_BEGIN')]}),
2177 ("text.move_select", {"type": 'END', "value": 'PRESS', "shift": True},
2178 {"properties": [("type", 'LINE_END')]}),
2179 ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
2180 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2181 ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
2182 {"properties": [("type", 'NEXT_CHARACTER')]}),
2183 ("text.move_select", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2184 {"properties": [("type", 'PREVIOUS_WORD')]}),
2185 ("text.move_select", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2186 {"properties": [("type", 'NEXT_WORD')]}),
2187 ("text.move_select", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
2188 {"properties": [("type", 'PREVIOUS_LINE')]}),
2189 ("text.move_select", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
2190 {"properties": [("type", 'NEXT_LINE')]}),
2191 ("text.move_select", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True},
2192 {"properties": [("type", 'PREVIOUS_PAGE')]}),
2193 ("text.move_select", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True},
2194 {"properties": [("type", 'NEXT_PAGE')]}),
2195 ("text.move_select", {"type": 'HOME', "value": 'PRESS', "shift": True, "ctrl": True},
2196 {"properties": [("type", 'FILE_TOP')]}),
2197 ("text.move_select", {"type": 'END', "value": 'PRESS', "shift": True, "ctrl": True},
2198 {"properties": [("type", 'FILE_BOTTOM')]}),
2199 ("text.delete", {"type": 'DEL', "value": 'PRESS'},
2200 {"properties": [("type", 'NEXT_CHARACTER')]}),
2201 ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS'},
2202 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2203 ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
2204 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2205 ("text.delete", {"type": 'DEL', "value": 'PRESS', "ctrl": True},
2206 {"properties": [("type", 'NEXT_WORD')]}),
2207 ("text.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True},
2208 {"properties": [("type", 'PREVIOUS_WORD')]}),
2209 ("text.overwrite_toggle", {"type": 'INSERT', "value": 'PRESS'}, None),
2210 ("text.scroll_bar", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2211 ("text.scroll_bar", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
2212 ("text.scroll", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
2213 ("text.scroll", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
2214 ("text.selection_set", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
2215 ("text.cursor_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2216 ("text.selection_set", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
2217 {"properties": [("select", True)]}),
2218 ("text.scroll", {"type": 'WHEELUPMOUSE', "value": 'PRESS'},
2219 {"properties": [("lines", -1)]}),
2220 ("text.scroll", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'},
2221 {"properties": [("lines", 1)]}),
2222 ("text.line_break", {"type": 'RET', "value": 'PRESS'}, None),
2223 ("text.line_break", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
2224 op_menu("TEXT_MT_toolbox", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}),
2225 ("text.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None),
2226 ("text.line_number", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
2227 ("text.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
2233 def km_sequencercommon(_params):
2237 {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
2242 ("sequencer.properties", {"type": 'N', "value": 'PRESS'}, None),
2243 ("wm.context_toggle", {"type": 'O', "value": 'PRESS', "shift": True},
2244 {"properties": [("data_path", 'scene.sequence_editor.show_overlay')]}),
2245 ("sequencer.view_toggle", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, None),
2251 def km_sequencer(params):
2255 {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
2260 *_template_items_select_actions(params, "sequencer.select_all"),
2261 ("sequencer.cut", {"type": 'K', "value": 'PRESS'},
2262 {"properties": [("type", 'SOFT')]}),
2263 ("sequencer.cut", {"type": 'K', "value": 'PRESS', "shift": True},
2264 {"properties": [("type", 'HARD')]}),
2265 ("sequencer.mute", {"type": 'H', "value": 'PRESS'},
2266 {"properties": [("unselected", False)]}),
2267 ("sequencer.mute", {"type": 'H', "value": 'PRESS', "shift": True},
2268 {"properties": [("unselected", True)]}),
2269 ("sequencer.unmute", {"type": 'H', "value": 'PRESS', "alt": True},
2270 {"properties": [("unselected", False)]}),
2271 ("sequencer.unmute", {"type": 'H', "value": 'PRESS', "shift": True, "alt": True},
2272 {"properties": [("unselected", True)]}),
2273 ("sequencer.lock", {"type": 'L', "value": 'PRESS', "shift": True}, None),
2274 ("sequencer.unlock", {"type": 'L', "value": 'PRESS', "shift": True, "alt": True}, None),
2275 ("sequencer.reassign_inputs", {"type": 'R', "value": 'PRESS'}, None),
2276 ("sequencer.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None),
2277 ("sequencer.reload", {"type": 'R', "value": 'PRESS', "shift": True, "alt": True},
2278 {"properties": [("adjust_length", True)]}),
2279 ("sequencer.offset_clear", {"type": 'O', "value": 'PRESS', "alt": True}, None),
2280 ("sequencer.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
2281 ("sequencer.delete", {"type": 'X', "value": 'PRESS'}, None),
2282 ("sequencer.delete", {"type": 'DEL', "value": 'PRESS'}, None),
2283 ("sequencer.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
2284 ("sequencer.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
2285 ("sequencer.images_separate", {"type": 'Y', "value": 'PRESS'}, None),
2286 ("sequencer.meta_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
2287 ("sequencer.meta_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
2288 ("sequencer.meta_separate", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
2289 ("sequencer.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
2290 ("sequencer.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2291 ("sequencer.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
2292 ("sequencer.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
2293 ("sequencer.strip_jump", {"type": 'PAGE_UP', "value": 'PRESS'},
2294 {"properties": [("next", True), ("center", False)]}),
2295 ("sequencer.strip_jump", {"type": 'PAGE_DOWN', "value": 'PRESS'},
2296 {"properties": [("next", False), ("center", False)]}),
2297 ("sequencer.strip_jump", {"type": 'PAGE_UP', "value": 'PRESS', "alt": True},
2298 {"properties": [("next", True), ("center", True)]}),
2299 ("sequencer.strip_jump", {"type": 'PAGE_DOWN', "value": 'PRESS', "alt": True},
2300 {"properties": [("next", False), ("center", True)]}),
2301 ("sequencer.swap", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True},
2302 {"properties": [("side", 'LEFT')]}),
2303 ("sequencer.swap", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True},
2304 {"properties": [("side", 'RIGHT')]}),
2305 ("sequencer.gap_remove", {"type": 'BACK_SPACE', "value": 'PRESS'},
2306 {"properties": [("all", False)]}),
2307 ("sequencer.gap_remove", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
2308 {"properties": [("all", True)]}),
2309 ("sequencer.gap_insert", {"type": 'EQUAL', "value": 'PRESS', "shift": True}, None),
2310 ("sequencer.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None),
2311 ("sequencer.swap_inputs", {"type": 'S', "value": 'PRESS', "alt": True}, None),
2313 (("sequencer.cut_multicam",
2314 {"type": NUMBERS_1[i], "value": 'PRESS'},
2315 {"properties": [("camera", i + 1)]})
2319 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS'},
2320 {"properties": [("extend", False), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", False)]}),
2321 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
2322 {"properties": [("extend", True), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", False)]}),
2323 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "alt": True},
2324 {"properties": [("extend", False), ("linked_handle", True), ("left_right", 'NONE'), ("linked_time", False)]}),
2325 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "alt": True},
2326 {"properties": [("extend", True), ("linked_handle", True), ("left_right", 'NONE'), ("linked_time", False)]}),
2327 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "ctrl": True},
2328 {"properties": [("extend", False), ("linked_handle", False), ("left_right", 'MOUSE'), ("linked_time", True)]}),
2329 ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True},
2330 {"properties": [("extend", True), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", True)]}),
2331 ("sequencer.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
2332 ("sequencer.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
2333 ("sequencer.select_linked_pick", {"type": 'L', "value": 'PRESS'},
2334 {"properties": [("extend", False)]}),
2335 ("sequencer.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True},
2336 {"properties": [("extend", True)]}),
2337 ("sequencer.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
2338 ("sequencer.select_box", {"type": 'B', "value": 'PRESS'}, None),
2339 ("sequencer.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None),
2340 op_menu("SEQUENCER_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}),
2341 op_menu("SEQUENCER_MT_change", {"type": 'C', "value": 'PRESS'}),
2342 ("sequencer.slip", {"type": 'S', "value": 'PRESS'}, None),
2343 ("wm.context_set_int", {"type": 'O', "value": 'PRESS'},
2344 {"properties": [("data_path", 'scene.sequence_editor.overlay_frame'), ("value", 0)]}),
2345 ("transform.seq_slide", {"type": 'G', "value": 'PRESS'}, None),
2346 ("transform.seq_slide", {"type": params.select_tweak, "value": 'ANY'}, None),
2347 ("transform.transform", {"type": 'E', "value": 'PRESS'},
2348 {"properties": [("mode", 'TIME_EXTEND')]}),
2349 ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
2350 ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
2355 ("sequencer.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
2356 ("sequencer.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
2362 def km_sequencerpreview(params):
2366 {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
2371 ("sequencer.view_all_preview", {"type": 'HOME', "value": 'PRESS'}, None),
2372 ("sequencer.view_all_preview", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2373 ("sequencer.view_ghost_border", {"type": 'O', "value": 'PRESS'}, None),
2374 ("sequencer.view_zoom_ratio", {"type": 'NUMPAD_1', "value": 'PRESS'},
2375 {"properties": [("ratio", 1.0)]}),
2376 ("sequencer.sample", {"type": params.action_mouse, "value": 'PRESS'}, None),
2382 def km_console(params):
2386 {"space_type": 'CONSOLE', "region_type": 'WINDOW'},
2392 ("console.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "oskey": True},
2393 {"properties": [("type", 'LINE_BEGIN')]}),
2394 ("console.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "oskey": True},
2395 {"properties": [("type", 'LINE_END')]}),
2396 ("console.copy", {"type": 'C', "value": 'PRESS', "oskey": True}, None),
2397 ("console.paste", {"type": 'V', "value": 'PRESS', "oskey": True}, None),
2401 ("console.move", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
2402 {"properties": [("type", 'PREVIOUS_WORD')]}),
2403 ("console.move", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
2404 {"properties": [("type", 'NEXT_WORD')]}),
2405 ("console.move", {"type": 'HOME', "value": 'PRESS'},
2406 {"properties": [("type", 'LINE_BEGIN')]}),
2407 ("console.move", {"type": 'END', "value": 'PRESS'},
2408 {"properties": [("type", 'LINE_END')]}),
2409 ("wm.context_cycle_int", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
2410 {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}),
2411 ("wm.context_cycle_int", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
2412 {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}),
2413 ("wm.context_cycle_int", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
2414 {"properties": [("data_path", 'space_data.font_size'), ("reverse", False)]}),
2415 ("wm.context_cycle_int", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
2416 {"properties": [("data_path", 'space_data.font_size'), ("reverse", True)]}),
2417 ("console.move", {"type": 'LEFT_ARROW', "value": 'PRESS'},
2418 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2419 ("console.move", {"type": 'RIGHT_ARROW', "value": 'PRESS'},
2420 {"properties": [("type", 'NEXT_CHARACTER')]}),
2421 ("console.history_cycle", {"type": 'UP_ARROW', "value": 'PRESS'},
2422 {"properties": [("reverse", True)]}),
2423 ("console.history_cycle", {"type": 'DOWN_ARROW', "value": 'PRESS'},
2424 {"properties": [("reverse", False)]}),
2425 ("console.delete", {"type": 'DEL', "value": 'PRESS'},
2426 {"properties": [("type", 'NEXT_CHARACTER')]}),
2427 ("console.delete", {"type": 'BACK_SPACE', "value": 'PRESS'},
2428 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2429 ("console.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
2430 {"properties": [("type", 'PREVIOUS_CHARACTER')]}),
2431 ("console.delete", {"type": 'DEL', "value": 'PRESS', "ctrl": True},
2432 {"properties": [("type", 'NEXT_WORD')]}),
2433 ("console.delete", {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True},
2434 {"properties": [("type", 'PREVIOUS_WORD')]}),
2435 ("console.clear_line", {"type": 'RET', "value": 'PRESS', "shift": True}, None),
2436 ("console.clear_line", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None),
2437 ("console.execute", {"type": 'RET', "value": 'PRESS'},
2438 {"properties": [("interactive", True)]}),
2439 ("console.execute", {"type": 'NUMPAD_ENTER', "value": 'PRESS'},
2440 {"properties": [("interactive", True)]}),
2441 ("console.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None),
2442 ("console.copy_as_script", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None),
2443 ("console.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
2444 ("console.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
2445 ("console.select_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2446 ("console.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
2447 ("console.insert", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
2448 {"properties": [("text", '\t')]}),
2449 ("console.indent", {"type": 'TAB', "value": 'PRESS'}, None),
2450 ("console.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None),
2451 ("console.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
2457 def km_clip(_params):
2461 {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
2466 ("clip.open", {"type": 'O', "value": 'PRESS', "alt": True}, None),
2467 ("clip.tools", {"type": 'T', "value": 'PRESS'}, None),
2468 ("clip.properties", {"type": 'N', "value": 'PRESS'}, None),
2469 ("clip.track_markers", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True},
2470 {"properties": [("backwards", True), ("sequence", False)]}),
2471 ("clip.track_markers", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True},
2472 {"properties": [("backwards", False), ("sequence", False)]}),
2473 ("clip.track_markers", {"type": 'T', "value": 'PRESS', "ctrl": True},
2474 {"properties": [("backwards", False), ("sequence", True)]}),
2475 ("clip.track_markers", {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True},
2476 {"properties": [("backwards", True), ("sequence", True)]}),
2477 ("wm.context_toggle_enum", {"type": 'TAB', "value": 'PRESS'},
2478 {"properties": [("data_path", 'space_data.mode'), ("value_1", 'TRACKING'), ("value_2", 'MASK')]}),
2479 ("clip.solve_camera", {"type": 'S', "value": 'PRESS', "shift": True}, None),
2480 ("clip.prefetch", {"type": 'P', "value": 'PRESS'}, None),
2486 def km_clip_editor(params):
2490 {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
2495 ("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
2496 ("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
2497 ("clip.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
2498 ("clip.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
2499 ("clip.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
2500 ("clip.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
2501 ("clip.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
2502 ("clip.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
2503 ("clip.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
2504 ("clip.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
2505 ("clip.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True},
2506 {"properties": [("ratio", 8.0)]}),
2507 ("clip.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True},
2508 {"properties": [("ratio", 4.0)]}),
2509 ("clip.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True},
2510 {"properties": [("ratio", 2.0)]}),
2511 ("clip.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True},
2512 {"properties": [("ratio", 8.0)]}),
2513 ("clip.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True},
2514 {"properties": [("ratio", 4.0)]}),
2515 ("clip.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True},
2516 {"properties": [("ratio", 2.0)]}),
2517 ("clip.view_zoom_ratio", {"type": 'NUMPAD_1', "value": 'PRESS'},
2518 {"properties": [("ratio", 1.0)]}),
2519 ("clip.view_zoom_ratio", {"type": 'NUMPAD_2', "value": 'PRESS'},
2520 {"properties": [("ratio", 0.5)]}),
2521 ("clip.view_zoom_ratio", {"type": 'NUMPAD_4', "value": 'PRESS'},
2522 {"properties": [("ratio", 0.25)]}),
2523 ("clip.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS'},
2524 {"properties": [("ratio", 0.125)]}),
2525 ("clip.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
2526 ("clip.view_all", {"type": 'F', "value": 'PRESS'},
2527 {"properties": [("fit_view", True)]}),
2528 ("clip.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
2529 ("clip.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2530 ("clip.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
2531 ("clip.frame_jump", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2532 {"properties": [("position", 'PATHSTART')]}),
2533 ("clip.frame_jump", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2534 {"properties": [("position", 'PATHEND')]}),
2535 ("clip.frame_jump", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
2536 {"properties": [("position", 'FAILEDPREV')]}),
2537 ("clip.frame_jump", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
2538 {"properties": [("position", 'PATHSTART')]}),
2539 ("clip.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2540 ("clip.select", {"type": params.select_mouse, "value": 'PRESS'},
2541 {"properties": [("extend", False)]}),
2542 ("clip.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
2543 {"properties": [("extend", True)]}),
2544 *_template_items_select_actions(params, "clip.select_all"),
2545 ("clip.select_box", {"type": 'B', "value": 'PRESS'}, None),
2546 ("clip.select_circle", {"type": 'C', "value": 'PRESS'}, None),
2547 op_menu("CLIP_MT_select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}),
2548 ("clip.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True},
2549 {"properties": [("deselect", False)]}),
2550 ("clip.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
2551 {"properties": [("deselect", True)]}),
2552 ("clip.add_marker_slide", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
2553 ("clip.delete_marker", {"type": 'X', "value": 'PRESS', "shift": True}, None),
2554 ("clip.delete_marker", {"type": 'DEL', "value": 'PRESS', "shift": True}, None),
2555 ("clip.slide_marker", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2556 ("clip.disable_markers", {"type": 'D', "value": 'PRESS', "shift": True},
2557 {"properties": [("action", 'TOGGLE')]}),
2558 ("clip.delete_track", {"type": 'X', "value": 'PRESS'}, None),
2559 ("clip.delete_track", {"type": 'DEL', "value": 'PRESS'}, None),
2560 ("clip.lock_tracks", {"type": 'L', "value": 'PRESS', "ctrl": True},
2561 {"properties": [("action", 'LOCK')]}),
2562 ("clip.lock_tracks", {"type": 'L', "value": 'PRESS', "alt": True},
2563 {"properties": [("action", 'UNLOCK')]}),
2564 ("clip.hide_tracks", {"type": 'H', "value": 'PRESS'},
2565 {"properties": [("unselected", False)]}),
2566 ("clip.hide_tracks", {"type": 'H', "value": 'PRESS', "shift": True},
2567 {"properties": [("unselected", True)]}),
2568 ("clip.hide_tracks_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None),
2569 ("clip.slide_plane_marker", {"type": params.action_mouse, "value": 'PRESS'}, None),
2570 ("clip.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
2571 ("clip.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None),
2572 ("clip.join_tracks", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
2573 op_menu("CLIP_MT_tracking_specials", params.context_menu_event),
2574 ("wm.context_toggle", {"type": 'L', "value": 'PRESS'},
2575 {"properties": [("data_path", 'space_data.lock_selection')]}),
2576 ("wm.context_toggle", {"type": 'D', "value": 'PRESS', "alt": True},
2577 {"properties": [("data_path", 'space_data.show_disabled')]}),
2578 ("wm.context_toggle", {"type": 'S', "value": 'PRESS', "alt": True},
2579 {"properties": [("data_path", 'space_data.show_marker_search')]}),
2580 ("wm.context_toggle", {"type": 'M', "value": 'PRESS'},
2581 {"properties": [("data_path", 'space_data.use_mute_footage')]}),
2582 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
2583 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
2584 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
2585 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
2586 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True},
2587 {"properties": [("action", 'REMAINED'), ("clear_active", False)]}),
2588 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True},
2589 {"properties": [("action", 'UPTO'), ("clear_active", False)]}),
2590 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
2591 {"properties": [("action", 'ALL'), ("clear_active", False)]}),
2592 ("clip.cursor_set", params.cursor_set_event, None),
2593 op_menu_pie("CLIP_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}),
2594 ("clip.copy_tracks", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
2595 ("clip.paste_tracks", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
2601 def km_clip_graph_editor(params):
2604 "Clip Graph Editor",
2605 {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
2610 ("clip.change_frame", {"type": params.action_mouse, "value": 'PRESS'}, None),
2611 ("clip.graph_select", {"type": params.select_mouse, "value": 'PRESS'},
2612 {"properties": [("extend", False)]}),
2613 ("clip.graph_select", {"type": params.select_mouse, "value": 'PRESS', "shift": True},
2614 {"properties": [("extend", True)]}),
2615 *_template_items_select_actions(params, "clip.graph_select_all_markers"),
2616 ("clip.graph_select_box", {"type": 'B', "value": 'PRESS'}, None),
2617 ("clip.graph_delete_curve", {"type": 'X', "value": 'PRESS'}, None),
2618 ("clip.graph_delete_curve", {"type": 'DEL', "value": 'PRESS'}, None),
2619 ("clip.graph_delete_knot", {"type": 'X', "value": 'PRESS', "shift": True}, None),
2620 ("clip.graph_delete_knot", {"type": 'DEL', "value": 'PRESS', "shift": True}, None),
2621 ("clip.graph_view_all", {"type": 'HOME', "value": 'PRESS'}, None),
2622 ("clip.graph_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2623 ("clip.graph_center_current_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
2624 ("wm.context_toggle", {"type": 'L', "value": 'PRESS'},
2625 {"properties": [("data_path", 'space_data.lock_time_cursor')]}),
2626 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True},
2627 {"properties": [("action", 'REMAINED'), ("clear_active", True)]}),
2628 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True},
2629 {"properties": [("action", 'UPTO'), ("clear_active", True)]}),
2630 ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
2631 {"properties": [("action", 'ALL'), ("clear_active", True)]}),
2632 ("clip.graph_disable_markers", {"type": 'D', "value": 'PRESS', "shift": True},
2633 {"properties": [("action", 'TOGGLE')]}),
2634 ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
2635 ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
2636 ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
2637 ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
2643 def km_clip_dopesheet_editor(_params):
2646 "Clip Dopesheet Editor",
2647 {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
2652 ("clip.dopesheet_select_channel", {"type": 'LEFTMOUSE', "value": 'PRESS'},
2653 {"properties": [("extend", True)]}),
2654 ("clip.dopesheet_view_all", {"type": 'HOME', "value": 'PRESS'}, None),
2655 ("clip.dopesheet_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
2661 # ------------------------------------------------------------------------------
2665 def km_frames(params):
2669 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
2675 ("screen.frame_offset", {"type": 'LEFT_ARROW', "value": 'PRESS'},
2676 {"properties": [("delta", -1)]}),
2677 ("screen.frame_offset", {"type": 'RIGHT_ARROW', "value": 'PRESS'},
2678 {"properties": [("delta", 1)]}),
2679 ("screen.frame_jump", {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
2680 {"properties": [("end", True)]}),
2681 ("screen.frame_jump", {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
2682 {"properties": [("end", False)]}),
2683 ("screen.keyframe_jump", {"type": 'UP_ARROW', "value": 'PRESS'},
2684 {"properties": [("next", True)]}),
2685 ("screen.keyframe_jump", {"type": 'DOWN_ARROW', "value": 'PRESS'},
2686 {"properties": [("next", False)]}),
2687 ("screen.keyframe_jump", {"type": 'MEDIA_LAST', "value": 'PRESS'},
2688 {"properties": [("next", True)]}),
2689 ("screen.keyframe_jump", {"type": 'MEDIA_FIRST', "value": 'PRESS'},
2690 {"properties": [("next", False)]}),
2693 if not params.legacy:
2695 if params.spacebar_action in {'TOOL', 'SEARCH'}:
2697 ("screen.animation_play", {"type": 'SPACE', "value": 'PRESS', "shift": True}, None),
2699 elif params.spacebar_action == 'PLAY':
2701 ("screen.animation_play", {"type": 'SPACE', "value": 'PRESS'}, None),
2707 ("screen.animation_play", {"type": 'SPACE', "value": 'PRESS', "shift": True, "ctrl": True},
2708 {"properties": [("reverse", True)]}),
2713 ("screen.frame_offset", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
2714 {"properties": [("delta", 10)]}),
2715 ("screen.frame_offset", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
2716 {"properties": [("delta", -10)]}),
2717 ("screen.frame_offset", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "alt": True},
2718 {"properties": [("delta", 1)]}),
2719 ("screen.frame_offset", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "alt": True},
2720 {"properties": [("delta", -1)]}),
2721 ("screen.frame_jump", {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2722 {"properties": [("end", True)]}),
2723 ("screen.frame_jump", {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
2724 {"properties": [("end", False)]}),
2725 ("screen.animation_play", {"type": 'A', "value": 'PRESS', "alt": True}, None),
2726 ("screen.animation_play", {"type": 'A', "value": 'PRESS', "shift": True, "alt": True},
2727 {"properties": [("reverse", True)]}),
2731 ("screen.animation_cancel", {"type": 'ESC', "value": 'PRESS'}, None),
2732 ("screen.animation_play", {"type": 'MEDIA_PLAY', "value": 'PRESS'}, None),
2733 ("screen.animation_cancel", {"type": 'MEDIA_STOP', "value": 'PRESS'}, None),
2739 def km_animation(params):
2743 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
2749 ("anim.change_frame", {"type": params.action_mouse, "value": 'PRESS'}, None),
2750 ("wm.context_toggle", {"type": 'T', "value": 'PRESS', "ctrl": True},
2751 {"properties": [("data_path", 'space_data.show_seconds')]}),
2753 ("anim.previewrange_set", {"type": 'P', "value": 'PRESS'}, None),
2754 ("anim.previewrange_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None),
2760 def km_animation_channels(params):
2763 "Animation Channels",
2764 {"space_type": 'EMPTY', "region_type": 'WINDOW'},
2770 ("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
2771 ("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
2772 {"properties": [("extend", True)]}),
2773 ("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
2774 {"properties": [("children_only", True)]}),
2776 ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
2777 ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
2779 ("anim.channel_select_keys", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
2780 ("anim.channel_select_keys", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK', "shift": True},