Cleanup: move keymap hierarchy into own file
authorCampbell Barton <ideasman42@gmail.com>
Tue, 20 Nov 2018 00:36:44 +0000 (11:36 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 20 Nov 2018 00:38:13 +0000 (11:38 +1100)
release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
release/scripts/modules/bl_keymap_utils/__init__.py
release/scripts/modules/bl_keymap_utils/keymap_hierarchy.py [new file with mode: 0644]
release/scripts/modules/bpy_extras/keyconfig_utils.py
release/scripts/modules/rna_keymap_ui.py
tests/python/bl_keymap_completeness.py

index fada1255e8b5ec73d666a85309b54b53698a2083..f22675b481f5641be294657c522d117455c65564 100644 (file)
@@ -437,8 +437,8 @@ def dump_rna_messages(msgs, reports, settings, verbose=False):
                     reports, check_ctxt_rna, settings)
 
     # And parse keymaps!
-    from bpy_extras.keyconfig_utils import km_hierarchy
-    walk_keymap_hierarchy(km_hierarchy(), "KM_HIERARCHY")
+    from bl_keymap_utils import keymap_hierarchy
+    walk_keymap_hierarchy(keymap_hierarchy.generate(), "KM_HIERARCHY")
 
 
 ##### Python source code #####
index 6c1a7d2cd50fec7d460fc9375bbb77f98e3067c6..1c4a64081f8217ebdf60f72541839ad38a6f2848 100644 (file)
@@ -21,4 +21,5 @@
 __all__ = (
     "io",
     "keymap_from_toolbar",
+    "keymap_hierarchy",
 )
