[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4746] contrib/py/scripts/addons/ presets/keyconfig/blender_2012_experimental.py: Experimental keymap, bunch of changes/additions:
Nathan Vegdahl
cessen at cessen.com
Tue Sep 10 05:53:06 CEST 2013
Revision: 4746
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4746
Author: cessen
Date: 2013-09-10 03:53:05 +0000 (Tue, 10 Sep 2013)
Log Message:
-----------
Experimental keymap, bunch of changes/additions:
- Keyframing is now on "K" instead of "I". This is incomplete, however,
as it seems "I" is hard-coded for button views (e.g. properties panel,
etc.). Need to fix that at some point.
- Keymap for timeline.
- WIP (but mostly done) keymap for nodes.
- WIP keymap for armatures
- Made the translate/rotate/scale hotkeys switch between the
translate/rotate/scale manipulators if transform manipulators
are on. They still behave normally when transform manipulators
are off. This may be a terrible idea, but I think it's worth
trying. The rationale is that hopefully most users prefer either
the hotkey OR the manipulator approach to transforms, but not both
mixed. That may very well be a wrong assumption, in which case
we'll need to do something else. But if it is a right assumption,
then this provides a really fast way for manipulator users to switch
between the manipulator types.
- Misc improvements/tweaks to mesh edit hotkeys.
- 'V' is now the hotkey for zoom-border. Super useful function, and IMO
deserves prime real-estate. Loosely related operators "Clip Border"
and "Render Border" are alt-V and shift-V, respectively.
Modified Paths:
--------------
contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py
Modified: contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py
===================================================================
--- contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py 2013-09-10 00:08:57 UTC (rev 4745)
+++ contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py 2013-09-10 03:53:05 UTC (rev 4746)
@@ -1,15 +1,18 @@
""" An experimental new keymap for Blender.
Work in progress!
"""
+
+# TODO:
+# - N-panel etc. appear to have hard-coded 'I' as "insert key" key. Make that
+# user-configurable.
+
import bpy
######################
# Misc configuration
######################
DEVELOPER_HOTKEYS = False # Weird hotkeys that only developers use
-MAYA_STYLE_MANIPULATORS = False # Maya-style "QWER" hotkeys for manipulators
-SUBSURF_RELATIVE = True # Make subsurf hotkeys work by relative
- # shifting instead of absolute setting
+
# Left mouse-button select
bpy.context.user_preferences.inputs.select_mouse = 'LEFT'
@@ -21,7 +24,10 @@
# Specials Menu Key
SPECIALS_MENU_KEY = 'Q'
+# Keyframe setting key
+KEYFRAME_KEY = 'K'
+
################################
# Helper functions and classes
################################
@@ -58,6 +64,54 @@
bpy.utils.register_class(SetManipulator)
+class ContextualTranslate(bpy.types.Operator):
+ """ Either translates, or sets the manipulator type to translate,
+ depending on whether the manipulator is on or not.
+ """
+ bl_idname = "view3d.contextual_translate"
+ bl_label = "Contextual Translate"
+
+ def execute(self, context):
+ if context.space_data.show_manipulator:
+ context.space_data.transform_manipulators = {'TRANSLATE'}
+ else:
+ bpy.ops.transform.translate('INVOKE_DEFAULT')
+ return {'FINISHED'}
+bpy.utils.register_class(ContextualTranslate)
+
+
+class ContextualRotate(bpy.types.Operator):
+ """ Either rotates, or sets the manipulator type to rotate,
+ depending on whether the manipulator is on or not.
+ """
+ bl_idname = "view3d.contextual_rotate"
+ bl_label = "Contextual Rotate"
+
+ def execute(self, context):
+ if context.space_data.show_manipulator:
+ context.space_data.transform_manipulators = {'ROTATE'}
+ else:
+ bpy.ops.transform.rotate('INVOKE_DEFAULT')
+ return {'FINISHED'}
+bpy.utils.register_class(ContextualRotate)
+
+
+class ContextualScale(bpy.types.Operator):
+ """ Either scales, or sets the manipulator type to scale,
+ depending on whether the manipulator is on or not.
+ """
+ bl_idname = "view3d.contextual_scale"
+ bl_label = "Contextual Scale"
+
+ def execute(self, context):
+ if context.space_data.show_manipulator:
+ context.space_data.transform_manipulators = {'SCALE'}
+ else:
+ bpy.ops.transform.resize('INVOKE_DEFAULT')
+ return {'FINISHED'}
+bpy.utils.register_class(ContextualScale)
+
+
class ModeSwitchMenu(bpy.types.Menu):
""" A menu for switching between object modes.
"""
@@ -70,13 +124,6 @@
bpy.utils.register_class(ModeSwitchMenu)
-# Temporary work around: Blender does not properly limit the mode switch menu
-# items until the first mode switch (e.g. mesh objects will show pose mode as
-# an option).
-# TODO: file a bug report for this behavior.
-bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
-
-
class TweakSelect3dview(bpy.types.Operator):
""" Selects and translates an element in the scene.
"""
@@ -89,9 +136,10 @@
return True
def invoke(self, context, event):
- #bpy.ops.view3d.select(context, event)
- bpy.ops.transform.translate.invoke(context, event)
- return {'FINISHED'}
+ result = bpy.ops.view3d.select('INVOKE_DEFAULT')
+ if 'FINISHED' in result:
+ bpy.ops.transform.translate('INVOKE_DEFAULT')
+ return result
bpy.utils.register_class(TweakSelect3dview)
@@ -103,7 +151,7 @@
@classmethod
def poll(cls, context):
- return context.active_object is not None
+ return len(context.selected_objects) > 0
def execute(self, context):
bpy.ops.object.delete()
@@ -166,7 +214,8 @@
class SetEditMeshSelectMode(bpy.types.Operator):
- """Set edit mesh select mode (vert, edge, face)"""
+ """ Set edit mesh select mode (vert, edge, face).
+ """
bl_idname = "view3d.set_edit_mesh_select_mode"
bl_label = "Set Edit Mesh Select Mode"
mode = bpy.props.EnumProperty(items=[("VERT", "Vertex", ""),
@@ -260,6 +309,31 @@
bpy.utils.register_class(MeshDissolveContextual)
+class MeshMergeContextual(bpy.types.Operator):
+ """ Merges mesh elements, doing it in a way based on the current
+ selection mode.
+ """
+ bl_idname = "mesh.merge_contextual"
+ bl_label = "Mesh Merge Contextual"
+ bl_options = {'UNDO'}
+
+ @classmethod
+ def poll(cls, context):
+ return (context.active_object is not None) and (context.mode == "EDIT_MESH")
+
+ def execute(self, context):
+ select_mode = context.tool_settings.mesh_select_mode
+ if select_mode[0]:
+ bpy.ops.mesh.merge()
+ else:
+ bpy.ops.mesh.edge_collapse()
+ return {'FINISHED'}
+bpy.utils.register_class(MeshMergeContextual)
+
+
+#kmi = km.keymap_items.new('mesh.edge_collapse', 'M', 'CLICK')
+#kmi = km.keymap_items.new('mesh.merge', 'M', 'PRESS', alt=True)
+
###########
# Keymaps
###########
@@ -497,6 +571,7 @@
kmi.properties.fast = True
# Misc
+ # TODO: find good replacements for the F# keys
kmi = km.keymap_items.new('wm.window_fullscreen_toggle', 'F11', 'CLICK', alt=True)
# Development/debugging
@@ -507,7 +582,7 @@
# ???
kmi = km.keymap_items.new('info.reports_display_update', 'TIMER', 'ANY', any=True)
-
+# TODO: find good replacements for the F# keys
def MapAdd_Screen(kc):
""" Screen Map
"""
@@ -518,17 +593,19 @@
kmi.properties.delta = 1
kmi = km.keymap_items.new('screen.screen_set', 'LEFT_ARROW', 'PRESS', ctrl=True)
kmi.properties.delta = -1
+
+ # TODO: figure out a better hotkey for this
kmi = km.keymap_items.new('screen.screen_full_area', 'UP_ARROW', 'PRESS', ctrl=True)
kmi = km.keymap_items.new('screen.screen_full_area', 'DOWN_ARROW', 'PRESS', ctrl=True)
- kmi = km.keymap_items.new('screen.screen_full_area', 'SPACE', 'PRESS', shift=True)
- kmi = km.keymap_items.new('screen.screenshot', 'F3', 'PRESS', ctrl=True)
- kmi = km.keymap_items.new('screen.screencast', 'F3', 'PRESS', alt=True)
- kmi = km.keymap_items.new('screen.region_quadview', 'Q', 'PRESS', ctrl=True, alt=True)
- kmi = km.keymap_items.new('screen.repeat_history', 'F3', 'PRESS')
- kmi = km.keymap_items.new('screen.repeat_last', 'R', 'PRESS', shift=True)
- kmi = km.keymap_items.new('screen.region_flip', 'F5', 'PRESS')
- kmi = km.keymap_items.new('screen.redo_last', 'F6', 'PRESS')
- kmi = km.keymap_items.new('script.reload', 'F8', 'PRESS')
+
+ #kmi = km.keymap_items.new('screen.screenshot', 'F3', 'PRESS', ctrl=True)
+ #kmi = km.keymap_items.new('screen.screencast', 'F3', 'PRESS', alt=True)
+ #kmi = km.keymap_items.new('screen.region_quadview', 'Q', 'PRESS', ctrl=True, alt=True)
+ #kmi = km.keymap_items.new('screen.repeat_history', 'F3', 'PRESS')
+ #kmi = km.keymap_items.new('screen.repeat_last', 'R', 'PRESS', shift=True)
+ #kmi = km.keymap_items.new('screen.region_flip', 'F5', 'PRESS')
+ #kmi = km.keymap_items.new('screen.redo_last', 'F6', 'PRESS')
+ #kmi = km.keymap_items.new('script.reload', 'F8', 'PRESS')
kmi = km.keymap_items.new('file.execute', 'RET', 'PRESS')
kmi = km.keymap_items.new('file.execute', 'NUMPAD_ENTER', 'PRESS')
kmi = km.keymap_items.new('file.cancel', 'ESC', 'PRESS')
@@ -537,7 +614,7 @@
kmi = km.keymap_items.new('ed.undo_history', 'Z', 'PRESS', ctrl=True, alt=True)
kmi = km.keymap_items.new('render.render', 'F12', 'PRESS')
kmi = km.keymap_items.new('render.render', 'F12', 'PRESS', ctrl=True)
- kmi.properties.animation = True
+ #kmi.properties.animation = True
kmi = km.keymap_items.new('render.view_cancel', 'ESC', 'PRESS')
kmi = km.keymap_items.new('render.view_show', 'F11', 'PRESS')
kmi = km.keymap_items.new('render.play_rendered_anim', 'F11', 'PRESS', ctrl=True)
@@ -631,8 +708,6 @@
kmi = km.keymap_items.new('view3d.rotate', 'MOUSEROTATE', 'ANY')
kmi = km.keymap_items.new('view3d.smoothview', 'TIMER1', 'ANY', any=True)
-
-
# Basics with mouse
kmi = km.keymap_items.new('view3d.rotate', 'MIDDLEMOUSE', 'PRESS')
kmi = km.keymap_items.new('view3d.move', 'MIDDLEMOUSE', 'PRESS', shift=True)
@@ -778,13 +853,16 @@
#kmi = km.keymap_items.new('view3d.fly', 'F', 'CLICK', shift=True)
# Misc
+ # TODO: This needs a good go-over. Try to pair this down to the
+ # fewest useful ones. And try to find non-numpad hotkey alternatives
+ # to have in addition for ones that use numpad hotkeys.
kmi = km.keymap_items.new('view3d.view_selected', 'NUMPAD_PERIOD', 'CLICK')
kmi = km.keymap_items.new('view3d.view_center_cursor', 'NUMPAD_PERIOD', 'CLICK', ctrl=True)
kmi = km.keymap_items.new('view3d.zoom_camera_1_to_1', 'NUMPAD_ENTER', 'CLICK', shift=True)
- kmi = km.keymap_items.new('view3d.view_center_camera', 'HOME', 'CLICK')
+ #kmi = km.keymap_items.new('view3d.view_center_camera', 'HOME', 'CLICK')
kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'CLICK')
kmi.properties.center = False
- kmi = km.keymap_items.new('view3d.view_all', 'C', 'CLICK', shift=True)
+ kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'CLICK', shift=True)
kmi.properties.center = True
#-------------
@@ -794,18 +872,9 @@
kmi = km.keymap_items.new('view3d.manipulator', 'EVT_TWEAK_L', 'ANY', any=True)
kmi.properties.release_confirm = True
- if MAYA_STYLE_MANIPULATORS:
- kmi = km.keymap_items.new('view3d.manipulator_set', 'Q', 'CLICK')
- kmi.properties.mode = 'NONE'
- kmi = km.keymap_items.new('view3d.manipulator_set', TRANSLATE_KEY, 'CLICK')
- kmi.properties.mode = 'TRANSLATE'
- kmi = km.keymap_items.new('view3d.manipulator_set', ROTATE_KEY, 'CLICK')
- kmi.properties.mode = 'ROTATE'
- kmi = km.keymap_items.new('view3d.manipulator_set', SCALE_KEY, 'CLICK')
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list