diff --git a/development_api_navigator.py b/development_api_navigator.py
index ffd72f82fd3919e1043dcb97b688abfe6d7b379c..0b4989235c2a9d0cb1efc9d12b3adfe6e0d5b2e8 100644
--- a/development_api_navigator.py
+++ b/development_api_navigator.py
@@ -658,15 +658,14 @@ class OBJECT_PT_api_navigator(ApiNavigator, bpy.types.Panel):
 
 
 def register_keymaps():
-    kc = bpy.context.window_manager.keyconfigs['Blender']
-    km = kc.keymaps.get("Text")
-    if km is None:
-         km = kc.keymaps.new(name="Text")
+    kc = bpy.context.window_manager.keyconfigs.addon
+    km = kc.keymaps.new(name="Text", space_type="TEXT")
     km.keymap_items.new('api_navigator.toggle_doc', 'ESC', 'PRESS')
 
 
 def unregister_keymaps():
-    km = bpy.data.window_managers["WinMan"].keyconfigs.default.keymaps["Text"]
+    kc = bpy.context.window_manager.keyconfigs.addon
+    km = kc.keymaps["Text"]
     kmi = km.keymap_items["api_navigator.toggle_doc"]
     km.keymap_items.remove(kmi)
 
diff --git a/io_coat3D/coat.py b/io_coat3D/coat.py
index 4d967ce14c6f4fc1574460ae64f2e3313dec03e6..491da6210f41cefedd4a3699764c3f9f6f953398 100644
--- a/io_coat3D/coat.py
+++ b/io_coat3D/coat.py
@@ -625,7 +625,8 @@ class VIEW3D_MT_ExtraMenu(bpy.types.Menu):
 def register():
     bpy.utils.register_module(__name__)
 
-    km = bpy.context.window_manager.keyconfigs.default.keymaps['3D View']
+    wm = bpy.context.window_manager
+    km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
     kmi = km.keymap_items.new('wm.call_menu2', 'Q', 'PRESS')
     kmi.properties.name = "VIEW3D_MT_Coat_Dynamic_Menu"
 
@@ -633,7 +634,8 @@ def register():
 def unregister():
     bpy.utils.unregister_module(__name__)
 
-    km = bpy.context.window_manager.keyconfigs.default.keymaps['3D View']
+    wm = bpy.context.window_manager
+    km = wm.keyconfigs.addon.keymaps['3D View']
     for kmi in km.keymap_items:
         if kmi.idname == '':
             if kmi.properties.name == "VIEW3D_MT_Coat_Dynamic_Menu":
diff --git a/mesh_bsurfaces.py b/mesh_bsurfaces.py
index 2bb0fc0eeb20241d4637b7801189c874fc9a5bc2..40cf891c3be310508a3e11f0762d9883deae5e6e 100644
--- a/mesh_bsurfaces.py
+++ b/mesh_bsurfaces.py
@@ -828,8 +828,10 @@ def register():
     bpy.types.Scene.SURFSK_precision = bpy.props.IntProperty(name="Precision", description="Precision level of the surface calculation", default=4, min=0, max=100000)
     bpy.types.Scene.SURFSK_keep_strokes = bpy.props.BoolProperty(name="Keep strokes", description="Keeps the sketched strokes after adding the surface", default=False)
 
-    keymap_item_add_surf = bpy.data.window_managers[0].keyconfigs.active.keymaps["3D View"].keymap_items.new("gpencil.surfsk_add_surface","E","PRESS", key_modifier="D")
-    keymap_item_stroke_to_curve = bpy.data.window_managers[0].keyconfigs.active.keymaps["3D View"].keymap_items.new("gpencil.surfsk_strokes_to_curves","C","PRESS", key_modifier="D")
+    kc = bpy.context.window_manager.keyconfigs.addon
+    km = kc.keymaps.new(name="3D View", space_type="VIEW_3D")
+    keymap_item_add_surf = km.keymap_items.new("gpencil.surfsk_add_surface","E","PRESS", key_modifier="D")
+    keymap_item_stroke_to_curve = km.keymap_items.new("gpencil.surfsk_strokes_to_curves","C","PRESS", key_modifier="D")
     
 
 def unregister():
@@ -842,7 +844,8 @@ def unregister():
     del bpy.types.Scene.SURFSK_precision
     del bpy.types.Scene.SURFSK_keep_strokes
     
-    km = bpy.data.window_managers[0].keyconfigs.active.keymaps["3D View"]
+    kc = bpy.context.window_manager.keyconfigs.addon
+    km = kc.keymaps["3D View"]
     for kmi in km.keymap_items:
         if kmi.idname == 'wm.call_menu':
             if kmi.properties.name == "GPENCIL_OT_SURFSK_add_surface":
diff --git a/space_view3d_copy_attributes.py b/space_view3d_copy_attributes.py
index 3a35ed1fa6d1828c503db11ccee5dd57eead2311..a6ffc08bd09d75ee1dec31938763e7b24b555f54 100644
--- a/space_view3d_copy_attributes.py
+++ b/space_view3d_copy_attributes.py
@@ -767,16 +767,12 @@ def register():
     bpy.utils.register_module(__name__)
 
     ''' mostly to get the keymap working '''