diff --git a/release/scripts/modules/bl_keymap_utils/keymap_hierarchy.py b/release/scripts/modules/bl_keymap_utils/keymap_hierarchy.py
new file mode 100644 (file)
index 0000000..a769bb3
--- /dev/null
@@ -0,0 +1,206 @@
+# ##### 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 #####
+
+# <pep8 compliant>
+
+__all__ = (
+    "generate",
+)
+
+def _km_expand_from_toolsystem(space_type, context_mode):
+    def _fn():
+        from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
+        for cls in ToolSelectPanelHelper.__subclasses__():
+            if cls.bl_space_type == space_type:
+                return cls.keymap_ui_hierarchy(context_mode)
+        raise Exception("keymap not found")
+    return _fn
+
+
+def _km_hierarchy_iter_recursive(items):
+    for sub in items:
+        if callable(sub):
+            yield from sub()
+        else:
+            yield (*sub[:3], list(_km_hierarchy_iter_recursive(sub[3])))
+
+
+def generate():
+    return list(_km_hierarchy_iter_recursive(_km_hierarchy))
+
+
+# bpy.type.KeyMap: (km.name, km.space_type, km.region_type, [...])
+
+#    ('Script', 'EMPTY', 'WINDOW', []),
+
+
+# Access via 'km_hierarchy'.
+_km_hierarchy = [
+    ('Window', 'EMPTY', 'WINDOW', []),  # file save, window change, exit
+    ('Screen', 'EMPTY', 'WINDOW', [     # full screen, undo, screenshot
+        ('Screen Editing', 'EMPTY', 'WINDOW', []),    # re-sizing, action corners
+        ('Header', 'EMPTY', 'WINDOW', []),            # header stuff (per region)
+    ]),
+
+    ('View2D', 'EMPTY', 'WINDOW', []),    # view 2d navigation (per region)
+    ('View2D Buttons List', 'EMPTY', 'WINDOW', []),  # view 2d with buttons navigation
+
+    ('User Interface', 'EMPTY', 'WINDOW', []),
+
+    ('3D View', 'VIEW_3D', 'WINDOW', [  # view 3d navigation and generic stuff (select, transform)
+        ('Object Mode', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'OBJECT'),
+        ]),
+        ('Mesh', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_MESH'),
+        ]),
+        ('Curve', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_CURVE'),
+        ]),
+        ('Armature', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_ARMATURE'),
+        ]),
+        ('Metaball', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_METABALL'),
+        ]),
+        ('Lattice', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_LATTICE'),
+        ]),
+        ('Font', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_TEXT'),
+        ]),
+
+        ('Pose', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'POSE'),
+        ]),
+
+        ('Vertex Paint', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'PAINT_VERTEX'),
+        ]),
+        ('Weight Paint', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'PAINT_WEIGHT'),
+        ]),
+        ('Weight Paint Vertex Selection', 'EMPTY', 'WINDOW', []),
+        ('Face Mask', 'EMPTY', 'WINDOW', []),
+        # image and view3d
+        ('Image Paint', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'PAINT_TEXTURE'),
+        ]),
+        ('Sculpt', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'SCULPT'),
+        ]),
+
+        ('Particle', 'EMPTY', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', 'PARTICLE'),
+        ]),
+
+        ('Knife Tool Modal Map', 'EMPTY', 'WINDOW', []),
+        ('Custom Normals Modal Map', 'EMPTY', 'WINDOW', []),
+        ('Paint Stroke Modal', 'EMPTY', 'WINDOW', []),
+        ('Paint Curve', 'EMPTY', 'WINDOW', []),
+
+        ('Object Non-modal', 'EMPTY', 'WINDOW', []),  # mode change
+
+        ('View3D Walk Modal', 'EMPTY', 'WINDOW', []),
+        ('View3D Fly Modal', 'EMPTY', 'WINDOW', []),
+        ('View3D Rotate Modal', 'EMPTY', 'WINDOW', []),
+        ('View3D Move Modal', 'EMPTY', 'WINDOW', []),
+        ('View3D Zoom Modal', 'EMPTY', 'WINDOW', []),
+        ('View3D Dolly Modal', 'EMPTY', 'WINDOW', []),
+
+        # toolbar and properties
+        ('3D View Generic', 'VIEW_3D', 'WINDOW', [
+            _km_expand_from_toolsystem('VIEW_3D', None),
+        ]),
+    ]),
+
+    ('Graph Editor', 'GRAPH_EDITOR', 'WINDOW', [
+        ('Graph Editor Generic', 'GRAPH_EDITOR', 'WINDOW', []),
+    ]),
+    ('Dopesheet', 'DOPESHEET_EDITOR', 'WINDOW', [
+        ('Dopesheet Generic', 'DOPESHEET_EDITOR', 'WINDOW', []),
+    ]),
+    ('NLA Editor', 'NLA_EDITOR', 'WINDOW', [
+        ('NLA Channels', 'NLA_EDITOR', 'WINDOW', []),
+        ('NLA Generic', 'NLA_EDITOR', 'WINDOW', []),
+    ]),
+    ('Timeline', 'TIMELINE', 'WINDOW', []),
+
+    ('Image', 'IMAGE_EDITOR', 'WINDOW', [
+        ('UV Editor', 'EMPTY', 'WINDOW', []),  # image (reverse order, UVEdit before Image)
+        ('Image Paint', 'EMPTY', 'WINDOW', []),  # image and view3d
+        ('UV Sculpt', 'EMPTY', 'WINDOW', []),
+        ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', [
+            _km_expand_from_toolsystem('IMAGE_EDITOR', None),
+        ]),
+    ]),
+
+    ('Outliner', 'OUTLINER', 'WINDOW', []),
+
+    ('Node Editor', 'NODE_EDITOR', 'WINDOW', [
+        ('Node Generic', 'NODE_EDITOR', 'WINDOW', []),
+    ]),
+    ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', [
+        ('SequencerCommon', 'SEQUENCE_EDITOR', 'WINDOW', []),
+        ('SequencerPreview', 'SEQUENCE_EDITOR', 'WINDOW', []),
+    ]),
+
+    ('File Browser', 'FILE_BROWSER', 'WINDOW', [
+        ('File Browser Main', 'FILE_BROWSER', 'WINDOW', []),
+        ('File Browser Buttons', 'FILE_BROWSER', 'WINDOW', []),
+    ]),
+
+    ('Info', 'INFO', 'WINDOW', []),
+
+    ('Property Editor', 'PROPERTIES', 'WINDOW', []),  # align context menu
+
+    ('Text', 'TEXT_EDITOR', 'WINDOW', [
+        ('Text Generic', 'TEXT_EDITOR', 'WINDOW', []),
+    ]),
+    ('Console', 'CONSOLE', 'WINDOW', []),
+    ('Clip', 'CLIP_EDITOR', 'WINDOW', [
+        ('Clip Editor', 'CLIP_EDITOR', 'WINDOW', []),
+        ('Clip Graph Editor', 'CLIP_EDITOR', 'WINDOW', []),
+        ('Clip Dopesheet Editor', 'CLIP_EDITOR', 'WINDOW', []),
+    ]),
+
+    ('Grease Pencil', 'EMPTY', 'WINDOW', [  # grease pencil stuff (per region)
+        ('Grease Pencil Stroke Edit Mode', 'EMPTY', 'WINDOW', []),
+        ('Grease Pencil Stroke Paint (Draw brush)', 'EMPTY', 'WINDOW', []),
+        ('Grease Pencil Stroke Paint (Fill)', 'EMPTY', 'WINDOW', []),
+        ('Grease Pencil Stroke Paint (Erase)', 'EMPTY', 'WINDOW', []),
+        ('Grease Pencil Stroke Paint Mode', 'EMPTY', 'WINDOW', []),
+        ('Grease Pencil Stroke Sculpt Mode', 'EMPTY', 'WINDOW', []),
+        ('Grease Pencil Stroke Weight Mode', 'EMPTY', 'WINDOW', []),
+    ]),
+    ('Mask Editing', 'EMPTY', 'WINDOW', []),
+    ('Frames', 'EMPTY', 'WINDOW', []),    # frame navigation (per region)
+    ('Markers', 'EMPTY', 'WINDOW', []),    # markers (per region)
+    ('Animation', 'EMPTY', 'WINDOW', []),    # frame change on click, preview range (per region)
+    ('Animation Channels', 'EMPTY', 'WINDOW', []),
+
+    ('View3D Gesture Circle', 'EMPTY', 'WINDOW', []),
+    ('Gesture Straight Line', 'EMPTY', 'WINDOW', []),
+    ('Gesture Zoom Border', 'EMPTY', 'WINDOW', []),
+    ('Gesture Box', 'EMPTY', 'WINDOW', []),
+
+    ('Standard Modal Map', 'EMPTY', 'WINDOW', []),
+    ('Transform Modal Map', 'EMPTY', 'WINDOW', []),
+    ('Eyedropper Modal Map', 'EMPTY', 'WINDOW', []),
+    ('Eyedropper ColorBand PointSampling Map', 'EMPTY', 'WINDOW', []),
+]
index 1c5671d737ebf578e4880ee6ecc3a96fbb1cb41b..b7342adcee7c9f4cf22db1412acbfb995192e521 100644 (file)
 # <pep8 compliant>
 
 
