Keymap: move builtin keymaps from C to Python
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Thu, 8 Nov 2018 04:59:51 +0000 (15:59 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 9 Nov 2018 00:33:06 +0000 (11:33 +1100)
This should be purely an implementation change,
for end users there should be no functional difference.

The entire key configuration is in one file with ~5000 lines of code.
Mostly avoiding code duplication and preserve comments and utility
functions from the C code.
It's a bit long but for searching and editing it's also convenient to
have it all in one file.

Notes:

- Actual keymap is shared by blender / blender_legacy
  and stored in `keymap_data/blender_default.py`

  This only generates JSON-like data to be passed into
  `keyconfig_import_from_data`, allowing other presets to load and
  manipulate the default keymap.

- Each preset defines 'keyconfig_data'
  which can be shared between presets.

- Some of the utility functions for generating keymap items still
  need to be ported over to Python.

- Some keymap items can be made into loops (marked as TODO).

See: D3907

60 files changed:
release/scripts/modules/bpy/utils/__init__.py
release/scripts/modules/bpy_extras/keyconfig_utils.py
release/scripts/modules/bpy_extras/keyconfig_utils_experimental.py
release/scripts/presets/keyconfig/blender.py [new file with mode: 0644]
release/scripts/presets/keyconfig/blender_27x.py
release/scripts/presets/keyconfig/keymap_data/blender_default.py [new file with mode: 0644]
release/scripts/startup/bl_ui/space_userpref.py
source/blender/editors/animation/anim_channels_edit.c
source/blender/editors/animation/anim_markers.c
source/blender/editors/animation/anim_ops.c
source/blender/editors/armature/armature_ops.c
source/blender/editors/curve/curve_ops.c
source/blender/editors/gpencil/gpencil_ops.c
source/blender/editors/include/ED_markers.h
source/blender/editors/include/ED_object.h
source/blender/editors/include/ED_transform.h
source/blender/editors/interface/interface_eyedropper.c
source/blender/editors/interface/interface_ops.c
source/blender/editors/interface/view2d_ops.c
source/blender/editors/lattice/lattice_ops.c
source/blender/editors/mask/mask_edit.c
source/blender/editors/mesh/editmesh_knife.c
source/blender/editors/mesh/editmesh_tools.c
source/blender/editors/mesh/mesh_ops.c
source/blender/editors/metaball/mball_ops.c
source/blender/editors/object/object_ops.c
source/blender/editors/physics/physics_ops.c
source/blender/editors/screen/screen_ops.c
source/blender/editors/sculpt_paint/paint_intern.h
source/blender/editors/sculpt_paint/paint_ops.c
source/blender/editors/sculpt_paint/paint_stroke.c
source/blender/editors/sculpt_paint/sculpt.c
source/blender/editors/space_action/action_ops.c
source/blender/editors/space_action/space_action.c
source/blender/editors/space_api/spacetypes.c
source/blender/editors/space_buttons/space_buttons.c
source/blender/editors/space_clip/space_clip.c
source/blender/editors/space_console/space_console.c
source/blender/editors/space_file/space_file.c
source/blender/editors/space_graph/graph_ops.c
source/blender/editors/space_image/space_image.c
source/blender/editors/space_info/space_info.c
source/blender/editors/space_logic/space_logic.c
source/blender/editors/space_nla/nla_ops.c
source/blender/editors/space_node/node_ops.c
source/blender/editors/space_outliner/outliner_ops.c
source/blender/editors/space_sequencer/sequencer_ops.c
source/blender/editors/space_text/space_text.c
source/blender/editors/space_time/time_ops.c
source/blender/editors/space_view3d/view3d_edit.c
source/blender/editors/space_view3d/view3d_fly.c
source/blender/editors/space_view3d/view3d_ops.c
source/blender/editors/space_view3d/view3d_walk.c
source/blender/editors/transform/transform.c
source/blender/editors/transform/transform_ops.c
source/blender/editors/util/CMakeLists.txt
source/blender/editors/uvedit/uvedit_ops.c
source/blender/windowmanager/WM_keymap.h
source/blender/windowmanager/intern/wm_keymap_utils.c
source/blender/windowmanager/intern/wm_operators.c

index bb1ba5eb719506f5f9d2d0591fe874b24e49903e..eb1b93002a93bde8c09477128541947d96da7c3c 100644 (file)
@@ -261,6 +261,11 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
         _addon_utils.reset_all(reload_scripts=reload_scripts)
     del _initialize
 
+    # Load the default key configuration.
+    filepath = preset_find("blender", "keyconfig")
+    if filepath:
+        keyconfig_set(filepath)
+
     # run the active integration preset
     filepath = preset_find(_user_preferences.inputs.active_keyconfig,
                            "keyconfig")
index 3caf45a72af07e644326b215e17066cafe7eeba3..1cad1c965b02aeab930ba005c886ebae34962499 100644 (file)
@@ -477,4 +477,5 @@ def keyconfig_test(kc):
 from .keyconfig_utils_experimental import (
     keyconfig_export_as_data,
     keyconfig_import_from_data,
+    keyconfig_module_from_preset,
 )
index cd82460e8e004c39f612b1e07b2d7d69fe51b61f..b93da5ec6daef3b6994dace0d10d2b11d9c0a1f7 100644 (file)
@@ -21,6 +21,7 @@
 __all__ = (
     "keyconfig_export_as_data",
     "keyconfig_import_from_data",
+    "keyconfig_module_from_preset",
 )
 
 
@@ -242,3 +243,22 @@ def keyconfig_import_from_data(name, keyconfig_data):
                     kmi_props = kmi.properties
                     for attr, value in kmi_props_data:
                         kmi_props_setattr(kmi_props, attr, value)
+
+
+def keyconfig_module_from_preset(name, preset_reference_filename=None):
+    import os
+    import importlib.util
+    if preset_reference_filename is not None:
+        preset_path = os.path.join(os.path.dirname(preset_reference_filename), name + ".py")
+    else:
+        preset_path = None
+
+    # External presets may want to re-use other presets too.
+    if not (preset_path and os.path.exists(preset_path)):
+        preset_path = bpy.utils.preset_find(name, "keyconfig")
+
+    # module name isn't used or added to 'sys.modules'.
+    mod_spec = importlib.util.spec_from_file_location("__bl_keymap__", preset_path)
+    mod = importlib.util.module_from_spec(mod_spec)
+    mod_spec.loader.exec_module(mod)
+    return mod
diff --git a/release/scripts/presets/keyconfig/blender.py b/release/scripts/presets/keyconfig/blender.py
new file mode 100644 (file)
index 0000000..66db91d
--- /dev/null
@@ -0,0 +1,12 @@
+
+import os
+from bpy_extras.keyconfig_utils import (
+    keyconfig_import_from_data,
+    keyconfig_module_from_preset,
+)
+
+_mod = keyconfig_module_from_preset(os.path.join("keymap_data", "blender_default"), __file__)
+keyconfig_data = _mod.generate_keymaps()
+
+if __name__ == "__main__":
+    keyconfig_import_from_data("Blender", keyconfig_data)
index 3cb6388e43ef22010f5f030f28982d037b8f226c..2d9ea9d8f441611d018fbb1e329ec6b57b5d8840 100644 (file)
-keyconfig_data = \
-[("Window",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("wm.window_new", {"type": 'W', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.save_homefile", {"type": 'U', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'O', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("name", 'TOPBAR_MT_file_open_recent'),
-       ],
-      },
-     ),
-    ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.open_mainfile", {"type": 'F1', "value": 'PRESS'}, None),
-    ("wm.link", {"type": 'O', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("wm.append", {"type": 'F1', "value": 'PRESS', "shift": True}, None),
-    ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.save_mainfile", {"type": 'W', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("wm.save_as_mainfile", {"type": 'F2', "value": 'PRESS'}, None),
-    ("wm.save_as_mainfile",
-     {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("copy", True),
-       ],
-      },
-     ),
-    ("wm.window_fullscreen_toggle", {"type": 'F11', "value": 'PRESS', "alt": True}, None),
-    ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS', "alt": True}, None),
-    ("wm.redraw_timer", {"type": 'T', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("wm.debug_menu", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("wm.call_menu",
-     {"type": 'NDOF_BUTTON_MENU', "value": 'PRESS'},
-     {"properties":
-      [("name", 'USERPREF_MT_ndof_settings'),
-       ],
-      },
-     ),
-    ("wm.search_menu", {"type": 'SPACE', "value": 'PRESS'}, None),
-    ("wm.context_set_enum",
-     {"type": 'F3', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'NODE_EDITOR'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'F4', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'CONSOLE'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'F5', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'VIEW_3D'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'F6', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'GRAPH_EDITOR'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'F7', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'PROPERTIES'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'F8', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'SEQUENCE_EDITOR'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'F9', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'OUTLINER'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'F10', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'IMAGE_EDITOR'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'F11', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'TEXT_EDITOR'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'F12', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'area.type'),
-       ("value", 'DOPESHEET_EDITOR'),
-       ],
-      },
-     ),
-    ("wm.context_scale_float",
-     {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'user_preferences.inputs.ndof_sensitivity'),
-       ("value", 1.1),
-       ],
-      },
-     ),
-    ("wm.context_scale_float",
-     {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'user_preferences.inputs.ndof_sensitivity'),
-       ("value", 1.0),
-       ],
-      },
-     ),
-    ("wm.context_scale_float",
-     {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'user_preferences.inputs.ndof_sensitivity'),
-       ("value", 1.5),
-       ],
-      },
-     ),
-    ("wm.context_scale_float",
-     {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'user_preferences.inputs.ndof_sensitivity'),
-       ("value", 0.6666667),
-       ],
-      },
-     ),
-    ("info.reports_display_update", {"type": 'TIMER_REPORT', "value": 'ANY', "any": True}, None),
-    ],
-   },
-  ),
- ("Screen",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("screen.animation_step", {"type": 'TIMER0', "value": 'ANY', "any": True}, None),
-    ("screen.region_blend", {"type": 'TIMERREGION', "value": 'ANY', "any": True}, None),
-    ("screen.screen_set",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("screen.screen_set",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "shift": True}, None),
-    ("screen.screen_full_area",
-     {"type": 'SPACE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("use_hide_panels", True),
-       ],
-      },
-     ),
-    ("screen.screenshot", {"type": 'F3', "value": 'PRESS', "ctrl": True}, None),
-    ("screen.screencast", {"type": 'F3', "value": 'PRESS', "alt": True}, None),
-    ("screen.space_context_cycle",
-     {"type": 'TAB', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("direction", 'NEXT'),
-       ],
-      },
-     ),
-    ("screen.space_context_cycle",
-     {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("direction", 'PREV'),
-       ],
-      },
-     ),
-    ("screen.region_quadview", {"type": 'Q', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("screen.repeat_history", {"type": 'F3', "value": 'PRESS'}, None),
-    ("screen.repeat_last", {"type": 'R', "value": 'PRESS', "shift": True}, None),
-    ("screen.region_flip", {"type": 'F5', "value": 'PRESS'}, None),
-    ("screen.redo_last", {"type": 'F6', "value": 'PRESS'}, None),
-    ("script.reload", {"type": 'F8', "value": 'PRESS'}, None),
-    ("file.execute", {"type": 'RET', "value": 'PRESS'}, None),
-    ("file.execute", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
-    ("file.cancel", {"type": 'ESC', "value": 'PRESS'}, None),
-    ("ed.undo", {"type": 'Z', "value": 'PRESS', "ctrl": True}, None),
-    ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("render.render",
-     {"type": 'F12', "value": 'PRESS'},
-     {"properties":
-      [("use_viewport", True),
-       ],
-      },
-     ),
-    ("render.render",
-     {"type": 'F12', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("animation", True),
-       ("use_viewport", True),
-       ],
-      },
-     ),
-    ("render.view_cancel", {"type": 'ESC', "value": 'PRESS'}, None),
-    ("render.view_show", {"type": 'F11', "value": 'PRESS'}, None),
-    ("render.play_rendered_anim", {"type": 'F11', "value": 'PRESS', "ctrl": True}, None),
-    ("screen.userpref_show", {"type": 'U', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ],
-   },
-  ),
- ("User Interface",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("ui.eyedropper_color", {"type": 'E', "value": 'PRESS'}, None),
-    ("ui.eyedropper_colorband", {"type": 'E', "value": 'PRESS'}, None),
-    ("ui.eyedropper_colorband_point", {"type": 'E', "value": 'PRESS', "alt": True}, None),
-    ("ui.eyedropper_id", {"type": 'E', "value": 'PRESS'}, None),
-    ("ui.eyedropper_depth", {"type": 'E', "value": 'PRESS'}, None),
-    ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("ui.copy_data_path_button",
-     {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("full_path", True),
-       ],
-      },
-     ),
-    ("anim.keyframe_insert_button", {"type": 'I', "value": 'PRESS'}, None),
-    ("anim.keyframe_delete_button", {"type": 'I', "value": 'PRESS', "alt": True}, None),
-    ("anim.keyframe_clear_button", {"type": 'I', "value": 'PRESS', "shift": True, "alt": True}, None),
-    ("anim.driver_button_add", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
-    ("anim.driver_button_remove", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("anim.keyingset_button_add", {"type": 'K', "value": 'PRESS'}, None),
-    ("anim.keyingset_button_remove", {"type": 'K', "value": 'PRESS', "alt": True}, None),
-    ],
-   },
-  ),
- ("View2D",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
-    ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
-    ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
-    ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("view2d.ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
-    ("view2d.zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
-    ("view2d.zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
-    ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
-    ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
-    ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
-    ("view2d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
-    ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
-    ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
-    ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
-    ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
-    ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
-    ("view2d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
-    ],
-   },
-  ),
- ("Header",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("screen.header_toolbox", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("View2D Buttons List",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
-    ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
-    ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
-    ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
-    ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
-    ("view2d.scroll_down",
-     {"type": 'PAGE_DOWN', "value": 'PRESS'},
-     {"properties":
-      [("page", True),
-       ],
-      },
-     ),
-    ("view2d.scroll_up",
-     {"type": 'PAGE_UP', "value": 'PRESS'},
-     {"properties":
-      [("page", True),
-       ],
-      },
-     ),
-    ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
-    ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
-    ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
-    ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
-    ("view2d.reset", {"type": 'HOME', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Frames",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("screen.frame_offset",
-     {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("delta", 10),
-       ],
-      },
-     ),
-    ("screen.frame_offset",
-     {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("delta", -10),
-       ],
-      },
-     ),
-    ("screen.frame_offset",
-     {"type": 'LEFT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("screen.frame_offset",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("screen.frame_offset",
-     {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("screen.frame_offset",
-     {"type": 'WHEELUPMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("screen.frame_jump",
-     {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("end", True),
-       ],
-      },
-     ),
-    ("screen.frame_jump",
-     {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("end", False),
-       ],
-      },
-     ),
-    ("screen.frame_jump",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("end", True),
-       ],
-      },
-     ),
-    ("screen.frame_jump",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("end", False),
-       ],
-      },
-     ),
-    ("screen.keyframe_jump",
-     {"type": 'UP_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("next", True),
-       ],
-      },
-     ),
-    ("screen.keyframe_jump",
-     {"type": 'DOWN_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("next", False),
-       ],
-      },
-     ),
-    ("screen.keyframe_jump",
-     {"type": 'MEDIA_LAST', "value": 'PRESS'},
-     {"properties":
-      [("next", True),
-       ],
-      },
-     ),
-    ("screen.keyframe_jump",
-     {"type": 'MEDIA_FIRST', "value": 'PRESS'},
-     {"properties":
-      [("next", False),
-       ],
-      },
-     ),
-    ("screen.animation_play", {"type": 'A', "value": 'PRESS', "alt": True}, None),
-    ("screen.animation_play",
-     {"type": 'A', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("reverse", True),
-       ],
-      },
-     ),
-    ("screen.animation_cancel", {"type": 'ESC', "value": 'PRESS'}, None),
-    ("screen.animation_play", {"type": 'MEDIA_PLAY', "value": 'PRESS'}, None),
-    ("screen.animation_cancel", {"type": 'MEDIA_STOP', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Property Editor",
-  {"space_type": 'PROPERTIES', "region_type": 'WINDOW'},
-  {"items":
-   [("buttons.toolbox", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Info",
-  {"space_type": 'INFO', "region_type": 'WINDOW'},
-  {"items":
-   [("info.select_pick", {"type": 'SELECTMOUSE', "value": 'PRESS'}, None),
-    ("info.select_all_toggle", {"type": 'A', "value": 'PRESS'}, None),
-    ("info.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("info.report_replay", {"type": 'R', "value": 'PRESS'}, None),
-    ("info.report_delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("info.report_delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("info.report_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("Outliner",
-  {"space_type": 'OUTLINER', "region_type": 'WINDOW'},
-  {"items":
-   [("outliner.highlight_update", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None),
-    ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
-    ("outliner.item_activate",
-     {"type": 'LEFTMOUSE', "value": 'CLICK'},
-     {"properties":
-      [("extend", False),
-       ("recursive", False),
-       ],
-      },
-     ),
-    ("outliner.item_activate",
-     {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True},
-     {"properties":
-      [("extend", True),
-       ("recursive", False),
-       ],
-      },
-     ),
-    ("outliner.item_activate",
-     {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ("recursive", True),
-       ],
-      },
-     ),
-    ("outliner.item_activate",
-     {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ("recursive", True),
-       ],
-      },
-     ),
-    ("outliner.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("outliner.item_openclose",
-     {"type": 'RET', "value": 'PRESS'},
-     {"properties":
-      [("all", False),
-       ],
-      },
-     ),
-    ("outliner.item_openclose",
-     {"type": 'RET', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("all", True),
-       ],
-      },
-     ),
-    ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("outliner.operation", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
-    ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
-    ("outliner.show_hierarchy", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("outliner.show_active", {"type": 'PERIOD', "value": 'PRESS'}, None),
-    ("outliner.show_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("outliner.scroll_page",
-     {"type": 'PAGE_DOWN', "value": 'PRESS'},
-     {"properties":
-      [("up", False),
-       ],
-      },
-     ),
-    ("outliner.scroll_page",
-     {"type": 'PAGE_UP', "value": 'PRESS'},
-     {"properties":
-      [("up", True),
-       ],
-      },
-     ),
-    ("outliner.show_one_level", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
-    ("outliner.show_one_level",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
-     {"properties":
-      [("open", False),
-       ],
-      },
-     ),
-    ("outliner.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("outliner.expanded_toggle", {"type": 'A', "value": 'PRESS', "shift": True}, None),
-    ("outliner.keyingset_add_selected", {"type": 'K', "value": 'PRESS'}, None),
-    ("outliner.keyingset_remove_selected", {"type": 'K', "value": 'PRESS', "alt": True}, None),
-    ("anim.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
-    ("anim.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None),
-    ("outliner.drivers_add_selected", {"type": 'D', "value": 'PRESS'}, None),
-    ("outliner.drivers_delete_selected", {"type": 'D', "value": 'PRESS', "alt": True}, None),
-    ("outliner.collection_new", {"type": 'C', "value": 'PRESS'}, None),
-    ("outliner.collection_delete", {"type": 'X', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("3D View Generic",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("view3d.properties", {"type": 'N', "value": 'PRESS'}, None),
-    ("view3d.toolshelf", {"type": 'T', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Grease Pencil",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("gpencil.draw",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "key_modifier": 'D'},
-     {"properties":
-      [("mode", 'DRAW'),
-       ("wait_for_input", False),
-       ],
-      },
-     ),
-    ("gpencil.draw",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True, "key_modifier": 'D'},
-     {"properties":
-      [("mode", 'DRAW_STRAIGHT'),
-       ("wait_for_input", False),
-       ],
-      },
-     ),
-    ("gpencil.draw",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "key_modifier": 'D'},
-     {"properties":
-      [("mode", 'DRAW_POLY'),
-       ("wait_for_input", False),
-       ],
-      },
-     ),
-    ("gpencil.draw",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "key_modifier": 'D'},
-     {"properties":
-      [("mode", 'ERASER'),
-       ("wait_for_input", False),
-       ],
-      },
-     ),
-    ("gpencil.draw",
-     {"type": 'ERASER', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'ERASER'),
-       ("wait_for_input", False),
-       ],
-      },
-     ),
-    ("gpencil.editmode_toggle", {"type": 'TAB', "value": 'PRESS', "key_modifier": 'D'}, None),
-    ("wm.call_menu_pie",
-     {"type": 'Q', "value": 'PRESS', "key_modifier": 'D'},
-     {"properties":
-      [("name", 'GPENCIL_MT_pie_tool_palette'),
-       ],
-      },
-     ),
-    ("wm.call_menu_pie",
-     {"type": 'W', "value": 'PRESS', "key_modifier": 'D'},
-     {"properties":
-      [("name", 'GPENCIL_MT_pie_settings_palette'),
-       ],
-      },
-     ),
-    ("gpencil.blank_frame_add", {"type": 'B', "value": 'PRESS', "key_modifier": 'D'}, None),
-    ("gpencil.active_frames_delete_all", {"type": 'X', "value": 'PRESS', "key_modifier": 'D'}, None),
-    ],
-   },
-  ),
- ("Grease Pencil Stroke Edit Mode",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("gpencil.editmode_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
-    ("wm.call_menu_pie",
-     {"type": 'E', "value": 'PRESS', "key_modifier": 'D'},
-     {"properties":
-      [("name", 'GPENCIL_MT_pie_sculpt'),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path_primary", 'user_preferences.edit.grease_pencil_eraser_radius'),
-       ],
-      },
-     ),
-    ("gpencil.interpolate", {"type": 'E', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("gpencil.interpolate_sequence", {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("gpencil.brush_paint",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "key_modifier": 'E'},
-     {"properties":
-      [("wait_for_input", False),
-       ],
-      },
-     ),
-    ("gpencil.brush_paint",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True, "key_modifier": 'E'},
-     {"properties":
-      [("wait_for_input", False),
-       ],
-      },
-     ),
-    ("gpencil.brush_paint",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "key_modifier": 'E'},
-     {"properties":
-      [("wait_for_input", False),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.gpencil_sculpt.brush.strength'),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS'},
-     {"properties":
-      [("data_path_primary", 'tool_settings.gpencil_sculpt.brush.size'),
-       ],
-      },
-     ),
-    ("gpencil.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("gpencil.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("gpencil.select_circle", {"type": 'C', "value": 'PRESS'}, None),
-    ("gpencil.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("gpencil.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("gpencil.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("gpencil.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("gpencil.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("gpencil.select", {"type": 'SELECTMOUSE', "value": 'PRESS'}, None),
-    ("gpencil.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ("toggle", True),
-       ],
-      },
-     ),
-    ("gpencil.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("entire_strokes", True),
-       ],
-      },
-     ),
-    ("gpencil.select_linked", {"type": 'L', "value": 'PRESS'}, None),
-    ("gpencil.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
-    ("gpencil.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None),
-    ("gpencil.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("gpencil.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("gpencil.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("wm.call_menu",
-     {"type": 'X', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_gpencil_delete'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_gpencil_delete'),
-       ],
-      },
-     ),
-    ("gpencil.dissolve", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
-    ("gpencil.dissolve", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None),
-    ("gpencil.active_frames_delete_all", {"type": 'X', "value": 'PRESS', "shift": True}, None),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("name", 'GPENCIL_MT_gpencil_edit_specials'),
-       ],
-      },
-     ),
-    ("gpencil.stroke_join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
-    ("gpencil.stroke_join",
-     {"type": 'J', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'JOINCOPY'),
-       ],
-      },
-     ),
-    ("gpencil.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("gpencil.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'S', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'GPENCIL_MT_snap'),
-       ],
-      },
-     ),
-    ("gpencil.convert", {"type": 'C', "value": 'PRESS', "alt": True}, None),
-    ("gpencil.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("gpencil.hide",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("gpencil.hide",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("gpencil.selection_opacity_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, None),
-    ("gpencil.layer_isolate", {"type": 'NUMPAD_ASTERIX', "value": 'PRESS'}, None),
-    ("gpencil.move_to_layer", {"type": 'M', "value": 'PRESS'}, None),
-    ("gpencil.brush_select",
-     {"type": 'ONE', "value": 'PRESS'},
-     {"properties":
-      [("index", 0),
-       ],
-      },
-     ),
-    ("gpencil.brush_select",
-     {"type": 'TWO', "value": 'PRESS'},
-     {"properties":
-      [("index", 1),
-       ],
-      },
-     ),
-    ("gpencil.brush_select",
-     {"type": 'THREE', "value": 'PRESS'},
-     {"properties":
-      [("index", 2),
-       ],
-      },
-     ),
-    ("gpencil.brush_select",
-     {"type": 'FOUR', "value": 'PRESS'},
-     {"properties":
-      [("index", 3),
-       ],
-      },
-     ),
-    ("gpencil.brush_select",
-     {"type": 'FIVE', "value": 'PRESS'},
-     {"properties":
-      [("index", 4),
-       ],
-      },
-     ),
-    ("gpencil.brush_select",
-     {"type": 'SIX', "value": 'PRESS'},
-     {"properties":
-      [("index", 5),
-       ],
-      },
-     ),
-    ("gpencil.brush_select",
-     {"type": 'SEVEN', "value": 'PRESS'},
-     {"properties":
-      [("index", 6),
-       ],
-      },
-     ),
-    ("gpencil.brush_select",
-     {"type": 'EIGHT', "value": 'PRESS'},
-     {"properties":
-      [("index", 7),
-       ],
-      },
-     ),
-    ("gpencil.brush_select",
-     {"type": 'NINE', "value": 'PRESS'},
-     {"properties":
-      [("index", 8),
-       ],
-      },
-     ),
-    ("gpencil.brush_select",
-     {"type": 'ZERO', "value": 'PRESS'},
-     {"properties":
-      [("index", 9),
-       ],
-      },
-     ),
-    ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
-    ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
-    ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
-    ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None),
-    ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
-    ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ("transform.transform",
-     {"type": 'S', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'GPENCIL_SHRINKFATTEN'),
-       ],
-      },
-     ),
-    ("wm.context_cycle_enum",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit_falloff'),
-       ("wrap", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'ENABLED'),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'CONNECTED'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Face Mask",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("paint.face_select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("paint.face_select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("paint.face_select_hide",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("paint.face_select_hide",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("paint.face_select_reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("paint.face_select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
-    ("paint.face_select_linked_pick",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("paint.face_select_linked_pick",
-     {"type": 'L', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Weight Paint Vertex Selection",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("paint.vert_select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("paint.vert_select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("view3d.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("view3d.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Pose",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("object.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'A', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_add'),
-       ],
-      },
-     ),
-    ("pose.hide",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("pose.hide",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("pose.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("wm.call_menu",
-     {"type": 'A', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_pose_apply'),
-       ],
-      },
-     ),
-    ("pose.rot_clear", {"type": 'R', "value": 'PRESS', "alt": True}, None),
-    ("pose.loc_clear", {"type": 'G', "value": 'PRESS', "alt": True}, None),
-    ("pose.scale_clear", {"type": 'S', "value": 'PRESS', "alt": True}, None),
-    ("pose.quaternions_flip", {"type": 'F', "value": 'PRESS', "alt": True}, None),
-    ("pose.rotation_mode_set", {"type": 'R', "value": 'PRESS', "ctrl": True}, None),
-    ("pose.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("pose.paste",
-     {"type": 'V', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("flipped", False),
-       ],
-      },
-     ),
-    ("pose.paste",
-     {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("flipped", True),
-       ],
-      },
-     ),
-    ("pose.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("pose.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("pose.select_parent", {"type": 'P', "value": 'PRESS', "shift": True}, None),
-    ("pose.select_hierarchy",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'PARENT'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("pose.select_hierarchy",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'PARENT'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("pose.select_hierarchy",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'CHILD'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("pose.select_hierarchy",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'CHILD'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("pose.select_linked", {"type": 'L', "value": 'PRESS'}, None),
-    ("pose.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None),
-    ("pose.select_mirror", {"type": 'F', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("pose.constraint_add_with_targets", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("pose.constraints_clear", {"type": 'C', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("pose.ik_add", {"type": 'I', "value": 'PRESS', "shift": True}, None),
-    ("pose.ik_clear", {"type": 'I', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("wm.call_menu",
-     {"type": 'G', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_pose_group'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_bone_options_toggle'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_bone_options_enable'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_bone_options_disable'),
-       ],
-      },
-     ),
-    ("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None),
-    ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None),
-    ("pose.bone_layers", {"type": 'M', "value": 'PRESS'}, None),
-    ("wm.context_toggle",
-     {"type": 'Z', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.overlay.show_bone_select'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("mode", 'BONE_SIZE'),
-       ],
-      },
-     ),
-    ("anim.keyframe_insert_menu", {"type": 'I', "value": 'PRESS'}, None),
-    ("anim.keyframe_delete_v3d", {"type": 'I', "value": 'PRESS', "alt": True}, None),
-    ("anim.keying_set_active_set", {"type": 'I', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ("poselib.browse_interactive", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
-    ("poselib.pose_add", {"type": 'L', "value": 'PRESS', "shift": True}, None),
-    ("poselib.pose_remove", {"type": 'L', "value": 'PRESS', "alt": True}, None),
-    ("poselib.pose_rename", {"type": 'L', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("pose.push", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
-    ("pose.relax", {"type": 'E', "value": 'PRESS', "alt": True}, None),
-    ("pose.breakdown", {"type": 'E', "value": 'PRESS', "shift": True}, None),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_pose_specials'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'P', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_pose_propagate'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Object Mode",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("wm.context_cycle_enum",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit_falloff'),
-       ("wrap", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.use_proportional_edit_objects'),
-       ],
-      },
-     ),
-    ("object.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("object.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("object.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("object.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("object.select_linked", {"type": 'L', "value": 'PRESS', "shift": True}, None),
-    ("object.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None),
-    ("object.select_mirror", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("object.select_hierarchy",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'PARENT'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("object.select_hierarchy",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'PARENT'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("object.select_hierarchy",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'CHILD'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("object.select_hierarchy",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'CHILD'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("object.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
-    ("object.parent_no_inverse_set", {"type": 'P', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("object.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None),
-    ("object.track_set", {"type": 'T', "value": 'PRESS', "ctrl": True}, None),
-    ("object.track_clear", {"type": 'T', "value": 'PRESS', "alt": True}, None),
-    ("object.constraint_add_with_targets", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("object.constraints_clear", {"type": 'C', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("object.location_clear",
-     {"type": 'G', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("clear_delta", False),
-       ],
-      },
-     ),
-    ("object.rotation_clear",
-     {"type": 'R', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("clear_delta", False),
-       ],
-      },
-     ),
-    ("object.scale_clear",
-     {"type": 'S', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("clear_delta", False),
-       ],
-      },
-     ),
-    ("object.origin_clear", {"type": 'O', "value": 'PRESS', "alt": True}, None),
-    ("object.delete",
-     {"type": 'X', "value": 'PRESS'},
-     {"properties":
-      [("use_global", False),
-       ],
-      },
-     ),
-    ("object.delete",
-     {"type": 'X', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("use_global", True),
-       ],
-      },
-     ),
-    ("object.delete",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("use_global", False),
-       ],
-      },
-     ),
-    ("object.delete",
-     {"type": 'DEL', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("use_global", True),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'A', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_add'),
-       ],
-      },
-     ),
-    ("object.duplicates_make_real", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'A', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_object_apply'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'U', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_make_single_user'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'L', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_make_links'),
-       ],
-      },
-     ),
-    ("object.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("object.duplicate_move_linked", {"type": 'D', "value": 'PRESS', "alt": True}, None),
-    ("object.join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
-    ("object.convert", {"type": 'C', "value": 'PRESS', "alt": True}, None),
-    ("object.proxy_make", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("object.make_local", {"type": 'L', "value": 'PRESS'}, None),
-    ("anim.keyframe_insert_menu", {"type": 'I', "value": 'PRESS'}, None),
-    ("anim.keyframe_delete_v3d", {"type": 'I', "value": 'PRESS', "alt": True}, None),
-    ("anim.keying_set_active_set", {"type": 'I', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ("collection.create", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
-    ("collection.objects_remove", {"type": 'G', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("collection.objects_remove_all", {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ("collection.objects_add_active", {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("collection.objects_remove_active", {"type": 'G', "value": 'PRESS', "shift": True, "alt": True}, None),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_object_specials'),
-       ],
-      },
-     ),
-    ("object.data_transfer", {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("object.subdivision_set",
-     {"type": 'ZERO', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 0),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'ONE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 1),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'TWO', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 2),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'THREE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 3),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'FOUR', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 4),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'FIVE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 5),
-       ],
-      },
-     ),
-    ("object.move_to_collection", {"type": 'M', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Paint Curve",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("paintcurve.add_point_slide", {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("paintcurve.select", {"type": 'SELECTMOUSE', "value": 'PRESS'}, None),
-    ("paintcurve.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("paintcurve.slide", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("paintcurve.slide",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("align", True),
-       ],
-      },
-     ),
-    ("paintcurve.select",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("toggle", True),
-       ],
-      },
-     ),
-    ("paintcurve.cursor", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("paintcurve.delete_point", {"type": 'X', "value": 'PRESS'}, None),
-    ("paintcurve.delete_point", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("paintcurve.draw", {"type": 'RET', "value": 'PRESS'}, None),
-    ("paintcurve.draw", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
-    ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Curve",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("wm.call_menu",
-     {"type": 'A', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'TOPBAR_MT_edit_curve_add'),
-       ],
-      },
-     ),
-    ("curve.handle_type_set", {"type": 'V', "value": 'PRESS'}, None),
-    ("curve.vertex_add", {"type": 'ACTIONMOUSE', "value": 'CLICK', "ctrl": True}, None),
-    ("curve.draw",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("wait_for_input", False),
-       ],
-      },
-     ),
-    ("curve.draw",
-     {"type": 'PEN', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("wait_for_input", False),
-       ],
-      },
-     ),
-    ("curve.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("curve.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("curve.select_row", {"type": 'R', "value": 'PRESS', "shift": True}, None),
-    ("curve.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("curve.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("curve.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
-    ("curve.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None),
-    ("curve.select_linked_pick",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("curve.select_linked_pick",
-     {"type": 'L', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("curve.shortest_path_pick", {"type": 'SELECTMOUSE', "value": 'CLICK', "ctrl": True}, None),
-    ("curve.separate", {"type": 'P', "value": 'PRESS'}, None),
-    ("curve.split", {"type": 'Y', "value": 'PRESS'}, None),
-    ("curve.extrude_move", {"type": 'E', "value": 'PRESS'}, None),
-    ("curve.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("curve.make_segment", {"type": 'F', "value": 'PRESS'}, None),
-    ("curve.cyclic_toggle", {"type": 'C', "value": 'PRESS', "alt": True}, None),
-    ("wm.call_menu",
-     {"type": 'X', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_curve_delete'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_curve_delete'),
-       ],
-      },
-     ),
-    ("curve.dissolve_verts", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
-    ("curve.dissolve_verts", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None),
-    ("curve.tilt_clear", {"type": 'T', "value": 'PRESS', "alt": True}, None),
-    ("transform.tilt", {"type": 'T', "value": 'PRESS', "ctrl": True}, None),
-    ("transform.transform",
-     {"type": 'S', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'CURVE_SHRINKFATTEN'),
-       ],
-      },
-     ),
-    ("curve.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("curve.hide",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("curve.hide",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("curve.normals_make_consistent", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
-    ("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_curve_specials'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'H', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_hook'),
-       ],
-      },
-     ),
-    ("wm.context_cycle_enum",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit_falloff'),
-       ("wrap", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'ENABLED'),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'CONNECTED'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Image Paint",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("paint.image_paint",
-     {"type": 'LEFTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'NORMAL'),
-       ],
-      },
-     ),
-    ("paint.image_paint",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'INVERT'),
-       ],
-      },
-     ),
-    ("paint.brush_colors_flip", {"type": 'X', "value": 'PRESS'}, None),
-    ("paint.grab_clone", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
-    ("paint.sample_color", {"type": 'S', "value": 'PRESS'}, None),
-    ("brush.active_index_set",
-     {"type": 'ONE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 0),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'TWO', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 1),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'THREE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 2),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FOUR', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 3),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FIVE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 4),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SIX', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 5),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SEVEN', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 6),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'EIGHT', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 7),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'NINE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 8),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ZERO', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 9),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ONE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 10),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'TWO', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 11),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'THREE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 12),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FOUR', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 13),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FIVE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 14),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SIX', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 15),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SEVEN', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 16),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'EIGHT', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 17),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'NINE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 18),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ZERO', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'image_paint'),
-       ("index", 19),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 0.9),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 1.1111112),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS'},
-     {"properties":
-      [("data_path_primary", 'tool_settings.image_paint.brush.size'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.size'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'),
-       ("rotation_path", 'tool_settings.image_paint.brush.mask_texture_slot.angle'),
-       ("color_path", 'tool_settings.image_paint.brush.cursor_color_add'),
-       ("fill_color_path", 'tool_settings.image_paint.brush.color'),
-       ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'),
-       ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'),
-       ("zoom_path", 'space_data.zoom'),
-       ("image_id", 'tool_settings.image_paint.brush'),
-       ("secondary_tex", True),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.image_paint.brush.strength'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'),
-       ("rotation_path", 'tool_settings.image_paint.brush.mask_texture_slot.angle'),
-       ("color_path", 'tool_settings.image_paint.brush.cursor_color_add'),
-       ("fill_color_path", 'tool_settings.image_paint.brush.color'),
-       ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'),
-       ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.image_paint.brush'),
-       ("secondary_tex", True),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.image_paint.brush.texture_slot.angle'),
-       ("data_path_secondary", ''),
-       ("use_secondary", ''),
-       ("rotation_path", 'tool_settings.image_paint.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.image_paint.brush.cursor_color_add'),
-       ("fill_color_path", 'tool_settings.image_paint.brush.color'),
-       ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'),
-       ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.image_paint.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.image_paint.brush.mask_texture_slot.angle'),
-       ("data_path_secondary", ''),
-       ("use_secondary", ''),
-       ("rotation_path", 'tool_settings.image_paint.brush.mask_texture_slot.angle'),
-       ("color_path", 'tool_settings.image_paint.brush.cursor_color_add'),
-       ("fill_color_path", 'tool_settings.image_paint.brush.color'),
-       ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'),
-       ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.image_paint.brush'),
-       ("secondary_tex", True),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TRANSLATION'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'SCALE'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'ROTATION'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'TRANSLATION'),
-       ("texmode", 'SECONDARY'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("mode", 'SCALE'),
-       ("texmode", 'SECONDARY'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("mode", 'ROTATION'),
-       ("texmode", 'SECONDARY'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'M', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'image_paint_object.data.use_paint_mask'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'S', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.image_paint.brush.use_smooth_stroke'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'R', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_angle_control'),
-       ],
-      },
-     ),
-    ("wm.context_menu_enum",
-     {"type": 'E', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.image_paint.brush.stroke_method'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Vertex Paint",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("paint.vertex_paint", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("paint.brush_colors_flip", {"type": 'X', "value": 'PRESS'}, None),
-    ("paint.sample_color", {"type": 'S', "value": 'PRESS'}, None),
-    ("paint.vertex_color_set", {"type": 'K', "value": 'PRESS', "shift": True}, None),
-    ("brush.active_index_set",
-     {"type": 'ONE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 0),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'TWO', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 1),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'THREE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 2),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FOUR', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 3),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FIVE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 4),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SIX', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 5),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SEVEN', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 6),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'EIGHT', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 7),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'NINE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 8),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ZERO', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 9),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ONE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 10),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'TWO', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 11),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'THREE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 12),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FOUR', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 13),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FIVE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 14),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SIX', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 15),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SEVEN', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 16),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'EIGHT', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 17),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'NINE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 18),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ZERO', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'vertex_paint'),
-       ("index", 19),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 0.9),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 1.1111112),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS'},
-     {"properties":
-      [("data_path_primary", 'tool_settings.vertex_paint.brush.size'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.size'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'),
-       ("rotation_path", 'tool_settings.vertex_paint.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.vertex_paint.brush.cursor_color_add'),
-       ("fill_color_path", 'tool_settings.vertex_paint.brush.color'),
-       ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'),
-       ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.vertex_paint.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.vertex_paint.brush.strength'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'),
-       ("rotation_path", 'tool_settings.vertex_paint.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.vertex_paint.brush.cursor_color_add'),
-       ("fill_color_path", 'tool_settings.vertex_paint.brush.color'),
-       ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'),
-       ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.vertex_paint.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.vertex_paint.brush.texture_slot.angle'),
-       ("data_path_secondary", ''),
-       ("use_secondary", ''),
-       ("rotation_path", 'tool_settings.vertex_paint.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.vertex_paint.brush.cursor_color_add'),
-       ("fill_color_path", 'tool_settings.vertex_paint.brush.color'),
-       ("fill_color_override_path", 'tool_settings.unified_paint_settings.color'),
-       ("fill_color_override_test_path", 'tool_settings.unified_paint_settings.use_unified_color'),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.vertex_paint.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TRANSLATION'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'SCALE'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'ROTATION'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'TRANSLATION'),
-       ("texmode", 'SECONDARY'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("mode", 'SCALE'),
-       ("texmode", 'SECONDARY'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("mode", 'ROTATION'),
-       ("texmode", 'SECONDARY'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'M', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'vertex_paint_object.data.use_paint_mask'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'S', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.vertex_paint.brush.use_smooth_stroke'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'R', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_angle_control'),
-       ],
-      },
-     ),
-    ("wm.context_menu_enum",
-     {"type": 'E', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.vertex_paint.brush.stroke_method'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Weight Paint",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("paint.weight_paint", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("paint.weight_sample", {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("paint.weight_sample_group", {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("paint.weight_gradient",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("type", 'LINEAR'),
-       ],
-      },
-     ),
-    ("paint.weight_gradient",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("type", 'RADIAL'),
-       ],
-      },
-     ),
-    ("paint.weight_set", {"type": 'K', "value": 'PRESS', "shift": True}, None),
-    ("brush.active_index_set",
-     {"type": 'ONE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 0),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'TWO', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 1),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'THREE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 2),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FOUR', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 3),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FIVE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 4),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SIX', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 5),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SEVEN', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 6),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'EIGHT', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 7),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'NINE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 8),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ZERO', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 9),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ONE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 10),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'TWO', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 11),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'THREE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 12),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FOUR', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 13),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FIVE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 14),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SIX', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 15),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SEVEN', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 16),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'EIGHT', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 17),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'NINE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 18),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ZERO', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'weight_paint'),
-       ("index", 19),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 0.9),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 1.1111112),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS'},
-     {"properties":
-      [("data_path_primary", 'tool_settings.weight_paint.brush.size'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.size'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'),
-       ("rotation_path", 'tool_settings.weight_paint.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.weight_paint.brush.cursor_color_add'),
-       ("fill_color_path", ''),
-       ("fill_color_override_path", ''),
-       ("fill_color_override_test_path", ''),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.weight_paint.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.weight_paint.brush.strength'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'),
-       ("rotation_path", 'tool_settings.weight_paint.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.weight_paint.brush.cursor_color_add'),
-       ("fill_color_path", ''),
-       ("fill_color_override_path", ''),
-       ("fill_color_override_test_path", ''),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.weight_paint.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("data_path_primary", 'tool_settings.weight_paint.brush.weight'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.weight'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_weight'),
-       ("rotation_path", 'tool_settings.weight_paint.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.weight_paint.brush.cursor_color_add'),
-       ("fill_color_path", ''),
-       ("fill_color_override_path", ''),
-       ("fill_color_override_test_path", ''),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.weight_paint.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("wm.context_menu_enum",
-     {"type": 'E', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.vertex_paint.brush.stroke_method'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'M', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'weight_paint_object.data.use_paint_mask'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'V', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'weight_paint_object.data.use_paint_mask_vertex'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'S', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.weight_paint.brush.use_smooth_stroke'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Sculpt",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("sculpt.brush_stroke",
-     {"type": 'LEFTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'NORMAL'),
-       ],
-      },
-     ),
-    ("sculpt.brush_stroke",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'INVERT'),
-       ],
-      },
-     ),
-    ("sculpt.brush_stroke",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'SMOOTH'),
-       ],
-      },
-     ),
-    ("paint.hide_show",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("action", 'SHOW'),
-       ("area", 'INSIDE'),
-       ],
-      },
-     ),
-    ("paint.hide_show",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("action", 'HIDE'),
-       ("area", 'INSIDE'),
-       ],
-      },
-     ),
-    ("paint.hide_show",
-     {"type": 'H', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("action", 'SHOW'),
-       ("area", 'ALL'),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'ZERO', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 0),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'ONE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 1),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'TWO', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 2),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'THREE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 3),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'FOUR', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 4),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'FIVE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 5),
-       ],
-      },
-     ),
-    ("paint.mask_flood_fill",
-     {"type": 'M', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'VALUE'),
-       ("value", 0.0),
-       ],
-      },
-     ),
-    ("paint.mask_flood_fill",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'INVERT'),
-       ],
-      },
-     ),
-    ("paint.mask_lasso_gesture", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("wm.context_toggle",
-     {"type": 'M', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'scene.tool_settings.sculpt.show_mask'),
-       ],
-      },
-     ),
-    ("sculpt.dynamic_topology_toggle", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
-    ("sculpt.set_detail_size", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("object.subdivision_set",
-     {"type": 'PAGE_UP', "value": 'PRESS'},
-     {"properties":
-      [("level", 1),
-       ("relative", True),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'PAGE_DOWN', "value": 'PRESS'},
-     {"properties":
-      [("level", -1),
-       ("relative", True),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ONE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 0),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'TWO', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 1),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'THREE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 2),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FOUR', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 3),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FIVE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 4),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SIX', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 5),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SEVEN', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 6),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'EIGHT', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 7),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'NINE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 8),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ZERO', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 9),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ONE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 10),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'TWO', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 11),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'THREE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 12),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FOUR', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 13),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'FIVE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 14),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SIX', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 15),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'SEVEN', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 16),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'EIGHT', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 17),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'NINE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 18),
-       ],
-      },
-     ),
-    ("brush.active_index_set",
-     {"type": 'ZERO', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'sculpt'),
-       ("index", 19),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 0.9),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 1.1111112),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS'},
-     {"properties":
-      [("data_path_primary", 'tool_settings.sculpt.brush.size'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.size'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'),
-       ("rotation_path", 'tool_settings.sculpt.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.sculpt.brush.cursor_color_add'),
-       ("fill_color_path", ''),
-       ("fill_color_override_path", ''),
-       ("fill_color_override_test_path", ''),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.sculpt.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.sculpt.brush.strength'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'),
-       ("rotation_path", 'tool_settings.sculpt.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.sculpt.brush.cursor_color_add'),
-       ("fill_color_path", ''),
-       ("fill_color_override_path", ''),
-       ("fill_color_override_test_path", ''),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.sculpt.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.sculpt.brush.texture_slot.angle'),
-       ("data_path_secondary", ''),
-       ("use_secondary", ''),
-       ("rotation_path", 'tool_settings.sculpt.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.sculpt.brush.cursor_color_add'),
-       ("fill_color_path", ''),
-       ("fill_color_override_path", ''),
-       ("fill_color_override_test_path", ''),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.sculpt.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TRANSLATION'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'SCALE'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'ROTATION'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'TRANSLATION'),
-       ("texmode", 'SECONDARY'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("mode", 'SCALE'),
-       ("texmode", 'SECONDARY'),
-       ],
-      },
-     ),
-    ("brush.stencil_control",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("mode", 'ROTATION'),
-       ("texmode", 'SECONDARY'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'X', "value": 'PRESS'},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'DRAW'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'S', "value": 'PRESS'},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'SMOOTH'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'P', "value": 'PRESS'},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'PINCH'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'I', "value": 'PRESS'},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'INFLATE'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'G', "value": 'PRESS'},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'GRAB'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'LAYER'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'T', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'FLATTEN'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'C', "value": 'PRESS'},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'CLAY'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'C', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'CREASE'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'K', "value": 'PRESS'},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'SNAKE_HOOK'),
-       ],
-      },
-     ),
-    ("paint.brush_select",
-     {"type": 'M', "value": 'PRESS'},
-     {"properties":
-      [("paint_mode", 'SCULPT'),
-       ("sculpt_tool", 'MASK'),
-       ("toggle", True),
-       ("create_missing", True),
-       ],
-      },
-     ),
-    ("wm.context_menu_enum",
-     {"type": 'E', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.sculpt.brush.stroke_method'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'S', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.sculpt.brush.use_smooth_stroke'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'R', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_angle_control'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Mesh",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("mesh.loopcut_slide", {"type": 'R', "value": 'PRESS', "ctrl": True}, None),
-    ("mesh.offset_edge_loops_slide", {"type": 'R', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("mesh.inset", {"type": 'I', "value": 'PRESS'}, None),
-    ("mesh.poke", {"type": 'P', "value": 'PRESS', "alt": True}, None),
-    ("mesh.bevel",
-     {"type": 'B', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("vertex_only", False),
-       ],
-      },
-     ),
-    ("mesh.bevel",
-     {"type": 'B', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("vertex_only", True),
-       ],
-      },
-     ),
-    ("mesh.loop_select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", False),
-       ],
-      },
-     ),
-    ("mesh.loop_select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", True),
-       ],
-      },
-     ),
-    ("mesh.edgering_select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", False),
-       ],
-      },
-     ),
-    ("mesh.edgering_select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", True),
-       ],
-      },
-     ),
-    ("mesh.shortest_path_pick",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("use_fill", False),
-       ],
-      },
-     ),
-    ("mesh.shortest_path_pick",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("use_fill", True),
-       ],
-      },
-     ),
-    ("mesh.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("mesh.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("mesh.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("mesh.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("mesh.select_next_item", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("mesh.select_prev_item", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("mesh.select_non_manifold", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ("mesh.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
-    ("mesh.select_linked_pick",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("mesh.select_linked_pick",
-     {"type": 'L', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("mesh.faces_select_linked_flat", {"type": 'F', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ("wm.call_menu",
-     {"type": 'G', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_mesh_select_similar'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'TAB', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_mesh_select_mode'),
-       ],
-      },
-     ),
-    ("mesh.hide",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("mesh.hide",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("mesh.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("mesh.normals_make_consistent",
-     {"type": 'N', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("inside", False),
-       ],
-      },
-     ),
-    ("mesh.normals_make_consistent",
-     {"type": 'N', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("inside", True),
-       ],
-      },
-     ),
-    ("view3d.edit_mesh_extrude_move_normal", {"type": 'E', "value": 'PRESS'}, None),
-    ("wm.call_menu",
-     {"type": 'E', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_mesh_extrude'),
-       ],
-      },
-     ),
-    ("transform.edge_crease", {"type": 'E', "value": 'PRESS', "shift": True}, None),
-    ("mesh.spin", {"type": 'R', "value": 'PRESS', "alt": True}, None),
-    ("mesh.fill", {"type": 'F', "value": 'PRESS', "alt": True}, None),
-    ("mesh.beautify_fill", {"type": 'F', "value": 'PRESS', "shift": True, "alt": True}, None),
-    ("mesh.quads_convert_to_tris",
-     {"type": 'T', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("quad_method", 'BEAUTY'),
-       ("ngon_method", 'BEAUTY'),
-       ],
-      },
-     ),
-    ("mesh.quads_convert_to_tris",
-     {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("quad_method", 'FIXED'),
-       ("ngon_method", 'CLIP'),
-       ],
-      },
-     ),
-    ("mesh.tris_convert_to_quads", {"type": 'J', "value": 'PRESS', "alt": True}, None),
-    ("mesh.rip_move",
-     {"type": 'V', "value": 'PRESS'},
-     {"properties":
-      [("MESH_OT_rip",
-        [("use_fill", False),
-         ],
-        ),
-       ],
-      },
-     ),
-    ("mesh.rip_move",
-     {"type": 'V', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("MESH_OT_rip",
-        [("use_fill", True),
-         ],
-        ),
-       ],
-      },
-     ),
-    ("mesh.rip_edge_move", {"type": 'D', "value": 'PRESS', "alt": True}, None),
-    ("mesh.merge", {"type": 'M', "value": 'PRESS', "alt": True}, None),
-    ("transform.shrink_fatten", {"type": 'S', "value": 'PRESS', "alt": True}, None),
-    ("mesh.edge_face_add", {"type": 'F', "value": 'PRESS'}, None),
-    ("mesh.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("wm.call_menu",
-     {"type": 'A', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_mesh_add'),
-       ],
-      },
-     ),
-    ("mesh.separate", {"type": 'P', "value": 'PRESS'}, None),
-    ("mesh.split", {"type": 'Y', "value": 'PRESS'}, None),
-    ("mesh.vert_connect_path", {"type": 'J', "value": 'PRESS'}, None),
-    ("transform.vert_slide", {"type": 'V', "value": 'PRESS', "shift": True}, None),
-    ("mesh.dupli_extrude_cursor",
-     {"type": 'ACTIONMOUSE', "value": 'CLICK', "ctrl": True},
-     {"properties":
-      [("rotate_source", True),
-       ],
-      },
-     ),
-    ("mesh.dupli_extrude_cursor",
-     {"type": 'ACTIONMOUSE', "value": 'CLICK', "shift": True, "ctrl": True},
-     {"properties":
-      [("rotate_source", False),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'X', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_mesh_delete'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_mesh_delete'),
-       ],
-      },
-     ),
-    ("mesh.dissolve_mode", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
-    ("mesh.dissolve_mode", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None),
-    ("mesh.knife_tool",
-     {"type": 'K', "value": 'PRESS'},
-     {"properties":
-      [("use_occlude_geometry", True),
-       ("only_selected", False),
-       ],
-      },
-     ),
-    ("mesh.knife_tool",
-     {"type": 'K', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("use_occlude_geometry", False),
-       ("only_selected", True),
-       ],
-      },
-     ),
-    ("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_mesh_specials'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'F', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_mesh_faces'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'E', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_mesh_edges'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'V', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_mesh_vertices'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'H', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_hook'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'U', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_uv_map'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'G', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_vertex_group'),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'ZERO', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 0),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'ONE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 1),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'TWO', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 2),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'THREE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 3),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'FOUR', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 4),
-       ],
-      },
-     ),
-    ("object.subdivision_set",
-     {"type": 'FIVE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("level", 5),
-       ],
-      },
-     ),
-    ("wm.context_cycle_enum",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit_falloff'),
-       ("wrap", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'ENABLED'),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'CONNECTED'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Armature",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("armature.hide",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("armature.hide",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("armature.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("armature.align", {"type": 'A', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("armature.calculate_roll", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
-    ("armature.roll_clear", {"type": 'R', "value": 'PRESS', "alt": True}, None),
-    ("armature.switch_direction", {"type": 'F', "value": 'PRESS', "alt": True}, None),
-    ("armature.bone_primitive_add", {"type": 'A', "value": 'PRESS', "shift": True}, None),
-    ("armature.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
-    ("armature.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None),
-    ("armature.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("armature.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("armature.select_mirror",
-     {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("armature.select_hierarchy",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'PARENT'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("armature.select_hierarchy",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'PARENT'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("armature.select_hierarchy",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'CHILD'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("armature.select_hierarchy",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'CHILD'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("armature.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("armature.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("armature.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None),
-    ("armature.select_linked", {"type": 'L', "value": 'PRESS'}, None),
-    ("armature.shortest_path_pick", {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'X', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_armature_delete'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_edit_armature_delete'),
-       ],
-      },
-     ),
-    ("armature.dissolve", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
-    ("armature.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("armature.extrude_move", {"type": 'E', "value": 'PRESS'}, None),
-    ("armature.extrude_forked", {"type": 'E', "value": 'PRESS', "shift": True}, None),
-    ("armature.click_extrude", {"type": 'ACTIONMOUSE', "value": 'CLICK', "ctrl": True}, None),
-    ("armature.fill", {"type": 'F', "value": 'PRESS'}, None),
-    ("armature.merge", {"type": 'M', "value": 'PRESS', "alt": True}, None),
-    ("armature.split", {"type": 'Y', "value": 'PRESS'}, None),
-    ("armature.separate", {"type": 'P', "value": 'PRESS'}, None),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_bone_options_toggle'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_bone_options_enable'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_bone_options_disable'),
-       ],
-      },
-     ),
-    ("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None),
-    ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None),
-    ("armature.bone_layers", {"type": 'M', "value": 'PRESS'}, None),
-    ("transform.transform",
-     {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("mode", 'BONE_SIZE'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'S', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'BONE_ENVELOPE'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'R', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'BONE_ROLL'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_armature_specials'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Metaball",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("object.metaball_add", {"type": 'A', "value": 'PRESS', "shift": True}, None),
-    ("mball.reveal_metaelems", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("mball.hide_metaelems",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("mball.hide_metaelems",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("mball.delete_metaelems", {"type": 'X', "value": 'PRESS'}, None),
-    ("mball.delete_metaelems", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("mball.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("mball.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("mball.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("mball.select_similar", {"type": 'G', "value": 'PRESS', "shift": True}, None),
-    ("wm.context_cycle_enum",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit_falloff'),
-       ("wrap", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'ENABLED'),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'CONNECTED'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Lattice",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("lattice.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("lattice.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("lattice.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("lattice.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("object.vertex_parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
-    ("lattice.flip", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'H', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_hook'),
-       ],
-      },
-     ),
-    ("wm.context_cycle_enum",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit_falloff'),
-       ("wrap", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'ENABLED'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Particle",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("particle.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("particle.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("particle.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("particle.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("particle.select_linked",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("particle.select_linked",
-     {"type": 'L', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("particle.delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("particle.delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("particle.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("particle.hide",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("particle.hide",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("particle.brush_edit", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("particle.brush_edit", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS'},
-     {"properties":
-      [("data_path_primary", 'tool_settings.particle_edit.brush.size'),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.particle_edit.brush.strength'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("name", 'VIEW3D_MT_particle_specials'),
-       ],
-      },
-     ),
-    ("particle.weight_set", {"type": 'K', "value": 'PRESS', "shift": True}, None),
-    ("wm.context_cycle_enum",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit_falloff'),
-       ("wrap", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'ENABLED'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Font",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("font.style_toggle",
-     {"type": 'B', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("style", 'BOLD'),
-       ],
-      },
-     ),
-    ("font.style_toggle",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("style", 'ITALIC'),
-       ],
-      },
-     ),
-    ("font.style_toggle",
-     {"type": 'U', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("style", 'UNDERLINE'),
-       ],
-      },
-     ),
-    ("font.style_toggle",
-     {"type": 'P', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("style", 'SMALL_CAPS'),
-       ],
-      },
-     ),
-    ("font.delete",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_OR_SELECTION'),
-       ],
-      },
-     ),
-    ("font.delete",
-     {"type": 'DEL', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'NEXT_WORD'),
-       ],
-      },
-     ),
-    ("font.delete",
-     {"type": 'BACK_SPACE', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_OR_SELECTION'),
-       ],
-      },
-     ),
-    ("font.delete",
-     {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PREVIOUS_OR_SELECTION'),
-       ],
-      },
-     ),
-    ("font.delete",
-     {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PREVIOUS_WORD'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'HOME', "value": 'PRESS'},
-     {"properties":
-      [("type", 'LINE_BEGIN'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'END', "value": 'PRESS'},
-     {"properties":
-      [("type", 'LINE_END'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'LEFT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_CHARACTER'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_CHARACTER'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PREVIOUS_WORD'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'NEXT_WORD'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'UP_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_LINE'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'DOWN_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_LINE'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'PAGE_UP', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_PAGE'),
-       ],
-      },
-     ),
-    ("font.move",
-     {"type": 'PAGE_DOWN', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_PAGE'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'HOME', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'LINE_BEGIN'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'END', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'LINE_END'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PREVIOUS_CHARACTER'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'NEXT_CHARACTER'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'PREVIOUS_WORD'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'NEXT_WORD'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PREVIOUS_LINE'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'NEXT_LINE'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'PAGE_UP', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PREVIOUS_PAGE'),
-       ],
-      },
-     ),
-    ("font.move_select",
-     {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'NEXT_PAGE'),
-       ],
-      },
-     ),
-    ("font.change_spacing",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("font.change_spacing",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("font.change_character",
-     {"type": 'UP_ARROW', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("font.change_character",
-     {"type": 'DOWN_ARROW', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("font.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
-    ("font.text_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("font.text_cut", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
-    ("font.text_paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("font.line_break", {"type": 'RET', "value": 'PRESS'}, None),
-    ("font.text_insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
-    ("font.text_insert",
-     {"type": 'BACK_SPACE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("accent", True),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Object Non-modal",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("object.mode_set",
-     {"type": 'TAB', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'EDIT'),
-       ("toggle", True),
-       ],
-      },
-     ),
-    ("object.mode_set",
-     {"type": 'TAB', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'POSE'),
-       ("toggle", True),
-       ],
-      },
-     ),
-    ("object.mode_set",
-     {"type": 'V', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'VERTEX_PAINT'),
-       ("toggle", True),
-       ],
-      },
-     ),
-    ("object.mode_set",
-     {"type": 'TAB', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'WEIGHT_PAINT'),
-       ("toggle", True),
-       ],
-      },
-     ),
-    ("object.origin_set", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ],
-   },
-  ),
- ("3D View",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("view3d.cursor3d", {"type": 'ACTIONMOUSE', "value": 'CLICK'}, None),
-    ("view3d.rotate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
-    ("view3d.move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("view3d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("view3d.dolly", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("view3d.view_selected",
-     {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("use_all_regions", True),
-       ],
-      },
-     ),
-    ("view3d.view_selected",
-     {"type": 'NUMPAD_PERIOD', "value": 'PRESS'},
-     {"properties":
-      [("use_all_regions", False),
-       ],
-      },
-     ),
-    ("view3d.view_lock_to_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "shift": True}, None),
-    ("view3d.view_lock_clear", {"type": 'NUMPAD_PERIOD', "value": 'PRESS', "alt": True}, None),
-    ("view3d.navigate", {"type": 'F', "value": 'PRESS', "shift": True}, None),
-    ("view3d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
-    ("view3d.rotate", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
-    ("view3d.rotate", {"type": 'MOUSEROTATE', "value": 'ANY'}, None),
-    ("view3d.move", {"type": 'TRACKPADPAN', "value": 'ANY', "shift": True}, None),
-    ("view3d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
-    ("view3d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
-    ("view3d.zoom",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS'},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("view3d.zoom",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("view3d.zoom",
-     {"type": 'EQUAL', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("view3d.zoom",
-     {"type": 'MINUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("view3d.zoom",
-     {"type": 'WHEELINMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("view3d.zoom",
-     {"type": 'WHEELOUTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("view3d.dolly",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("view3d.dolly",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("view3d.dolly",
-     {"type": 'EQUAL', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("delta", 1),
-       ],
-      },
-     ),
-    ("view3d.dolly",
-     {"type": 'MINUS', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("delta", -1),
-       ],
-      },
-     ),
-    ("view3d.zoom_camera_1_to_1", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None),
-    ("view3d.view_center_camera", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("view3d.view_center_lock", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("view3d.view_center_cursor", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
-    ("view3d.view_center_pick", {"type": 'F', "value": 'PRESS', "alt": True}, None),
-    ("view3d.view_all",
-     {"type": 'HOME', "value": 'PRESS'},
-     {"properties":
-      [("center", False),
-       ],
-      },
-     ),
-    ("view3d.view_all",
-     {"type": 'HOME', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("use_all_regions", True),
-       ("center", False),
-       ],
-      },
-     ),
-    ("view3d.view_all",
-     {"type": 'C', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("center", True),
-       ],
-      },
-     ),
-    ("view3d.view_camera", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_1', "value": 'PRESS'},
-     {"properties":
-      [("type", 'FRONT'),
-       ],
-      },
-     ),
-    ("view3d.view_orbit",
-     {"type": 'NUMPAD_2', "value": 'PRESS'},
-     {"properties":
-      [("type", 'ORBITDOWN'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_3', "value": 'PRESS'},
-     {"properties":
-      [("type", 'RIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_orbit",
-     {"type": 'NUMPAD_4', "value": 'PRESS'},
-     {"properties":
-      [("type", 'ORBITLEFT'),
-       ],
-      },
-     ),
-    ("view3d.view_persportho", {"type": 'NUMPAD_5', "value": 'PRESS'}, None),
-    ("view3d.view_orbit",
-     {"type": 'NUMPAD_6', "value": 'PRESS'},
-     {"properties":
-      [("type", 'ORBITRIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_7', "value": 'PRESS'},
-     {"properties":
-      [("type", 'TOP'),
-       ],
-      },
-     ),
-    ("view3d.view_orbit",
-     {"type": 'NUMPAD_8', "value": 'PRESS'},
-     {"properties":
-      [("type", 'ORBITUP'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_1', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'BACK'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_3', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'LEFT'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_7', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'BOTTOM'),
-       ],
-      },
-     ),
-    ("view3d.view_pan",
-     {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PANDOWN'),
-       ],
-      },
-     ),
-    ("view3d.view_pan",
-     {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PANLEFT'),
-       ],
-      },
-     ),
-    ("view3d.view_pan",
-     {"type": 'NUMPAD_6', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PANRIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_pan",
-     {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PANUP'),
-       ],
-      },
-     ),
-    ("view3d.view_roll",
-     {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'LEFT'),
-       ],
-      },
-     ),
-    ("view3d.view_roll",
-     {"type": 'NUMPAD_6', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'RIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_orbit",
-     {"type": 'NUMPAD_9', "value": 'PRESS'},
-     {"properties":
-      [("angle", 3.1415927),
-       ("type", 'ORBITRIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_pan",
-     {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PANRIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_pan",
-     {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PANLEFT'),
-       ],
-      },
-     ),
-    ("view3d.view_pan",
-     {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PANUP'),
-       ],
-      },
-     ),
-    ("view3d.view_pan",
-     {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PANDOWN'),
-       ],
-      },
-     ),
-    ("view3d.view_orbit",
-     {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("type", 'ORBITLEFT'),
-       ],
-      },
-     ),
-    ("view3d.view_orbit",
-     {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("type", 'ORBITRIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_orbit",
-     {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("type", 'ORBITUP'),
-       ],
-      },
-     ),
-    ("view3d.view_orbit",
-     {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("type", 'ORBITDOWN'),
-       ],
-      },
-     ),
-    ("view3d.view_roll",
-     {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'LEFT'),
-       ],
-      },
-     ),
-    ("view3d.view_roll",
-     {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'RIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'FRONT'),
-       ("align_active", True),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'RIGHT'),
-       ("align_active", True),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'TOP'),
-       ("align_active", True),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'BACK'),
-       ("align_active", True),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'LEFT'),
-       ("align_active", True),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'BOTTOM'),
-       ("align_active", True),
-       ],
-      },
-     ),
-    ("view3d.ndof_orbit_zoom", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
-    ("view3d.ndof_orbit", {"type": 'NDOF_MOTION', "value": 'ANY', "ctrl": True}, None),
-    ("view3d.ndof_pan", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True}, None),
-    ("view3d.ndof_all", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True, "ctrl": True}, None),
-    ("view3d.view_selected",
-     {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'},
-     {"properties":
-      [("use_all_regions", False),
-       ],
-      },
-     ),
-    ("view3d.view_roll",
-     {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'LEFT'),
-       ],
-      },
-     ),
-    ("view3d.view_roll",
-     {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'RIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS'},
-     {"properties":
-      [("type", 'FRONT'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NDOF_BUTTON_BACK', "value": 'PRESS'},
-     {"properties":
-      [("type", 'BACK'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NDOF_BUTTON_LEFT', "value": 'PRESS'},
-     {"properties":
-      [("type", 'LEFT'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS'},
-     {"properties":
-      [("type", 'RIGHT'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS'},
-     {"properties":
-      [("type", 'TOP'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NDOF_BUTTON_BOTTOM', "value": 'PRESS'},
-     {"properties":
-      [("type", 'BOTTOM'),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'FRONT'),
-       ("align_active", True),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NDOF_BUTTON_RIGHT', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'RIGHT'),
-       ("align_active", True),
-       ],
-      },
-     ),
-    ("view3d.view_axis",
-     {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'TOP'),
-       ("align_active", True),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'ACCENT_GRAVE', "value": 'PRESS'},
-     {"properties":
-      [("nr", 0),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'ONE', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 1),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'TWO', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 2),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'THREE', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 3),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'FOUR', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 4),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'FIVE', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 5),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'SIX', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 6),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'SEVEN', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 7),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'EIGHT', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 8),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'NINE', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 9),
-       ],
-      },
-     ),
-    ("view3d.layers",
-     {"type": 'ZERO', "value": 'PRESS', "any": True},
-     {"properties":
-      [("nr", 10),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'Z', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.shading.type'),
-       ("value_1", 'WIREFRAME'),
-       ("value_2", 'SOLID'),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'Z', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'space_data.shading.type'),
-       ("value_1", 'RENDERED'),
-       ("value_2", 'SOLID'),
-      ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'Z', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("data_path", 'space_data.shading.type'),
-       ("value_1", 'MATERIAL'),
-       ("value_2", 'SOLID'),
-      ],
-      },
-     ),
-    ("view3d.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", False),
-       ("center", False),
-       ("enumerate", False),
-       ("object", False),
-       ],
-      },
-     ),
-    ("view3d.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", True),
-       ("center", False),
-       ("enumerate", False),
-       ("object", False),
-       ],
-      },
-     ),
-    ("view3d.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", False),
-       ("center", True),
-       ("enumerate", False),
-       ("object", True),
-       ],
-      },
-     ),
-    ("view3d.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", False),
-       ("center", False),
-       ("enumerate", True),
-       ("object", False),
-       ],
-      },
-     ),
-    ("view3d.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ("deselect", False),
-       ("toggle", True),
-       ("center", True),
-       ("enumerate", False),
-       ("object", False),
-       ],
-      },
-     ),
-    ("view3d.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", False),
-       ("center", True),
-       ("enumerate", True),
-       ("object", False),
-       ],
-      },
-     ),
-    ("view3d.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", True),
-       ("center", False),
-       ("enumerate", True),
-       ("object", False),
-       ],
-      },
-     ),
-    ("view3d.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", True),
-       ("center", True),
-       ("enumerate", True),
-       ("object", False),
-       ],
-      },
-     ),
-    ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("view3d.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("view3d.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None),
-    ("view3d.clip_border", {"type": 'B', "value": 'PRESS', "alt": True}, None),
-    ("view3d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
-    ("view3d.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
-    ("view3d.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("view3d.camera_to_view", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("view3d.object_as_camera", {"type": 'NUMPAD_0', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'S', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'VIEW3D_MT_snap'),
-       ],
-      },
-     ),
-    ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.context_set_enum",
-     {"type": 'COMMA', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.transform_pivot_point'),
-       ("value", 'BOUNDING_BOX_CENTER'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'COMMA', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'tool_settings.transform_pivot_point'),
-       ("value", 'MEDIAN_POINT'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'COMMA', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("data_path", 'tool_settings.use_transform_pivot_point_align'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'PERIOD', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.transform_pivot_point'),
-       ("value", 'CURSOR'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'PERIOD', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'tool_settings.transform_pivot_point'),
-       ("value", 'INDIVIDUAL_ORIGINS'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'PERIOD', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("data_path", 'tool_settings.transform_pivot_point'),
-       ("value", 'ACTIVE_ELEMENT'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'SPACE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.show_manipulator'),
-       ],
-      },
-     ),
-    ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
-    ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
-    ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None),
-    ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
-    ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ("transform.select_orientation", {"type": 'SPACE', "value": 'PRESS', "alt": True}, None),
-    ("transform.create_orientation",
-     {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("use", True),
-       ],
-      },
-     ),
-    ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.context_toggle",
-     {"type": 'TAB', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.use_snap'),
-       ],
-      },
-     ),
-    ("wm.context_menu_enum",
-     {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("data_path", 'tool_settings.snap_element'),
-       ],
-      },
-     ),
-    ("object.transform_axis_target", {"type": 'T', "value": 'PRESS', "shift": True}, None),
-    ("transform.translate",
-     {"type": 'T', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("texture_space", True),
-       ],
-      },
-     ),
-    ("transform.resize",
-     {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("texture_space", True),
-       ],
-      },
-     ),
-    ("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("Manipulators",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [],
-   },
-  ),
- ("Backdrop Transform Widget",
-  {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Backdrop Crop Widget",
-  {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Sun Beams Widget",
-  {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Corner Pin Widget",
-  {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("UV Transform Manipulator",
-  {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Spot Light Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Area Light Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Target Light Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Force Field Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Camera Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Camera View Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Armature Spline Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("View3D Navigate",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Animation",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("anim.change_frame", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("wm.context_toggle",
-     {"type": 'T', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.show_seconds'),
-       ],
-      },
-     ),
-    ("anim.previewrange_set", {"type": 'P', "value": 'PRESS'}, None),
-    ("anim.previewrange_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None),
-    ],
-   },
-  ),
- ("Animation Channels",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("anim.channels_click", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("anim.channels_click",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("anim.channels_click",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("children_only", True),
-       ],
-      },
-     ),
-    ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("anim.channels_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
-    ("anim.channel_select_keys", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
-    ("anim.channel_select_keys",
-     {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
-    ("anim.channels_select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("anim.channels_select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("anim.channels_select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
-    ("anim.channels_delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("anim.channels_delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("anim.channels_setting_toggle", {"type": 'W', "value": 'PRESS', "shift": True}, None),
-    ("anim.channels_setting_enable", {"type": 'W', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("anim.channels_setting_disable", {"type": 'W', "value": 'PRESS', "alt": True}, None),
-    ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
-    ("anim.channels_expand", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
-    ("anim.channels_collapse", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
-    ("anim.channels_expand",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("all", False),
-       ],
-      },
-     ),
-    ("anim.channels_collapse",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("all", False),
-       ],
-      },
-     ),
-    ("anim.channels_move",
-     {"type": 'PAGE_UP', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'UP'),
-       ],
-      },
-     ),
-    ("anim.channels_move",
-     {"type": 'PAGE_DOWN', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'DOWN'),
-       ],
-      },
-     ),
-    ("anim.channels_move",
-     {"type": 'PAGE_UP', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'TOP'),
-       ],
-      },
-     ),
-    ("anim.channels_move",
-     {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'BOTTOM'),
-       ],
-      },
-     ),
-    ("anim.channels_group", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
-    ("anim.channels_ungroup", {"type": 'G', "value": 'PRESS', "alt": True}, None),
-    ],
-   },
-  ),
- ("UV Editor",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("wm.context_toggle",
-     {"type": 'Q', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.use_uv_sculpt'),
-       ],
-      },
-     ),
-    ("uv.mark_seam", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
-    ("uv.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("uv.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("uv.select_loop",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("uv.select_loop",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("uv.select_split", {"type": 'Y', "value": 'PRESS'}, None),
-    ("uv.select_box",
-     {"type": 'B', "value": 'PRESS'},
-     {"properties":
-      [("pinned", False),
-       ],
-      },
-     ),
-    ("uv.select_box",
-     {"type": 'B', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("pinned", True),
-       ],
-      },
-     ),
-    ("uv.circle_select", {"type": 'C', "value": 'PRESS'}, None),
-    ("uv.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("uv.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("uv.select_linked",
-     {"type": 'L', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ("deselect", False),
-       ],
-      },
-     ),
-    ("uv.select_linked_pick",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("extend", True),
-       ("deselect", False),
-       ],
-      },
-     ),
-    ("uv.select_linked",
-     {"type": 'L', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", True),
-       ],
-      },
-     ),
-    ("uv.select_linked_pick",
-     {"type": 'L', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", True),
-       ],
-      },
-     ),
-    ("uv.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("uv.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("uv.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("uv.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("uv.select_pinned", {"type": 'P', "value": 'PRESS', "shift": True}, None),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("name", 'IMAGE_MT_uvs_weldalign'),
-       ],
-      },
-     ),
-    ("uv.stitch", {"type": 'V', "value": 'PRESS'}, None),
-    ("uv.pin",
-     {"type": 'P', "value": 'PRESS'},
-     {"properties":
-      [("clear", False),
-       ],
-      },
-     ),
-    ("uv.pin",
-     {"type": 'P', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("clear", True),
-       ],
-      },
-     ),
-    ("uv.unwrap", {"type": 'E', "value": 'PRESS'}, None),
-    ("uv.minimize_stretch", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("uv.pack_islands", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
-    ("uv.average_islands_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
-    ("uv.hide",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("uv.hide",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("uv.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("uv.cursor_set", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("wm.call_menu",
-     {"type": 'S', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'IMAGE_MT_uvs_snap'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'TAB', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("name", 'IMAGE_MT_uvs_select_mode'),
-       ],
-      },
-     ),
-    ("wm.context_cycle_enum",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit_falloff'),
-       ("wrap", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit'),
-       ("value_1", 'DISABLED'),
-       ("value_2", 'ENABLED'),
-       ],
-      },
-     ),
-    ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
-    ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
-    ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.context_toggle",
-     {"type": 'TAB', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.use_snap'),
-       ],
-      },
-     ),
-    ("wm.context_menu_enum",
-     {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("data_path", 'tool_settings.snap_uv_element'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("UV Sculpt",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("wm.context_toggle",
-     {"type": 'Q', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.use_uv_sculpt'),
-       ],
-      },
-     ),
-    ("sculpt.uv_sculpt_stroke",
-     {"type": 'LEFTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'NORMAL'),
-       ],
-      },
-     ),
-    ("sculpt.uv_sculpt_stroke",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'INVERT'),
-       ],
-      },
-     ),
-    ("sculpt.uv_sculpt_stroke",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'RELAX'),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 0.9),
-       ],
-      },
-     ),
-    ("brush.scale_size",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("scalar", 1.1111112),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS'},
-     {"properties":
-      [("data_path_primary", 'tool_settings.uv_sculpt.brush.size'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.size'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_size'),
-       ("rotation_path", 'tool_settings.uv_sculpt.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.uv_sculpt.brush.cursor_color_add'),
-       ("fill_color_path", ''),
-       ("fill_color_override_path", ''),
-       ("fill_color_override_test_path", ''),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.uv_sculpt.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("wm.radial_control",
-     {"type": 'F', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path_primary", 'tool_settings.uv_sculpt.brush.strength'),
-       ("data_path_secondary", 'tool_settings.unified_paint_settings.strength'),
-       ("use_secondary", 'tool_settings.unified_paint_settings.use_unified_strength'),
-       ("rotation_path", 'tool_settings.uv_sculpt.brush.texture_slot.angle'),
-       ("color_path", 'tool_settings.uv_sculpt.brush.cursor_color_add'),
-       ("fill_color_path", ''),
-       ("fill_color_override_path", ''),
-       ("fill_color_override_test_path", ''),
-       ("zoom_path", ''),
-       ("image_id", 'tool_settings.uv_sculpt.brush'),
-       ("secondary_tex", False),
-       ],
-      },
-     ),
-    ("brush.uv_sculpt_tool_set",
-     {"type": 'S', "value": 'PRESS'},
-     {"properties":
-      [("tool", 'RELAX'),
-       ],
-      },
-     ),
-    ("brush.uv_sculpt_tool_set",
-     {"type": 'P', "value": 'PRESS'},
-     {"properties":
-      [("tool", 'PINCH'),
-       ],
-      },
-     ),
-    ("brush.uv_sculpt_tool_set",
-     {"type": 'G', "value": 'PRESS'},
-     {"properties":
-      [("tool", 'GRAB'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Mask Editing",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("mask.new", {"type": 'N', "value": 'PRESS', "alt": True}, None),
-    ("wm.call_menu",
-     {"type": 'A', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'MASK_MT_add'),
-       ],
-      },
-     ),
-    ("wm.context_cycle_enum",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.proportional_edit_falloff'),
-       ("wrap", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.use_proportional_edit_mask'),
-       ],
-      },
-     ),
-    ("mask.add_vertex_slide", {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("mask.add_feather_vertex_slide", {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("mask.delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("mask.delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("mask.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", False),
-       ],
-      },
-     ),
-    ("mask.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", False),
-       ("deselect", False),
-       ("toggle", True),
-       ],
-      },
-     ),
-    ("mask.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("mask.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("mask.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
-    ("mask.select_linked_pick",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("mask.select_linked_pick",
-     {"type": 'L', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("mask.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("mask.select_circle", {"type": 'C', "value": 'PRESS'}, None),
-    ("mask.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("mask.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("mask.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("mask.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("mask.hide_view_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("mask.hide_view_set",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("mask.hide_view_set",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("clip.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("mask.cyclic_toggle", {"type": 'C', "value": 'PRESS', "alt": True}, None),
-    ("mask.slide_point", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("mask.slide_spline_curvature", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("mask.handle_type_set", {"type": 'V', "value": 'PRESS'}, None),
-    ("mask.normals_make_consistent", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
-    ("mask.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
-    ("mask.parent_clear", {"type": 'P', "value": 'PRESS', "alt": True}, None),
-    ("mask.shape_key_insert", {"type": 'I', "value": 'PRESS'}, None),
-    ("mask.shape_key_clear", {"type": 'I', "value": 'PRESS', "alt": True}, None),
-    ("mask.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("mask.copy_splines", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("mask.paste_splines", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("uv.cursor_set", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
-    ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
-    ("transform.transform",
-     {"type": 'S', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'MASK_SHRINKFATTEN'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Markers",
-  {"space_type": 'EMPTY', "region_type": 'WINDOW'},
-  {"items":
-   [("marker.add", {"type": 'M', "value": 'PRESS'}, None),
-    ("marker.move", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("marker.duplicate", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("marker.select", {"type": 'SELECTMOUSE', "value": 'PRESS'}, None),
-    ("marker.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("marker.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ("camera", True),
-       ],
-      },
-     ),
-    ("marker.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ("camera", True),
-       ],
-      },
-     ),
-    ("marker.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("marker.select_all", {"type": 'A', "value": 'PRESS'}, None),
-    ("marker.delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
-    ("marker.move", {"type": 'G', "value": 'PRESS'}, None),
-    ("marker.camera_bind", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("Graph Editor Generic",
-  {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("graph.properties", {"type": 'N', "value": 'PRESS'}, None),
-    ("graph.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None),
-    ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
-    ("graph.hide",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("graph.hide",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("graph.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ],
-   },
-  ),
- ("Graph Editor",
-  {"space_type": 'GRAPH_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("wm.context_toggle",
-     {"type": 'H', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.show_handles'),
-       ],
-      },
-     ),
-    ("graph.cursor_set", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("graph.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ("column", False),
-       ("curves", False),
-       ],
-      },
-     ),
-    ("graph.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("extend", False),
-       ("column", True),
-       ("curves", False),
-       ],
-      },
-     ),
-    ("graph.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ("column", False),
-       ("curves", False),
-       ],
-      },
-     ),
-    ("graph.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ("column", True),
-       ("curves", False),
-       ],
-      },
-     ),
-    ("graph.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ("column", False),
-       ("curves", True),
-       ],
-      },
-     ),
-    ("graph.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ("column", False),
-       ("curves", True),
-       ],
-      },
-     ),
-    ("graph.select_leftright",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'CHECK'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("graph.select_leftright",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("mode", 'CHECK'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("graph.select_leftright",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'LEFT'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("graph.select_leftright",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'RIGHT'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("graph.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("graph.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("graph.select_box",
-     {"type": 'B', "value": 'PRESS'},
-     {"properties":
-      [("axis_range", False),
-       ("include_handles", False),
-       ],
-      },
-     ),
-    ("graph.select_box",
-     {"type": 'B', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("axis_range", True),
-       ("include_handles", False),
-       ],
-      },
-     ),
-    ("graph.select_box",
-     {"type": 'B', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("axis_range", False),
-       ("include_handles", True),
-       ],
-      },
-     ),
-    ("graph.select_box",
-     {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("axis_range", True),
-       ("include_handles", True),
-       ],
-      },
-     ),
-    ("graph.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("graph.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("graph.select_circle", {"type": 'C', "value": 'PRESS'}, None),
-    ("graph.select_column",
-     {"type": 'K', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'KEYS'),
-       ],
-      },
-     ),
-    ("graph.select_column",
-     {"type": 'K', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'CFRA'),
-       ],
-      },
-     ),
-    ("graph.select_column",
-     {"type": 'K', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'MARKERS_COLUMN'),
-       ],
-      },
-     ),
-    ("graph.select_column",
-     {"type": 'K', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'MARKERS_BETWEEN'),
-       ],
-      },
-     ),
-    ("graph.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("graph.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("graph.select_linked", {"type": 'L', "value": 'PRESS'}, None),
-    ("graph.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
-    ("graph.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None),
-    ("graph.mirror", {"type": 'M', "value": 'PRESS', "shift": True}, None),
-    ("graph.handle_type", {"type": 'V', "value": 'PRESS'}, None),
-    ("graph.interpolation_type", {"type": 'T', "value": 'PRESS'}, None),
-    ("graph.easing_type", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
-    ("graph.smooth", {"type": 'O', "value": 'PRESS', "alt": True}, None),
-    ("graph.sample", {"type": 'O', "value": 'PRESS', "shift": True}, None),
-    ("graph.bake", {"type": 'C', "value": 'PRESS', "alt": True}, None),
-    ("wm.call_menu",
-     {"type": 'X', "value": 'PRESS'},
-     {"properties":
-      [("name", 'GRAPH_MT_delete'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("name", 'GRAPH_MT_delete'),
-       ],
-      },
-     ),
-    ("graph.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("graph.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
-    ("graph.click_insert",
-     {"type": 'ACTIONMOUSE', "value": 'CLICK', "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("graph.click_insert",
-     {"type": 'ACTIONMOUSE', "value": 'CLICK', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("graph.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("graph.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("graph.paste",
-     {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("flipped", True),
-       ],
-      },
-     ),
-    ("graph.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("graph.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("graph.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ("graph.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("graph.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
-    ("graph.fmodifier_add",
-     {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("only_active", False),
-       ],
-      },
-     ),
-    ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.transform",
-     {"type": 'E', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TIME_EXTEND'),
-       ],
-      },
-     ),
-    ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
-    ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
-    ("wm.context_toggle",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.use_proportional_fcurve'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'COMMA', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'BOUNDING_BOX_CENTER'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'PERIOD', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'CURSOR'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'PERIOD', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'INDIVIDUAL_ORIGINS'),
-       ],
-      },
-     ),
-    ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
-    ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("Image Generic",
-  {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("image.new", {"type": 'N', "value": 'PRESS', "alt": True}, None),
-    ("image.open", {"type": 'O', "value": 'PRESS', "alt": True}, None),
-    ("image.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None),
-    ("image.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None),
-    ("image.save", {"type": 'S', "value": 'PRESS', "alt": True}, None),
-    ("image.save_as", {"type": 'F3', "value": 'PRESS'}, None),
-    ("image.properties", {"type": 'N', "value": 'PRESS'}, None),
-    ("image.toolshelf", {"type": 'T', "value": 'PRESS'}, None),
-    ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS'}, None),
-    ("image.cycle_render_slot",
-     {"type": 'J', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("reverse", True),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Image",
-  {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("image.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("image.view_all",
-     {"type": 'HOME', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("fit_view", True),
-       ],
-      },
-     ),
-    ("image.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
-    ("image.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("image.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
-    ("image.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ("image.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
-    ("image.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
-    ("image.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
-    ("image.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
-    ("image.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
-    ("image.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("image.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
-    ("image.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
-    ("image.view_zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("ratio", 8.0),
-       ],
-      },
-     ),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("ratio", 4.0),
-       ],
-      },
-     ),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("ratio", 2.0),
-       ],
-      },
-     ),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("ratio", 8.0),
-       ],
-      },
-     ),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("ratio", 4.0),
-       ],
-      },
-     ),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("ratio", 2.0),
-       ],
-      },
-     ),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_1', "value": 'PRESS'},
-     {"properties":
-      [("ratio", 1.0),
-       ],
-      },
-     ),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_2', "value": 'PRESS'},
-     {"properties":
-      [("ratio", 0.5),
-       ],
-      },
-     ),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_4', "value": 'PRESS'},
-     {"properties":
-      [("ratio", 0.25),
-       ],
-      },
-     ),
-    ("image.view_zoom_ratio",
-     {"type": 'NUMPAD_8', "value": 'PRESS'},
-     {"properties":
-      [("ratio", 0.125),
-       ],
-      },
-     ),
-    ("image.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("image.sample", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("image.curves_point_set",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("point", 'BLACK_POINT'),
-       ],
-      },
-     ),
-    ("image.curves_point_set",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("point", 'WHITE_POINT'),
-       ],
-      },
-     ),
-    ("object.mode_set",
-     {"type": 'TAB', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'EDIT'),
-       ("toggle", True),
-       ],
-      },
-     ),
-    ("wm.context_set_int",
-     {"type": 'ONE', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.image.render_slots.active_index'),
-       ("value", 0),
-       ],
-      },
-     ),
-    ("wm.context_set_int",
-     {"type": 'TWO', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.image.render_slots.active_index'),
-       ("value", 1),
-       ],
-      },
-     ),
-    ("wm.context_set_int",
-     {"type": 'THREE', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.image.render_slots.active_index'),
-       ("value", 2),
-       ],
-      },
-     ),
-    ("wm.context_set_int",
-     {"type": 'FOUR', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.image.render_slots.active_index'),
-       ("value", 3),
-       ],
-      },
-     ),
-    ("wm.context_set_int",
-     {"type": 'FIVE', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.image.render_slots.active_index'),
-       ("value", 4),
-       ],
-      },
-     ),
-    ("wm.context_set_int",
-     {"type": 'SIX', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.image.render_slots.active_index'),
-       ("value", 5),
-       ],
-      },
-     ),
-    ("wm.context_set_int",
-     {"type": 'SEVEN', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.image.render_slots.active_index'),
-       ("value", 6),
-       ],
-      },
-     ),
-    ("wm.context_set_int",
-     {"type": 'EIGHT', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.image.render_slots.active_index'),
-       ("value", 7),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'COMMA', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'CENTER'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'COMMA', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'MEDIAN'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'PERIOD', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'CURSOR'),
-       ],
-      },
-     ),
-    ("image.render_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
-    ("image.clear_render_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ],
-   },
-  ),
- ("Node Generic",
-  {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("node.properties", {"type": 'N', "value": 'PRESS'}, None),
-    ("node.toolbar", {"type": 'T', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Node Editor",
-  {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("node.select",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'ACTIONMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("node.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("node.select_box",
-     {"type": 'EVT_TWEAK_S', "value": 'ANY'},
-     {"properties":
-      [("tweak", True),
-       ],
-      },
-     ),
-    ("node.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("node.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("node.select_circle", {"type": 'C', "value": 'PRESS'}, None),
-    ("node.link",
-     {"type": 'LEFTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("detach", False),
-       ],
-      },
-     ),
-    ("node.link",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("detach", True),
-       ],
-      },
-     ),
-    ("node.resize", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("node.add_reroute", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("node.links_cut", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("node.select_link_viewer", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("node.backimage_move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "alt": True}, None),
-    ("node.backimage_zoom",
-     {"type": 'V', "value": 'PRESS'},
-     {"properties":
-      [("factor", 0.8333333),
-       ],
-      },
-     ),
-    ("node.backimage_zoom",
-     {"type": 'V', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("factor", 1.2),
-       ],
-      },
-     ),
-    ("node.backimage_fit", {"type": 'HOME', "value": 'PRESS', "alt": True}, None),
-    ("node.backimage_sample", {"type": 'ACTIONMOUSE', "value": 'PRESS', "alt": True}, None),
-    ("node.link_make",
-     {"type": 'F', "value": 'PRESS'},
-     {"properties":
-      [("replace", False),
-       ],
-      },
-     ),
-    ("node.link_make",
-     {"type": 'F', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("replace", True),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'A', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'NODE_MT_add'),
-       ],
-      },
-     ),
-    ("node.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("node.duplicate_move_keep_inputs", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("node.parent_set", {"type": 'P', "value": 'PRESS', "ctrl": True}, None),
-    ("node.detach", {"type": 'P', "value": 'PRESS', "alt": True}, None),
-    ("node.join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
-    ("node.hide_toggle", {"type": 'H', "value": 'PRESS'}, None),
-    ("node.mute_toggle", {"type": 'M', "value": 'PRESS'}, None),
-    ("node.preview_toggle", {"type": 'H', "value": 'PRESS', "shift": True}, None),
-    ("node.hide_socket_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, None),
-    ("node.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("node.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ("node.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("node.select_box",
-     {"type": 'B', "value": 'PRESS'},
-     {"properties":
-      [("tweak", False),
-       ],
-      },
-     ),
-    ("node.delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("node.delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("node.delete_reconnect", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
-    ("node.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("node.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("node.select_linked_to", {"type": 'L', "value": 'PRESS', "shift": True}, None),
-    ("node.select_linked_from", {"type": 'L', "value": 'PRESS'}, None),
-    ("node.select_grouped",
-     {"type": 'G', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("node.select_grouped",
-     {"type": 'G', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("node.select_same_type_step",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("prev", False),
-       ],
-      },
-     ),
-    ("node.select_same_type_step",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("prev", True),
-       ],
-      },
-     ),
-    ("node.find_node", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
-    ("node.group_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
-    ("node.group_ungroup", {"type": 'G', "value": 'PRESS', "alt": True}, None),
-    ("node.group_separate", {"type": 'P', "value": 'PRESS'}, None),
-    ("node.group_edit",
-     {"type": 'TAB', "value": 'PRESS'},
-     {"properties":
-      [("exit", False),
-       ],
-      },
-     ),
-    ("node.group_edit",
-     {"type": 'TAB', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("exit", True),
-       ],
-      },
-     ),
-    ("node.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None),
-    ("node.render_changed", {"type": 'Z', "value": 'PRESS'}, None),
-    ("node.clipboard_copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("node.clipboard_paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("node.viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
-    ("node.clear_viewer_border", {"type": 'B', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("node.translate_attach", {"type": 'G', "value": 'PRESS'}, None),
-    ("node.translate_attach", {"type": 'EVT_TWEAK_A', "value": 'ANY'}, None),
-    ("node.translate_attach", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.translate",
-     {"type": 'G', "value": 'PRESS'},
-     {"properties":
-      [("release_confirm", True),
-       ],
-      },
-     ),
-    ("transform.translate",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY'},
-     {"properties":
-      [("release_confirm", True),
-       ],
-      },
-     ),
-    ("transform.translate",
-     {"type": 'EVT_TWEAK_S', "value": 'ANY'},
-     {"properties":
-      [("release_confirm", True),
-       ],
-      },
-     ),
-    ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
-    ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
-    ("node.move_detach_links", {"type": 'D', "value": 'PRESS', "alt": True}, None),
-    ("node.move_detach_links_release", {"type": 'EVT_TWEAK_A', "value": 'ANY', "alt": True}, None),
-    ("node.move_detach_links", {"type": 'EVT_TWEAK_S', "value": 'ANY', "alt": True}, None),
-    ("wm.context_toggle",
-     {"type": 'TAB', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'tool_settings.use_snap'),
-       ],
-      },
-     ),
-    ("wm.context_menu_enum",
-     {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("data_path", 'tool_settings.snap_node_element'),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("File Browser",
-  {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'},
-  {"items":
-   [("file.parent", {"type": 'UP_ARROW', "value": 'PRESS', "alt": True}, None),
-    ("file.previous", {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True}, None),
-    ("file.next", {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True}, None),
-    ("file.refresh", {"type": 'R', "value": 'PRESS'}, None),
-    ("file.parent", {"type": 'P', "value": 'PRESS'}, None),
-    ("file.previous", {"type": 'BACK_SPACE', "value": 'PRESS'}, None),
-    ("file.next", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True}, None),
-    ("wm.context_toggle",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.params.show_hidden'),
-       ],
-      },
-     ),
-    ("file.directory_new", {"type": 'I', "value": 'PRESS'}, None),
-    ("file.delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("file.delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("file.smoothscroll", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
-    ("file.bookmark_toggle", {"type": 'T', "value": 'PRESS'}, None),
-    ("file.bookmark_add", {"type": 'B', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("File Browser Main",
-  {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'},
-  {"items":
-   [("file.execute",
-     {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'},
-     {"properties":
-      [("need_active", True),
-       ],
-      },
-     ),
-    ("file.refresh", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("file.select", {"type": 'LEFTMOUSE', "value": 'CLICK'}, None),
-    ("file.select",
-     {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("file.select",
-     {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ("fill", True),
-       ],
-      },
-     ),
-    ("file.select",
-     {"type": 'RIGHTMOUSE', "value": 'CLICK'},
-     {"properties":
-      [("open", False),
-       ],
-      },
-     ),
-    ("file.select",
-     {"type": 'RIGHTMOUSE', "value": 'CLICK', "shift": True},
-     {"properties":
-      [("extend", True),
-       ("open", False),
-       ],
-      },
-     ),
-    ("file.select",
-     {"type": 'RIGHTMOUSE', "value": 'CLICK', "alt": True},
-     {"properties":
-      [("extend", True),
-       ("fill", True),
-       ("open", False),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'UP_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'UP'),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'UP'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("direction", 'UP'),
-       ("extend", True),
-       ("fill", True),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'DOWN_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'DOWN'),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'DOWN'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("direction", 'DOWN'),
-       ("extend", True),
-       ("fill", True),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'LEFT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'LEFT'),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'LEFT'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("direction", 'LEFT'),
-       ("extend", True),
-       ("fill", True),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("direction", 'RIGHT'),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("direction", 'RIGHT'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("file.select_walk",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("direction", 'RIGHT'),
-       ("extend", True),
-       ("fill", True),
-       ],
-      },
-     ),
-    ("file.previous", {"type": 'BUTTON4MOUSE', "value": 'CLICK'}, None),
-    ("file.next", {"type": 'BUTTON5MOUSE', "value": 'CLICK'}, None),
-    ("file.select_all_toggle", {"type": 'A', "value": 'PRESS'}, None),
-    ("file.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
-    ("file.rename", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("file.highlight", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None),
-    ("file.filenum",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS'},
-     {"properties":
-      [("increment", 1),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("increment", 10),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("increment", 100),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
-     {"properties":
-      [("increment", -1),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("increment", -10),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("increment", -100),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("File Browser Buttons",
-  {"space_type": 'FILE_BROWSER', "region_type": 'WINDOW'},
-  {"items":
-   [("file.filenum",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS'},
-     {"properties":
-      [("increment", 1),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("increment", 10),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("increment", 100),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS'},
-     {"properties":
-      [("increment", -1),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("increment", -10),
-       ],
-      },
-     ),
-    ("file.filenum",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("increment", -100),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("Dopesheet Generic",
-  {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("action.properties", {"type": 'N', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Dopesheet",
-  {"space_type": 'DOPESHEET_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("action.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ("column", False),
-       ("channel", False),
-       ],
-      },
-     ),
-    ("action.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("extend", False),
-       ("column", True),
-       ("channel", False),
-       ],
-      },
-     ),
-    ("action.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ("column", False),
-       ("channel", False),
-       ],
-      },
-     ),
-    ("action.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ("column", True),
-       ("channel", False),
-       ],
-      },
-     ),
-    ("action.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", False),
-       ("column", False),
-       ("channel", True),
-       ],
-      },
-     ),
-    ("action.clickselect",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ("column", False),
-       ("channel", True),
-       ],
-      },
-     ),
-    ("action.select_leftright",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'CHECK'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("action.select_leftright",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("mode", 'CHECK'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("action.select_leftright",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'LEFT'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("action.select_leftright",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'RIGHT'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("action.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("action.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("action.select_box",
-     {"type": 'B', "value": 'PRESS'},
-     {"properties":
-      [("axis_range", False),
-       ],
-      },
-     ),
-    ("action.select_box",
-     {"type": 'B', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("axis_range", True),
-       ],
-      },
-     ),
-    ("action.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("action.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("action.select_circle", {"type": 'C', "value": 'PRESS'}, None),
-    ("action.select_column",
-     {"type": 'K', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'KEYS'),
-       ],
-      },
-     ),
-    ("action.select_column",
-     {"type": 'K', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'CFRA'),
-       ],
-      },
-     ),
-    ("action.select_column",
-     {"type": 'K', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'MARKERS_COLUMN'),
-       ],
-      },
-     ),
-    ("action.select_column",
-     {"type": 'K', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("mode", 'MARKERS_BETWEEN'),
-       ],
-      },
-     ),
-    ("action.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("action.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("action.select_linked", {"type": 'L', "value": 'PRESS'}, None),
-    ("action.frame_jump", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
-    ("action.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None),
-    ("action.mirror", {"type": 'M', "value": 'PRESS', "shift": True}, None),
-    ("action.handle_type", {"type": 'V', "value": 'PRESS'}, None),
-    ("action.interpolation_type", {"type": 'T', "value": 'PRESS'}, None),
-    ("action.extrapolation_type", {"type": 'E', "value": 'PRESS', "shift": True}, None),
-    ("action.keyframe_type", {"type": 'R', "value": 'PRESS'}, None),
-    ("action.sample", {"type": 'O', "value": 'PRESS', "shift": True}, None),
-    ("wm.call_menu",
-     {"type": 'X', "value": 'PRESS'},
-     {"properties":
-      [("name", 'DOPESHEET_MT_delete'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("name", 'DOPESHEET_MT_delete'),
-       ],
-      },
-     ),
-    ("action.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("action.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
-    ("action.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("action.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("action.paste",
-     {"type": 'V', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("flipped", True),
-       ],
-      },
-     ),
-    ("action.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("action.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("action.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ("action.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("action.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
-    ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
-    ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
-    ("transform.transform",
-     {"type": 'G', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TIME_TRANSLATE'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'EVT_TWEAK_S', "value": 'ANY'},
-     {"properties":
-      [("mode", 'TIME_TRANSLATE'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'E', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TIME_EXTEND'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'S', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TIME_SCALE'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'T', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("mode", 'TIME_SLIDE'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'tool_settings.use_proportional_action'),
-       ],
-      },
-     ),
-    ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
-    ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("NLA Generic",
-  {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("nla.properties", {"type": 'N', "value": 'PRESS'}, None),
-    ("nla.tweakmode_enter", {"type": 'TAB', "value": 'PRESS'}, None),
-    ("nla.tweakmode_exit", {"type": 'TAB', "value": 'PRESS'}, None),
-    ("nla.tweakmode_enter",
-     {"type": 'TAB', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("isolate_action", True),
-       ],
-      },
-     ),
-    ("nla.tweakmode_exit",
-     {"type": 'TAB', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("isolate_action", True),
-       ],
-      },
-     ),
-    ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("NLA Channels",
-  {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("nla.channels_click",
-     {"type": 'LEFTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("nla.channels_click",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("nla.tracks_add",
-     {"type": 'A', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("above_selected", False),
-       ],
-      },
-     ),
-    ("nla.tracks_add",
-     {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("above_selected", True),
-       ],
-      },
-     ),
-    ("nla.tracks_delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("nla.tracks_delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("NLA Editor",
-  {"space_type": 'NLA_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("nla.click_select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("nla.click_select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("nla.select_leftright",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("mode", 'CHECK'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("nla.select_leftright",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("mode", 'CHECK'),
-       ("extend", True),
-       ],
-      },
-     ),
-    ("nla.select_leftright",
-     {"type": 'LEFT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'LEFT'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("nla.select_leftright",
-     {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'RIGHT'),
-       ("extend", False),
-       ],
-      },
-     ),
-    ("nla.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("nla.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("nla.select_box",
-     {"type": 'B', "value": 'PRESS'},
-     {"properties":
-      [("axis_range", False),
-       ],
-      },
-     ),
-    ("nla.select_box",
-     {"type": 'B', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("axis_range", True),
-       ],
-      },
-     ),
-    ("nla.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None),
-    ("nla.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("nla.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ("nla.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("nla.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
-    ("nla.actionclip_add", {"type": 'A', "value": 'PRESS', "shift": True}, None),
-    ("nla.transition_add", {"type": 'T', "value": 'PRESS', "shift": True}, None),
-    ("nla.soundclip_add", {"type": 'K', "value": 'PRESS', "shift": True}, None),
-    ("nla.meta_add", {"type": 'G', "value": 'PRESS', "shift": True}, None),
-    ("nla.meta_remove", {"type": 'G', "value": 'PRESS', "alt": True}, None),
-    ("nla.duplicate",
-     {"type": 'D', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("linked", False),
-       ],
-      },
-     ),
-    ("nla.duplicate",
-     {"type": 'D', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("linked", True),
-       ],
-      },
-     ),
-    ("nla.make_single_user", {"type": 'U', "value": 'PRESS'}, None),
-    ("nla.delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("nla.delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("nla.split", {"type": 'Y', "value": 'PRESS'}, None),
-    ("nla.mute_toggle", {"type": 'H', "value": 'PRESS'}, None),
-    ("nla.swap", {"type": 'F', "value": 'PRESS', "alt": True}, None),
-    ("nla.move_up", {"type": 'PAGE_UP', "value": 'PRESS'}, None),
-    ("nla.move_down", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None),
-    ("nla.apply_scale", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
-    ("nla.clear_scale", {"type": 'S', "value": 'PRESS', "alt": True}, None),
-    ("nla.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None),
-    ("nla.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("transform.transform",
-     {"type": 'G', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TRANSLATION'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'EVT_TWEAK_S', "value": 'ANY'},
-     {"properties":
-      [("mode", 'TRANSLATION'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'E', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TIME_EXTEND'),
-       ],
-      },
-     ),
-    ("transform.transform",
-     {"type": 'S', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TIME_SCALE'),
-       ],
-      },
-     ),
-    ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
-    ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("Text Generic",
-  {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("text.start_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
-    ("text.jump", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
-    ("text.find", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
-    ("text.replace", {"type": 'H', "value": 'PRESS', "ctrl": True}, None),
-    ("text.properties", {"type": 'T', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("Text",
-  {"space_type": 'TEXT_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("wm.context_cycle_int",
-     {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.font_size'),
-       ("reverse", False),
-       ],
-      },
-     ),
-    ("wm.context_cycle_int",
-     {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.font_size'),
-       ("reverse", True),
-       ],
-      },
-     ),
-    ("wm.context_cycle_int",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.font_size'),
-       ("reverse", False),
-       ],
-      },
-     ),
-    ("wm.context_cycle_int",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.font_size'),
-       ("reverse", True),
-       ],
-      },
-     ),
-    ("text.new", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
-    ("text.open", {"type": 'O', "value": 'PRESS', "alt": True}, None),
-    ("text.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None),
-    ("text.save", {"type": 'S', "value": 'PRESS', "alt": True}, None),
-    ("text.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
-    ("text.run_script", {"type": 'P', "value": 'PRESS', "alt": True}, None),
-    ("text.cut", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
-    ("text.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("text.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("text.cut", {"type": 'DEL', "value": 'PRESS', "shift": True}, None),
-    ("text.copy", {"type": 'INSERT', "value": 'PRESS', "ctrl": True}, None),
-    ("text.paste", {"type": 'INSERT', "value": 'PRESS', "shift": True}, None),
-    ("text.duplicate_line", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
-    ("text.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
-    ("text.select_line", {"type": 'A', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("text.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
-    ("text.move_lines",
-     {"type": 'UP_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("direction", 'UP'),
-       ],
-      },
-     ),
-    ("text.move_lines",
-     {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("direction", 'DOWN'),
-       ],
-      },
-     ),
-    ("text.indent", {"type": 'TAB', "value": 'PRESS'}, None),
-    ("text.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None),
-    ("text.uncomment", {"type": 'D', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("text.move",
-     {"type": 'HOME', "value": 'PRESS'},
-     {"properties":
-      [("type", 'LINE_BEGIN'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'END', "value": 'PRESS'},
-     {"properties":
-      [("type", 'LINE_END'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'E', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'LINE_END'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'LINE_END'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'LEFT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_CHARACTER'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_CHARACTER'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PREVIOUS_WORD'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'NEXT_WORD'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'UP_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_LINE'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'DOWN_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_LINE'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'PAGE_UP', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_PAGE'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'PAGE_DOWN', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_PAGE'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'HOME', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'FILE_TOP'),
-       ],
-      },
-     ),
-    ("text.move",
-     {"type": 'END', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'FILE_BOTTOM'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'HOME', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'LINE_BEGIN'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'END', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'LINE_END'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PREVIOUS_CHARACTER'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'NEXT_CHARACTER'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'PREVIOUS_WORD'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'NEXT_WORD'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'UP_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PREVIOUS_LINE'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'DOWN_ARROW', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'NEXT_LINE'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'PAGE_UP', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PREVIOUS_PAGE'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'NEXT_PAGE'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'HOME', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'FILE_TOP'),
-       ],
-      },
-     ),
-    ("text.move_select",
-     {"type": 'END', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("type", 'FILE_BOTTOM'),
-       ],
-      },
-     ),
-    ("text.delete",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_CHARACTER'),
-       ],
-      },
-     ),
-    ("text.delete",
-     {"type": 'BACK_SPACE', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_CHARACTER'),
-       ],
-      },
-     ),
-    ("text.delete",
-     {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PREVIOUS_CHARACTER'),
-       ],
-      },
-     ),
-    ("text.delete",
-     {"type": 'DEL', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'NEXT_WORD'),
-       ],
-      },
-     ),
-    ("text.delete",
-     {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PREVIOUS_WORD'),
-       ],
-      },
-     ),
-    ("text.overwrite_toggle", {"type": 'INSERT', "value": 'PRESS'}, None),
-    ("text.scroll_bar", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("text.scroll_bar", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
-    ("text.scroll", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
-    ("text.scroll", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
-    ("text.selection_set", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
-    ("text.cursor_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("text.selection_set",
-     {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("select", True),
-       ],
-      },
-     ),
-    ("text.scroll",
-     {"type": 'WHEELUPMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("lines", -1),
-       ],
-      },
-     ),
-    ("text.scroll",
-     {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("lines", 1),
-       ],
-      },
-     ),
-    ("text.line_break", {"type": 'RET', "value": 'PRESS'}, None),
-    ("text.line_break", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
-    ("wm.call_menu",
-     {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True},
-     {"properties":
-      [("name", 'TEXT_MT_toolbox'),
-       ],
-      },
-     ),
-    ("text.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None),
-    ("text.line_number", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
-    ("text.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
-    ],
-   },
-  ),
- ("SequencerCommon",
-  {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("sequencer.properties", {"type": 'N', "value": 'PRESS'}, None),
-    ("wm.context_toggle",
-     {"type": 'O', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("data_path", 'scene.sequence_editor.show_overlay'),
-       ],
-      },
-     ),
-    ("sequencer.view_toggle", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("Sequencer",
-  {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("sequencer.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("sequencer.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("sequencer.cut",
-     {"type": 'K', "value": 'PRESS'},
-     {"properties":
-      [("type", 'SOFT'),
-       ],
-      },
-     ),
-    ("sequencer.cut",
-     {"type": 'K', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'HARD'),
-       ],
-      },
-     ),
-    ("sequencer.mute",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("sequencer.mute",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("sequencer.unmute",
-     {"type": 'H', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("sequencer.unmute",
-     {"type": 'H', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("sequencer.lock", {"type": 'L', "value": 'PRESS', "shift": True}, None),
-    ("sequencer.unlock", {"type": 'L', "value": 'PRESS', "shift": True, "alt": True}, None),
-    ("sequencer.reassign_inputs", {"type": 'R', "value": 'PRESS'}, None),
-    ("sequencer.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None),
-    ("sequencer.reload",
-     {"type": 'R', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("adjust_length", True),
-       ],
-      },
-     ),
-    ("sequencer.offset_clear", {"type": 'O', "value": 'PRESS', "alt": True}, None),
-    ("sequencer.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
-    ("sequencer.delete", {"type": 'X', "value": 'PRESS'}, None),
-    ("sequencer.delete", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("sequencer.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("sequencer.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("sequencer.images_separate", {"type": 'Y', "value": 'PRESS'}, None),
-    ("sequencer.meta_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
-    ("sequencer.meta_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None),
-    ("sequencer.meta_separate", {"type": 'G', "value": 'PRESS', "alt": True}, None),
-    ("sequencer.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("sequencer.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ("sequencer.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("sequencer.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
-    ("sequencer.strip_jump",
-     {"type": 'PAGE_UP', "value": 'PRESS'},
-     {"properties":
-      [("next", True),
-       ("center", False),
-       ],
-      },
-     ),
-    ("sequencer.strip_jump",
-     {"type": 'PAGE_DOWN', "value": 'PRESS'},
-     {"properties":
-      [("next", False),
-       ("center", False),
-       ],
-      },
-     ),
-    ("sequencer.strip_jump",
-     {"type": 'PAGE_UP', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("next", True),
-       ("center", True),
-       ],
-      },
-     ),
-    ("sequencer.strip_jump",
-     {"type": 'PAGE_DOWN', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("next", False),
-       ("center", True),
-       ],
-      },
-     ),
-    ("sequencer.swap",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("side", 'LEFT'),
-       ],
-      },
-     ),
-    ("sequencer.swap",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("side", 'RIGHT'),
-       ],
-      },
-     ),
-    ("sequencer.gap_remove",
-     {"type": 'BACK_SPACE', "value": 'PRESS'},
-     {"properties":
-      [("all", False),
-       ],
-      },
-     ),
-    ("sequencer.gap_remove",
-     {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("all", True),
-       ],
-      },
-     ),
-    ("sequencer.gap_insert", {"type": 'EQUAL', "value": 'PRESS', "shift": True}, None),
-    ("sequencer.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None),
-    ("sequencer.swap_inputs", {"type": 'S', "value": 'PRESS', "alt": True}, None),
-    ("sequencer.cut_multicam",
-     {"type": 'ONE', "value": 'PRESS'},
-     {"properties":
-      [("camera", 1),
-       ],
-      },
-     ),
-    ("sequencer.cut_multicam",
-     {"type": 'TWO', "value": 'PRESS'},
-     {"properties":
-      [("camera", 2),
-       ],
-      },
-     ),
-    ("sequencer.cut_multicam",
-     {"type": 'THREE', "value": 'PRESS'},
-     {"properties":
-      [("camera", 3),
-       ],
-      },
-     ),
-    ("sequencer.cut_multicam",
-     {"type": 'FOUR', "value": 'PRESS'},
-     {"properties":
-      [("camera", 4),
-       ],
-      },
-     ),
-    ("sequencer.cut_multicam",
-     {"type": 'FIVE', "value": 'PRESS'},
-     {"properties":
-      [("camera", 5),
-       ],
-      },
-     ),
-    ("sequencer.cut_multicam",
-     {"type": 'SIX', "value": 'PRESS'},
-     {"properties":
-      [("camera", 6),
-       ],
-      },
-     ),
-    ("sequencer.cut_multicam",
-     {"type": 'SEVEN', "value": 'PRESS'},
-     {"properties":
-      [("camera", 7),
-       ],
-      },
-     ),
-    ("sequencer.cut_multicam",
-     {"type": 'EIGHT', "value": 'PRESS'},
-     {"properties":
-      [("camera", 8),
-       ],
-      },
-     ),
-    ("sequencer.cut_multicam",
-     {"type": 'NINE', "value": 'PRESS'},
-     {"properties":
-      [("camera", 9),
-       ],
-      },
-     ),
-    ("sequencer.cut_multicam",
-     {"type": 'ZERO', "value": 'PRESS'},
-     {"properties":
-      [("camera", 10),
-       ],
-      },
-     ),
-    ("sequencer.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ("linked_handle", False),
-       ("left_right", 'NONE'),
-       ("linked_time", False),
-       ],
-      },
-     ),
-    ("sequencer.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ("linked_handle", False),
-       ("left_right", 'NONE'),
-       ("linked_time", False),
-       ],
-      },
-     ),
-    ("sequencer.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("extend", False),
-       ("linked_handle", True),
-       ("left_right", 'NONE'),
-       ("linked_time", False),
-       ],
-      },
-     ),
-    ("sequencer.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("extend", True),
-       ("linked_handle", True),
-       ("left_right", 'NONE'),
-       ("linked_time", False),
-       ],
-      },
-     ),
-    ("sequencer.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("extend", False),
-       ("linked_handle", False),
-       ("left_right", 'MOUSE'),
-       ("linked_time", True),
-       ],
-      },
-     ),
-    ("sequencer.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("extend", True),
-       ("linked_handle", False),
-       ("left_right", 'NONE'),
-       ("linked_time", True),
-       ],
-      },
-     ),
-    ("sequencer.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True}, None),
-    ("sequencer.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True}, None),
-    ("sequencer.select_linked_pick",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("sequencer.select_linked_pick",
-     {"type": 'L', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("sequencer.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
-    ("sequencer.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("sequencer.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None),
-    ("wm.call_menu",
-     {"type": 'A', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'SEQUENCER_MT_add'),
-       ],
-      },
-     ),
-    ("wm.call_menu",
-     {"type": 'C', "value": 'PRESS'},
-     {"properties":
-      [("name", 'SEQUENCER_MT_change'),
-       ],
-      },
-     ),
-    ("sequencer.slip", {"type": 'S', "value": 'PRESS'}, None),
-    ("wm.context_set_int",
-     {"type": 'O', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'scene.sequence_editor.overlay_frame'),
-       ("value", 0),
-       ],
-      },
-     ),
-    ("transform.seq_slide", {"type": 'G', "value": 'PRESS'}, None),
-    ("transform.seq_slide", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.transform",
-     {"type": 'E', "value": 'PRESS'},
-     {"properties":
-      [("mode", 'TIME_EXTEND'),
-       ],
-      },
-     ),
-    ("marker.add", {"type": 'M', "value": 'PRESS'}, None),
-    ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("SequencerPreview",
-  {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("sequencer.view_all_preview", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("sequencer.view_all_preview", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ("sequencer.view_ghost_border", {"type": 'O', "value": 'PRESS'}, None),
-    ("sequencer.view_zoom_ratio",
-     {"type": 'NUMPAD_1', "value": 'PRESS'},
-     {"properties":
-      [("ratio", 1.0),
-       ],
-      },
-     ),
-    ("sequencer.sample", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Console",
-  {"space_type": 'CONSOLE', "region_type": 'WINDOW'},
-  {"items":
-   [("console.move",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PREVIOUS_WORD'),
-       ],
-      },
-     ),
-    ("console.move",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'NEXT_WORD'),
-       ],
-      },
-     ),
-    ("console.move",
-     {"type": 'HOME', "value": 'PRESS'},
-     {"properties":
-      [("type", 'LINE_BEGIN'),
-       ],
-      },
-     ),
-    ("console.move",
-     {"type": 'END', "value": 'PRESS'},
-     {"properties":
-      [("type", 'LINE_END'),
-       ],
-      },
-     ),
-    ("wm.context_cycle_int",
-     {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.font_size'),
-       ("reverse", False),
-       ],
-      },
-     ),
-    ("wm.context_cycle_int",
-     {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.font_size'),
-       ("reverse", True),
-       ],
-      },
-     ),
-    ("wm.context_cycle_int",
-     {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.font_size'),
-       ("reverse", False),
-       ],
-      },
-     ),
-    ("wm.context_cycle_int",
-     {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.font_size'),
-       ("reverse", True),
-       ],
-      },
-     ),
-    ("console.move",
-     {"type": 'LEFT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_CHARACTER'),
-       ],
-      },
-     ),
-    ("console.move",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_CHARACTER'),
-       ],
-      },
-     ),
-    ("console.history_cycle",
-     {"type": 'UP_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("reverse", True),
-       ],
-      },
-     ),
-    ("console.history_cycle",
-     {"type": 'DOWN_ARROW', "value": 'PRESS'},
-     {"properties":
-      [("reverse", False),
-       ],
-      },
-     ),
-    ("console.delete",
-     {"type": 'DEL', "value": 'PRESS'},
-     {"properties":
-      [("type", 'NEXT_CHARACTER'),
-       ],
-      },
-     ),
-    ("console.delete",
-     {"type": 'BACK_SPACE', "value": 'PRESS'},
-     {"properties":
-      [("type", 'PREVIOUS_CHARACTER'),
-       ],
-      },
-     ),
-    ("console.delete",
-     {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("type", 'PREVIOUS_CHARACTER'),
-       ],
-      },
-     ),
-    ("console.delete",
-     {"type": 'DEL', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'NEXT_WORD'),
-       ],
-      },
-     ),
-    ("console.delete",
-     {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("type", 'PREVIOUS_WORD'),
-       ],
-      },
-     ),
-    ("console.clear_line", {"type": 'RET', "value": 'PRESS', "shift": True}, None),
-    ("console.clear_line", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "shift": True}, None),
-    ("console.execute",
-     {"type": 'RET', "value": 'PRESS'},
-     {"properties":
-      [("interactive", True),
-       ],
-      },
-     ),
-    ("console.execute",
-     {"type": 'NUMPAD_ENTER', "value": 'PRESS'},
-     {"properties":
-      [("interactive", True),
-       ],
-      },
-     ),
-    ("console.autocomplete", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None),
-    ("console.copy_as_script", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None),
-    ("console.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("console.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ("console.select_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("console.select_word", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
-    ("console.insert",
-     {"type": 'TAB', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("text", '\t'),
-       ],
-      },
-     ),
-    ("console.indent", {"type": 'TAB', "value": 'PRESS'}, None),
-    ("console.unindent", {"type": 'TAB', "value": 'PRESS', "shift": True}, None),
-    ("console.insert", {"type": 'TEXTINPUT', "value": 'ANY', "any": True}, None),
-    ],
-   },
-  ),
- ("Clip",
-  {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("clip.open", {"type": 'O', "value": 'PRESS', "alt": True}, None),
-    ("clip.tools", {"type": 'T', "value": 'PRESS'}, None),
-    ("clip.properties", {"type": 'N', "value": 'PRESS'}, None),
-    ("clip.track_markers",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("backwards", True),
-       ("sequence", False),
-       ],
-      },
-     ),
-    ("clip.track_markers",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("backwards", False),
-       ("sequence", False),
-       ],
-      },
-     ),
-    ("clip.track_markers",
-     {"type": 'T', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("backwards", False),
-       ("sequence", True),
-       ],
-      },
-     ),
-    ("clip.track_markers",
-     {"type": 'T', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("backwards", True),
-       ("sequence", True),
-       ],
-      },
-     ),
-    ("wm.context_toggle_enum",
-     {"type": 'TAB', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.mode'),
-       ("value_1", 'TRACKING'),
-       ("value_2", 'MASK'),
-       ],
-      },
-     ),
-    ("clip.solve_camera", {"type": 'S', "value": 'PRESS', "shift": True}, None),
-    ("clip.set_solver_keyframe",
-     {"type": 'Q', "value": 'PRESS'},
-     {"properties":
-      [("keyframe", 'KEYFRAME_A'),
-       ],
-      },
-     ),
-    ("clip.set_solver_keyframe",
-     {"type": 'E', "value": 'PRESS'},
-     {"properties":
-      [("keyframe", 'KEYFRAME_B'),
-       ],
-      },
-     ),
-    ("clip.prefetch", {"type": 'P', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Clip Editor",
-  {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
-    ("clip.view_pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
-    ("clip.view_pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
-    ("clip.view_zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("clip.view_zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
-    ("clip.view_zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
-    ("clip.view_zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
-    ("clip.view_zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
-    ("clip.view_zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
-    ("clip.view_zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_8', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("ratio", 8.0),
-       ],
-      },
-     ),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_4', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("ratio", 4.0),
-       ],
-      },
-     ),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_2', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("ratio", 2.0),
-       ],
-      },
-     ),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_8', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("ratio", 8.0),
-       ],
-      },
-     ),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_4', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("ratio", 4.0),
-       ],
-      },
-     ),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_2', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("ratio", 2.0),
-       ],
-      },
-     ),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_1', "value": 'PRESS'},
-     {"properties":
-      [("ratio", 1.0),
-       ],
-      },
-     ),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_2', "value": 'PRESS'},
-     {"properties":
-      [("ratio", 0.5),
-       ],
-      },
-     ),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_4', "value": 'PRESS'},
-     {"properties":
-      [("ratio", 0.25),
-       ],
-      },
-     ),
-    ("clip.view_zoom_ratio",
-     {"type": 'NUMPAD_8', "value": 'PRESS'},
-     {"properties":
-      [("ratio", 0.125),
-       ],
-      },
-     ),
-    ("clip.view_all", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("clip.view_all",
-     {"type": 'F', "value": 'PRESS'},
-     {"properties":
-      [("fit_view", True),
-       ],
-      },
-     ),
-    ("clip.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("clip.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ("clip.view_ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
-    ("clip.frame_jump",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("position", 'PATHSTART'),
-       ],
-      },
-     ),
-    ("clip.frame_jump",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "ctrl": True},
-     {"properties":
-      [("position", 'PATHEND'),
-       ],
-      },
-     ),
-    ("clip.frame_jump",
-     {"type": 'LEFT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("position", 'FAILEDPREV'),
-       ],
-      },
-     ),
-    ("clip.frame_jump",
-     {"type": 'RIGHT_ARROW', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("position", 'PATHSTART'),
-       ],
-      },
-     ),
-    ("clip.change_frame", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("clip.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("clip.select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("clip.select_all",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("clip.select_all",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("clip.select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("clip.select_circle", {"type": 'C', "value": 'PRESS'}, None),
-    ("wm.call_menu",
-     {"type": 'G', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("name", 'CLIP_MT_select_grouped'),
-       ],
-      },
-     ),
-    ("clip.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "ctrl": True, "alt": True},
-     {"properties":
-      [("deselect", False),
-       ],
-      },
-     ),
-    ("clip.select_lasso",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY', "shift": True, "ctrl": True, "alt": True},
-     {"properties":
-      [("deselect", True),
-       ],
-      },
-     ),
-    ("clip.add_marker_slide", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
-    ("clip.delete_marker", {"type": 'DEL', "value": 'PRESS', "shift": True}, None),
-    ("clip.delete_marker", {"type": 'X', "value": 'PRESS', "shift": True}, None),
-    ("clip.slide_marker", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
-    ("clip.disable_markers",
-     {"type": 'D', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("clip.delete_track", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("clip.delete_track", {"type": 'X', "value": 'PRESS'}, None),
-    ("clip.lock_tracks",
-     {"type": 'L', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'LOCK'),
-       ],
-      },
-     ),
-    ("clip.lock_tracks",
-     {"type": 'L', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("action", 'UNLOCK'),
-       ],
-      },
-     ),
-    ("clip.hide_tracks",
-     {"type": 'H', "value": 'PRESS'},
-     {"properties":
-      [("unselected", False),
-       ],
-      },
-     ),
-    ("clip.hide_tracks",
-     {"type": 'H', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("unselected", True),
-       ],
-      },
-     ),
-    ("clip.hide_tracks_clear", {"type": 'H', "value": 'PRESS', "alt": True}, None),
-    ("clip.slide_plane_marker", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("clip.keyframe_insert", {"type": 'I', "value": 'PRESS'}, None),
-    ("clip.keyframe_delete", {"type": 'I', "value": 'PRESS', "alt": True}, None),
-    ("clip.join_tracks", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
-    ("wm.call_menu",
-     {"type": 'W', "value": 'PRESS'},
-     {"properties":
-      [("name", 'CLIP_MT_tracking_specials'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.lock_selection'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'D', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("data_path", 'space_data.show_disabled'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'S', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("data_path", 'space_data.show_marker_search'),
-       ],
-      },
-     ),
-    ("wm.context_toggle",
-     {"type": 'M', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.use_mute_footage'),
-       ],
-      },
-     ),
-    ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
-    ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
-    ("clip.clear_track_path",
-     {"type": 'T', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("action", 'REMAINED'),
-       ("clear_active", False),
-       ],
-      },
-     ),
-    ("clip.clear_track_path",
-     {"type": 'T', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("action", 'UPTO'),
-       ("clear_active", False),
-       ],
-      },
-     ),
-    ("clip.clear_track_path",
-     {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("action", 'ALL'),
-       ("clear_active", False),
-       ],
-      },
-     ),
-    ("clip.cursor_set", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("wm.context_set_enum",
-     {"type": 'COMMA', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'BOUNDING_BOX_CENTER'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'COMMA', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'MEDIAN_POINT'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'PERIOD', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'CURSOR'),
-       ],
-      },
-     ),
-    ("wm.context_set_enum",
-     {"type": 'PERIOD', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("data_path", 'space_data.pivot_point'),
-       ("value", 'INDIVIDUAL_ORIGINS'),
-       ],
-      },
-     ),
-    ("clip.copy_tracks", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
-    ("clip.paste_tracks", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
-    ],
-   },
-  ),
- ("Clip Graph Editor",
-  {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("clip.change_frame", {"type": 'ACTIONMOUSE', "value": 'PRESS'}, None),
-    ("clip.graph_select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", False),
-       ],
-      },
-     ),
-    ("clip.graph_select",
-     {"type": 'SELECTMOUSE', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("clip.graph_select_all_markers",
-     {"type": 'A', "value": 'PRESS'},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("clip.graph_select_all_markers",
-     {"type": 'I', "value": 'PRESS', "ctrl": True},
-     {"properties":
-      [("action", 'INVERT'),
-       ],
-      },
-     ),
-    ("clip.graph_select_box", {"type": 'B', "value": 'PRESS'}, None),
-    ("clip.graph_delete_curve", {"type": 'DEL', "value": 'PRESS'}, None),
-    ("clip.graph_delete_curve", {"type": 'X', "value": 'PRESS'}, None),
-    ("clip.graph_delete_knot", {"type": 'DEL', "value": 'PRESS', "shift": True}, None),
-    ("clip.graph_delete_knot", {"type": 'X', "value": 'PRESS', "shift": True}, None),
-    ("clip.graph_view_all", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("clip.graph_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ("clip.graph_center_current_frame", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None),
-    ("wm.context_toggle",
-     {"type": 'L', "value": 'PRESS'},
-     {"properties":
-      [("data_path", 'space_data.lock_time_cursor'),
-       ],
-      },
-     ),
-    ("clip.clear_track_path",
-     {"type": 'T', "value": 'PRESS', "alt": True},
-     {"properties":
-      [("action", 'REMAINED'),
-       ("clear_active", True),
-       ],
-      },
-     ),
-    ("clip.clear_track_path",
-     {"type": 'T', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("action", 'UPTO'),
-       ("clear_active", True),
-       ],
-      },
-     ),
-    ("clip.clear_track_path",
-     {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
-     {"properties":
-      [("action", 'ALL'),
-       ("clear_active", True),
-       ],
-      },
-     ),
-    ("clip.graph_disable_markers",
-     {"type": 'D', "value": 'PRESS', "shift": True},
-     {"properties":
-      [("action", 'TOGGLE'),
-       ],
-      },
-     ),
-    ("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
-    ("transform.translate", {"type": 'EVT_TWEAK_S', "value": 'ANY'}, None),
-    ("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
-    ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("Clip Dopesheet Editor",
-  {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
-  {"items":
-   [("clip.dopesheet_select_channel",
-     {"type": 'LEFTMOUSE', "value": 'PRESS'},
-     {"properties":
-      [("extend", True),
-       ],
-      },
-     ),
-    ("clip.dopesheet_view_all", {"type": 'HOME', "value": 'PRESS'}, None),
-    ("clip.dopesheet_view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None),
-    ],
-   },
-  ),
- ("3D View Tool:  OBJECT, Move",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("transform.translate",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY'},
-     {"properties":
-      [("release_confirm", True),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("3D View Tool:  OBJECT, Rotate",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("transform.rotate",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY'},
-     {"properties":
-      [("release_confirm", True),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("3D View Tool:  OBJECT, Scale",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("transform.resize",
-     {"type": 'EVT_TWEAK_A', "value": 'ANY'},
-     {"properties":
-      [("release_confirm", True),
-       ],
-      },
-     ),
-    ],
-   },
-  ),
- ("3D View Tool:  OBJECT, Ruler/Protractor",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("view3d.ruler_add", {"type": 'EVT_TWEAK_A', "value": 'ANY'}, None),
-    ],
-   },
-  ),
- ("3D View Tool:  PARTICLE, Cursor Click",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("view3d.cursor3d", {"type": 'ACTIONMOUSE', "value": 'CLICK'}, None),
-    ],
-   },
-  ),
- ("Spot Lamp Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Area Lamp Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ("Target Lamp Widgets",
-  {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
-  {"items":
-   [("manipulatorgroup.manipulator_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
-    ],
-   },
-  ),
- ]
+import os
+from bpy_extras.keyconfig_utils import (
+    keyconfig_import_from_data,
+    keyconfig_module_from_preset,
+)
 
+_mod = keyconfig_module_from_preset(os.path.join("keymap_data", "blender_default"), __file__)
+keyconfig_data = _mod.generate_keymaps(_mod.KeymapParams(legacy=True))
 
 if __name__ == "__main__":
-    import os
-    from bpy_extras.keyconfig_utils import keyconfig_import_from_data
-    keyconfig_import_from_data(os.path.splitext(os.path.basename(__file__))[0], keyconfig_data)
+    keyconfig_import_from_data("Blender 27X", keyconfig_data)
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
new file mode 100644 (file)
index 0000000..2ae68c5
--- /dev/null
@@ -0,0 +1,5029 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+
+# ------------------------------------------------------------------------------
+# Configurable Parameters
+
+class KeymapParams:
+    __slots__ = (
+        "apple",
+        "legacy",
+        "select_mouse",
+        "action_mouse",
+    )
+
+    def __init__(self, legacy=False):
+        import platform
+        self.apple = platform.system() == 'Darwin'
+        self.legacy = legacy
+        self.select_mouse = 'SELECTMOUSE'
+        self.action_mouse = 'ACTIONMOUSE'
+
+
+# ------------------------------------------------------------------------------
+# Keymap Item Wrappers
+
+def op_menu(menu, kmi_args):
+    return ("wm.call_menu", kmi_args, {"properties": [("name", menu)]})
+
+
+def op_menu_pie(menu, kmi_args):
+    return ("wm.call_menu_pie", kmi_args, {"properties": [("name", menu)]})
+
+
+def op_panel(menu, kmi_args, kmi_data=()):
+    return ("wm.call_panel", kmi_args, {"properties": [("name", menu), *kmi_data]})
+
+
+# ------------------------------------------------------------------------------
+# Keymap Templates
+
+def _template_items_select_actions(operator):
+    return [
+        (operator, {"type": 'A', "value": 'PRESS'}, {"properties": [("action", 'SELECT')]}),
+        (operator, {"type": 'A', "value": 'PRESS', "alt": True}, {"properties": [("action", 'DESELECT')]}),
+        (operator, {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}),
+        (operator, {"type": 'A', "value": 'DOUBLE_CLICK'}, {"properties": [("action", 'DESELECT')]}),
+    ]
+
+
+def _template_items_gizmo_tweak_value():
+    return [
+        ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None),
+    ]
+
+
+def _template_items_gizmo_tweak_modal():
+    return [
+        ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None),
+        ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None),
+        ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None),
+        ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None),
+        ("PRECISION_ON", {"type": 'RIGHT_SHIFT', "value": 'PRESS', "any": True}, None),
+        ("PRECISION_OFF", {"type": 'RIGHT_SHIFT', "value": 'RELEASE', "any": True}, None),
+        ("PRECISION_ON", {"type": 'LEFT_SHIFT', "value": 'PRESS', "any": True}, None),
+        ("PRECISION_OFF", {"type": 'LEFT_SHIFT', "value": 'RELEASE', "any": True}, None),
+        ("SNAP_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None),
+        ("SNAP_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None),
+        ("SNAP_ON", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None),
+        ("SNAP_OFF", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None),
+    ]
+
+
+# ------------------------------------------------------------------------------
+# Window, Screen, Areas, Regions
+
+def km_window(params):
+    items = []
+    keymap = (
+        "Window",
+        {"space_type": 'EMPTY', "region_type": 'WINDOW'},
+        {"items": items},
+    )
+
+    if params.apple:
+        # Apple standard shortcuts. Cmd+F for search since F-keys are not easy to use.
+        items.extend([
+            ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "oskey": True}, None),
+            op_menu("TOPBAR_MT_file_open_recent", {"type": 'O', "value": 'PRESS', "shift": True, "oskey": True}),
+            ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "oskey": True}, None),
+            ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "oskey": True}, None),
+            ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "oskey": True}, None),
+            ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "oskey": True}, None),
+            ("wm.search_menu", {"type": 'F', "value": 'PRESS', "oskey": True}, None),
+        ])
+
+    items.extend([
+        # File operations
+        ("wm.read_homefile", {"type": 'N', "value": 'PRESS', "ctrl": True}, None),
+        op_menu("TOPBAR_MT_file_open_recent", {"type": 'O', "value": 'PRESS', "shift": True, "ctrl": True}),
+        ("wm.open_mainfile", {"type": 'O', "value": 'PRESS', "ctrl": True}, None),
+        ("wm.save_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True}, None),
+        ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True}, None),
+        ("wm.quit_blender", {"type": 'Q', "value": 'PRESS', "ctrl": True}, None),
+
+        # Quick menu and toolbar
+        op_menu("SCREEN_MT_user_menu", {"type": 'Q', "value": 'PRESS'}),
+        ("wm.toolbar", {"type": 'SPACE', "value": 'PRESS'}, None),
+
+        # Fast editor switching
+        ("wm.context_set_enum", {"type": 'F4', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'area.type'), ("value", 'CONSOLE')]}),
+        ("wm.context_set_enum", {"type": 'F5', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'area.type'), ("value", 'VIEW_3D')]}),
+        ("wm.context_set_enum", {"type": 'F6', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'area.type'), ("value", 'GRAPH_EDITOR')]}),
+        ("wm.context_set_enum", {"type": 'F7', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'area.type'), ("value", 'PROPERTIES')]}),
+        ("wm.context_set_enum", {"type": 'F8', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'area.type'), ("value", 'SEQUENCE_EDITOR')]}),
+        ("wm.context_set_enum", {"type": 'F9', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'area.type'), ("value", 'OUTLINER')]}),
+        ("wm.context_set_enum", {"type": 'F10', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'area.type'), ("value", 'IMAGE_EDITOR')]}),
+        ("wm.context_set_enum", {"type": 'F11', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'area.type'), ("value", 'TEXT_EDITOR')]}),
+        ("wm.context_set_enum", {"type": 'F12', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'area.type'), ("value", 'DOPESHEET_EDITOR')]}),
+
+        # NDOF settings
+        op_menu("USERPREF_MT_ndof_settings", {"type": 'NDOF_BUTTON_MENU', "value": 'PRESS'}),
+        ("wm.context_scale_float", {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS'},
+         {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 1.1)]}),
+        ("wm.context_scale_float", {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS'},
+         {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 1.0 / 1.1)]}),
+        ("wm.context_scale_float", {"type": 'NDOF_BUTTON_PLUS', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 1.5)]}),
+        ("wm.context_scale_float", {"type": 'NDOF_BUTTON_MINUS', "value": 'PRESS', "shift": True},
+         {"properties": [("data_path", 'user_preferences.inputs.ndof_sensitivity'), ("value", 2.0 / 3.0)]}),
+        ("info.reports_display_update", {"type": 'TIMER_REPORT', "value": 'ANY', "any": True}, None),
+    ])
+
+    if not params.legacy:
+        # New shortcuts
+        items.extend([
+            ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS'}, None),
+            op_menu("TOPBAR_MT_file_specials", {"type": 'F2', "value": 'PRESS'}),
+            ("wm.search_menu", {"type": 'F3', "value": 'PRESS'}, None),
+            op_menu("TOPBAR_MT_window_specials", {"type": 'F4', "value": 'PRESS'}),
+        ])
+    else:
+        # Old shorctus
+        items.extend([
+            ("wm.window_new", {"type": 'W', "value": 'PRESS', "ctrl": True, "alt": True}, None),
+            ("wm.save_homefile", {"type": 'U', "value": 'PRESS', "ctrl": True}, None),
+            ("wm.open_mainfile", {"type": 'F1', "value": 'PRESS'}, None),
+            ("wm.link", {"type": 'O', "value": 'PRESS', "ctrl": True, "alt": True}, None),
+            ("wm.append", {"type": 'F1', "value": 'PRESS', "shift": True}, None),
+            ("wm.save_mainfile", {"type": 'W', "value": 'PRESS', "ctrl": True}, None),
+            ("wm.save_as_mainfile", {"type": 'F2', "value": 'PRESS'}, None),
+            ("wm.save_as_mainfile", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
+             {"properties": [("copy", True)]}),
+            ("wm.window_fullscreen_toggle", {"type": 'F11', "value": 'PRESS', "alt": True}, None),
+            ("wm.doc_view_manual_ui_context", {"type": 'F1', "value": 'PRESS', "alt": True}, None),
+            ("wm.redraw_timer", {"type": 'T', "value": 'PRESS', "ctrl": True, "alt": True}, None),
+            ("wm.debug_menu", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
+        ])
+
+    return keymap
+
+
+def km_screen(params):
+    items = []
+    keymap = (
+        "Screen",
+        {"space_type": 'EMPTY', "region_type": 'WINDOW'},
+        {"items": items},
+    )
+
+    items.extend([
+        # Animation
+        ("screen.animation_step", {"type": 'TIMER0', "value": 'ANY', "any": True}, None),
+        ("screen.region_blend", {"type": 'TIMERREGION', "value": 'ANY', "any": True}, None),
+        # Full screen and cycling
+        ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "ctrl": True}, None),
+        ("screen.screen_full_area", {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True},
+         {"properties": [("use_hide_panels", True)]}),
+        ("screen.space_context_cycle", {"type": 'TAB', "value": 'PRESS', "ctrl": True},
+         {"properties": [("direction", 'NEXT')]}),
+        ("screen.space_context_cycle", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
+         {"properties": [("direction", 'PREV')]}),
+        ("screen.workspace_cycle", {"type": 'PAGE_DOWN', "value": 'PRESS', "ctrl": True},
+         {"properties": [("direction", 'NEXT')]}),
+        ("screen.workspace_cycle", {"type": 'PAGE_UP', "value": 'PRESS', "ctrl": True},
+         {"properties": [("direction", 'PREV')]}),
+        # Quad view
+        ("screen.region_quadview", {"type": 'Q', "value": 'PRESS', "ctrl": True, "alt": True}, None),
+        # Repeat last
+        ("screen.repeat_last", {"type": 'R', "value": 'PRESS', "shift": True}, None),
+        # Files
+        ("file.execute", {"type": 'RET', "value": 'PRESS'}, None),
+        ("file.execute", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
+        ("file.cancel", {"type": 'ESC', "value": 'PRESS'}, None),
+        # Undo
+        ("ed.undo", {"type": 'Z', "value": 'PRESS', "ctrl": True}, None),
+        ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "ctrl": True}, None),
+        # Render
+        ("render.render", {"type": 'F12', "value": 'PRESS'},
+         {"properties": [("use_viewport", True)]}),
+        ("render.render", {"type": 'F12', "value": 'PRESS', "ctrl": True},
+         {"properties": [("animation", True), ("use_viewport", True)]}),
+        ("render.view_cancel", {"type": 'ESC', "value": 'PRESS'}, None),
+        ("render.view_show", {"type": 'F11', "value": 'PRESS'}, None),
+        ("render.play_rendered_anim", {"type": 'F11', "value": 'PRESS', "ctrl": True}, None),
+    ])
+
+    if params.legacy:
+        # Old keymap
+        items.extend([
+            ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "ctrl": True, "alt": True}, None),
+            ("screen.screen_set", {"type": 'RIGHT_ARROW', "value": 'PRESS', "ctrl": True},
+             {"properties": [("delta", 1)]}),
+            ("screen.screen_set", {"type": 'LEFT_ARROW', "value": 'PRESS', "ctrl": True},
+             {"properties": [("delta", -1)]}),
+            ("screen.screenshot", {"type": 'F3', "value": 'PRESS', "ctrl": True}, None),
+            ("screen.repeat_history", {"type": 'R', "value": 'PRESS', "ctrl": True, "alt": True}, None),
+            ("screen.region_flip", {"type": 'F5', "value": 'PRESS'}, None),
+            ("screen.redo_last", {"type": 'F6', "value": 'PRESS'}, None),
+            ("script.reload", {"type": 'F8', "value": 'PRESS'}, None),
+            ("screen.userpref_show", {"type": 'U', "value": 'PRESS', "ctrl": True, "alt": True}, None),
+        ])
+
+    if params.apple:
+        # Apple undo and user prefs
+        items.extend([
+            ("ed.undo", {"type": 'Z', "value": 'PRESS', "oskey": True}, None),
+            ("ed.redo", {"type": 'Z', "value": 'PRESS', "shift": True, "oskey": True}, None),
+            ("ed.undo_history", {"type": 'Z', "value": 'PRESS', "alt": True, "oskey": True}, None),
+            ("screen.userpref_show", {"type": 'COMMA', "value": 'PRESS', "oskey": True}, None),
+        ])
+
+    return keymap
+
+
+def km_screen_editing(params):
+    items = []
+    keymap = ("Screen Editing",
+              {"space_type": 'EMPTY', "region_type": 'WINDOW'},
+              {"items": items})
+
+    items.extend([
+        # Action zones
+        ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS'},
+         {"properties": [("modifier", 0)]}),
+        ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True},
+         {"properties": [("modifier", 1)]}),
+        ("screen.actionzone", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
+         {"properties": [("modifier", 2)]}),
+        # Screen tools
+        ("screen.area_split", {"type": 'ACTIONZONE_AREA', "value": 'ANY'}, None),
+        ("screen.area_join", {"type": 'ACTIONZONE_AREA', "value": 'ANY'}, None),
+        ("screen.area_dupli", {"type": 'ACTIONZONE_AREA', "value": 'ANY', "shift": True}, None),
+        ("screen.area_swap", {"type": 'ACTIONZONE_AREA', "value": 'ANY', "ctrl": True}, None),
+        ("screen.region_scale", {"type": 'ACTIONZONE_REGION', "value": 'ANY'}, None),
+        ("screen.screen_full_area", {"type": 'ACTIONZONE_FULLSCREEN', "value": 'ANY'},
+         {"properties": [("use_hide_panels", True)]}),
+        # Area move after action zones
+        ("screen.area_move", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
+        ("screen.area_options", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
+    ])
+
+    if params.legacy:
+        items.extend([
+            ("screen.header", {"type": 'F9', "value": 'PRESS', "alt": True}, None),
+        ])
+
+    return keymap
+
+
+def km_header(_params):
+    items = []
+    keymap = (
+        "Header",
+        {"space_type": 'EMPTY', "region_type": 'WINDOW'},
+        {"items": items},
+    )
+
+    items.extend([
+        ("screen.header_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
+    ])
+
+    return keymap
+
+
+def km_view2d(_params):
+    items = []
+    keymap = (
+        "View2D",
+        {"space_type": 'EMPTY', "region_type": 'WINDOW'},
+        {"items": items},
+    )
+
+    items.extend([
+        # Scrollbars
+        ("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
+        ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
+        # Pan/scroll
+        ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
+        ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
+        ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
+        ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True}, None),
+        ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True}, None),
+        ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None),
+        ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None),
+        ("view2d.ndof", {"type": 'NDOF_MOTION', "value": 'ANY'}, None),
+        # Zoom with single step
+        ("view2d.zoom_out", {"type": 'WHEELOUTMOUSE', "value": 'PRESS'}, None),
+        ("view2d.zoom_in", {"type": 'WHEELINMOUSE', "value": 'PRESS'}, None),
+        ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
+        ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
+        ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
+        ("view2d.smoothview", {"type": 'TIMER1', "value": 'ANY', "any": True}, None),
+        # Scroll up/down, only when zoom is not available.
+        ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
+        ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
+        ("view2d.scroll_right", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
+        ("view2d.scroll_left", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
+        # Zoom with drag and border
+        ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
+        ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
+        ("view2d.zoom_border", {"type": 'B', "value": 'PRESS', "shift": True}, None),
+    ])
+
+    return keymap
+
+
+def km_view2d_buttons_list(_params):
+    items = []
+    keymap = (
+        "View2D Buttons List",
+        {"space_type": 'EMPTY', "region_type": 'WINDOW'},
+        {"items": items},
+    )
+
+    items.extend([
+        # Scrollbars
+        ("view2d.scroller_activate", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
+        ("view2d.scroller_activate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
+        # Pan scroll
+        ("view2d.pan", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
+        ("view2d.pan", {"type": 'TRACKPADPAN', "value": 'ANY'}, None),
+        ("view2d.scroll_down", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None),
+        ("view2d.scroll_up", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None),
+        ("view2d.scroll_down", {"type": 'PAGE_DOWN', "value": 'PRESS'},
+         {"properties": [("page", True)]}),
+        ("view2d.scroll_up", {"type": 'PAGE_UP', "value": 'PRESS'},
+         {"properties": [("page", True)]}),
+        # Zoom
+        ("view2d.zoom", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "ctrl": True}, None),
+        ("view2d.zoom", {"type": 'TRACKPADZOOM', "value": 'ANY'}, None),
+        ("view2d.zoom", {"type": 'TRACKPADPAN', "value": 'ANY', "ctrl": True}, None),
+        ("view2d.zoom_out", {"type": 'NUMPAD_MINUS', "value": 'PRESS'}, None),
+        ("view2d.zoom_in", {"type": 'NUMPAD_PLUS', "value": 'PRESS'}, None),
+        ("view2d.reset", {"type": 'HOME', "value": 'PRESS'}, None),
+    ])
+
+    return keymap
+
+
+def km_user_interface(_params):
+    items = []
+    keymap = (
+        "User Interface",
+        {"space_type": 'EMPTY', "region_type": 'WINDOW'},
+        {"items": items},
+    )
+
+    items.extend([
+        # Eyedroppers all have the same event, and pass it through until
+        # a suitable eyedropper handles it.
+        ("ui.eyedropper_color", {"type": 'E', "value": 'PRESS'}, None),
+        ("ui.eyedropper_colorband", {"type": 'E', "value": 'PRESS'}, None),
+        ("ui.eyedropper_colorband_point", {"type": 'E', "value": 'PRESS', "alt": True}, None),
+        ("ui.eyedropper_id", {"type": 'E', "value": 'PRESS'}, None),
+        ("ui.eyedropper_depth", {"type": 'E', "value": 'PRESS'}, None),
+        # Copy data path
+        ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True}, None),
+        ("ui.copy_data_path_button", {"type": 'C', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True},
+         {"properties": [("full_path", True)]}),
+        # Keyframes and drivers
+        ("anim.keyframe_insert_button", {"type": 'I', "value": 'PRESS'}, None),
+        ("anim.keyframe_delete_button", {"type": 'I', "value": 'PRESS', "alt": True}, None),
+        ("anim.keyframe_clear_button", {"type": 'I', "value": 'PRESS', "shift": True, "alt": True}, None),
+        ("anim.driver_button_add", {"type": 'D', "value": 'PRESS', "ctrl": True}, None),
+        ("anim.driver_button_remove", {"type": 'D', "value": 'PRESS', "ctrl": True, "alt": True}, None),
+        ("anim.keyingset_button_add", {"type": 'K', "value": 'PRESS'}, None),
+        ("anim.keyingset_button_remove", {"type": 'K', "value": 'PRESS', "alt": True}, None),
+    ])
+
+    return keymap
+
+
+# ------------------------------------------------------------------------------
+# Editors
+
+
+def km_property_editor(_params):
+    items = []
+    keymap = (
+        "Property Editor",
+        {"space_type": 'PROPERTIES', "region_type": 'WINDOW'},
+        {"items": items},
+    )
+
+    items.extend([
+        ("buttons.context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None),
+        ("screen.space_context_cycle", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "ctrl": True},
+         {"properties": [("direction", 'PREV'), ], },),
+        ("screen.space_context_cycle", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
+         {"properties": [("direction", 'NEXT'), ], },),
+    ])
+
+    return keymap
+
+
+def km_outliner(_params):
+    items = []
+    keymap = (
+        "Outliner",
+        {"space_type": 'OUTLINER', "region_type": 'WINDOW'},
+        {"items": items},
+    )
+
+    items.extend([
+        ("outliner.highlight_update", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None),
+        ("outliner.item_rename", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None),
+        ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK'},
+         {"properties": [("extend", False), ("recursive", False)]}),
+        ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True},
+         {"properties": [("extend", True), ("recursive", False)]}),
+        ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True},
+         {"properties": [("extend", False), ("recursive", True)]}),
+        ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True, "ctrl": True},
+         {"properties": [("extend", True), ("recursive", True)]}),
+        ("outliner.select_box", {"type": 'B', "value": 'PRESS'}, None),
+        ("outliner.item_openclose", {"type": 'RET', "value": 'PRESS'},
+         {"properties": [("all", False)]}),
+        ("outliner.item_openclose", {"type": 'RET', "value": 'PRESS', "shift": True},