-    kc = bpy.context.window_manager.keyconfigs['Blender']
-    km = kc.keymaps.get("Object Mode")
-    if km is None:
-        km = kc.keymaps.new(name="Object Mode")
+    kc = bpy.context.window_manager.keyconfigs.addon
+    km = kc.keymaps.new(name="Object Mode")
     kmi = km.keymap_items.new('wm.call_menu', 'C', 'PRESS', ctrl=True)
     kmi.properties.name = 'VIEW3D_MT_copypopup'
-    km = kc.keymaps.get("Pose")
-    if km is None:
-        km = kc.keymaps.new(name="Pose")
 
+    km = kc.keymaps.new(name="Pose")
     kmi = km.keymap_items.get("pose.copy")
     if kmi is not None:
         kmi.idname = 'wm.call_menu'
@@ -786,9 +782,8 @@ def register():
     for menu in _layer_menus:
         bpy.utils.register_class(menu)
     bpy.types.DATA_PT_texface.append(_add_tface_buttons)
-    km = kc.keymaps.get("Mesh")
-    if km is None:
-        km = kc.keymaps.new(name="Mesh")
+
+    km = kc.keymaps.new(name="Mesh")
     kmi = km.keymap_items.new('wm.call_menu', 'C', 'PRESS')
     kmi.ctrl = True
     kmi.properties.name = 'MESH_MT_CopyFaceSettings'
@@ -798,7 +793,7 @@ def unregister():
     bpy.utils.unregister_module(__name__)
 
     ''' mostly to remove the keymap '''
-    kms = bpy.context.window_manager.keyconfigs['Blender'].keymaps['Pose']
+    kms = bpy.context.window_manager.keyconfigs.addon.keymaps['Pose']
     for item in kms.keymap_items:
         if item.name == 'Call Menu' and item.idname == 'wm.call_menu' and \
            item.properties.name == 'VIEW3D_MT_posecopypopup':
@@ -807,11 +802,17 @@ def unregister():
     for menu in _layer_menus:
         bpy.utils.unregister_class(menu)
     bpy.types.DATA_PT_texface.remove(_add_tface_buttons)
-    km = bpy.context.window_manager.keyconfigs.active.keymaps['Mesh']
+    km = bpy.context.window_manager.keyconfigs.addon.keymaps['Mesh']
     for kmi in km.keymap_items:
         if kmi.idname == 'wm.call_menu':
             if kmi.properties.name == 'MESH_MT_CopyFaceSettings':
                 km.keymap_items.remove(kmi)
 
+    km = bpy.context.window_manager.keyconfigs.addon.keymaps['Object Mode']
+    for kmi in km.keymap_items:
+        if kmi.idname == 'wm.call_menu':
+            if kmi.properties.name == 'VIEW3D_MT_copypopup':
+                km.keymap_items.remove(kmi)
+
 if __name__ == "__main__":
     register()
diff --git a/space_view3d_materials_utils.py b/space_view3d_materials_utils.py
index 2b3bb2d0a19eba4b001c18d5c6326204f845b7bf..a0e433167d4bb307a8ddd75ac91d0bddfe109f3b 100644
--- a/space_view3d_materials_utils.py
+++ b/space_view3d_materials_utils.py
@@ -686,18 +686,15 @@ class VIEW3D_MT_select_material(bpy.types.Menu):
 def register():
     bpy.utils.register_module(__name__)
     
-    kc = bpy.data.window_managers[0].keyconfigs.default
-    km = kc.keymaps.get("3D View")
-    if km is None:
-        km = kc.keymaps.new(name="3D View")
-
+    kc = bpy.context.window_manager.keyconfigs.addon
+    km = kc.keymaps.new(name="3D View", space_type="VIEW_3D")
     kmi = km.keymap_items.new('wm.call_menu', 'Q', 'PRESS')
     kmi.properties.name = "VIEW3D_MT_master_material"
 
 def unregister():
     bpy.utils.unregister_module(__name__)
 
-    kc = bpy.data.window_managers[0].keyconfigs.default
+    kc = bpy.context.window_manager.keyconfigs.addon
     km = kc.keymaps["3D View"]
     for kmi in km.keymap_items:
         if kmi.idname == 'wm.call_menu':
diff --git a/space_view3d_spacebar_menu.py b/space_view3d_spacebar_menu.py
index 24082cd348a8035275cfb6dc1fdc2e663f2c5693..33a029cc2582c96f9a66a31548474c213015582a 100644
--- a/space_view3d_spacebar_menu.py
+++ b/space_view3d_spacebar_menu.py
@@ -1507,15 +1507,16 @@ class VIEW3D_MT_undoS(bpy.types.Menu):
 def register():
     bpy.utils.register_module(__name__)
 
-    km = bpy.context.window_manager.keyconfigs.active.keymaps['3D View']
+    wm = bpy.context.window_manager
+    km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
     kmi = km.keymap_items.new('wm.call_menu', 'SPACE', 'PRESS')
     kmi.properties.name = "VIEW3D_MT_Space_Dynamic_Menu"
 
-
 def unregister():
     bpy.utils.unregister_module(__name__)
 
-    km = bpy.context.window_manager.keyconfigs.active.keymaps['3D View']
+    wm = bpy.context.window_manager
+    km = wm.keyconfigs.addon.keymaps['3D View']
     for kmi in km.keymap_items:
         if kmi.idname == 'wm.call_menu':
             if kmi.properties.name == "VIEW3D_MT_Space_Dynamic_Menu":