-def _km_expand_from_toolsystem(space_type, context_mode):
-    def _fn():
-        from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
-        for cls in ToolSelectPanelHelper.__subclasses__():
-            if cls.bl_space_type == space_type:
-                return cls.keymap_ui_hierarchy(context_mode)
-        raise Exception("keymap not found")
-    return _fn
-
-
-def _km_hierarchy_iter_recursive(items):
-    for sub in items:
-        if callable(sub):
-            yield from sub()
-        else:
-            yield (*sub[:3], list(_km_hierarchy_iter_recursive(sub[3])))
-
-
-def km_hierarchy():
-    return list(_km_hierarchy_iter_recursive(_km_hierarchy))
-
-
-# bpy.type.KeyMap: (km.name, km.space_type, km.region_type, [...])
-
-#    ('Script', 'EMPTY', 'WINDOW', []),
-
-
-# Access via 'km_hierarchy'.
-_km_hierarchy = [
-    ('Window', 'EMPTY', 'WINDOW', []),  # file save, window change, exit
-    ('Screen', 'EMPTY', 'WINDOW', [     # full screen, undo, screenshot
-        ('Screen Editing', 'EMPTY', 'WINDOW', []),    # re-sizing, action corners
-        ('Header', 'EMPTY', 'WINDOW', []),            # header stuff (per region)
-    ]),
-
-    ('View2D', 'EMPTY', 'WINDOW', []),    # view 2d navigation (per region)
-    ('View2D Buttons List', 'EMPTY', 'WINDOW', []),  # view 2d with buttons navigation
-
-    ('User Interface', 'EMPTY', 'WINDOW', []),
-
-    ('3D View', 'VIEW_3D', 'WINDOW', [  # view 3d navigation and generic stuff (select, transform)
-        ('Object Mode', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'OBJECT'),
-        ]),
-        ('Mesh', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_MESH'),
-        ]),
-        ('Curve', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_CURVE'),
-        ]),
-        ('Armature', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_ARMATURE'),
-        ]),
-        ('Metaball', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_METABALL'),
-        ]),
-        ('Lattice', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_LATTICE'),
-        ]),
-        ('Font', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'EDIT_TEXT'),
-        ]),
-
-        ('Pose', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'POSE'),
-        ]),
-
-        ('Vertex Paint', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'PAINT_VERTEX'),
-        ]),
-        ('Weight Paint', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'PAINT_WEIGHT'),
-        ]),
-        ('Weight Paint Vertex Selection', 'EMPTY', 'WINDOW', []),
-        ('Face Mask', 'EMPTY', 'WINDOW', []),
-        # image and view3d
-        ('Image Paint', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'PAINT_TEXTURE'),
-        ]),
-        ('Sculpt', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'SCULPT'),
-        ]),
-
-        ('Particle', 'EMPTY', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', 'PARTICLE'),
-        ]),
-
-        ('Knife Tool Modal Map', 'EMPTY', 'WINDOW', []),
-        ('Custom Normals Modal Map', 'EMPTY', 'WINDOW', []),
-        ('Paint Stroke Modal', 'EMPTY', 'WINDOW', []),
-        ('Paint Curve', 'EMPTY', 'WINDOW', []),
-
-        ('Object Non-modal', 'EMPTY', 'WINDOW', []),  # mode change
-
-        ('View3D Walk Modal', 'EMPTY', 'WINDOW', []),
-        ('View3D Fly Modal', 'EMPTY', 'WINDOW', []),
-        ('View3D Rotate Modal', 'EMPTY', 'WINDOW', []),
-        ('View3D Move Modal', 'EMPTY', 'WINDOW', []),
-        ('View3D Zoom Modal', 'EMPTY', 'WINDOW', []),
-        ('View3D Dolly Modal', 'EMPTY', 'WINDOW', []),
-
-        # toolbar and properties
-        ('3D View Generic', 'VIEW_3D', 'WINDOW', [
-            _km_expand_from_toolsystem('VIEW_3D', None),
-        ]),
-    ]),
-
-    ('Graph Editor', 'GRAPH_EDITOR', 'WINDOW', [
-        ('Graph Editor Generic', 'GRAPH_EDITOR', 'WINDOW', []),
-    ]),
-    ('Dopesheet', 'DOPESHEET_EDITOR', 'WINDOW', [
-        ('Dopesheet Generic', 'DOPESHEET_EDITOR', 'WINDOW', []),
-    ]),
-    ('NLA Editor', 'NLA_EDITOR', 'WINDOW', [
-        ('NLA Channels', 'NLA_EDITOR', 'WINDOW', []),
-        ('NLA Generic', 'NLA_EDITOR', 'WINDOW', []),
-    ]),
-    ('Timeline', 'TIMELINE', 'WINDOW', []),
-
-    ('Image', 'IMAGE_EDITOR', 'WINDOW', [
-        ('UV Editor', 'EMPTY', 'WINDOW', []),  # image (reverse order, UVEdit before Image)
-        ('Image Paint', 'EMPTY', 'WINDOW', []),  # image and view3d
-        ('UV Sculpt', 'EMPTY', 'WINDOW', []),
-        ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', [
-            _km_expand_from_toolsystem('IMAGE_EDITOR', None),
-        ]),
-    ]),
-
-    ('Outliner', 'OUTLINER', 'WINDOW', []),
-
-    ('Node Editor', 'NODE_EDITOR', 'WINDOW', [
-        ('Node Generic', 'NODE_EDITOR', 'WINDOW', []),
-    ]),
-    ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', [
-        ('SequencerCommon', 'SEQUENCE_EDITOR', 'WINDOW', []),
-        ('SequencerPreview', 'SEQUENCE_EDITOR', 'WINDOW', []),
-    ]),
-
-    ('File Browser', 'FILE_BROWSER', 'WINDOW', [
-        ('File Browser Main', 'FILE_BROWSER', 'WINDOW', []),
-        ('File Browser Buttons', 'FILE_BROWSER', 'WINDOW', []),
-    ]),
-
-    ('Info', 'INFO', 'WINDOW', []),
-
-    ('Property Editor', 'PROPERTIES', 'WINDOW', []),  # align context menu
-
-    ('Text', 'TEXT_EDITOR', 'WINDOW', [
-        ('Text Generic', 'TEXT_EDITOR', 'WINDOW', []),
-    ]),
-    ('Console', 'CONSOLE', 'WINDOW', []),
-    ('Clip', 'CLIP_EDITOR', 'WINDOW', [
-        ('Clip Editor', 'CLIP_EDITOR', 'WINDOW', []),
-        ('Clip Graph Editor', 'CLIP_EDITOR', 'WINDOW', []),
-        ('Clip Dopesheet Editor', 'CLIP_EDITOR', 'WINDOW', []),
-    ]),
-
-    ('Grease Pencil', 'EMPTY', 'WINDOW', [  # grease pencil stuff (per region)
-        ('Grease Pencil Stroke Edit Mode', 'EMPTY', 'WINDOW', []),
-        ('Grease Pencil Stroke Paint (Draw brush)', 'EMPTY', 'WINDOW', []),
-        ('Grease Pencil Stroke Paint (Fill)', 'EMPTY', 'WINDOW', []),
-        ('Grease Pencil Stroke Paint (Erase)', 'EMPTY', 'WINDOW', []),
-        ('Grease Pencil Stroke Paint Mode', 'EMPTY', 'WINDOW', []),
-        ('Grease Pencil Stroke Sculpt Mode', 'EMPTY', 'WINDOW', []),
-        ('Grease Pencil Stroke Weight Mode', 'EMPTY', 'WINDOW', []),
-    ]),
-    ('Mask Editing', 'EMPTY', 'WINDOW', []),
-    ('Frames', 'EMPTY', 'WINDOW', []),    # frame navigation (per region)
-    ('Markers', 'EMPTY', 'WINDOW', []),    # markers (per region)
-    ('Animation', 'EMPTY', 'WINDOW', []),    # frame change on click, preview range (per region)
-    ('Animation Channels', 'EMPTY', 'WINDOW', []),
-
-    ('View3D Gesture Circle', 'EMPTY', 'WINDOW', []),
-    ('Gesture Straight Line', 'EMPTY', 'WINDOW', []),
-    ('Gesture Zoom Border', 'EMPTY', 'WINDOW', []),
-    ('Gesture Box', 'EMPTY', 'WINDOW', []),
-
-    ('Standard Modal Map', 'EMPTY', 'WINDOW', []),
-    ('Transform Modal Map', 'EMPTY', 'WINDOW', []),
-    ('Eyedropper Modal Map', 'EMPTY', 'WINDOW', []),
-    ('Eyedropper ColorBand PointSampling Map', 'EMPTY', 'WINDOW', []),
-]
-
-
 # -----------------------------------------------------------------------------
 # Add-on helpers to properly (un)register their own keymaps.
 
