Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release')
-rw-r--r--release/datafiles/fonts/bmonofont-i18n.ttf.gzbin0 -> 2623844 bytes
-rw-r--r--release/datafiles/startup.blendbin417040 -> 418164 bytes
-rw-r--r--release/scripts/modules/bl_i18n_utils/bl_extract_messages.py11
-rw-r--r--release/scripts/modules/bl_i18n_utils/spell_check_utils.py9
-rw-r--r--release/scripts/modules/console/complete_import.py8
-rw-r--r--release/scripts/presets/interaction/3dsmax.py12
-rw-r--r--release/scripts/presets/keyconfig/3dsmax.py1359
-rw-r--r--release/scripts/startup/bl_operators/object.py4
-rw-r--r--release/scripts/startup/bl_operators/wm.py4
-rw-r--r--release/scripts/startup/bl_ui/__init__.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_constraint.py (renamed from release/scripts/startup/bl_ui/properties_object_constraint.py)10
-rw-r--r--release/scripts/startup/bl_ui/properties_data_modifier.py8
-rw-r--r--release/scripts/startup/bl_ui/properties_paint_common.py25
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_rigidbody.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_texture.py3
-rw-r--r--release/scripts/startup/bl_ui/space_clip.py2
-rw-r--r--release/scripts/startup/bl_ui/space_dopesheet.py4
-rw-r--r--release/scripts/startup/bl_ui/space_image.py34
-rw-r--r--release/scripts/startup/bl_ui/space_nla.py3
-rw-r--r--release/scripts/startup/bl_ui/space_node.py1
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py3
-rw-r--r--release/scripts/startup/bl_ui/space_userpref_keymap.py18
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py19
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py94
-rw-r--r--release/scripts/startup/keyingsets_builtins.py61
-rw-r--r--release/windows/contrib/vfapi/vfapi-plugin.c6
26 files changed, 1567 insertions, 135 deletions
diff --git a/release/datafiles/fonts/bmonofont-i18n.ttf.gz b/release/datafiles/fonts/bmonofont-i18n.ttf.gz
new file mode 100644
index 00000000000..1453ad48c6c
--- /dev/null
+++ b/release/datafiles/fonts/bmonofont-i18n.ttf.gz
Binary files differ
diff --git a/release/datafiles/startup.blend b/release/datafiles/startup.blend
index 0a7e0668a97..40e1363797a 100644
--- a/release/datafiles/startup.blend
+++ b/release/datafiles/startup.blend
Binary files differ
diff --git a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
index 21c0a943984..5e58bccc6a8 100644
--- a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
+++ b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
@@ -242,7 +242,7 @@ def dump_messages_rna(msgs, reports, settings):
def class_blacklist():
blacklist_rna_class = [
# core classes
- "Context", "Event", "Function", "UILayout", "BlendData", "UnknownType",
+ "Context", "Event", "Function", "UILayout", "UnknownType",
# registerable classes
"Panel", "Menu", "Header", "RenderEngine", "Operator", "OperatorMacro", "Macro", "KeyingSetInfo",
# window classes
@@ -356,6 +356,8 @@ def dump_messages_rna(msgs, reports, settings):
if bl_rna.description:
process_msg(msgs, default_context, bl_rna.description, msgsrc, reports, check_ctxt_rna_tip, settings)
+ elif cls.__doc__: # XXX Some classes (like KeyingSetInfo subclasses) have void description... :(
+ process_msg(msgs, default_context, cls.__doc__, msgsrc, reports, check_ctxt_rna_tip, settings)
if hasattr(bl_rna, 'bl_label') and bl_rna.bl_label:
process_msg(msgs, msgctxt, bl_rna.bl_label, msgsrc, reports, check_ctxt_rna, settings)
@@ -503,6 +505,7 @@ def dump_py_messages_from_files(msgs, reports, files, settings):
),
"msgid": ((("msgctxt",), _ctxt_to_ctxt),
),
+ "message": (),
}
context_kw_set = {}
@@ -538,6 +541,12 @@ def dump_py_messages_from_files(msgs, reports, files, settings):
for msgid, msgctxts in context_kw_set.items():
if arg_kw in msgctxts:
func_translate_args[func_id][msgid][1][arg_kw] = arg_pos
+ # The report() func of operators.
+ for func_id, func in bpy.types.Operator.bl_rna.functions.items():
+ # check it has one or more arguments as defined in translate_kw
+ for arg_pos, (arg_kw, arg) in enumerate(func.parameters.items()):
+ if ((arg_kw in translate_kw) and (not arg.is_output) and (arg.type == 'STRING')):
+ func_translate_args.setdefault(func_id, {})[arg_kw] = (arg_pos, {})
# We manually add funcs from bpy.app.translations
for func_id, func_ids in pgettext_variants:
func_translate_args[func_id] = pgettext_variants_args
diff --git a/release/scripts/modules/bl_i18n_utils/spell_check_utils.py b/release/scripts/modules/bl_i18n_utils/spell_check_utils.py
index 40cbd6e9d17..2514873d137 100644
--- a/release/scripts/modules/bl_i18n_utils/spell_check_utils.py
+++ b/release/scripts/modules/bl_i18n_utils/spell_check_utils.py
@@ -69,6 +69,7 @@ class SpellChecker():
"bandnoise",
"bindcode",
"bitrate",
+ "blendfile",
"blendin",
"bonesize",
"boundbox",
@@ -77,6 +78,8 @@ class SpellChecker():
"builtin", "builtins",
"bytecode",
"chunksize",
+ "customdata",
+ "dataset", "datasets",
"de",
"defocus",
"denoise",
@@ -96,6 +99,7 @@ class SpellChecker():
"inscatter", "inscattering",
"libdata",
"lightless",
+ "localview",
"lookup", "lookups",
"mathutils",
"midlevel",
@@ -113,6 +117,7 @@ class SpellChecker():
"polyline",
"popup", "popups",
"pre",
+ "precache", "precaching",
"precalculate",
"prefetch",
"premultiply", "premultiplied",
@@ -120,6 +125,7 @@ class SpellChecker():
"prepend",
"preprocess", "preprocessing",
"preseek",
+ "raytree",
"readonly",
"realtime",
"rekey",
@@ -132,6 +138,7 @@ class SpellChecker():
"rolloff",
"screencast", "screenshot", "screenshots",
"selfcollision",
+ "shadowbuffer", "shadowbuffers",
"singletexture",
"spellcheck", "spellchecking",
"startup",
@@ -243,6 +250,7 @@ class SpellChecker():
"quat", "quats",
"recalc", "recalcs",
"refl",
+ "sce",
"sel",
"spec",
"struct", "structs",
@@ -250,6 +258,7 @@ class SpellChecker():
"tex",
"tri", "tris",
"uv", "uvs", "uvw", "uw", "uvmap",
+ "ve",
"vec",
"vel", # velocity!
"vert", "verts",
diff --git a/release/scripts/modules/console/complete_import.py b/release/scripts/modules/console/complete_import.py
index 8f2b5324cdc..9277e04af76 100644
--- a/release/scripts/modules/console/complete_import.py
+++ b/release/scripts/modules/console/complete_import.py
@@ -111,10 +111,10 @@ def module_list(path):
else:
folder_list = []
#folder_list = glob.glob(os.path.join(path,'*'))
- folder_list = [p for p in folder_list \
- if os.path.exists(os.path.join(path, p, '__init__.py'))\
- or p[-3:] in ('.py', '.so')\
- or p[-4:] in ('.pyc', '.pyo', '.pyd')]
+ folder_list = [p for p in folder_list \
+ if os.path.exists(os.path.join(path, p, '__init__.py')) \
+ or p[-3:] in {'.py', '.so'} \
+ or p[-4:] in {'.pyc', '.pyo', '.pyd'}]
folder_list = [os.path.basename(p).split('.')[0] for p in folder_list]
return folder_list
diff --git a/release/scripts/presets/interaction/3dsmax.py b/release/scripts/presets/interaction/3dsmax.py
new file mode 100644
index 00000000000..681aa4ab4b7
--- /dev/null
+++ b/release/scripts/presets/interaction/3dsmax.py
@@ -0,0 +1,12 @@
+# Configuration 3dsmax
+import bpy
+
+bpy.context.user_preferences.edit.use_drag_immediately = False
+bpy.context.user_preferences.edit.use_insertkey_xyz_to_rgb = False
+bpy.context.user_preferences.view.use_auto_perspective = True
+bpy.context.user_preferences.view.use_quit_dialog = True
+bpy.context.user_preferences.inputs.select_mouse = 'LEFT'
+bpy.context.user_preferences.inputs.view_zoom_method = 'DOLLY'
+bpy.context.user_preferences.inputs.view_zoom_axis = 'VERTICAL'
+bpy.context.user_preferences.inputs.view_rotate_method = 'TURNTABLE'
+bpy.context.user_preferences.inputs.invert_mouse_zoom = False
diff --git a/release/scripts/presets/keyconfig/3dsmax.py b/release/scripts/presets/keyconfig/3dsmax.py
new file mode 100644
index 00000000000..6a719c2619c
--- /dev/null
+++ b/release/scripts/presets/keyconfig/3dsmax.py
@@ -0,0 +1,1359 @@
+# Configuration 3dsmax
+import bpy
+
+wm = bpy.context.window_manager
+kc = wm.keyconfigs.new('3dsmax')
+
+# Map 3D View
+km = kc.keymaps.new('3D View', space_type='VIEW_3D', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('view3d.manipulator', 'LEFTMOUSE', 'PRESS', any=True)
+kmi.properties.release_confirm = True
+kmi = km.keymap_items.new('view3d.cursor3d', 'ACTIONMOUSE', 'PRESS')
+kmi = km.keymap_items.new('view3d.rotate', 'MIDDLEMOUSE', 'PRESS', alt=True)
+kmi = km.keymap_items.new('view3d.move', 'MIDDLEMOUSE', 'PRESS')
+kmi = km.keymap_items.new('view3d.zoom', 'MIDDLEMOUSE', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('view3d.dolly', 'MIDDLEMOUSE', 'PRESS', shift=True, ctrl=True)
+kmi = km.keymap_items.new('view3d.view_selected', 'NUMPAD_PERIOD', 'PRESS', ctrl=True)
+kmi.properties.use_all_regions = True
+kmi = km.keymap_items.new('view3d.view_selected', 'NUMPAD_PERIOD', 'PRESS')
+kmi.properties.use_all_regions = False
+kmi = km.keymap_items.new('view3d.view_lock_to_active', 'NUMPAD_PERIOD', 'PRESS', shift=True)
+kmi = km.keymap_items.new('view3d.view_lock_clear', 'NUMPAD_PERIOD', 'PRESS', alt=True)
+kmi = km.keymap_items.new('view3d.fly', 'F', 'PRESS', shift=True)
+kmi = km.keymap_items.new('view3d.smoothview', 'TIMER1', 'ANY', any=True)
+kmi = km.keymap_items.new('view3d.rotate', 'TRACKPADPAN', 'ANY')
+kmi = km.keymap_items.new('view3d.rotate', 'MOUSEROTATE', 'ANY')
+kmi = km.keymap_items.new('view3d.move', 'TRACKPADPAN', 'ANY', shift=True)
+kmi = km.keymap_items.new('view3d.zoom', 'TRACKPADZOOM', 'ANY')
+kmi = km.keymap_items.new('view3d.zoom', 'TRACKPADPAN', 'ANY', ctrl=True)
+kmi = km.keymap_items.new('view3d.zoom', 'NUMPAD_PLUS', 'PRESS')
+kmi.properties.delta = 1
+kmi = km.keymap_items.new('view3d.zoom', 'NUMPAD_MINUS', 'PRESS')
+kmi.properties.delta = -1
+kmi = km.keymap_items.new('view3d.zoom', 'EQUAL', 'PRESS', ctrl=True)
+kmi.properties.delta = 1
+kmi = km.keymap_items.new('view3d.zoom', 'MINUS', 'PRESS', ctrl=True)
+kmi.properties.delta = -1
+kmi = km.keymap_items.new('view3d.zoom', 'WHEELINMOUSE', 'PRESS')
+kmi.properties.delta = 1
+kmi = km.keymap_items.new('view3d.zoom', 'WHEELOUTMOUSE', 'PRESS')
+kmi.properties.delta = -1
+kmi = km.keymap_items.new('view3d.zoom_camera_1_to_1', 'NUMPAD_ENTER', 'PRESS', shift=True)
+kmi = km.keymap_items.new('view3d.view_center_camera', 'HOME', 'PRESS')
+kmi = km.keymap_items.new('view3d.view_center_cursor', 'HOME', 'PRESS', alt=True)
+kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'PRESS')
+kmi.properties.center = False
+kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'PRESS', ctrl=True)
+kmi.properties.use_all_regions = True
+kmi.properties.center = False
+kmi = km.keymap_items.new('view3d.view_all', 'C', 'PRESS', shift=True)
+kmi.properties.center = True
+kmi = km.keymap_items.new('view3d.viewnumpad', 'C', 'PRESS')
+kmi.properties.type = 'CAMERA'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'F', 'PRESS')
+kmi.properties.type = 'FRONT'
+kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_2', 'PRESS')
+kmi.properties.type = 'ORBITDOWN'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'PRESS')
+kmi.properties.type = 'RIGHT'
+kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_4', 'PRESS')
+kmi.properties.type = 'ORBITLEFT'
+kmi = km.keymap_items.new('view3d.view_persportho', 'NUMPAD_5', 'PRESS')
+kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_6', 'PRESS')
+kmi.properties.type = 'ORBITRIGHT'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'T', 'PRESS')
+kmi.properties.type = 'TOP'
+kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_8', 'PRESS')
+kmi.properties.type = 'ORBITUP'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'PRESS', ctrl=True)
+kmi.properties.type = 'BACK'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'L', 'PRESS')
+kmi.properties.type = 'LEFT'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'B', 'PRESS')
+kmi.properties.type = 'BOTTOM'
+kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_2', 'PRESS', ctrl=True)
+kmi.properties.type = 'PANDOWN'
+kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_4', 'PRESS', ctrl=True)
+kmi.properties.type = 'PANLEFT'
+kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_6', 'PRESS', ctrl=True)
+kmi.properties.type = 'PANRIGHT'
+kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_8', 'PRESS', ctrl=True)
+kmi.properties.type = 'PANUP'
+kmi = km.keymap_items.new('view3d.view_pan', 'WHEELUPMOUSE', 'PRESS', ctrl=True)
+kmi.properties.type = 'PANRIGHT'
+kmi = km.keymap_items.new('view3d.view_pan', 'WHEELDOWNMOUSE', 'PRESS', ctrl=True)
+kmi.properties.type = 'PANLEFT'
+kmi = km.keymap_items.new('view3d.view_pan', 'WHEELUPMOUSE', 'PRESS', shift=True)
+kmi.properties.type = 'PANUP'
+kmi = km.keymap_items.new('view3d.view_pan', 'WHEELDOWNMOUSE', 'PRESS', shift=True)
+kmi.properties.type = 'PANDOWN'
+kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELUPMOUSE', 'PRESS', ctrl=True, alt=True)
+kmi.properties.type = 'ORBITLEFT'
+kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELDOWNMOUSE', 'PRESS', ctrl=True, alt=True)
+kmi.properties.type = 'ORBITRIGHT'
+kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELUPMOUSE', 'PRESS', shift=True, alt=True)
+kmi.properties.type = 'ORBITUP'
+kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELDOWNMOUSE', 'PRESS', shift=True, alt=True)
+kmi.properties.type = 'ORBITDOWN'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'PRESS', shift=True)
+kmi.properties.type = 'FRONT'
+kmi.properties.align_active = True
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'PRESS', shift=True)
+kmi.properties.type = 'RIGHT'
+kmi.properties.align_active = True
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'PRESS', shift=True)
+kmi.properties.type = 'TOP'
+kmi.properties.align_active = True
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'PRESS', shift=True, ctrl=True)
+kmi.properties.type = 'BACK'
+kmi.properties.align_active = True
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'PRESS', shift=True, ctrl=True)
+kmi.properties.type = 'LEFT'
+kmi.properties.align_active = True
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'PRESS', shift=True, ctrl=True)
+kmi.properties.type = 'BOTTOM'
+kmi.properties.align_active = True
+kmi = km.keymap_items.new('view3d.localview', 'NUMPAD_SLASH', 'PRESS')
+kmi = km.keymap_items.new('view3d.ndof_orbit_zoom', 'NDOF_MOTION', 'ANY')
+kmi = km.keymap_items.new('view3d.ndof_orbit', 'NDOF_MOTION', 'ANY', ctrl=True)
+kmi = km.keymap_items.new('view3d.ndof_pan', 'NDOF_MOTION', 'ANY', shift=True)
+kmi = km.keymap_items.new('view3d.ndof_all', 'NDOF_MOTION', 'ANY', shift=True, ctrl=True)
+kmi = km.keymap_items.new('view3d.view_selected', 'NDOF_BUTTON_FIT', 'PRESS')
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_FRONT', 'PRESS')
+kmi.properties.type = 'FRONT'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_BACK', 'PRESS')
+kmi.properties.type = 'BACK'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_LEFT', 'PRESS')
+kmi.properties.type = 'LEFT'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_RIGHT', 'PRESS')
+kmi.properties.type = 'RIGHT'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_TOP', 'PRESS')
+kmi.properties.type = 'TOP'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_BOTTOM', 'PRESS')
+kmi.properties.type = 'BOTTOM'
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_FRONT', 'PRESS', shift=True)
+kmi.properties.type = 'FRONT'
+kmi.properties.align_active = True
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_RIGHT', 'PRESS', shift=True)
+kmi.properties.type = 'RIGHT'
+kmi.properties.align_active = True
+kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_TOP', 'PRESS', shift=True)
+kmi.properties.type = 'TOP'
+kmi.properties.align_active = True
+kmi = km.keymap_items.new('view3d.layers', 'ACCENT_GRAVE', 'PRESS')
+kmi.properties.nr = 0
+kmi = km.keymap_items.new('view3d.layers', 'ONE', 'PRESS', any=True)
+kmi.properties.nr = 1
+kmi = km.keymap_items.new('view3d.layers', 'TWO', 'PRESS', any=True)
+kmi.properties.nr = 2
+kmi = km.keymap_items.new('view3d.layers', 'THREE', 'PRESS', any=True)
+kmi.properties.nr = 3
+kmi = km.keymap_items.new('view3d.layers', 'FOUR', 'PRESS', any=True)
+kmi.properties.nr = 4
+kmi = km.keymap_items.new('view3d.layers', 'FIVE', 'PRESS', any=True)
+kmi.properties.nr = 5
+kmi = km.keymap_items.new('view3d.layers', 'SIX', 'PRESS', any=True)
+kmi.properties.nr = 6
+kmi = km.keymap_items.new('view3d.layers', 'SEVEN', 'PRESS', any=True)
+kmi.properties.nr = 7
+kmi = km.keymap_items.new('view3d.layers', 'EIGHT', 'PRESS', any=True)
+kmi.properties.nr = 8
+kmi = km.keymap_items.new('view3d.layers', 'NINE', 'PRESS', any=True)
+kmi.properties.nr = 9
+kmi = km.keymap_items.new('view3d.layers', 'ZERO', 'PRESS', any=True)
+kmi.properties.nr = 10
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'PRESS')
+kmi.properties.data_path = 'space_data.viewport_shade'
+kmi.properties.value_1 = 'SOLID'
+kmi.properties.value_2 = 'WIREFRAME'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'PRESS', alt=True)
+kmi.properties.data_path = 'space_data.viewport_shade'
+kmi.properties.value_1 = 'SOLID'
+kmi.properties.value_2 = 'TEXTURED'
+kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'RELEASE')
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = False
+kmi.properties.center = False
+kmi.properties.enumerate = False
+kmi.properties.object = False
+kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'RELEASE', ctrl=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = True
+kmi.properties.center = False
+kmi.properties.enumerate = False
+kmi.properties.object = False
+kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'PRESS', shift=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = False
+kmi.properties.center = True
+kmi.properties.enumerate = False
+kmi.properties.object = True
+kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'RELEASE', alt=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = False
+kmi.properties.center = False
+kmi.properties.enumerate = True
+kmi.properties.object = False
+kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'RELEASE', shift=True, ctrl=True)
+kmi.properties.extend = True
+kmi.properties.deselect = False
+kmi.properties.toggle = True
+kmi.properties.center = True
+kmi.properties.enumerate = False
+kmi.properties.object = False
+kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'RELEASE', ctrl=True, alt=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = False
+kmi.properties.center = True
+kmi.properties.enumerate = True
+kmi.properties.object = False
+kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'RELEASE', shift=True, alt=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = True
+kmi.properties.center = False
+kmi.properties.enumerate = True
+kmi.properties.object = False
+kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'RELEASE', shift=True, ctrl=True, alt=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = True
+kmi.properties.center = True
+kmi.properties.enumerate = True
+kmi.properties.object = False
+kmi = km.keymap_items.new('view3d.select_border', 'EVT_TWEAK_L', 'ANY')
+kmi.properties.extend = False
+kmi = km.keymap_items.new('view3d.select_lasso', 'EVT_TWEAK_A', 'ANY', ctrl=True)
+kmi.properties.deselect = False
+kmi = km.keymap_items.new('view3d.select_lasso', 'EVT_TWEAK_A', 'ANY', shift=True, ctrl=True)
+kmi.properties.deselect = True
+kmi = km.keymap_items.new('view3d.select_circle', 'C', 'PRESS', alt=True)
+kmi = km.keymap_items.new('view3d.clip_border', 'B', 'PRESS', alt=True)
+kmi = km.keymap_items.new('view3d.zoom_border', 'B', 'PRESS', shift=True)
+kmi = km.keymap_items.new('view3d.render_border', 'B', 'PRESS', shift=True)
+kmi.properties.camera_only = True
+kmi = km.keymap_items.new('view3d.render_border', 'B', 'PRESS', ctrl=True)
+kmi.properties.camera_only = False
+kmi = km.keymap_items.new('view3d.clear_render_border', 'B', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('view3d.camera_to_view', 'NUMPAD_0', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('view3d.object_as_camera', 'NUMPAD_0', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('wm.call_menu', 'S', 'PRESS', shift=True)
+kmi.properties.name = 'VIEW3D_MT_snap'
+kmi = km.keymap_items.new('view3d.copybuffer', 'C', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('view3d.pastebuffer', 'V', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('wm.context_set_enum', 'COMMA', 'PRESS')
+kmi.properties.data_path = 'space_data.pivot_point'
+kmi.properties.value = 'BOUNDING_BOX_CENTER'
+kmi = km.keymap_items.new('wm.context_set_enum', 'COMMA', 'PRESS', ctrl=True)
+kmi.properties.data_path = 'space_data.pivot_point'
+kmi.properties.value = 'MEDIAN_POINT'
+kmi = km.keymap_items.new('wm.context_toggle', 'COMMA', 'PRESS', alt=True)
+kmi.properties.data_path = 'space_data.use_pivot_point_align'
+kmi = km.keymap_items.new('wm.context_toggle', 'SPACE', 'PRESS', ctrl=True)
+kmi.properties.data_path = 'space_data.show_manipulator'
+kmi = km.keymap_items.new('wm.context_set_enum', 'PERIOD', 'PRESS')
+kmi.properties.data_path = 'space_data.pivot_point'
+kmi.properties.value = 'CURSOR'
+kmi = km.keymap_items.new('wm.context_set_enum', 'PERIOD', 'PRESS', ctrl=True)
+kmi.properties.data_path = 'space_data.pivot_point'
+kmi.properties.value = 'INDIVIDUAL_ORIGINS'
+kmi = km.keymap_items.new('wm.context_set_enum', 'PERIOD', 'PRESS', alt=True)
+kmi.properties.data_path = 'space_data.pivot_point'
+kmi.properties.value = 'ACTIVE_ELEMENT'
+kmi = km.keymap_items.new('transform.translate', 'W', 'PRESS', shift=True)
+kmi = km.keymap_items.new('transform.translate', 'EVT_TWEAK_S', 'ANY')
+kmi = km.keymap_items.new('transform.rotate', 'E', 'PRESS', shift=True)
+kmi = km.keymap_items.new('transform.resize', 'R', 'PRESS', shift=True)
+kmi = km.keymap_items.new('transform.warp', 'Q', 'PRESS', shift=True)
+kmi = km.keymap_items.new('transform.tosphere', 'S', 'PRESS', shift=True, alt=True)
+kmi = km.keymap_items.new('transform.shear', 'S', 'PRESS', shift=True, ctrl=True, alt=True)
+kmi = km.keymap_items.new('transform.select_orientation', 'SPACE', 'PRESS', alt=True)
+kmi = km.keymap_items.new('transform.create_orientation', 'SPACE', 'PRESS', ctrl=True, alt=True)
+kmi.properties.use = True
+kmi = km.keymap_items.new('transform.mirror', 'M', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('wm.context_toggle', 'TAB', 'PRESS', shift=True)
+kmi.properties.data_path = 'tool_settings.use_snap'
+kmi = km.keymap_items.new('wm.context_menu_enum', 'TAB', 'PRESS', shift=True, ctrl=True)
+kmi.properties.data_path = 'tool_settings.snap_element'
+kmi = km.keymap_items.new('transform.translate', 'T', 'PRESS', shift=True)
+kmi.properties.texture_space = True
+kmi = km.keymap_items.new('transform.resize', 'T', 'PRESS', shift=True, alt=True)
+kmi.properties.texture_space = True
+kmi = km.keymap_items.new('transform.skin_resize', 'A', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('view3d.enable_manipulator', 'W', 'PRESS')
+kmi.properties.translate = True
+kmi = km.keymap_items.new('view3d.enable_manipulator', 'E', 'PRESS')
+kmi.properties.rotate = True
+kmi = km.keymap_items.new('view3d.enable_manipulator', 'R', 'PRESS')
+kmi.properties.scale = True
+kmi = km.keymap_items.new('wm.context_toggle', 'S', 'PRESS')
+kmi.properties.data_path = 'tool_settings.use_snap'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'A', 'PRESS')
+kmi.properties.data_path = 'tool_settings.snap_element'
+kmi.properties.value_1 = 'VERTEX'
+kmi.properties.value_2 = 'INCREMENT'
+kmi = km.keymap_items.new('view3d.select_border', 'EVT_TWEAK_L', 'ANY', ctrl=True)
+kmi = km.keymap_items.new('wm.context_toggle', 'G', 'PRESS')
+kmi.properties.data_path = 'space_data.show_floor'
+
+# Map 3D View Generic
+km = kc.keymaps.new('3D View Generic', space_type='VIEW_3D', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('view3d.properties', 'N', 'PRESS')
+kmi = km.keymap_items.new('view3d.toolshelf', 'D', 'PRESS')
+
+# Map Weight Paint Vertex Selection
+km = kc.keymaps.new('Weight Paint Vertex Selection', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('paint.vert_select_all', 'A', 'PRESS')
+kmi = km.keymap_items.new('paint.vert_select_inverse', 'I', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('view3d.select_border', 'B', 'PRESS')
+kmi = km.keymap_items.new('view3d.select_lasso', 'EVT_TWEAK_A', 'ANY', ctrl=True)
+kmi.properties.deselect = False
+kmi = km.keymap_items.new('view3d.select_lasso', 'EVT_TWEAK_A', 'ANY', shift=True, ctrl=True)
+kmi.properties.deselect = True
+kmi = km.keymap_items.new('view3d.select_circle', 'C', 'PRESS', alt=True)
+
+# Map Pose
+km = kc.keymaps.new('Pose', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('object.parent_set', 'P', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', shift=True)
+kmi.properties.name = 'INFO_MT_add'
+kmi = km.keymap_items.new('pose.hide', 'H', 'PRESS')
+kmi.properties.unselected = False
+kmi = km.keymap_items.new('pose.hide', 'H', 'PRESS', shift=True)
+kmi.properties.unselected = True
+kmi = km.keymap_items.new('pose.reveal', 'H', 'PRESS', alt=True)
+kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_pose_apply'
+kmi = km.keymap_items.new('pose.rot_clear', 'R', 'PRESS', alt=True)
+kmi = km.keymap_items.new('pose.loc_clear', 'G', 'PRESS', alt=True)
+kmi = km.keymap_items.new('pose.scale_clear', 'S', 'PRESS', alt=True)
+kmi = km.keymap_items.new('pose.quaternions_flip', 'F', 'PRESS', alt=True)
+kmi = km.keymap_items.new('pose.rotation_mode_set', 'R', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('pose.copy', 'C', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('pose.paste', 'V', 'PRESS', ctrl=True)
+kmi.properties.flipped = False
+kmi = km.keymap_items.new('pose.paste', 'V', 'PRESS', shift=True, ctrl=True)
+kmi.properties.flipped = True
+kmi = km.keymap_items.new('pose.select_all', 'LEFTMOUSE', 'CLICK')
+kmi.properties.action = 'TOGGLE'
+kmi = km.keymap_items.new('pose.select_all', 'I', 'PRESS', ctrl=True)
+kmi.properties.action = 'INVERT'
+kmi = km.keymap_items.new('pose.select_parent', 'P', 'PRESS', shift=True)
+kmi = km.keymap_items.new('pose.select_hierarchy', 'LEFT_BRACKET', 'PRESS')
+kmi.properties.direction = 'PARENT'
+kmi.properties.extend = False
+kmi = km.keymap_items.new('pose.select_hierarchy', 'LEFT_BRACKET', 'PRESS', shift=True)
+kmi.properties.direction = 'PARENT'
+kmi.properties.extend = True
+kmi = km.keymap_items.new('pose.select_hierarchy', 'RIGHT_BRACKET', 'PRESS')
+kmi.properties.direction = 'CHILD'
+kmi.properties.extend = False
+kmi = km.keymap_items.new('pose.select_hierarchy', 'RIGHT_BRACKET', 'PRESS', shift=True)
+kmi.properties.direction = 'CHILD'
+kmi.properties.extend = True
+kmi = km.keymap_items.new('pose.select_linked', 'L', 'PRESS', alt=True)
+kmi = km.keymap_items.new('pose.select_grouped', 'G', 'PRESS', shift=True)
+kmi = km.keymap_items.new('pose.select_flip_active', 'F', 'PRESS', shift=True)
+kmi = km.keymap_items.new('pose.constraint_add_with_targets', 'C', 'PRESS', shift=True, ctrl=True)
+kmi = km.keymap_items.new('pose.constraints_clear', 'C', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('pose.ik_add', 'I', 'PRESS', shift=True)
+kmi = km.keymap_items.new('pose.ik_clear', 'I', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('wm.call_menu', 'G', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_pose_group'
+kmi = km.keymap_items.new('wm.call_menu', 'W', 'PRESS', shift=True)
+kmi.properties.name = 'VIEW3D_MT_bone_options_toggle'
+kmi = km.keymap_items.new('wm.call_menu', 'W', 'PRESS', shift=True, ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_bone_options_enable'
+kmi = km.keymap_items.new('wm.call_menu', 'W', 'PRESS', alt=True)
+kmi.properties.name = 'VIEW3D_MT_bone_options_disable'
+kmi = km.keymap_items.new('armature.layers_show_all', 'ACCENT_GRAVE', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('pose.armature_layers', 'M', 'PRESS', shift=True)
+kmi = km.keymap_items.new('pose.bone_layers', 'M', 'PRESS')
+kmi = km.keymap_items.new('transform.transform', 'S', 'PRESS', ctrl=True, alt=True)
+kmi.properties.mode = 'BONE_SIZE'
+kmi = km.keymap_items.new('anim.keyframe_insert_menu', 'I', 'PRESS')
+kmi = km.keymap_items.new('anim.keyframe_delete_v3d', 'I', 'PRESS', alt=True)
+kmi = km.keymap_items.new('anim.keying_set_active_set', 'I', 'PRESS', shift=True, ctrl=True, alt=True)
+kmi = km.keymap_items.new('poselib.browse_interactive', 'L', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('poselib.pose_add', 'L', 'PRESS', shift=True)
+kmi = km.keymap_items.new('poselib.pose_remove', 'L', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('poselib.pose_rename', 'L', 'PRESS', shift=True, ctrl=True)
+kmi = km.keymap_items.new('pose.push', 'E', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('pose.relax', 'E', 'PRESS', alt=True)
+kmi = km.keymap_items.new('pose.breakdown', 'E', 'PRESS', shift=True)
+kmi = km.keymap_items.new('wm.call_menu', 'Q', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_pose_specials'
+
+# Map Object Mode
+km = kc.keymaps.new('Object Mode', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
+kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
+kmi = km.keymap_items.new('wm.context_toggle', 'O', 'PRESS')
+kmi.properties.data_path = 'tool_settings.use_proportional_edit_objects'
+kmi = km.keymap_items.new('view3d.game_start', 'P', 'PRESS')
+kmi = km.keymap_items.new('object.select_all', 'LEFTMOUSE', 'CLICK')
+kmi.properties.action = 'DESELECT'
+kmi = km.keymap_items.new('object.select_all', 'I', 'PRESS', ctrl=True)
+kmi.properties.action = 'INVERT'
+kmi = km.keymap_items.new('object.select_linked', 'L', 'PRESS', shift=True)
+kmi = km.keymap_items.new('object.select_grouped', 'G', 'PRESS', shift=True)
+kmi = km.keymap_items.new('object.select_mirror', 'M', 'PRESS', shift=True, ctrl=True)
+kmi = km.keymap_items.new('object.select_hierarchy', 'LEFT_BRACKET', 'PRESS')
+kmi.properties.direction = 'PARENT'
+kmi.properties.extend = False
+kmi = km.keymap_items.new('object.select_hierarchy', 'LEFT_BRACKET', 'PRESS', shift=True)
+kmi.properties.direction = 'PARENT'
+kmi.properties.extend = True
+kmi = km.keymap_items.new('object.select_hierarchy', 'RIGHT_BRACKET', 'PRESS')
+kmi.properties.direction = 'CHILD'
+kmi.properties.extend = False
+kmi = km.keymap_items.new('object.select_hierarchy', 'RIGHT_BRACKET', 'PRESS', shift=True)
+kmi.properties.direction = 'CHILD'
+kmi.properties.extend = True
+kmi = km.keymap_items.new('object.parent_set', 'P', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('object.parent_no_inverse_set', 'P', 'PRESS', shift=True, ctrl=True)
+kmi = km.keymap_items.new('object.parent_clear', 'P', 'PRESS', alt=True)
+kmi = km.keymap_items.new('object.track_set', 'T', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('object.track_clear', 'T', 'PRESS', alt=True)
+kmi = km.keymap_items.new('object.constraint_add_with_targets', 'C', 'PRESS', shift=True, ctrl=True)
+kmi = km.keymap_items.new('object.constraints_clear', 'C', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('object.location_clear', 'G', 'PRESS', alt=True)
+kmi = km.keymap_items.new('object.rotation_clear', 'R', 'PRESS', alt=True)
+kmi = km.keymap_items.new('object.scale_clear', 'S', 'PRESS', alt=True)
+kmi = km.keymap_items.new('object.origin_clear', 'O', 'PRESS', alt=True)
+kmi = km.keymap_items.new('object.hide_view_clear', 'H', 'PRESS', alt=True)
+kmi = km.keymap_items.new('object.hide_view_set', 'H', 'PRESS')
+kmi.properties.unselected = False
+kmi = km.keymap_items.new('object.hide_view_set', 'H', 'PRESS', shift=True)
+kmi.properties.unselected = True
+kmi = km.keymap_items.new('object.hide_render_clear', 'H', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('object.hide_render_set', 'H', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('object.move_to_layer', 'M', 'PRESS')
+kmi = km.keymap_items.new('object.delete', 'X', 'PRESS')
+kmi.properties.use_global = False
+kmi = km.keymap_items.new('object.delete', 'X', 'PRESS', shift=True)
+kmi.properties.use_global = False
+kmi = km.keymap_items.new('object.delete', 'DEL', 'PRESS')
+kmi = km.keymap_items.new('object.delete', 'DEL', 'PRESS', shift=True)
+kmi.properties.use_global = True
+kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', shift=True)
+kmi.properties.name = 'INFO_MT_add'
+kmi = km.keymap_items.new('object.duplicates_make_real', 'A', 'PRESS', shift=True, ctrl=True)
+kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_object_apply'
+kmi = km.keymap_items.new('wm.call_menu', 'U', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_make_single_user'
+kmi = km.keymap_items.new('wm.call_menu', 'L', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_make_links'
+kmi = km.keymap_items.new('object.duplicate_move', 'D', 'PRESS', shift=True)
+kmi = km.keymap_items.new('object.duplicate_move_linked', 'D', 'PRESS', alt=True)
+kmi = km.keymap_items.new('object.join', 'J', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('object.convert', 'C', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('object.proxy_make', 'P', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('object.make_local', 'L', 'PRESS', alt=True)
+kmi = km.keymap_items.new('anim.keyframe_insert_menu', 'I', 'PRESS')
+kmi = km.keymap_items.new('anim.keyframe_delete_v3d', 'I', 'PRESS', alt=True)
+kmi = km.keymap_items.new('anim.keying_set_active_set', 'I', 'PRESS', shift=True, ctrl=True, alt=True)
+kmi = km.keymap_items.new('group.create', 'G', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('group.objects_remove', 'G', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('group.objects_remove_all', 'G', 'PRESS', shift=True, ctrl=True, alt=True)
+kmi = km.keymap_items.new('group.objects_add_active', 'G', 'PRESS', shift=True, ctrl=True)
+kmi = km.keymap_items.new('group.objects_remove_active', 'G', 'PRESS', shift=True, alt=True)
+kmi = km.keymap_items.new('rigidbody.objects_add', 'R', 'PRESS', ctrl=True)
+kmi.properties.type = 'ACTIVE'
+kmi = km.keymap_items.new('rigidbody.objects_add', 'R', 'PRESS', shift=True, ctrl=True)
+kmi.properties.type = 'PASSIVE'
+kmi = km.keymap_items.new('rigidbody.objects_remove', 'R', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('wm.call_menu', 'Q', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_object_specials'
+kmi = km.keymap_items.new('object.subdivision_set', 'ZERO', 'PRESS', ctrl=True)
+kmi.properties.level = 0
+kmi = km.keymap_items.new('object.subdivision_set', 'ONE', 'PRESS', ctrl=True)
+kmi.properties.level = 1
+kmi = km.keymap_items.new('object.subdivision_set', 'TWO', 'PRESS', ctrl=True)
+kmi.properties.level = 2
+kmi = km.keymap_items.new('object.subdivision_set', 'THREE', 'PRESS', ctrl=True)
+kmi.properties.level = 3
+kmi = km.keymap_items.new('object.subdivision_set', 'FOUR', 'PRESS', ctrl=True)
+kmi.properties.level = 4
+kmi = km.keymap_items.new('object.subdivision_set', 'FIVE', 'PRESS', ctrl=True)
+kmi.properties.level = 5
+
+# Map Image Paint
+km = kc.keymaps.new('Image Paint', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('paint.image_paint', 'LEFTMOUSE', 'PRESS')
+kmi = km.keymap_items.new('paint.grab_clone', 'RIGHTMOUSE', 'PRESS')
+kmi = km.keymap_items.new('paint.sample_color', 'RIGHTMOUSE', 'PRESS')
+kmi = km.keymap_items.new('paint.clone_cursor_set', 'LEFTMOUSE', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('brush.active_index_set', 'ONE', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 0
+kmi = km.keymap_items.new('brush.active_index_set', 'TWO', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 1
+kmi = km.keymap_items.new('brush.active_index_set', 'THREE', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 2
+kmi = km.keymap_items.new('brush.active_index_set', 'FOUR', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 3
+kmi = km.keymap_items.new('brush.active_index_set', 'FIVE', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 4
+kmi = km.keymap_items.new('brush.active_index_set', 'SIX', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 5
+kmi = km.keymap_items.new('brush.active_index_set', 'SEVEN', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 6
+kmi = km.keymap_items.new('brush.active_index_set', 'EIGHT', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 7
+kmi = km.keymap_items.new('brush.active_index_set', 'NINE', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 8
+kmi = km.keymap_items.new('brush.active_index_set', 'ZERO', 'PRESS')
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 9
+kmi = km.keymap_items.new('brush.active_index_set', 'ONE', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 10
+kmi = km.keymap_items.new('brush.active_index_set', 'TWO', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 11
+kmi = km.keymap_items.new('brush.active_index_set', 'THREE', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 12
+kmi = km.keymap_items.new('brush.active_index_set', 'FOUR', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 13
+kmi = km.keymap_items.new('brush.active_index_set', 'FIVE', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 14
+kmi = km.keymap_items.new('brush.active_index_set', 'SIX', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 15
+kmi = km.keymap_items.new('brush.active_index_set', 'SEVEN', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 16
+kmi = km.keymap_items.new('brush.active_index_set', 'EIGHT', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 17
+kmi = km.keymap_items.new('brush.active_index_set', 'NINE', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 18
+kmi = km.keymap_items.new('brush.active_index_set', 'ZERO', 'PRESS', shift=True)
+kmi.properties.mode = 'image_paint'
+kmi.properties.index = 19
+kmi = km.keymap_items.new('brush.scale_size', 'LEFT_BRACKET', 'PRESS')
+kmi.properties.scalar = 0.8999999761581421
+kmi = km.keymap_items.new('brush.scale_size', 'RIGHT_BRACKET', 'PRESS')
+kmi.properties.scalar = 1.1111111640930176
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', ctrl=True)
+kmi.properties.data_path_primary = 'tool_settings.image_paint.brush.size'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.size'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_size'
+kmi.properties.rotation_path = 'tool_settings.image_paint.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.image_paint.brush.cursor_color_add'
+kmi.properties.fill_color_path = 'tool_settings.image_paint.brush.color'
+kmi.properties.zoom_path = 'space_data.zoom'
+kmi.properties.image_id = 'tool_settings.image_paint.brush'
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', shift=True)
+kmi.properties.data_path_primary = 'tool_settings.image_paint.brush.strength'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.strength'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_strength'
+kmi.properties.rotation_path = 'tool_settings.image_paint.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.image_paint.brush.cursor_color_add'
+kmi.properties.fill_color_path = 'tool_settings.image_paint.brush.color'
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.image_paint.brush'
+kmi = km.keymap_items.new('wm.radial_control', 'W', 'PRESS')
+kmi.properties.data_path_primary = 'tool_settings.image_paint.brush.weight'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.weight'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_weight'
+kmi.properties.rotation_path = 'tool_settings.image_paint.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.image_paint.brush.cursor_color_add'
+kmi.properties.fill_color_path = 'tool_settings.image_paint.brush.color'
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.image_paint.brush'
+kmi = km.keymap_items.new('wm.context_toggle', 'M', 'PRESS')
+kmi.properties.data_path = 'image_paint_object.data.use_paint_mask'
+
+# Map Vertex Paint
+km = kc.keymaps.new('Vertex Paint', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('paint.vertex_paint', 'LEFTMOUSE', 'PRESS')
+kmi = km.keymap_items.new('paint.sample_color', 'RIGHTMOUSE', 'PRESS')
+kmi = km.keymap_items.new('paint.vertex_color_set', 'K', 'PRESS', shift=True)
+kmi = km.keymap_items.new('brush.active_index_set', 'ONE', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 0
+kmi = km.keymap_items.new('brush.active_index_set', 'TWO', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 1
+kmi = km.keymap_items.new('brush.active_index_set', 'THREE', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 2
+kmi = km.keymap_items.new('brush.active_index_set', 'FOUR', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 3
+kmi = km.keymap_items.new('brush.active_index_set', 'FIVE', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 4
+kmi = km.keymap_items.new('brush.active_index_set', 'SIX', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 5
+kmi = km.keymap_items.new('brush.active_index_set', 'SEVEN', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 6
+kmi = km.keymap_items.new('brush.active_index_set', 'EIGHT', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 7
+kmi = km.keymap_items.new('brush.active_index_set', 'NINE', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 8
+kmi = km.keymap_items.new('brush.active_index_set', 'ZERO', 'PRESS')
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 9
+kmi = km.keymap_items.new('brush.active_index_set', 'ONE', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 10
+kmi = km.keymap_items.new('brush.active_index_set', 'TWO', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 11
+kmi = km.keymap_items.new('brush.active_index_set', 'THREE', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 12
+kmi = km.keymap_items.new('brush.active_index_set', 'FOUR', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 13
+kmi = km.keymap_items.new('brush.active_index_set', 'FIVE', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 14
+kmi = km.keymap_items.new('brush.active_index_set', 'SIX', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 15
+kmi = km.keymap_items.new('brush.active_index_set', 'SEVEN', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 16
+kmi = km.keymap_items.new('brush.active_index_set', 'EIGHT', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 17
+kmi = km.keymap_items.new('brush.active_index_set', 'NINE', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 18
+kmi = km.keymap_items.new('brush.active_index_set', 'ZERO', 'PRESS', shift=True)
+kmi.properties.mode = 'vertex_paint'
+kmi.properties.index = 19
+kmi = km.keymap_items.new('brush.scale_size', 'LEFT_BRACKET', 'PRESS')
+kmi.properties.scalar = 0.8999999761581421
+kmi = km.keymap_items.new('brush.scale_size', 'RIGHT_BRACKET', 'PRESS')
+kmi.properties.scalar = 1.1111111640930176
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', ctrl=True)
+kmi.properties.data_path_primary = 'tool_settings.vertex_paint.brush.size'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.size'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_size'
+kmi.properties.rotation_path = 'tool_settings.vertex_paint.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.vertex_paint.brush.cursor_color_add'
+kmi.properties.fill_color_path = 'tool_settings.vertex_paint.brush.color'
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.vertex_paint.brush'
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', shift=True)
+kmi.properties.data_path_primary = 'tool_settings.vertex_paint.brush.strength'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.strength'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_strength'
+kmi.properties.rotation_path = 'tool_settings.vertex_paint.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.vertex_paint.brush.cursor_color_add'
+kmi.properties.fill_color_path = 'tool_settings.vertex_paint.brush.color'
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.vertex_paint.brush'
+kmi = km.keymap_items.new('wm.radial_control', 'Q', 'PRESS')
+kmi.properties.data_path_primary = 'tool_settings.vertex_paint.brush.weight'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.weight'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_weight'
+kmi.properties.rotation_path = 'tool_settings.vertex_paint.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.vertex_paint.brush.cursor_color_add'
+kmi.properties.fill_color_path = 'tool_settings.vertex_paint.brush.color'
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.vertex_paint.brush'
+kmi = km.keymap_items.new('wm.context_toggle', 'M', 'PRESS')
+kmi.properties.data_path = 'vertex_paint_object.data.use_paint_mask'
+
+# Map Weight Paint
+km = kc.keymaps.new('Weight Paint', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('paint.weight_paint', 'LEFTMOUSE', 'PRESS')
+kmi = km.keymap_items.new('paint.weight_sample', 'ACTIONMOUSE', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('paint.weight_sample_group', 'ACTIONMOUSE', 'PRESS', shift=True)
+kmi = km.keymap_items.new('paint.weight_gradient', 'LEFTMOUSE', 'PRESS', alt=True)
+kmi.properties.type = 'LINEAR'
+kmi = km.keymap_items.new('paint.weight_gradient', 'LEFTMOUSE', 'PRESS', ctrl=True, alt=True)
+kmi.properties.type = 'RADIAL'
+kmi = km.keymap_items.new('paint.weight_set', 'K', 'PRESS', shift=True)
+kmi = km.keymap_items.new('brush.active_index_set', 'ONE', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 0
+kmi = km.keymap_items.new('brush.active_index_set', 'TWO', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 1
+kmi = km.keymap_items.new('brush.active_index_set', 'THREE', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 2
+kmi = km.keymap_items.new('brush.active_index_set', 'FOUR', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 3
+kmi = km.keymap_items.new('brush.active_index_set', 'FIVE', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 4
+kmi = km.keymap_items.new('brush.active_index_set', 'SIX', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 5
+kmi = km.keymap_items.new('brush.active_index_set', 'SEVEN', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 6
+kmi = km.keymap_items.new('brush.active_index_set', 'EIGHT', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 7
+kmi = km.keymap_items.new('brush.active_index_set', 'NINE', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 8
+kmi = km.keymap_items.new('brush.active_index_set', 'ZERO', 'PRESS')
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 9
+kmi = km.keymap_items.new('brush.active_index_set', 'ONE', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 10
+kmi = km.keymap_items.new('brush.active_index_set', 'TWO', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 11
+kmi = km.keymap_items.new('brush.active_index_set', 'THREE', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 12
+kmi = km.keymap_items.new('brush.active_index_set', 'FOUR', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 13
+kmi = km.keymap_items.new('brush.active_index_set', 'FIVE', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 14
+kmi = km.keymap_items.new('brush.active_index_set', 'SIX', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 15
+kmi = km.keymap_items.new('brush.active_index_set', 'SEVEN', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 16
+kmi = km.keymap_items.new('brush.active_index_set', 'EIGHT', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 17
+kmi = km.keymap_items.new('brush.active_index_set', 'NINE', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 18
+kmi = km.keymap_items.new('brush.active_index_set', 'ZERO', 'PRESS', shift=True)
+kmi.properties.mode = 'weight_paint'
+kmi.properties.index = 19
+kmi = km.keymap_items.new('brush.scale_size', 'LEFT_BRACKET', 'PRESS')
+kmi.properties.scalar = 0.8999999761581421
+kmi = km.keymap_items.new('brush.scale_size', 'RIGHT_BRACKET', 'PRESS')
+kmi.properties.scalar = 1.1111111640930176
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', ctrl=True)
+kmi.properties.data_path_primary = 'tool_settings.weight_paint.brush.size'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.size'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_size'
+kmi.properties.rotation_path = 'tool_settings.weight_paint.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.weight_paint.brush.cursor_color_add'
+kmi.properties.fill_color_path = ''
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.weight_paint.brush'
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', shift=True)
+kmi.properties.data_path_primary = 'tool_settings.weight_paint.brush.strength'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.strength'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_strength'
+kmi.properties.rotation_path = 'tool_settings.weight_paint.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.weight_paint.brush.cursor_color_add'
+kmi.properties.fill_color_path = ''
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.weight_paint.brush'
+kmi = km.keymap_items.new('wm.radial_control', 'Q', 'PRESS')
+kmi.properties.data_path_primary = 'tool_settings.weight_paint.brush.weight'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.weight'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_weight'
+kmi.properties.rotation_path = 'tool_settings.weight_paint.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.weight_paint.brush.cursor_color_add'
+kmi.properties.fill_color_path = ''
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.weight_paint.brush'
+kmi = km.keymap_items.new('wm.context_toggle', 'M', 'PRESS')
+kmi.properties.data_path = 'weight_paint_object.data.use_paint_mask'
+kmi = km.keymap_items.new('wm.context_toggle', 'V', 'PRESS')
+kmi.properties.data_path = 'weight_paint_object.data.use_paint_mask_vertex'
+kmi = km.keymap_items.new('paint.weight_from_bones', 'Q', 'PRESS')
+
+# Map Sculpt
+km = kc.keymaps.new('Sculpt', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('sculpt.brush_stroke', 'LEFTMOUSE', 'PRESS')
+kmi.properties.mode = 'NORMAL'
+kmi = km.keymap_items.new('sculpt.brush_stroke', 'LEFTMOUSE', 'PRESS', ctrl=True)
+kmi.properties.mode = 'INVERT'
+kmi = km.keymap_items.new('sculpt.brush_stroke', 'LEFTMOUSE', 'PRESS', shift=True)
+kmi.properties.mode = 'SMOOTH'
+kmi = km.keymap_items.new('paint.hide_show', 'H', 'PRESS', shift=True)
+kmi.properties.action = 'SHOW'
+kmi.properties.area = 'INSIDE'
+kmi = km.keymap_items.new('paint.hide_show', 'H', 'PRESS')
+kmi.properties.action = 'HIDE'
+kmi.properties.area = 'INSIDE'
+kmi = km.keymap_items.new('paint.hide_show', 'H', 'PRESS', alt=True)
+kmi.properties.action = 'SHOW'
+kmi.properties.area = 'ALL'
+kmi = km.keymap_items.new('object.subdivision_set', 'ZERO', 'PRESS', ctrl=True)
+kmi.properties.level = 0
+kmi = km.keymap_items.new('object.subdivision_set', 'ONE', 'PRESS', ctrl=True)
+kmi.properties.level = 1
+kmi = km.keymap_items.new('object.subdivision_set', 'TWO', 'PRESS', ctrl=True)
+kmi.properties.level = 2
+kmi = km.keymap_items.new('object.subdivision_set', 'THREE', 'PRESS', ctrl=True)
+kmi.properties.level = 3
+kmi = km.keymap_items.new('object.subdivision_set', 'FOUR', 'PRESS', ctrl=True)
+kmi.properties.level = 4
+kmi = km.keymap_items.new('object.subdivision_set', 'FIVE', 'PRESS', ctrl=True)
+kmi.properties.level = 5
+kmi = km.keymap_items.new('paint.mask_flood_fill', 'M', 'PRESS', alt=True)
+kmi.properties.mode = 'VALUE'
+kmi.properties.value = 0.0
+kmi = km.keymap_items.new('paint.mask_flood_fill', 'I', 'PRESS', ctrl=True)
+kmi.properties.mode = 'INVERT'
+kmi = km.keymap_items.new('sculpt.dynamic_topology_toggle', 'D', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('wm.radial_control', 'D', 'PRESS', shift=True)
+kmi.properties.data_path_primary = 'tool_settings.sculpt.detail_size'
+kmi.properties.data_path_secondary = ''
+kmi.properties.use_secondary = ''
+kmi.properties.rotation_path = 'tool_settings.sculpt.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.sculpt.brush.cursor_color_add'
+kmi.properties.fill_color_path = ''
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.sculpt.brush'
+kmi = km.keymap_items.new('object.subdivision_set', 'PAGE_UP', 'PRESS')
+kmi.properties.level = 1
+kmi.properties.relative = True
+kmi = km.keymap_items.new('object.subdivision_set', 'PAGE_DOWN', 'PRESS')
+kmi.properties.level = -1
+kmi.properties.relative = True
+kmi = km.keymap_items.new('brush.active_index_set', 'ONE', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 0
+kmi = km.keymap_items.new('brush.active_index_set', 'TWO', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 1
+kmi = km.keymap_items.new('brush.active_index_set', 'THREE', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 2
+kmi = km.keymap_items.new('brush.active_index_set', 'FOUR', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 3
+kmi = km.keymap_items.new('brush.active_index_set', 'FIVE', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 4
+kmi = km.keymap_items.new('brush.active_index_set', 'SIX', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 5
+kmi = km.keymap_items.new('brush.active_index_set', 'SEVEN', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 6
+kmi = km.keymap_items.new('brush.active_index_set', 'EIGHT', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 7
+kmi = km.keymap_items.new('brush.active_index_set', 'NINE', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 8
+kmi = km.keymap_items.new('brush.active_index_set', 'ZERO', 'PRESS')
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 9
+kmi = km.keymap_items.new('brush.active_index_set', 'ONE', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 10
+kmi = km.keymap_items.new('brush.active_index_set', 'TWO', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 11
+kmi = km.keymap_items.new('brush.active_index_set', 'THREE', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 12
+kmi = km.keymap_items.new('brush.active_index_set', 'FOUR', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 13
+kmi = km.keymap_items.new('brush.active_index_set', 'FIVE', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 14
+kmi = km.keymap_items.new('brush.active_index_set', 'SIX', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 15
+kmi = km.keymap_items.new('brush.active_index_set', 'SEVEN', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 16
+kmi = km.keymap_items.new('brush.active_index_set', 'EIGHT', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 17
+kmi = km.keymap_items.new('brush.active_index_set', 'NINE', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 18
+kmi = km.keymap_items.new('brush.active_index_set', 'ZERO', 'PRESS', shift=True)
+kmi.properties.mode = 'sculpt'
+kmi.properties.index = 19
+kmi = km.keymap_items.new('brush.scale_size', 'LEFT_BRACKET', 'PRESS')
+kmi.properties.scalar = 0.8999999761581421
+kmi = km.keymap_items.new('brush.scale_size', 'RIGHT_BRACKET', 'PRESS')
+kmi.properties.scalar = 1.1111111640930176
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', ctrl=True)
+kmi.properties.data_path_primary = 'tool_settings.sculpt.brush.size'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.size'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_size'
+kmi.properties.rotation_path = 'tool_settings.sculpt.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.sculpt.brush.cursor_color_add'
+kmi.properties.fill_color_path = ''
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.sculpt.brush'
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', shift=True)
+kmi.properties.data_path_primary = 'tool_settings.sculpt.brush.strength'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.strength'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_strength'
+kmi.properties.rotation_path = 'tool_settings.sculpt.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.sculpt.brush.cursor_color_add'
+kmi.properties.fill_color_path = ''
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.sculpt.brush'
+kmi = km.keymap_items.new('wm.radial_control', 'W', 'PRESS')
+kmi.properties.data_path_primary = 'tool_settings.sculpt.brush.weight'
+kmi.properties.data_path_secondary = 'tool_settings.unified_paint_settings.weight'
+kmi.properties.use_secondary = 'tool_settings.unified_paint_settings.use_unified_weight'
+kmi.properties.rotation_path = 'tool_settings.sculpt.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.sculpt.brush.cursor_color_add'
+kmi.properties.fill_color_path = ''
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.sculpt.brush'
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', ctrl=True)
+kmi.properties.data_path_primary = 'tool_settings.sculpt.brush.texture_slot.angle'
+kmi.properties.data_path_secondary = ''
+kmi.properties.use_secondary = ''
+kmi.properties.rotation_path = 'tool_settings.sculpt.brush.texture_slot.angle'
+kmi.properties.color_path = 'tool_settings.sculpt.brush.cursor_color_add'
+kmi.properties.fill_color_path = ''
+kmi.properties.zoom_path = ''
+kmi.properties.image_id = 'tool_settings.sculpt.brush'
+kmi = km.keymap_items.new('paint.brush_select', 'D', 'PRESS')
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'DRAW'
+kmi = km.keymap_items.new('paint.brush_select', 'S', 'PRESS')
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'SMOOTH'
+kmi = km.keymap_items.new('paint.brush_select', 'P', 'PRESS')
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'PINCH'
+kmi = km.keymap_items.new('paint.brush_select', 'I', 'PRESS')
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'INFLATE'
+kmi = km.keymap_items.new('paint.brush_select', 'G', 'PRESS')
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'GRAB'
+kmi = km.keymap_items.new('paint.brush_select', 'L', 'PRESS')
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'LAYER'
+kmi = km.keymap_items.new('paint.brush_select', 'T', 'PRESS', shift=True)
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'FLATTEN'
+kmi = km.keymap_items.new('paint.brush_select', 'C', 'PRESS')
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'CLAY'
+kmi = km.keymap_items.new('paint.brush_select', 'C', 'PRESS', shift=True)
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'CREASE'
+kmi = km.keymap_items.new('paint.brush_select', 'K', 'PRESS')
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'SNAKE_HOOK'
+kmi = km.keymap_items.new('paint.brush_select', 'M', 'PRESS')
+kmi.properties.paint_mode = 'SCULPT'
+kmi.properties.sculpt_tool = 'MASK'
+kmi.properties.toggle = True
+kmi.properties.create_missing = True
+kmi = km.keymap_items.new('wm.context_menu_enum', 'A', 'PRESS')
+kmi.properties.data_path = 'tool_settings.sculpt.brush.stroke_method'
+kmi = km.keymap_items.new('wm.context_toggle', 'S', 'PRESS', shift=True)
+kmi.properties.data_path = 'tool_settings.sculpt.brush.use_smooth_stroke'
+kmi = km.keymap_items.new('wm.context_menu_enum', 'R', 'PRESS')
+kmi.properties.data_path = 'tool_settings.sculpt.brush.texture_angle_source_random'
+
+# Map Mesh
+km = kc.keymaps.new('Mesh', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('mesh.loopcut_slide', 'R', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('mesh.inset', 'I', 'PRESS')
+kmi = km.keymap_items.new('mesh.bevel', 'B', 'PRESS', ctrl=True)
+kmi.properties.vertex_only = False
+kmi = km.keymap_items.new('mesh.bevel', 'B', 'PRESS', shift=True, ctrl=True)
+kmi.properties.vertex_only = True
+kmi = km.keymap_items.new('mesh.loop_select', 'SELECTMOUSE', 'PRESS', alt=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = False
+kmi = km.keymap_items.new('mesh.loop_select', 'SELECTMOUSE', 'PRESS', shift=True, alt=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = True
+kmi = km.keymap_items.new('mesh.edgering_select', 'SELECTMOUSE', 'PRESS', ctrl=True, alt=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = False
+kmi = km.keymap_items.new('mesh.edgering_select', 'SELECTMOUSE', 'PRESS', shift=True, ctrl=True, alt=True)
+kmi.properties.extend = False
+kmi.properties.deselect = False
+kmi.properties.toggle = True
+kmi = km.keymap_items.new('mesh.select_shortest_path', 'SELECTMOUSE', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('mesh.select_all', 'LEFTMOUSE', 'CLICK')
+kmi.properties.action = 'DESELECT'
+kmi = km.keymap_items.new('mesh.select_all', 'I', 'PRESS', ctrl=True)
+kmi.properties.action = 'INVERT'
+kmi = km.keymap_items.new('mesh.select_more', 'NUMPAD_PLUS', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('mesh.select_less', 'NUMPAD_MINUS', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('mesh.select_non_manifold', 'M', 'PRESS', shift=True, ctrl=True, alt=True)
+kmi = km.keymap_items.new('mesh.select_linked', 'L', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('mesh.select_linked_pick', 'L', 'PRESS', alt=True)
+kmi.properties.deselect = False
+kmi = km.keymap_items.new('mesh.select_linked_pick', 'L', 'PRESS', shift=True)
+kmi.properties.deselect = True
+kmi = km.keymap_items.new('mesh.faces_select_linked_flat', 'F', 'PRESS', shift=True, ctrl=True, alt=True)
+kmi = km.keymap_items.new('mesh.select_similar', 'G', 'PRESS', shift=True)
+kmi = km.keymap_items.new('wm.call_menu', 'TAB', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_edit_mesh_select_mode'
+kmi = km.keymap_items.new('mesh.hide', 'H', 'PRESS')
+kmi.properties.unselected = False
+kmi = km.keymap_items.new('mesh.hide', 'H', 'PRESS', shift=True)
+kmi.properties.unselected = True
+kmi = km.keymap_items.new('mesh.reveal', 'H', 'PRESS', alt=True)
+kmi = km.keymap_items.new('mesh.normals_make_consistent', 'N', 'PRESS', ctrl=True)
+kmi.properties.inside = False
+kmi = km.keymap_items.new('mesh.normals_make_consistent', 'N', 'PRESS', shift=True, ctrl=True)
+kmi.properties.inside = True
+kmi = km.keymap_items.new('view3d.edit_mesh_extrude_move_normal', 'E', 'PRESS')
+kmi = km.keymap_items.new('wm.call_menu', 'E', 'PRESS', alt=True)
+kmi.properties.name = 'VIEW3D_MT_edit_mesh_extrude'
+kmi = km.keymap_items.new('transform.edge_crease', 'E', 'PRESS', shift=True)
+kmi = km.keymap_items.new('mesh.spin', 'R', 'PRESS', alt=True)
+kmi = km.keymap_items.new('mesh.fill', 'F', 'PRESS', alt=True)
+kmi = km.keymap_items.new('mesh.beautify_fill', 'F', 'PRESS', shift=True, alt=True)
+kmi = km.keymap_items.new('mesh.quads_convert_to_tris', 'T', 'PRESS', ctrl=True)
+kmi.properties.use_beauty = True
+kmi = km.keymap_items.new('mesh.quads_convert_to_tris', 'T', 'PRESS', shift=True, ctrl=True)
+kmi.properties.use_beauty = False
+kmi = km.keymap_items.new('mesh.tris_convert_to_quads', 'J', 'PRESS', alt=True)
+kmi = km.keymap_items.new('mesh.rip_move', 'V', 'PRESS')
+kmi = km.keymap_items.new('mesh.rip_move_fill', 'V', 'PRESS', alt=True)
+kmi = km.keymap_items.new('mesh.merge', 'M', 'PRESS', alt=True)
+kmi = km.keymap_items.new('transform.shrink_fatten', 'S', 'PRESS', alt=True)
+kmi = km.keymap_items.new('mesh.edge_face_add', 'F', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('mesh.duplicate_move', 'D', 'PRESS', shift=True)
+kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', shift=True)
+kmi.properties.name = 'INFO_MT_mesh_add'
+kmi = km.keymap_items.new('mesh.separate', 'P', 'PRESS')
+kmi = km.keymap_items.new('mesh.split', 'Y', 'PRESS')
+kmi = km.keymap_items.new('mesh.vert_connect', 'J', 'PRESS')
+kmi = km.keymap_items.new('transform.vert_slide', 'V', 'PRESS', shift=True)
+kmi = km.keymap_items.new('mesh.dupli_extrude_cursor', 'ACTIONMOUSE', 'CLICK', ctrl=True)
+kmi.properties.rotate_source = True
+kmi = km.keymap_items.new('mesh.dupli_extrude_cursor', 'ACTIONMOUSE', 'CLICK', shift=True, ctrl=True)
+kmi.properties.rotate_source = False
+kmi = km.keymap_items.new('wm.call_menu', 'X', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_edit_mesh_delete'
+kmi = km.keymap_items.new('wm.call_menu', 'DEL', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_edit_mesh_delete'
+kmi = km.keymap_items.new('mesh.knife_tool', 'K', 'PRESS')
+kmi.properties.use_occlude_geometry = True
+kmi.properties.only_selected = False
+kmi = km.keymap_items.new('mesh.knife_tool', 'K', 'PRESS', shift=True)
+kmi.properties.use_occlude_geometry = False
+kmi.properties.only_selected = True
+kmi = km.keymap_items.new('object.vertex_parent_set', 'P', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('wm.call_menu', 'Q', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_edit_mesh_specials'
+kmi = km.keymap_items.new('wm.call_menu', 'F', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_edit_mesh_faces'
+kmi = km.keymap_items.new('wm.call_menu', 'E', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_edit_mesh_edges'
+kmi = km.keymap_items.new('wm.call_menu', 'V', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_edit_mesh_vertices'
+kmi = km.keymap_items.new('wm.call_menu', 'H', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_hook'
+kmi = km.keymap_items.new('wm.call_menu', 'U', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_uv_map'
+kmi = km.keymap_items.new('wm.call_menu', 'G', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_vertex_group'
+kmi = km.keymap_items.new('object.subdivision_set', 'ZERO', 'PRESS', ctrl=True)
+kmi.properties.level = 0
+kmi = km.keymap_items.new('object.subdivision_set', 'ONE', 'PRESS', ctrl=True)
+kmi.properties.level = 1
+kmi = km.keymap_items.new('object.subdivision_set', 'TWO', 'PRESS', ctrl=True)
+kmi.properties.level = 2
+kmi = km.keymap_items.new('object.subdivision_set', 'THREE', 'PRESS', ctrl=True)
+kmi.properties.level = 3
+kmi = km.keymap_items.new('object.subdivision_set', 'FOUR', 'PRESS', ctrl=True)
+kmi.properties.level = 4
+kmi = km.keymap_items.new('object.subdivision_set', 'FIVE', 'PRESS', ctrl=True)
+kmi.properties.level = 5
+kmi = km.keymap_items.new('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
+kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS')
+kmi.properties.data_path = 'tool_settings.proportional_edit'
+kmi.properties.value_1 = 'DISABLED'
+kmi.properties.value_2 = 'ENABLED'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS', alt=True)
+kmi.properties.data_path = 'tool_settings.proportional_edit'
+kmi.properties.value_1 = 'DISABLED'
+kmi.properties.value_2 = 'CONNECTED'
+kmi = km.keymap_items.new('wm.context_set_value', 'ONE', 'PRESS')
+kmi.properties.data_path = 'tool_settings.mesh_select_mode'
+kmi.properties.value = '(True,False,False)'
+kmi = km.keymap_items.new('wm.context_set_value', 'TWO', 'PRESS')
+kmi.properties.data_path = 'tool_settings.mesh_select_mode'
+kmi.properties.value = '(False,True,False)'
+kmi = km.keymap_items.new('wm.context_set_value', 'THREE', 'PRESS')
+kmi.properties.data_path = 'tool_settings.mesh_select_mode'
+kmi.properties.value = '(False,False,True)'
+
+# Map Curve
+km = kc.keymaps.new('Curve', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', shift=True)
+kmi.properties.name = 'INFO_MT_edit_curve_add'
+kmi = km.keymap_items.new('curve.handle_type_set', 'V', 'PRESS')
+kmi = km.keymap_items.new('curve.vertex_add', 'LEFTMOUSE', 'CLICK', ctrl=True)
+kmi = km.keymap_items.new('curve.select_all', 'LEFTMOUSE', 'CLICK')
+kmi.properties.action = 'TOGGLE'
+kmi = km.keymap_items.new('curve.select_all', 'I', 'PRESS', ctrl=True)
+kmi.properties.action = 'INVERT'
+kmi = km.keymap_items.new('curve.select_row', 'R', 'PRESS', shift=True)
+kmi = km.keymap_items.new('curve.select_more', 'NUMPAD_PLUS', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('curve.select_less', 'NUMPAD_MINUS', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('curve.select_linked', 'L', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('curve.select_linked_pick', 'L', 'PRESS')
+kmi.properties.deselect = False
+kmi = km.keymap_items.new('curve.select_linked_pick', 'L', 'PRESS', shift=True)
+kmi.properties.deselect = True
+kmi = km.keymap_items.new('curve.separate', 'P', 'PRESS')
+kmi = km.keymap_items.new('curve.extrude_move', 'E', 'PRESS')
+kmi = km.keymap_items.new('curve.duplicate_move', 'D', 'PRESS', shift=True)
+kmi = km.keymap_items.new('curve.make_segment', 'F', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('curve.cyclic_toggle', 'C', 'PRESS', alt=True)
+kmi = km.keymap_items.new('curve.delete', 'X', 'PRESS')
+kmi = km.keymap_items.new('curve.delete', 'DEL', 'PRESS')
+kmi = km.keymap_items.new('curve.tilt_clear', 'T', 'PRESS', alt=True)
+kmi = km.keymap_items.new('transform.tilt', 'T', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('transform.transform', 'S', 'PRESS', alt=True)
+kmi.properties.mode = 'CURVE_SHRINKFATTEN'
+kmi = km.keymap_items.new('curve.reveal', 'H', 'PRESS', alt=True)
+kmi = km.keymap_items.new('curve.hide', 'H', 'PRESS')
+kmi.properties.unselected = False
+kmi = km.keymap_items.new('curve.hide', 'H', 'PRESS', shift=True)
+kmi.properties.unselected = True
+kmi = km.keymap_items.new('object.vertex_parent_set', 'P', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('wm.call_menu', 'Q', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_edit_curve_specials'
+kmi = km.keymap_items.new('wm.call_menu', 'H', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_hook'
+kmi = km.keymap_items.new('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
+kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS')
+kmi.properties.data_path = 'tool_settings.proportional_edit'
+kmi.properties.value_1 = 'DISABLED'
+kmi.properties.value_2 = 'ENABLED'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS', alt=True)
+kmi.properties.data_path = 'tool_settings.proportional_edit'
+kmi.properties.value_1 = 'DISABLED'
+kmi.properties.value_2 = 'CONNECTED'
+
+# Map Armature
+km = kc.keymaps.new('Armature', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('sketch.delete', 'X', 'PRESS')
+kmi = km.keymap_items.new('sketch.delete', 'DEL', 'PRESS')
+kmi = km.keymap_items.new('sketch.finish_stroke', 'RIGHTMOUSE', 'PRESS')
+kmi = km.keymap_items.new('sketch.cancel_stroke', 'ESC', 'PRESS')
+kmi = km.keymap_items.new('sketch.gesture', 'LEFTMOUSE', 'PRESS', shift=True)
+kmi = km.keymap_items.new('sketch.draw_stroke', 'LEFTMOUSE', 'PRESS')
+kmi = km.keymap_items.new('sketch.draw_stroke', 'LEFTMOUSE', 'PRESS', ctrl=True)
+kmi.properties.snap = True
+kmi = km.keymap_items.new('sketch.draw_preview', 'MOUSEMOVE', 'ANY')
+kmi = km.keymap_items.new('sketch.draw_preview', 'MOUSEMOVE', 'ANY', ctrl=True)
+kmi.properties.snap = True
+kmi = km.keymap_items.new('armature.hide', 'H', 'PRESS')
+kmi.properties.unselected = False
+kmi = km.keymap_items.new('armature.hide', 'H', 'PRESS', shift=True)
+kmi.properties.unselected = True
+kmi = km.keymap_items.new('armature.reveal', 'H', 'PRESS', alt=True)
+kmi = km.keymap_items.new('armature.align', 'A', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('armature.calculate_roll', 'N', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('armature.switch_direction', 'F', 'PRESS', alt=True)
+kmi = km.keymap_items.new('armature.bone_primitive_add', 'A', 'PRESS', shift=True)
+kmi = km.keymap_items.new('armature.parent_set', 'P', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('armature.parent_clear', 'P', 'PRESS', alt=True)
+kmi = km.keymap_items.new('armature.select_all', 'LEFTMOUSE', 'CLICK')
+kmi.properties.action = 'TOGGLE'
+kmi = km.keymap_items.new('armature.select_all', 'I', 'PRESS', ctrl=True)
+kmi.properties.action = 'INVERT'
+kmi = km.keymap_items.new('armature.select_hierarchy', 'LEFT_BRACKET', 'PRESS')
+kmi.properties.direction = 'PARENT'
+kmi.properties.extend = False
+kmi = km.keymap_items.new('armature.select_hierarchy', 'LEFT_BRACKET', 'PRESS', shift=True)
+kmi.properties.direction = 'PARENT'
+kmi.properties.extend = True
+kmi = km.keymap_items.new('armature.select_hierarchy', 'RIGHT_BRACKET', 'PRESS')
+kmi.properties.direction = 'CHILD'
+kmi.properties.extend = False
+kmi = km.keymap_items.new('armature.select_hierarchy', 'RIGHT_BRACKET', 'PRESS', shift=True)
+kmi.properties.direction = 'CHILD'
+kmi.properties.extend = True
+kmi = km.keymap_items.new('armature.select_similar', 'G', 'PRESS', shift=True)
+kmi = km.keymap_items.new('armature.select_linked', 'L', 'PRESS')
+kmi = km.keymap_items.new('armature.delete', 'X', 'PRESS')
+kmi = km.keymap_items.new('armature.delete', 'DEL', 'PRESS')
+kmi = km.keymap_items.new('armature.duplicate_move', 'D', 'PRESS', shift=True)
+kmi = km.keymap_items.new('armature.extrude_move', 'E', 'PRESS')
+kmi = km.keymap_items.new('armature.extrude_forked', 'E', 'PRESS', shift=True)
+kmi = km.keymap_items.new('armature.click_extrude', 'LEFTMOUSE', 'CLICK', ctrl=True)
+kmi = km.keymap_items.new('armature.fill', 'F', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('armature.merge', 'M', 'PRESS', alt=True)
+kmi = km.keymap_items.new('armature.separate', 'P', 'PRESS', ctrl=True, alt=True)
+kmi = km.keymap_items.new('wm.call_menu', 'W', 'PRESS', shift=True)
+kmi.properties.name = 'VIEW3D_MT_bone_options_toggle'
+kmi = km.keymap_items.new('wm.call_menu', 'W', 'PRESS', shift=True, ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_bone_options_enable'
+kmi = km.keymap_items.new('wm.call_menu', 'W', 'PRESS', alt=True)
+kmi.properties.name = 'VIEW3D_MT_bone_options_disable'
+kmi = km.keymap_items.new('armature.layers_show_all', 'ACCENT_GRAVE', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('armature.armature_layers', 'M', 'PRESS', shift=True)
+kmi = km.keymap_items.new('armature.bone_layers', 'M', 'PRESS')
+kmi = km.keymap_items.new('transform.transform', 'S', 'PRESS', ctrl=True, alt=True)
+kmi.properties.mode = 'BONE_SIZE'
+kmi = km.keymap_items.new('transform.transform', 'R', 'PRESS', ctrl=True)
+kmi.properties.mode = 'BONE_ROLL'
+kmi = km.keymap_items.new('wm.call_menu', 'Q', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_armature_specials'
+
+# Map Metaball
+km = kc.keymaps.new('Metaball', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('object.metaball_add', 'A', 'PRESS', shift=True)
+kmi = km.keymap_items.new('mball.reveal_metaelems', 'H', 'PRESS', alt=True)
+kmi = km.keymap_items.new('mball.hide_metaelems', 'H', 'PRESS')
+kmi.properties.unselected = False
+kmi = km.keymap_items.new('mball.hide_metaelems', 'H', 'PRESS', shift=True)
+kmi.properties.unselected = True
+kmi = km.keymap_items.new('mball.delete_metaelems', 'X', 'PRESS')
+kmi = km.keymap_items.new('mball.delete_metaelems', 'DEL', 'PRESS')
+kmi = km.keymap_items.new('mball.duplicate_metaelems', 'D', 'PRESS', shift=True)
+kmi = km.keymap_items.new('mball.select_all', 'LEFTMOUSE', 'CLICK')
+kmi.properties.action = 'TOGGLE'
+kmi = km.keymap_items.new('mball.select_all', 'I', 'PRESS', ctrl=True)
+kmi.properties.action = 'INVERT'
+kmi = km.keymap_items.new('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
+kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS')
+kmi.properties.data_path = 'tool_settings.proportional_edit'
+kmi.properties.value_1 = 'DISABLED'
+kmi.properties.value_2 = 'ENABLED'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS', alt=True)
+kmi.properties.data_path = 'tool_settings.proportional_edit'
+kmi.properties.value_1 = 'DISABLED'
+kmi.properties.value_2 = 'CONNECTED'
+
+# Map Lattice
+km = kc.keymaps.new('Lattice', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('lattice.select_all', 'LEFTMOUSE', 'CLICK')
+kmi.properties.action = 'TOGGLE'
+kmi = km.keymap_items.new('lattice.select_all', 'I', 'PRESS', ctrl=True)
+kmi.properties.action = 'INVERT'
+kmi = km.keymap_items.new('object.vertex_parent_set', 'P', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('lattice.flip', 'F', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('wm.call_menu', 'H', 'PRESS', ctrl=True)
+kmi.properties.name = 'VIEW3D_MT_hook'
+kmi = km.keymap_items.new('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
+kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS')
+kmi.properties.data_path = 'tool_settings.proportional_edit'
+kmi.properties.value_1 = 'DISABLED'
+kmi.properties.value_2 = 'ENABLED'
+
+# Map Particle
+km = kc.keymaps.new('Particle', space_type='EMPTY', region_type='WINDOW', modal=False)
+
+kmi = km.keymap_items.new('particle.select_all', 'A', 'PRESS')
+kmi.properties.action = 'TOGGLE'
+kmi = km.keymap_items.new('particle.select_all', 'I', 'PRESS', ctrl=True)
+kmi.properties.action = 'INVERT'
+kmi = km.keymap_items.new('particle.select_more', 'NUMPAD_PLUS', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('particle.select_less', 'NUMPAD_MINUS', 'PRESS', ctrl=True)
+kmi = km.keymap_items.new('particle.select_linked', 'L', 'PRESS')
+kmi.properties.deselect = False
+kmi = km.keymap_items.new('particle.select_linked', 'L', 'PRESS', shift=True)
+kmi.properties.deselect = True
+kmi = km.keymap_items.new('particle.delete', 'X', 'PRESS')
+kmi = km.keymap_items.new('particle.delete', 'DEL', 'PRESS')
+kmi = km.keymap_items.new('particle.reveal', 'H', 'PRESS', alt=True)
+kmi = km.keymap_items.new('particle.hide', 'H', 'PRESS')
+kmi.properties.unselected = False
+kmi = km.keymap_items.new('particle.hide', 'H', 'PRESS', shift=True)
+kmi.properties.unselected = True
+kmi = km.keymap_items.new('view3d.manipulator', 'LEFTMOUSE', 'PRESS', any=True)
+kmi.properties.release_confirm = True
+kmi = km.keymap_items.new('particle.brush_edit', 'LEFTMOUSE', 'PRESS')
+kmi = km.keymap_items.new('particle.brush_edit', 'LEFTMOUSE', 'PRESS', shift=True)
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', ctrl=True)
+kmi.properties.data_path_primary = 'tool_settings.particle_edit.brush.size'
+kmi = km.keymap_items.new('wm.radial_control', 'F', 'PRESS', shift=True)
+kmi.properties.data_path_primary = 'tool_settings.particle_edit.brush.strength'
+kmi = km.keymap_items.new('wm.call_menu', 'W', 'PRESS')
+kmi.properties.name = 'VIEW3D_MT_particle_specials'
+kmi = km.keymap_items.new('particle.weight_set', 'K', 'PRESS', shift=True)
+kmi = km.keymap_items.new('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
+kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
+kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS')
+kmi.properties.data_path = 'tool_settings.proportional_edit'
+kmi.properties.value_1 = 'DISABLED'
+kmi.properties.value_2 = 'ENABLED'
+
+# Map Transform Modal Map
+km = kc.keymaps.new('Transform Modal Map', space_type='EMPTY', region_type='WINDOW', modal=True)
+
+kmi = km.keymap_items.new_modal('CANCEL', 'ESC', 'PRESS', any=True)
+kmi = km.keymap_items.new_modal('CONFIRM', 'LEFTMOUSE', 'RELEASE', any=True)
+kmi = km.keymap_items.new_modal('CONFIRM', 'RET', 'PRESS', any=True)
+kmi = km.keymap_items.new_modal('CONFIRM', 'NUMPAD_ENTER', 'PRESS', any=True)
+kmi = km.keymap_items.new_modal('TRANSLATE', 'W', 'PRESS')
+kmi = km.keymap_items.new_modal('ROTATE', 'E', 'PRESS')
+kmi = km.keymap_items.new_modal('RESIZE', 'R', 'PRESS')
+kmi = km.keymap_items.new_modal('SNAP_TOGGLE', 'TAB', 'PRESS', shift=True)
+kmi = km.keymap_items.new_modal('SNAP_INV_ON', 'LEFT_CTRL', 'PRESS', any=True)
+kmi = km.keymap_items.new_modal('SNAP_INV_OFF', 'LEFT_CTRL', 'RELEASE', any=True)
+kmi = km.keymap_items.new_modal('SNAP_INV_ON', 'RIGHT_CTRL', 'PRESS', any=True)
+kmi = km.keymap_items.new_modal('SNAP_INV_OFF', 'RIGHT_CTRL', 'RELEASE', any=True)
+kmi = km.keymap_items.new_modal('ADD_SNAP', 'A', 'PRESS')
+kmi = km.keymap_items.new_modal('REMOVE_SNAP', 'A', 'PRESS', alt=True)
+kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_UP', 'PAGE_UP', 'PRESS')
+kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_DOWN', 'PAGE_DOWN', 'PRESS')
+kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_UP', 'WHEELDOWNMOUSE', 'PRESS')
+kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_DOWN', 'WHEELUPMOUSE', 'PRESS')
+kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE', 'TRACKPADPAN', 'ANY')
+kmi = km.keymap_items.new_modal('EDGESLIDE_EDGE_NEXT', 'WHEELDOWNMOUSE', 'PRESS', alt=True)
+kmi = km.keymap_items.new_modal('EDGESLIDE_PREV_NEXT', 'WHEELUPMOUSE', 'PRESS', alt=True)
+kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_UP', 'PAGE_UP', 'PRESS', shift=True)
+kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_DOWN', 'PAGE_DOWN', 'PRESS', shift=True)
+kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_UP', 'WHEELDOWNMOUSE', 'PRESS', shift=True)
+kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_DOWN', 'WHEELUPMOUSE', 'PRESS', shift=True)
diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py
index f8eb55db42e..ae6b80865dd 100644
--- a/release/scripts/startup/bl_operators/object.py
+++ b/release/scripts/startup/bl_operators/object.py
@@ -473,9 +473,9 @@ class ShapeTransfer(Operator):
class JoinUVs(Operator):
- """Copy UV Layout to objects with matching geometry"""
+ """Transfer UV Layouts from active to selected objects (needs matching geometry)"""
bl_idname = "object.join_uvs"
- bl_label = "Join as UVs"
+ bl_label = "Transfer UV Layouts"
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index b2f094e7ccc..a7085e51bd3 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -29,6 +29,8 @@ from bpy.props import (StringProperty,
from rna_prop_ui import rna_idprop_ui_prop_get, rna_idprop_ui_prop_clear
+from bpy.app.translations import pgettext_tip as tip_
+
class MESH_OT_delete_edgeloop(Operator):
"""Delete an edge loop by merging the faces on each side """ \
@@ -1838,7 +1840,7 @@ class WM_OT_addon_install(Operator):
bpy.utils.refresh_script_paths()
# print message
- msg = "Modules Installed from %r into %r (%s)" % (pyfile, path_addons, ", ".join(sorted(addons_new)))
+ msg = tip_("Modules Installed from %r into %r (%s)") % (pyfile, path_addons, ", ".join(sorted(addons_new)))
print(msg)
self.report({'INFO'}, msg)
diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py
index 6ee583d0894..6bda65dba06 100644
--- a/release/scripts/startup/bl_ui/__init__.py
+++ b/release/scripts/startup/bl_ui/__init__.py
@@ -26,6 +26,7 @@ if "bpy" in locals():
_reload(val)
_modules = (
"properties_animviz",
+ "properties_constraint",
"properties_data_armature",
"properties_data_bone",
"properties_data_camera",
@@ -40,7 +41,6 @@ _modules = (
"properties_game",
"properties_mask_common",
"properties_material",
- "properties_object_constraint",
"properties_object",
"properties_particle",
"properties_physics_cloth",
diff --git a/release/scripts/startup/bl_ui/properties_object_constraint.py b/release/scripts/startup/bl_ui/properties_constraint.py
index f1bad2257c0..07390525132 100644
--- a/release/scripts/startup/bl_ui/properties_object_constraint.py
+++ b/release/scripts/startup/bl_ui/properties_constraint.py
@@ -851,16 +851,16 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- ob = context.object
+ obj = context.object
- if ob.mode == 'POSE':
+ if obj.type == 'ARMATURE' and obj.mode in {'EDIT', 'POSE'}:
box = layout.box()
box.alert = True
box.label(icon='INFO', text="See Bone Constraints tab to Add Constraints to active bone")
else:
- layout.operator_menu_enum("object.constraint_add", "type")
+ layout.operator_menu_enum("object.constraint_add", "type", text="Add Object Constraint")
- for con in ob.constraints:
+ for con in obj.constraints:
self.draw_constraint(context, con)
@@ -876,7 +876,7 @@ class BONE_PT_constraints(ConstraintButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
- layout.operator_menu_enum("pose.constraint_add", "type")
+ layout.operator_menu_enum("pose.constraint_add", "type", text="Add Bone Constraint")
for con in context.pose_bone.constraints:
self.draw_constraint(context, con)
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 05e189c86be..b38e2a7e98c 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -715,7 +715,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col = split.column()
col.label(text="Deform:")
- col.prop(md, "factor")
+ if md.deform_method in {'TAPER', 'STRETCH'}:
+ col.prop(md, "factor")
+ else:
+ col.prop(md, "angle")
col.prop(md, "limits", slider=True)
if md.deform_method in {'TAPER', 'STRETCH', 'TWIST'}:
col.prop(md, "lock_x")
@@ -747,6 +750,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col = split.column()
col.prop(md, "thickness")
+ col.prop(md, "thickness_clamp")
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
col.label(text="Crease:")
@@ -758,6 +762,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col = split.column()
col.prop(md, "offset")
+ col.prop(md, "use_flip_normals")
sub = col.column()
sub.active = bool(md.vertex_group)
sub.prop(md, "invert_vertex_group", text="Invert")
@@ -773,7 +778,6 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
row = row.row()
row.active = md.use_rim
row.prop(md, "material_offset_rim", text="Rim")
- sub.prop(md, "use_flip_normals")
def SUBSURF(self, layout, ob, md):
layout.row().prop(md, "subdivision_type", expand=True)
diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py
index 7c06aefe575..a3275bea4ee 100644
--- a/release/scripts/startup/bl_ui/properties_paint_common.py
+++ b/release/scripts/startup/bl_ui/properties_paint_common.py
@@ -85,17 +85,22 @@ def brush_texture_settings(layout, brush, sculpt):
# angle and texture_angle_source
col = layout.column()
- if sculpt:
- col.active = brush.sculpt_capabilities.has_texture_angle_source
- col.label(text="Angle:")
- if brush.sculpt_capabilities.has_random_texture_angle:
- col.prop(brush, "texture_angle_source_random", text="")
+ col.active = brush.brush_capabilities.has_texture_angle_source
+ col.label(text="Angle:")
+ if brush.brush_capabilities.has_random_texture_angle:
+ if sculpt:
+ if brush.sculpt_capabilities.has_random_texture_angle:
+ col.prop(brush, "texture_angle_source_random", text="")
+ else:
+ col.prop(brush, "texture_angle_source_no_random", text="")
+
else:
- col.prop(brush, "texture_angle_source_no_random", text="")
-
- col = layout.column()
- col.active = brush.sculpt_capabilities.has_texture_angle
- col.prop(tex_slot, "angle", text="")
+ col.prop(brush, "texture_angle_source_random", text="")
+ else:
+ col.prop(brush, "texture_angle_source_no_random", text="")
+ col = layout.column()
+ col.active = brush.brush_capabilities.has_texture_angle
+ col.prop(tex_slot, "angle", text="")
# scale and offset
split = layout.split()
diff --git a/release/scripts/startup/bl_ui/properties_physics_rigidbody.py b/release/scripts/startup/bl_ui/properties_physics_rigidbody.py
index d7ed7bb4d1a..77ea5a90344 100644
--- a/release/scripts/startup/bl_ui/properties_physics_rigidbody.py
+++ b/release/scripts/startup/bl_ui/properties_physics_rigidbody.py
@@ -109,7 +109,7 @@ class PHYSICS_PT_rigid_body_dynamics(PHYSICS_PT_rigidbody_panel, Panel):
#col = layout.column(align=1)
#col.label(text="Activation:")
- # XXX: settings such as activate on collison/etc.
+ # XXX: settings such as activate on collison/etc.
split = layout.split()
diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py
index dd30627abff..2d064404828 100644
--- a/release/scripts/startup/bl_ui/properties_texture.py
+++ b/release/scripts/startup/bl_ui/properties_texture.py
@@ -448,6 +448,9 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, Panel):
col = split.column()
col.label(text="Alpha:")
+ row = col.row()
+ row.active = tex.image and tex.image.use_alpha
+ row.prop(tex, "use_alpha", text="Use")
col.prop(tex, "use_calculate_alpha", text="Calculate")
col.prop(tex, "invert_alpha", text="Invert")
col.separator()
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py
index 14fbbe15cfd..43761dd439e 100644
--- a/release/scripts/startup/bl_ui/space_clip.py
+++ b/release/scripts/startup/bl_ui/space_clip.py
@@ -879,6 +879,7 @@ class CLIP_PT_tools_clip(CLIP_PT_clip_view_panel, Panel):
bl_space_type = 'CLIP_EDITOR'
bl_region_type = 'TOOLS'
bl_label = "Clip"
+ bl_translation_context = bpy.app.translations.contexts.id_movieclip
def draw(self, context):
layout = self.layout
@@ -933,6 +934,7 @@ class CLIP_MT_view(Menu):
class CLIP_MT_clip(Menu):
bl_label = "Clip"
+ bl_translation_context = bpy.app.translations.contexts.id_movieclip
def draw(self, context):
layout = self.layout
diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py
index adeae9da790..8a4529863a9 100644
--- a/release/scripts/startup/bl_ui/space_dopesheet.py
+++ b/release/scripts/startup/bl_ui/space_dopesheet.py
@@ -29,7 +29,6 @@ from bpy.types import Header, Menu
def dopesheet_filter(layout, context, genericFiltersOnly=False):
dopesheet = context.space_data.dopesheet
is_nla = context.area.type == 'NLA_EDITOR'
- is_drivers = (context.area.type == 'GRAPH_EDITOR' and context.space_data.mode == 'DRIVERS')
row = layout.row(align=True)
row.prop(dopesheet, "show_only_selected", text="")
@@ -37,8 +36,7 @@ def dopesheet_filter(layout, context, genericFiltersOnly=False):
if is_nla:
row.prop(dopesheet, "show_missing_nla", text="")
-
- if is_drivers:
+ else: # graph and dopesheet editors - F-Curves and drivers only
row.prop(dopesheet, "show_only_errors", text="")
if not genericFiltersOnly:
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index 01b67667cfb..b48e7660a6b 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -698,7 +698,12 @@ class IMAGE_PT_paint(Panel, ImagePaintPanel):
self.prop_unified_strength(row, context, brush, "use_pressure_strength")
row = col.row(align=True)
- row.prop(brush, "jitter", slider=True)
+ if(brush.use_relative_jitter):
+ row.prop(brush, "use_relative_jitter", text="", icon='LOCKED')
+ row.prop(brush, "jitter", slider=True)
+ else:
+ row.prop(brush, "use_relative_jitter", text="", icon='UNLOCKED')
+ row.prop(brush, "jitter_absolute")
row.prop(brush, "use_pressure_jitter", toggle=True, text="")
col.prop(brush, "blend", text="Blend")
@@ -721,7 +726,7 @@ class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, Panel):
col = layout.column()
col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8)
-
+
brush_texture_settings(col, brush, 0)
@@ -752,19 +757,34 @@ class IMAGE_PT_paint_stroke(BrushButtonsPanel, Panel):
toolsettings = context.tool_settings.image_paint
brush = toolsettings.brush
+
+ col = layout.column()
+ col.prop(toolsettings, "input_samples")
- layout.prop(brush, "use_airbrush")
- row = layout.row()
+ col.prop(brush, "use_airbrush")
+ row = col.row()
row.active = brush.use_airbrush
row.prop(brush, "rate", slider=True)
- layout.prop(brush, "use_space")
- row = layout.row(align=True)
+ col.separator()
+
+ col.prop(brush, "use_smooth_stroke")
+
+ col = layout.column()
+ col.active = brush.use_smooth_stroke
+ col.prop(brush, "smooth_stroke_radius", text="Radius", slider=True)
+ col.prop(brush, "smooth_stroke_factor", text="Factor", slider=True)
+
+ col.separator()
+
+ col = layout.column()
+ col.prop(brush, "use_space")
+ row = col.row(align=True)
row.active = brush.use_space
row.prop(brush, "spacing", text="Distance", slider=True)
row.prop(brush, "use_pressure_spacing", toggle=True, text="")
- layout.prop(brush, "use_wrap")
+ col.prop(brush, "use_wrap")
class IMAGE_PT_paint_curve(BrushButtonsPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/space_nla.py b/release/scripts/startup/bl_ui/space_nla.py
index b15dcb3d07c..49dedaa83c5 100644
--- a/release/scripts/startup/bl_ui/space_nla.py
+++ b/release/scripts/startup/bl_ui/space_nla.py
@@ -167,6 +167,9 @@ class NLA_MT_add(Menu):
layout.separator()
layout.operator("nla.tracks_add").above_selected = False
layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True
+
+ layout.separator()
+ layout.operator("nla.selected_objects_add")
class NLA_MT_edit_transform(Menu):
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index 104c1500756..1865b049a03 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -254,6 +254,7 @@ class NODE_PT_quality(bpy.types.Panel):
col.prop(tree, "use_opencl")
col.prop(tree, "use_groupnode_buffer")
col.prop(tree, "two_pass")
+ col.prop(tree, "use_viewer_border")
col.prop(snode, "show_highlight")
col.prop(snode, "use_hidden_preview")
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 017f75b7583..3627638f2e9 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -743,6 +743,7 @@ class USERPREF_PT_theme(Panel):
padding = subsplit.split(percentage=0.15)
colsub = padding.column()
colsub = padding.column()
+ colsub.active = False
colsub.row().prop(ui, "icon_file")
subsplit = row.split(percentage=0.85)
@@ -1239,7 +1240,7 @@ class USERPREF_PT_addons(Panel):
split = colsub.row().split(percentage=0.15)
split.label(text="Internet:")
if info["wiki_url"]:
- split.operator("wm.url_open", text="Link to the Wiki", icon='HELP').url = info["wiki_url"]
+ split.operator("wm.url_open", text="Documentation", icon='HELP').url = info["wiki_url"]
if info["tracker_url"]:
split.operator("wm.url_open", text="Report a Bug", icon='URL').url = info["tracker_url"]
if user_addon:
diff --git a/release/scripts/startup/bl_ui/space_userpref_keymap.py b/release/scripts/startup/bl_ui/space_userpref_keymap.py
index 0842a90762c..4c634378ed2 100644
--- a/release/scripts/startup/bl_ui/space_userpref_keymap.py
+++ b/release/scripts/startup/bl_ui/space_userpref_keymap.py
@@ -215,13 +215,13 @@ class InputKeyMapPanel:
_EVENT_TYPES = set()
_EVENT_TYPE_MAP = {}
+
def draw_filtered(self, display_keymaps, filter_type, filter_text, layout):
if filter_type == 'NAME':
def filter_func(kmi):
return (filter_text in kmi.idname.lower() or
filter_text in kmi.name.lower())
-
else:
if not self._EVENT_TYPES:
enum = bpy.types.Event.bl_rna.properties["type"].enum_items
@@ -230,12 +230,16 @@ class InputKeyMapPanel:
del enum
self._EVENT_TYPE_MAP.update({
+ "`": 'ACCENT_GRAVE',
"*": 'NUMPAD_ASTERIX',
"/": 'NUMPAD_SLASH',
"RMB": 'RIGHTMOUSE',
"LMB": 'LEFTMOUSE',
"MMB": 'MIDDLEMOUSE',
})
+ self._EVENT_TYPE_MAP.update({
+ "%d" % i: "NUMPAD_%d" % i for i in range(9)
+ })
# done with once off init
filter_text_split = filter_text.strip()
@@ -268,13 +272,13 @@ class InputKeyMapPanel:
return False
elif filter_text_split:
kmi_type = filter_text_split[0].upper()
-
+
if kmi_type not in self._EVENT_TYPES:
# replacement table
kmi_type_test = self._EVENT_TYPE_MAP.get(kmi_type)
if kmi_type_test is None:
# print("Unknown Type:", kmi_type)
-
+
# Partial match
for k, v in self._EVENT_TYPE_MAP.items():
if kmi_type in k:
@@ -289,7 +293,7 @@ class InputKeyMapPanel:
kmi_type = kmi_type_test
del kmi_type_test
-
+
kmi_test_dict["type"] = kmi_type
# main filter func, runs many times
@@ -365,8 +369,8 @@ class InputKeyMapPanel:
col.separator()
display_keymaps = keyconfig_utils.keyconfig_merge(kc, kc)
filter_type = spref.filter_type
- filter_text = spref.filter_text
- if filter_text != "":
+ filter_text = spref.filter_text.strip()
+ if filter_text:
filter_text = filter_text.lower()
ok = self.draw_filtered(display_keymaps, filter_type, filter_text, col)
else:
@@ -377,7 +381,7 @@ class InputKeyMapPanel:
rowsub.prop(spref, "filter_type", text="")
rowsubsub = rowsub.row(align=True)
if not ok:
- rowsubsub.alert = True
+ rowsubsub.alert = True
rowsubsub.prop(spref, "filter_text", text="", icon='VIEWZOOM')
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index a8be8b21498..7ecf2249b5c 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -580,6 +580,7 @@ class VIEW3D_MT_select_edit_mesh(Menu):
layout.separator()
+ layout.operator("mesh.select_ungrouped", text="Ungrouped Verts")
layout.operator("mesh.select_random", text="Random")
layout.operator("mesh.select_nth")
layout.operator("mesh.edges_select_sharp", text="Sharp Edges")
@@ -704,6 +705,10 @@ class VIEW3D_MT_select_edit_lattice(Menu):
layout.operator("lattice.select_all").action = 'TOGGLE'
layout.operator("lattice.select_all", text="Inverse").action = 'INVERT'
+ layout.separator()
+
+ layout.operator("lattice.select_ungrouped", text="Ungrouped Verts")
+
class VIEW3D_MT_select_edit_armature(Menu):
bl_label = "Select"
@@ -770,6 +775,10 @@ class VIEW3D_MT_select_paint_mask_vertex(Menu):
layout.operator("paint.vert_select_all").action = 'TOGGLE'
layout.operator("paint.vert_select_all", text="Inverse").action = 'INVERT'
+ layout.separator()
+
+ layout.operator("paint.vert_select_ungrouped", text="Ungrouped Verts")
+
# ********** Object menu **********
@@ -2532,19 +2541,19 @@ class VIEW3D_PT_view3d_meshdisplay(Panel):
mesh = context.active_object.data
split = layout.split()
-
+
col = split.column()
col.label(text="Overlays:")
col.prop(mesh, "show_faces", text="Faces")
col.prop(mesh, "show_edges", text="Edges")
col.prop(mesh, "show_edge_crease", text="Creases")
-
+
col = split.column()
col.label()
col.prop(mesh, "show_edge_seams", text="Seams")
col.prop(mesh, "show_edge_sharp", text="Sharp")
col.prop(mesh, "show_edge_bevel_weight", text="Weights")
-
+
if context.scene and bpy.app.build_options.freestyle:
col.prop(mesh, "show_freestyle_edge_marks", text="Freestyle Edge Marks")
col.prop(mesh, "show_freestyle_face_marks", text="Freestyle Face Marks")
@@ -2554,11 +2563,11 @@ class VIEW3D_PT_view3d_meshdisplay(Panel):
col.separator()
col.label(text="Normals:")
row = col.row()
-
+
sub = row.row(align=True)
sub.prop(mesh, "show_normal_vertex", text="", icon='VERTEXSEL')
sub.prop(mesh, "show_normal_face", text="", icon='FACESEL')
-
+
sub = row.row(align=True)
sub.active = mesh.show_normal_vertex or mesh.show_normal_face
sub.prop(context.scene.tool_settings, "normal_size", text="Size")
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 05c1793b29f..2e98cb68eb5 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -64,6 +64,8 @@ def draw_gpencil_tools(context, layout):
row = col.row()
row.prop(context.tool_settings, "use_grease_pencil_sessions")
+ col.operator("view3d.ruler")
+
# ********** default tools for object-mode ****************
@@ -102,8 +104,9 @@ class VIEW3D_PT_tools_objectmode(View3DPanel, Panel):
col = layout.column(align=True)
col.label(text="Motion Paths:")
- col.operator("object.paths_calculate", text="Calculate Paths")
- col.operator("object.paths_clear", text="Clear Paths")
+ row = col.row(align=True)
+ row.operator("object.paths_calculate", text="Calculate")
+ row.operator("object.paths_clear", text="Clear")
draw_repeat_tools(context, layout)
@@ -469,8 +472,9 @@ class VIEW3D_PT_tools_posemode(View3DPanel, Panel):
col = layout.column(align=True)
col.label(text="Motion Paths:")
- col.operator("pose.paths_calculate", text="Calculate Paths")
- col.operator("pose.paths_clear", text="Clear Paths")
+ row = col.row(align=True)
+ row.operator("pose.paths_calculate", text="Calculate")
+ row.operator("pose.paths_clear", text="Clear")
draw_repeat_tools(context, layout)
@@ -675,7 +679,12 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
self.prop_unified_strength(row, context, brush, "use_pressure_strength")
row = col.row(align=True)
- row.prop(brush, "jitter", slider=True)
+ if(brush.use_relative_jitter):
+ row.prop(brush, "use_relative_jitter", text="", icon='LOCKED')
+ row.prop(brush, "jitter", slider=True)
+ else:
+ row.prop(brush, "use_relative_jitter", text="", icon='UNLOCKED')
+ row.prop(brush, "jitter_absolute")
row.prop(brush, "use_pressure_jitter", toggle=True, text="")
col.prop(brush, "blend", text="Blend")
@@ -703,7 +712,12 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
self.prop_unified_strength(row, context, brush, "use_pressure_strength")
row = col.row(align=True)
- row.prop(brush, "jitter", slider=True)
+ if(brush.use_relative_jitter):
+ row.prop(brush, "use_relative_jitter", text="", icon='LOCKED')
+ row.prop(brush, "jitter", slider=True)
+ else:
+ row.prop(brush, "use_relative_jitter", text="", icon='UNLOCKED')
+ row.prop(brush, "jitter_absolute")
row.prop(brush, "use_pressure_jitter", toggle=True, text="")
col.prop(brush, "vertex_tool", text="Blend")
@@ -738,7 +752,7 @@ class VIEW3D_PT_tools_brush_texture(Panel, View3DPaintPanel):
def poll(cls, context):
settings = cls.paint_settings(context)
return (settings and settings.brush and
- (context.sculpt_object or context.image_paint_object))
+ (context.sculpt_object or context.image_paint_object or context.vertex_paint_object))
def draw(self, context):
layout = self.layout
@@ -753,19 +767,18 @@ class VIEW3D_PT_tools_brush_texture(Panel, View3DPaintPanel):
brush_texture_settings(col, brush, context.sculpt_object)
- if context.sculpt_object:
- # use_texture_overlay and texture_overlay_alpha
- col = layout.column(align=True)
- col.active = brush.sculpt_capabilities.has_overlay
- col.label(text="Overlay:")
+ # use_texture_overlay and texture_overlay_alpha
+ col = layout.column(align=True)
+ col.active = brush.brush_capabilities.has_overlay
+ col.label(text="Overlay:")
- row = col.row()
- if brush.use_texture_overlay:
- row.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_OFF')
- else:
- row.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_ON')
- sub = row.row()
- sub.prop(brush, "texture_overlay_alpha", text="Alpha")
+ row = col.row()
+ if brush.use_texture_overlay:
+ row.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_OFF')
+ else:
+ row.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_ON')
+ sub = row.row()
+ sub.prop(brush, "texture_overlay_alpha", text="Alpha")
class VIEW3D_PT_tools_brush_stroke(Panel, View3DPaintPanel):
@@ -805,9 +818,10 @@ class VIEW3D_PT_tools_brush_stroke(Panel, View3DPaintPanel):
if brush.use_space:
col.separator()
- row = col.row()
+ row = col.row(align=True)
row.active = brush.use_space
row.prop(brush, "spacing", text="Spacing")
+ row.prop(brush, "use_pressure_spacing", toggle=True, text="")
if brush.sculpt_capabilities.has_smooth_stroke:
col = layout.column()
@@ -824,7 +838,12 @@ class VIEW3D_PT_tools_brush_stroke(Panel, View3DPaintPanel):
col.separator()
row = col.row(align=True)
- row.prop(brush, "jitter", slider=True)
+ if(brush.use_relative_jitter):
+ row.prop(brush, "use_relative_jitter", text="", icon='LOCKED')
+ row.prop(brush, "jitter", slider=True)
+ else:
+ row.prop(brush, "use_relative_jitter", text="", icon='UNLOCKED')
+ row.prop(brush, "jitter_absolute")
row.prop(brush, "use_pressure_jitter", toggle=True, text="")
else:
@@ -836,23 +855,23 @@ class VIEW3D_PT_tools_brush_stroke(Panel, View3DPaintPanel):
col.separator()
- if not image_paint:
- col.prop(brush, "use_smooth_stroke")
+ col.prop(brush, "use_smooth_stroke")
- col = layout.column()
- col.active = brush.use_smooth_stroke
- col.prop(brush, "smooth_stroke_radius", text="Radius", slider=True)
- col.prop(brush, "smooth_stroke_factor", text="Factor", slider=True)
+ col = layout.column()
+ col.active = brush.use_smooth_stroke
+ col.prop(brush, "smooth_stroke_radius", text="Radius", slider=True)
+ col.prop(brush, "smooth_stroke_factor", text="Factor", slider=True)
col.separator()
col = layout.column()
- col.active = brush.sculpt_capabilities.has_spacing
+ col.active = brush.brush_capabilities.has_spacing
col.prop(brush, "use_space")
- row = col.row()
+ row = col.row(align=True)
row.active = brush.use_space
row.prop(brush, "spacing", text="Spacing")
+ row.prop(brush, "use_pressure_spacing", toggle=True, text="")
class VIEW3D_PT_tools_brush_curve(Panel, View3DPaintPanel):
@@ -1114,11 +1133,6 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel, Panel):
brush = context.tool_settings.image_paint.brush
return (brush is not None)
- def draw_header(self, context):
- ipaint = context.tool_settings.image_paint
-
- self.layout.prop(ipaint, "use_projection", text="")
-
def draw(self, context):
layout = self.layout
@@ -1127,24 +1141,22 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel, Panel):
toolsettings = context.tool_settings
ipaint = toolsettings.image_paint
settings = toolsettings.image_paint
- use_projection = ipaint.use_projection
+
+ layout.prop(ipaint, "input_samples")
col = layout.column()
- col.active = use_projection
col.prop(ipaint, "use_occlude")
col.prop(ipaint, "use_backface_culling")
row = layout.row()
- row.active = (use_projection)
row.prop(ipaint, "use_normal_falloff")
-
+
sub = row.row()
sub.active = (ipaint.use_normal_falloff)
sub.prop(ipaint, "normal_angle", text="")
split = layout.split()
- split.active = (use_projection)
split.prop(ipaint, "use_stencil_layer", text="Stencil")
row = split.row()
@@ -1172,7 +1184,7 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel, Panel):
col.operator("paint.project_image", text="Apply Camera Image")
col.operator("image.save_dirty", text="Save All Edited")
-
+
class VIEW3D_PT_imagepaint_options(View3DPaintPanel):
bl_label = "Options"
@@ -1213,7 +1225,7 @@ class VIEW3D_MT_tools_projectpaint_stencil(Menu):
class VIEW3D_PT_tools_particlemode(View3DPanel, Panel):
- """default tools for particle mode"""
+ """Default tools for particle mode"""
bl_context = "particlemode"
bl_label = "Options"
diff --git a/release/scripts/startup/keyingsets_builtins.py b/release/scripts/startup/keyingsets_builtins.py
index 4f06f8a7be3..6d52a81456b 100644
--- a/release/scripts/startup/keyingsets_builtins.py
+++ b/release/scripts/startup/keyingsets_builtins.py
@@ -20,14 +20,11 @@
"""
Built-In Keying Sets
-None of these Keying Sets should be removed, as these
-are needed by various parts of Blender in order for them
+None of these Keying Sets should be removed, as these are needed by various parts of Blender in order for them
to work correctly.
-Beware also about changing the order that these are defined
-here, since this can result in old files referring to the
-wrong Keying Set as the active one, potentially resulting
-in lost (i.e. unkeyed) animation.
+Beware also about changing the order that these are defined here, since this can result in old files referring to the
+wrong Keying Set as the active one, potentially resulting in lost (i.e. unkeyed) animation.
"""
import bpy
@@ -138,9 +135,7 @@ class BUILTIN_KSI_LocScale(KeyingSetInfo):
# LocRotScale
class BUILTIN_KSI_LocRotScale(KeyingSetInfo):
- """
- Insert a keyframe on each of the location, rotation, and scale channels
- """
+ """Insert a keyframe on each of the location, rotation, and scale channels"""
bl_idname = ANIM_KS_LOC_ROT_SCALE_ID
bl_label = "LocRotScale"
@@ -183,10 +178,8 @@ class BUILTIN_KSI_RotScale(KeyingSetInfo):
# VisualLocation
class BUILTIN_KSI_VisualLoc(KeyingSetInfo):
- """
- Insert a keyframe on each of the location channels, taking into account
- effects of constraints and relationships
- """
+ """Insert a keyframe on each of the location channels, taking into account effects of constraints """
+ """and relationships"""
bl_label = "Visual Location"
bl_options = {'INSERTKEY_VISUAL'}
@@ -203,10 +196,8 @@ class BUILTIN_KSI_VisualLoc(KeyingSetInfo):
# VisualRotation
class BUILTIN_KSI_VisualRot(KeyingSetInfo):
- """
- Insert a keyframe on each of the rotation channels, taking into account
- effects of constraints and relationships
- """
+ """Insert a keyframe on each of the rotation channels, taking into account effects of constraints """
+ """and relationships"""
bl_label = "Visual Rotation"
bl_options = {'INSERTKEY_VISUAL'}
@@ -223,10 +214,8 @@ class BUILTIN_KSI_VisualRot(KeyingSetInfo):
# VisualScaling
class BUILTIN_KSI_VisualScaling(KeyingSetInfo):
- """
- Insert a keyframe on each of the scale channels, taking into account
- effects of constraints and relationships
- """
+ """Insert a keyframe on each of the scale channels, taking into account effects of constraints """
+ """and relationships"""
bl_label = "Visual Scaling"
bl_options = {'INSERTKEY_VISUAL'}
@@ -243,10 +232,8 @@ class BUILTIN_KSI_VisualScaling(KeyingSetInfo):
# VisualLocRot
class BUILTIN_KSI_VisualLocRot(KeyingSetInfo):
- """
- Insert a keyframe on each of the location and rotation channels,
- taking into account effects of constraints and relationships
- """
+ """Insert a keyframe on each of the location and rotation channels, taking into account effects of constraints """
+ """and relationships"""
bl_label = "Visual LocRot"
bl_options = {'INSERTKEY_VISUAL'}
@@ -267,10 +254,8 @@ class BUILTIN_KSI_VisualLocRot(KeyingSetInfo):
# VisualLocScale
class BUILTIN_KSI_VisualLocScale(KeyingSetInfo):
- """
- Insert a keyframe on each of the location and scaling channels,
- taking into account effects of constraints and relationships
- """
+ """Insert a keyframe on each of the location and scaling channels, taking into account effects of constraints """
+ """and relationships"""
bl_label = "Visual LocScale"
bl_options = {'INSERTKEY_VISUAL'}
@@ -291,10 +276,8 @@ class BUILTIN_KSI_VisualLocScale(KeyingSetInfo):
# VisualLocRotScale
class BUILTIN_KSI_VisualLocRotScale(KeyingSetInfo):
- """
- Insert a keyframe on each of the location, rotation and scaling channels,
- taking into account effects of constraints and relationships
- """
+ """Insert a keyframe on each of the location, rotation and scaling channels, taking into account effects """
+ """of constraints and relationships"""
bl_label = "Visual LocRotScale"
bl_options = {'INSERTKEY_VISUAL'}
@@ -317,10 +300,8 @@ class BUILTIN_KSI_VisualLocRotScale(KeyingSetInfo):
# VisualRotScale
class BUILTIN_KSI_VisualRotScale(KeyingSetInfo):
- """
- Insert a keyframe on each of the rotation and scaling channels,
- taking into account effects of constraints and relationships
- """
+ """Insert a keyframe on each of the rotation and scaling channels, taking into account effects of constraints """
+ """and relationships"""
bl_label = "Visual RotScale"
bl_options = {'INSERTKEY_VISUAL'}
@@ -367,10 +348,8 @@ class BUILTIN_KSI_Available(KeyingSetInfo):
# All properties that are likely to get animated in a character rig
class BUILTIN_KSI_WholeCharacter(KeyingSetInfo):
- """
- Insert a keyframe for all properties that are likely to get animated in a
- character rig (useful when blocking out a shot)
- """
+ """Insert a keyframe for all properties that are likely to get animated in a character rig """
+ """(useful when blocking out a shot)"""
bl_idname = ANIM_KS_WHOLE_CHARACTER_ID
bl_label = "Whole Character"
diff --git a/release/windows/contrib/vfapi/vfapi-plugin.c b/release/windows/contrib/vfapi/vfapi-plugin.c
index 99ca6c64e80..96a5ada8f14 100644
--- a/release/windows/contrib/vfapi/vfapi-plugin.c
+++ b/release/windows/contrib/vfapi/vfapi-plugin.c
@@ -127,12 +127,12 @@ static unsigned long getipaddress(const char * ipaddr)
return (ip);
}
-static void my_send(SOCKET sock, char * str)
+static void my_send(SOCKET sock, char *str)
{
send(sock, str, strlen(str), 0);
}
-static int my_recv(SOCKET sock, char * line, int maxlen)
+static int my_recv(SOCKET sock, char *line, int maxlen)
{
int got = 0;
int toget = maxlen;
@@ -148,7 +148,7 @@ static int my_recv(SOCKET sock, char * line, int maxlen)
return maxlen;
}
-static int my_gets(SOCKET sock, char * line, int maxlen)
+static int my_gets(SOCKET sock, char *line, int maxlen)
{
int last_rval = 0;