@@ -330,8 +146,9 @@ def keyconfig_test(kc):
     # -------------------------------------------------------------------------
     # Function body
 
+    from bl_keymap_utils import keymap_hierarchy
     result = False
-    for entry in km_hierarchy():
+    for entry in keymap_hierarchy.generate():
         if testEntry(kc, entry):
             result = True
     return result
index 2247d18ae728c811f4e5f57ed45f6d131b7c9c7d..a1afca914aa96315228197d67ecd2b9bd17727b4 100644 (file)
@@ -355,8 +355,8 @@ def draw_filtered(display_keymaps, filter_type, filter_text, layout):
 
 
 def draw_hierarchy(display_keymaps, layout):
-    from bpy_extras import keyconfig_utils
-    for entry in keyconfig_utils.km_hierarchy():
+    from bl_keymap_utils import keymap_hierarchy
+    for entry in keymap_hierarchy.generate():
         draw_entry(display_keymaps, entry, layout)
 
 
index 0edee3b02f0fa6f2f49a548d9948517f86267f92..19541b355e2efdbf16443790fa40f66c7e2718b1 100644 (file)
 
 # <pep8 compliant>
 
-# simple script to test 'keyconfig_utils' contains correct values.
+# simple script to test 'bl_keymap_utils.keymap_hierarchy' contains correct values.
 
+# Needed for 'bl_keymap_utils.keymap_hierarchy' which inspects tools.
+import sys
+import os
+sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, "release", "scripts", "startup"))
+del sys, os
 
-from bpy_extras import keyconfig_utils
+from bl_keymap_utils import keymap_hierarchy
 
 
 def check_maps():
@@ -32,7 +37,7 @@ def check_maps():
             maps[km_name] = (km_space_type, km_region_type)
             fill_maps(km_sub)
 
-    fill_maps(keyconfig_utils.km_hierarchy())
+    fill_maps(keymap_hierarchy.generate())
 
     import bpy
     keyconf = bpy.context.window_manager.keyconfigs.active
@@ -43,14 +48,14 @@ def check_maps():
     # Check keyconfig contains only maps that exist in blender
     test = maps_py - maps_bl
     if test:
-        print("Keymaps that are in 'keyconfig_utils' but not blender")
+        print("Keymaps that are in 'bl_keymap_utils.keymap_hierarchy' but not blender")
         for km_id in sorted(test):
             print("\t%s" % km_id)
         err = True
 
     test = maps_bl - maps_py
     if test:
-        print("Keymaps that are in blender but not in 'keyconfig_utils'")
+        print("Keymaps that are in blender but not in 'bl_keymap_utils.keymap_hierarchy'")
         for km_id in sorted(test):
             km = keyconf.keymaps[km_id]
             print("    ('%s', '%s', '%s', [])," % (km_id, km.space_type, km.region_type))