Code clean-up: Use standard-conformal {'sets'} for .report and operator return values
[blender-addons-contrib.git] / presets / keyconfig / blender_2012_experimental.py
1 """ An experimental new keymap for Blender.
2     Work in progress!
3 """
4 import bpy
5
6 ######################
7 # Misc configuration
8 ######################
9 DEVELOPER_HOTKEYS = False  # Weird hotkeys that only developers use
10 MAYA_STYLE_MANIPULATORS = False  # Maya-style "QWER" hotkeys for manipulators
11 SUBSURF_RELATIVE = True  # Make subsurf hotkeys work by relative
12                          # shifting instead of absolute setting
13 # Left mouse-button select
14 bpy.context.user_preferences.inputs.select_mouse = 'LEFT'
15
16
17 ################################
18 # Helper functions and classes
19 ################################
20 class SetManipulator(bpy.types.Operator):
21     '''Set's the manipulator mode.'''
22     bl_idname = "view3d.manipulator_set"
23     bl_label = "Set Manipulator"
24     mode = bpy.props.EnumProperty(items=[("NONE", "None", ""),
25                                          ("TRANSLATE", "Translate", ""),
26                                          ("ROTATE", "Rotate", ""),
27                                          ("SCALE", "Scale", "")],
28                                          default="NONE")
29
30     def execute(self, context):
31         if self.mode == "NONE":
32             context.space_data.show_manipulator = False
33         elif self.mode == "TRANSLATE":
34             context.space_data.show_manipulator = True
35             context.space_data.use_manipulator_translate = True
36             context.space_data.use_manipulator_rotate = False
37             context.space_data.use_manipulator_scale = False
38         elif self.mode == "ROTATE":
39             context.space_data.show_manipulator = True
40             context.space_data.use_manipulator_translate = False
41             context.space_data.use_manipulator_rotate = True
42             context.space_data.use_manipulator_scale = False
43         elif self.mode == "SCALE":
44             context.space_data.show_manipulator = True
45             context.space_data.use_manipulator_translate = False
46             context.space_data.use_manipulator_rotate = False
47             context.space_data.use_manipulator_scale = True
48
49         return {'FINISHED'}
50 bpy.utils.register_class(SetManipulator)
51
52
53 class ModeSwitchMenu(bpy.types.Menu):
54     """ A menu for switching between object modes.
55     """
56     bl_idname = "OBJECT_MT_mode_switch_menu"
57     bl_label = "Switch Mode"
58
59     def draw(self, context):
60         layout = self.layout
61         layout.operator_enum("object.mode_set", "mode")
62 bpy.utils.register_class(ModeSwitchMenu)
63
64 # Temporary work around: Blender does not properly limit the mode switch menu
65 # items until the first mode switch (e.g. mesh objects will show pose mode as
66 # an option).
67 # TODO: file a bug report for this behavior.
68 bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
69
70
71 class ObjectDeleteNoConfirm(bpy.types.Operator):
72     '''Deletes selected objects without the confirmation popup.'''
73     bl_idname = "object.delete_no_confirm"
74     bl_label = "Delete Objects No Confirm"
75     bl_options = {'UNDO'}
76     
77     @classmethod
78     def poll(cls, context):
79         return context.active_object is not None
80
81     def execute(self, context):
82         bpy.ops.object.delete()
83
84         return {'FINISHED'}
85 bpy.utils.register_class(ObjectDeleteNoConfirm)
86
87
88 class ShiftSubsurfLevel(bpy.types.Operator):
89     ''' Shifts the subsurf level of the selected objects up or
90         down by the given amount.  Has maximum limit, to avoid
91         going crazy and running out of RAM.
92     '''
93     bl_idname = "object.shift_subsurf_level"
94     bl_label = "Shift Subsurf Level"
95
96     delta = bpy.props.IntProperty(name="Delta", description="Amount to increase/decrease the subsurf level.", default=1)
97     min = bpy.props.IntProperty(name="Minimum", description="The lowest subsurf level to shift to.", default=0)
98     max = bpy.props.IntProperty(name="Maximum", description="The highest subsurf level to shift to.", default=4)
99
100     @classmethod
101     def poll(cls, context):
102         return context.active_object is not None
103
104     def execute(self, context):
105         for obj in context.selected_objects:
106             # Find the last subsurf modifier in the stack
107             m = None
108             for mod in obj.modifiers:
109                 if mod.type == "SUBSURF":
110                     m = mod
111
112             # Add a subsurf modifier if necessary
113             if not m and self.delta > 0:
114                 m = obj.modifiers.new(name="Subsurf", type='SUBSURF')
115                 m.levels = 0
116
117             # Adjust it's subsurf level
118             if m:
119                 if self.delta > 0:
120                     if (m.levels + self.delta) <= self.max:
121                         m.levels += self.delta
122                 elif self.delta < 0:
123                     if (m.levels + self.delta) >= self.min:
124                         m.levels += self.delta
125         return {'FINISHED'}
126 bpy.utils.register_class(ShiftSubsurfLevel)
127
128
129 class SetEditMeshSelectMode(bpy.types.Operator):
130     '''Set's edit mesh select mode (vert, edge, face).'''
131     bl_idname = "view3d.set_edit_mesh_select_mode"
132     bl_label = "Set Edit Mesh Select Mode"
133     mode = bpy.props.EnumProperty(items=[("VERT", "Vertex", ""),
134                                          ("EDGE", "Edge", ""),
135                                          ("FACE", "Face", "")],
136                                          default="VERT")
137     toggle = bpy.props.BoolProperty(name="Toggle", default=False)
138     
139     @classmethod
140     def poll(cls, context):
141         return context.active_object is not None
142     
143     def execute(self, context):
144         if self.mode == "VERT":
145             mode = 0
146         elif self.mode == "EDGE":
147             mode = 1
148         else:  # self.mode == "FACE"
149             mode = 2
150         
151         select_mode = context.tool_settings.mesh_select_mode
152         if self.toggle:
153             select_mode[mode] = [True, False][select_mode[mode]]
154         else:
155             select_mode[mode] = True
156             for i in range(0,3):
157                 if i != mode:
158                     select_mode[i] = False
159             
160         return {'FINISHED'}
161 bpy.utils.register_class(SetEditMeshSelectMode)
162
163
164 ###########
165 # Keymaps
166 ###########
167
168 def clear_keymap(kc):
169     """ Clears all the keymaps, so we can start from scratch, building
170         things back up again one-by-one.
171     """
172     # Map Window
173     km = kc.keymaps.new('Window', space_type='EMPTY', region_type='WINDOW', modal=False)
174
175     # Map Screen
176     km = kc.keymaps.new('Screen', space_type='EMPTY', region_type='WINDOW', modal=False)
177
178     # Editing this part of the keymap seems
179     # to cause problems, so leaving alone.
180     # Map Screen Editing
181     #km = kc.keymaps.new('Screen Editing', space_type='EMPTY', region_type='WINDOW', modal=False)
182
183     # Map View2D
184     km = kc.keymaps.new('View2D', space_type='EMPTY', region_type='WINDOW', modal=False)
185
186     # Map Frames
187     km = kc.keymaps.new('Frames', space_type='EMPTY', region_type='WINDOW', modal=False)
188
189     # Map Header
190     km = kc.keymaps.new('Header', space_type='EMPTY', region_type='WINDOW', modal=False)
191
192     # Map View2D Buttons List
193     km = kc.keymaps.new('View2D Buttons List', space_type='EMPTY', region_type='WINDOW', modal=False)
194
195     # Map Property Editor
196     km = kc.keymaps.new('Property Editor', space_type='PROPERTIES', region_type='WINDOW', modal=False)
197
198     # Map Markers
199     km = kc.keymaps.new('Markers', space_type='EMPTY', region_type='WINDOW', modal=False)
200
201     # Map Animation
202     km = kc.keymaps.new('Animation', space_type='EMPTY', region_type='WINDOW', modal=False)
203
204     # Map Timeline
205     km = kc.keymaps.new('Timeline', space_type='TIMELINE', region_type='WINDOW', modal=False)
206
207     # Map Outliner
208     km = kc.keymaps.new('Outliner', space_type='OUTLINER', region_type='WINDOW', modal=False)
209
210     # Map 3D View Generic
211     km = kc.keymaps.new('3D View Generic', space_type='VIEW_3D', region_type='WINDOW', modal=False)
212
213     # Map Grease Pencil
214     km = kc.keymaps.new('Grease Pencil', space_type='EMPTY', region_type='WINDOW', modal=False)
215
216     # Map Face Mask
217     km = kc.keymaps.new('Face Mask', space_type='EMPTY', region_type='WINDOW', modal=False)
218
219     # Map Pose
220     km = kc.keymaps.new('Pose', space_type='EMPTY', region_type='WINDOW', modal=False)
221
222     # Map Object Mode
223     km = kc.keymaps.new('Object Mode', space_type='EMPTY', region_type='WINDOW', modal=False)
224
225     # Map Image Paint
226     km = kc.keymaps.new('Image Paint', space_type='EMPTY', region_type='WINDOW', modal=False)
227
228     # Map Vertex Paint
229     km = kc.keymaps.new('Vertex Paint', space_type='EMPTY', region_type='WINDOW', modal=False)
230
231     # Map Weight Paint
232     km = kc.keymaps.new('Weight Paint', space_type='EMPTY', region_type='WINDOW', modal=False)
233
234     # Map Sculpt
235     km = kc.keymaps.new('Sculpt', space_type='EMPTY', region_type='WINDOW', modal=False)
236
237     # Map Mesh
238     km = kc.keymaps.new('Mesh', space_type='EMPTY', region_type='WINDOW', modal=False)
239
240     # Map Curve
241     km = kc.keymaps.new('Curve', space_type='EMPTY', region_type='WINDOW', modal=False)
242
243     # Map Armature
244     km = kc.keymaps.new('Armature', space_type='EMPTY', region_type='WINDOW', modal=False)
245
246     # Map Metaball
247     km = kc.keymaps.new('Metaball', space_type='EMPTY', region_type='WINDOW', modal=False)
248
249     # Map Lattice
250     km = kc.keymaps.new('Lattice', space_type='EMPTY', region_type='WINDOW', modal=False)
251
252     # Map Particle
253     km = kc.keymaps.new('Particle', space_type='EMPTY', region_type='WINDOW', modal=False)
254
255     # Map Font
256     km = kc.keymaps.new('Font', space_type='EMPTY', region_type='WINDOW', modal=False)
257
258     # Map Object Non-modal
259     km = kc.keymaps.new('Object Non-modal', space_type='EMPTY', region_type='WINDOW', modal=False)
260
261     # Map 3D View
262     km = kc.keymaps.new('3D View', space_type='VIEW_3D', region_type='WINDOW', modal=False)
263
264     # Map View3D Gesture Circle
265     km = kc.keymaps.new('View3D Gesture Circle', space_type='EMPTY', region_type='WINDOW', modal=True)
266
267     # Map Gesture Border
268     km = kc.keymaps.new('Gesture Border', space_type='EMPTY', region_type='WINDOW', modal=True)
269
270     # Map Standard Modal Map
271     km = kc.keymaps.new('Standard Modal Map', space_type='EMPTY', region_type='WINDOW', modal=True)
272
273     # Map Animation Channels
274     km = kc.keymaps.new('Animation Channels', space_type='EMPTY', region_type='WINDOW', modal=False)
275
276     # Map UV Editor
277     km = kc.keymaps.new('UV Editor', space_type='EMPTY', region_type='WINDOW', modal=False)
278
279     # Map Transform Modal Map
280     km = kc.keymaps.new('Transform Modal Map', space_type='EMPTY', region_type='WINDOW', modal=True)
281
282     # Map UV Sculpt
283     km = kc.keymaps.new('UV Sculpt', space_type='EMPTY', region_type='WINDOW', modal=False)
284
285     # Map View3D Fly Modal
286     km = kc.keymaps.new('View3D Fly Modal', space_type='EMPTY', region_type='WINDOW', modal=True)
287
288     # Map View3D Rotate Modal
289     km = kc.keymaps.new('View3D Rotate Modal', space_type='EMPTY', region_type='WINDOW', modal=True)
290
291     # Map View3D Move Modal
292     km = kc.keymaps.new('View3D Move Modal', space_type='EMPTY', region_type='WINDOW', modal=True)
293
294     # Map View3D Zoom Modal
295     km = kc.keymaps.new('View3D Zoom Modal', space_type='EMPTY', region_type='WINDOW', modal=True)
296
297     # Map Graph Editor Generic
298     km = kc.keymaps.new('Graph Editor Generic', space_type='GRAPH_EDITOR', region_type='WINDOW', modal=False)
299
300     # Map Graph Editor
301     km = kc.keymaps.new('Graph Editor', space_type='GRAPH_EDITOR', region_type='WINDOW', modal=False)
302
303     # Map Image Generic
304     km = kc.keymaps.new('Image Generic', space_type='IMAGE_EDITOR', region_type='WINDOW', modal=False)
305
306     # Map Image
307     km = kc.keymaps.new('Image', space_type='IMAGE_EDITOR', region_type='WINDOW', modal=False)
308
309     # Map Node Generic
310     km = kc.keymaps.new('Node Generic', space_type='NODE_EDITOR', region_type='WINDOW', modal=False)
311
312     # Map Node Editor
313     km = kc.keymaps.new('Node Editor', space_type='NODE_EDITOR', region_type='WINDOW', modal=False)
314
315     # Map File Browser
316     km = kc.keymaps.new('File Browser', space_type='FILE_BROWSER', region_type='WINDOW', modal=False)
317
318     # Map File Browser Main
319     km = kc.keymaps.new('File Browser Main', space_type='FILE_BROWSER', region_type='WINDOW', modal=False)
320
321     # Map File Browser Buttons
322     km = kc.keymaps.new('File Browser Buttons', space_type='FILE_BROWSER', region_type='WINDOW', modal=False)
323
324     # Map Dopesheet
325     km = kc.keymaps.new('Dopesheet', space_type='DOPESHEET_EDITOR', region_type='WINDOW', modal=False)
326
327     # Map NLA Generic
328     km = kc.keymaps.new('NLA Generic', space_type='NLA_EDITOR', region_type='WINDOW', modal=False)
329
330     # Map NLA Channels
331     km = kc.keymaps.new('NLA Channels', space_type='NLA_EDITOR', region_type='WINDOW', modal=False)
332
333     # Map NLA Editor
334     km = kc.keymaps.new('NLA Editor', space_type='NLA_EDITOR', region_type='WINDOW', modal=False)
335
336     # Map Text
337     km = kc.keymaps.new('Text', space_type='TEXT_EDITOR', region_type='WINDOW', modal=False)
338
339     # Map Sequencer
340     km = kc.keymaps.new('Sequencer', space_type='SEQUENCE_EDITOR', region_type='WINDOW', modal=False)
341
342     # Map Logic Editor
343     km = kc.keymaps.new('Logic Editor', space_type='LOGIC_EDITOR', region_type='WINDOW', modal=False)
344
345     # Map Console
346     km = kc.keymaps.new('Console', space_type='CONSOLE', region_type='WINDOW', modal=False)
347
348     # Map Clip
349     km = kc.keymaps.new('Clip', space_type='CLIP_EDITOR', region_type='WINDOW', modal=False)
350
351     # Map Clip Editor
352     km = kc.keymaps.new('Clip Editor', space_type='CLIP_EDITOR', region_type='WINDOW', modal=False)
353
354     # Map Clip Graph Editor
355     km = kc.keymaps.new('Clip Graph Editor', space_type='CLIP_EDITOR', region_type='WINDOW', modal=False)
356
357
358
359
360
361 def MapAdd_Window(kc):
362     """ Window Map
363     """
364     km = kc.keymaps.new('Window', space_type='EMPTY', region_type='WINDOW', modal=False)
365
366     #------
367     # Quit
368     kmi = km.keymap_items.new('wm.quit_blender', 'Q', 'PRESS', ctrl=True)
369
370     #----------------------
371     # Operator search menu
372     kmi = km.keymap_items.new('wm.search_menu', 'TAB', 'CLICK')
373
374     #-----------------
375     # File management
376
377     # Open
378     kmi = km.keymap_items.new('wm.open_mainfile', 'O', 'CLICK', ctrl=True)
379     kmi = km.keymap_items.new('wm.link_append', 'O', 'CLICK', ctrl=True, alt=True)
380     kmi = km.keymap_items.new('wm.link_append', 'O', 'CLICK', ctrl=True, shift=True)
381     kmi.properties.link = False
382     kmi = km.keymap_items.new('wm.read_homefile', 'N', 'CLICK', ctrl=True)
383
384     # Save
385     kmi = km.keymap_items.new('wm.save_mainfile', 'S', 'CLICK', ctrl=True)
386     kmi = km.keymap_items.new('wm.save_as_mainfile', 'S', 'CLICK', shift=True, ctrl=True)
387     kmi = km.keymap_items.new('wm.save_homefile', 'U', 'CLICK', ctrl=True)
388
389
390     #-------------
391     # NDof Device
392     kmi = km.keymap_items.new('wm.call_menu', 'NDOF_BUTTON_MENU', 'PRESS')
393     kmi.properties.name = 'USERPREF_MT_ndof_settings'
394     kmi = km.keymap_items.new('wm.ndof_sensitivity_change', 'NDOF_BUTTON_PLUS', 'PRESS')
395     kmi.properties.decrease = False
396     kmi.properties.fast = False
397     kmi = km.keymap_items.new('wm.ndof_sensitivity_change', 'NDOF_BUTTON_MINUS', 'PRESS')
398     kmi.properties.decrease = True
399     kmi.properties.fast = False
400     kmi = km.keymap_items.new('wm.ndof_sensitivity_change', 'NDOF_BUTTON_PLUS', 'PRESS', shift=True)
401     kmi.properties.decrease = False
402     kmi.properties.fast = True
403     kmi = km.keymap_items.new('wm.ndof_sensitivity_change', 'NDOF_BUTTON_MINUS', 'PRESS', shift=True)
404     kmi.properties.decrease = True
405     kmi.properties.fast = True
406
407     #------
408     # Misc
409     kmi = km.keymap_items.new('wm.window_fullscreen_toggle', 'F11', 'CLICK', alt=True)
410
411     #-----------------------
412     # Development/debugging
413     if DEVELOPER_HOTKEYS:
414         kmi = km.keymap_items.new('wm.redraw_timer', 'T', 'CLICK', ctrl=True, alt=True)
415         kmi = km.keymap_items.new('wm.debug_menu', 'D', 'CLICK', ctrl=True, alt=True)
416
417     #-----
418     # ???
419     kmi = km.keymap_items.new('info.reports_display_update', 'TIMER', 'ANY', any=True)
420
421
422
423 def MapAdd_Screen(kc):
424     """ Screen Map
425     """
426     km = kc.keymaps.new('Screen', space_type='EMPTY', region_type='WINDOW', modal=False)
427
428     kmi = km.keymap_items.new('screen.animation_step', 'TIMER0', 'ANY', any=True)
429     kmi = km.keymap_items.new('screen.screen_set', 'RIGHT_ARROW', 'PRESS', ctrl=True)
430     kmi.properties.delta = 1
431     kmi = km.keymap_items.new('screen.screen_set', 'LEFT_ARROW', 'PRESS', ctrl=True)
432     kmi.properties.delta = -1
433     kmi = km.keymap_items.new('screen.screen_full_area', 'UP_ARROW', 'PRESS', ctrl=True)
434     kmi = km.keymap_items.new('screen.screen_full_area', 'DOWN_ARROW', 'PRESS', ctrl=True)
435     kmi = km.keymap_items.new('screen.screen_full_area', 'SPACE', 'PRESS', shift=True)
436     kmi = km.keymap_items.new('screen.screenshot', 'F3', 'PRESS', ctrl=True)
437     kmi = km.keymap_items.new('screen.screencast', 'F3', 'PRESS', alt=True)
438     kmi = km.keymap_items.new('screen.region_quadview', 'Q', 'PRESS', ctrl=True, alt=True)
439     kmi = km.keymap_items.new('screen.repeat_history', 'F3', 'PRESS')
440     kmi = km.keymap_items.new('screen.repeat_last', 'R', 'PRESS', shift=True)
441     kmi = km.keymap_items.new('screen.region_flip', 'F5', 'PRESS')
442     kmi = km.keymap_items.new('screen.redo_last', 'F6', 'PRESS')
443     kmi = km.keymap_items.new('script.reload', 'F8', 'PRESS')
444     kmi = km.keymap_items.new('file.execute', 'RET', 'PRESS')
445     kmi = km.keymap_items.new('file.execute', 'NUMPAD_ENTER', 'PRESS')
446     kmi = km.keymap_items.new('file.cancel', 'ESC', 'PRESS')
447     kmi = km.keymap_items.new('ed.undo', 'Z', 'PRESS', ctrl=True)
448     kmi = km.keymap_items.new('ed.redo', 'Z', 'PRESS', shift=True, ctrl=True)
449     kmi = km.keymap_items.new('ed.undo_history', 'Z', 'PRESS', ctrl=True, alt=True)
450     kmi = km.keymap_items.new('render.render', 'F12', 'PRESS')
451     kmi = km.keymap_items.new('render.render', 'F12', 'PRESS', ctrl=True)
452     kmi.properties.animation = True
453     kmi = km.keymap_items.new('render.view_cancel', 'ESC', 'PRESS')
454     kmi = km.keymap_items.new('render.view_show', 'F11', 'PRESS')
455     kmi = km.keymap_items.new('render.play_rendered_anim', 'F11', 'PRESS', ctrl=True)
456     kmi = km.keymap_items.new('screen.userpref_show', 'U', 'PRESS', ctrl=True, alt=True)
457
458     # Editing this seems to cause problems.
459     # TODO: file bug report
460     # Screen Editing
461     #km = kc.keymaps.new('Screen Editing', space_type='EMPTY', region_type='WINDOW', modal=False)
462     #
463     #kmi = km.keymap_items.new('screen.actionzone', 'LEFTMOUSE', 'PRESS')
464     #kmi.properties.modifier = 0
465     #kmi = km.keymap_items.new('screen.actionzone', 'LEFTMOUSE', 'PRESS', shift=True)
466     #kmi.properties.modifier = 1
467     #kmi = km.keymap_items.new('screen.actionzone', 'LEFTMOUSE', 'PRESS', ctrl=True)
468     #kmi.properties.modifier = 2
469     #kmi = km.keymap_items.new('screen.area_split', 'NONE', 'ANY')
470     #kmi = km.keymap_items.new('screen.area_join', 'NONE', 'ANY')
471     #kmi = km.keymap_items.new('screen.area_dupli', 'NONE', 'ANY', shift=True)
472     #kmi = km.keymap_items.new('screen.area_swap', 'NONE', 'ANY', ctrl=True)
473     #kmi = km.keymap_items.new('screen.region_scale', 'NONE', 'ANY')
474     #kmi = km.keymap_items.new('screen.area_move', 'LEFTMOUSE', 'PRESS')
475     #kmi = km.keymap_items.new('screen.area_options', 'RIGHTMOUSE', 'PRESS')
476
477
478
479 def MapAdd_View2D(kc):
480     """ View 2D Map
481     """
482     km = kc.keymaps.new('View2D', space_type='EMPTY', region_type='WINDOW', modal=False)
483
484     kmi = km.keymap_items.new('view2d.scroller_activate', 'LEFTMOUSE', 'PRESS')
485     kmi = km.keymap_items.new('view2d.scroller_activate', 'MIDDLEMOUSE', 'PRESS')
486     kmi = km.keymap_items.new('view2d.pan', 'MIDDLEMOUSE', 'PRESS')
487     kmi = km.keymap_items.new('view2d.pan', 'MIDDLEMOUSE', 'PRESS', shift=True)
488     kmi = km.keymap_items.new('view2d.pan', 'TRACKPADPAN', 'ANY')
489     kmi = km.keymap_items.new('view2d.scroll_right', 'WHEELDOWNMOUSE', 'PRESS', ctrl=True)
490     kmi = km.keymap_items.new('view2d.scroll_left', 'WHEELUPMOUSE', 'PRESS', ctrl=True)
491     kmi = km.keymap_items.new('view2d.scroll_down', 'WHEELDOWNMOUSE', 'PRESS', shift=True)
492     kmi = km.keymap_items.new('view2d.scroll_up', 'WHEELUPMOUSE', 'PRESS', shift=True)
493     kmi = km.keymap_items.new('view2d.zoom_out', 'WHEELOUTMOUSE', 'PRESS')
494     kmi = km.keymap_items.new('view2d.zoom_in', 'WHEELINMOUSE', 'PRESS')
495     kmi = km.keymap_items.new('view2d.zoom_out', 'NUMPAD_MINUS', 'PRESS')
496     kmi = km.keymap_items.new('view2d.zoom_in', 'NUMPAD_PLUS', 'PRESS')
497     kmi = km.keymap_items.new('view2d.scroll_down', 'WHEELDOWNMOUSE', 'PRESS')
498     kmi = km.keymap_items.new('view2d.scroll_up', 'WHEELUPMOUSE', 'PRESS')
499     kmi = km.keymap_items.new('view2d.scroll_right', 'WHEELDOWNMOUSE', 'PRESS')
500     kmi = km.keymap_items.new('view2d.scroll_left', 'WHEELUPMOUSE', 'PRESS')
501     kmi = km.keymap_items.new('view2d.zoom', 'MIDDLEMOUSE', 'PRESS', ctrl=True)
502     kmi = km.keymap_items.new('view2d.zoom', 'TRACKPADZOOM', 'ANY')
503     kmi = km.keymap_items.new('view2d.zoom_border', 'B', 'PRESS', shift=True)
504
505     # View2D Buttons List
506     km = kc.keymaps.new('View2D Buttons List', space_type='EMPTY', region_type='WINDOW', modal=False)
507
508     kmi = km.keymap_items.new('view2d.scroller_activate', 'LEFTMOUSE', 'PRESS')
509     kmi = km.keymap_items.new('view2d.scroller_activate', 'MIDDLEMOUSE', 'PRESS')
510     kmi = km.keymap_items.new('view2d.pan', 'MIDDLEMOUSE', 'PRESS')
511     kmi = km.keymap_items.new('view2d.pan', 'TRACKPADPAN', 'ANY')
512     kmi = km.keymap_items.new('view2d.scroll_down', 'WHEELDOWNMOUSE', 'PRESS')
513     kmi = km.keymap_items.new('view2d.scroll_up', 'WHEELUPMOUSE', 'PRESS')
514     kmi = km.keymap_items.new('view2d.scroll_down', 'PAGE_DOWN', 'PRESS')
515     kmi.properties.page = True
516     kmi = km.keymap_items.new('view2d.scroll_up', 'PAGE_UP', 'PRESS')
517     kmi.properties.page = True
518     kmi = km.keymap_items.new('view2d.zoom', 'MIDDLEMOUSE', 'PRESS', ctrl=True)
519     kmi = km.keymap_items.new('view2d.zoom', 'TRACKPADZOOM', 'ANY')
520     kmi = km.keymap_items.new('view2d.zoom_out', 'NUMPAD_MINUS', 'PRESS')
521     kmi = km.keymap_items.new('view2d.zoom_in', 'NUMPAD_PLUS', 'PRESS')
522     kmi = km.keymap_items.new('view2d.reset', 'HOME', 'PRESS')
523
524
525 def MapAdd_View3D_Global(kc):
526     """ View 3D Global Map
527     """
528     km = kc.keymaps.new('3D View', space_type='VIEW_3D', region_type='WINDOW', modal=False)
529
530     #-----------------
531     # View navigation
532
533     # ???
534     kmi = km.keymap_items.new('view3d.rotate', 'MOUSEROTATE', 'ANY')
535     kmi = km.keymap_items.new('view3d.smoothview', 'TIMER1', 'ANY', any=True)
536
537     # Perspective/ortho
538     kmi = km.keymap_items.new('view3d.view_persportho', 'NUMPAD_5', 'CLICK')
539
540     # Camera view
541     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_0', 'CLICK')
542     kmi.properties.type = 'CAMERA'
543
544     # Basics with mouse
545     kmi = km.keymap_items.new('view3d.move', 'MIDDLEMOUSE', 'PRESS')
546     kmi = km.keymap_items.new('view3d.zoom', 'MIDDLEMOUSE', 'PRESS', ctrl=True)
547     kmi = km.keymap_items.new('view3d.rotate', 'MIDDLEMOUSE', 'PRESS', shift=True)
548     #kmi = km.keymap_items.new('view3d.dolly', 'MIDDLEMOUSE', 'PRESS', shift=True, ctrl=True)
549
550     # Basics with mouse wheel
551     kmi = km.keymap_items.new('view3d.zoom', 'WHEELINMOUSE', 'PRESS')
552     kmi.properties.delta = 1
553     kmi = km.keymap_items.new('view3d.zoom', 'WHEELOUTMOUSE', 'PRESS')
554     kmi.properties.delta = -1
555     kmi = km.keymap_items.new('view3d.view_pan', 'WHEELUPMOUSE', 'PRESS', ctrl=True)
556     kmi.properties.type = 'PANRIGHT'
557     kmi = km.keymap_items.new('view3d.view_pan', 'WHEELDOWNMOUSE', 'PRESS', ctrl=True)
558     kmi.properties.type = 'PANLEFT'
559     kmi = km.keymap_items.new('view3d.view_pan', 'WHEELUPMOUSE', 'PRESS', shift=True)
560     kmi.properties.type = 'PANUP'
561     kmi = km.keymap_items.new('view3d.view_pan', 'WHEELDOWNMOUSE', 'PRESS', shift=True)
562     kmi.properties.type = 'PANDOWN'
563     kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELUPMOUSE', 'PRESS', ctrl=True, alt=True)
564     kmi.properties.type = 'ORBITLEFT'
565     kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELDOWNMOUSE', 'PRESS', ctrl=True, alt=True)
566     kmi.properties.type = 'ORBITRIGHT'
567     kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELUPMOUSE', 'PRESS', shift=True, alt=True)
568     kmi.properties.type = 'ORBITUP'
569     kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELDOWNMOUSE', 'PRESS', shift=True, alt=True)
570     kmi.properties.type = 'ORBITDOWN'
571
572     # Basics with trackpad
573     kmi = km.keymap_items.new('view3d.rotate', 'TRACKPADPAN', 'ANY', alt=True)
574     kmi = km.keymap_items.new('view3d.move', 'TRACKPADPAN', 'ANY')
575     kmi = km.keymap_items.new('view3d.zoom', 'TRACKPADZOOM', 'ANY')
576
577     # Basics with numpad
578     kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_8', 'CLICK')
579     kmi.properties.type = 'ORBITUP'
580     kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_2', 'CLICK')
581     kmi.properties.type = 'ORBITDOWN'
582     kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_4', 'CLICK')
583     kmi.properties.type = 'ORBITLEFT'
584     kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_6', 'CLICK')
585     kmi.properties.type = 'ORBITRIGHT'
586     kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_8', 'CLICK', ctrl=True)
587     kmi.properties.type = 'PANUP'
588     kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_2', 'CLICK', ctrl=True)
589     kmi.properties.type = 'PANDOWN'
590     kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_4', 'CLICK', ctrl=True)
591     kmi.properties.type = 'PANLEFT'
592     kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_6', 'CLICK', ctrl=True)
593     kmi.properties.type = 'PANRIGHT'
594     kmi = km.keymap_items.new('view3d.zoom', 'NUMPAD_PLUS', 'CLICK')
595     kmi.properties.delta = 1
596     kmi = km.keymap_items.new('view3d.zoom', 'NUMPAD_MINUS', 'CLICK')
597     kmi.properties.delta = -1
598
599     # Zoom in/out alternatives
600     kmi = km.keymap_items.new('view3d.zoom', 'EQUAL', 'CLICK', ctrl=True)
601     kmi.properties.delta = 1
602     kmi = km.keymap_items.new('view3d.zoom', 'MINUS', 'CLICK', ctrl=True)
603     kmi.properties.delta = -1
604
605     # Front/Right/Top/Back/Left/Bottom
606     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'CLICK')
607     kmi.properties.type = 'FRONT'
608     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'CLICK')
609     kmi.properties.type = 'RIGHT'
610     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'CLICK')
611     kmi.properties.type = 'TOP'
612     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'CLICK', ctrl=True)
613     kmi.properties.type = 'BACK'
614     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'CLICK', ctrl=True)
615     kmi.properties.type = 'LEFT'
616     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'CLICK', ctrl=True)
617     kmi.properties.type = 'BOTTOM'
618
619     kmi = km.keymap_items.new('view3d.viewnumpad', 'MIDDLEMOUSE', 'CLICK', alt=True)
620     kmi.properties.type = 'FRONT'
621     kmi = km.keymap_items.new('view3d.viewnumpad', 'EVT_TWEAK_M', 'EAST', alt=True)
622     kmi.properties.type = 'RIGHT'
623     kmi = km.keymap_items.new('view3d.viewnumpad', 'EVT_TWEAK_M', 'NORTH', alt=True)
624     kmi.properties.type = 'TOP'
625     kmi = km.keymap_items.new('view3d.viewnumpad', 'MIDDLEMOUSE', 'DOUBLE_CLICK', alt=True)
626     kmi.properties.type = 'BACK'
627     kmi = km.keymap_items.new('view3d.viewnumpad', 'EVT_TWEAK_M', 'WEST', alt=True)
628     kmi.properties.type = 'LEFT'
629     kmi = km.keymap_items.new('view3d.viewnumpad', 'EVT_TWEAK_M', 'SOUTH', alt=True)
630     kmi.properties.type = 'BOTTOM'
631
632     # Selection-aligned Front/Right/Top/Back/Left/Bottom
633     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'CLICK', shift=True)
634     kmi.properties.type = 'FRONT'
635     kmi.properties.align_active = True
636     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'CLICK', shift=True)
637     kmi.properties.type = 'RIGHT'
638     kmi.properties.align_active = True
639     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'CLICK', shift=True)
640     kmi.properties.type = 'TOP'
641     kmi.properties.align_active = True
642     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'CLICK', shift=True, ctrl=True)
643     kmi.properties.type = 'BACK'
644     kmi.properties.align_active = True
645     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'CLICK', shift=True, ctrl=True)
646     kmi.properties.type = 'LEFT'
647     kmi.properties.align_active = True
648     kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'CLICK', shift=True, ctrl=True)
649     kmi.properties.type = 'BOTTOM'
650     kmi.properties.align_active = True
651
652     # NDOF Device
653     kmi = km.keymap_items.new('view3d.ndof_orbit', 'NDOF_BUTTON_MENU', 'ANY')
654     kmi = km.keymap_items.new('view3d.ndof_pan', 'NDOF_BUTTON_MENU', 'ANY', shift=True)
655     kmi = km.keymap_items.new('view3d.view_selected', 'NDOF_BUTTON_FIT', 'PRESS')
656     kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_FRONT', 'PRESS')
657     kmi.properties.type = 'FRONT'
658     kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_BACK', 'PRESS')
659     kmi.properties.type = 'BACK'
660     kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_LEFT', 'PRESS')
661     kmi.properties.type = 'LEFT'
662     kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_RIGHT', 'PRESS')
663     kmi.properties.type = 'RIGHT'
664     kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_TOP', 'PRESS')
665     kmi.properties.type = 'TOP'
666     kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_BOTTOM', 'PRESS')
667     kmi.properties.type = 'BOTTOM'
668     kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_FRONT', 'PRESS', shift=True)
669     kmi.properties.type = 'FRONT'
670     kmi.properties.align_active = True
671     kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_RIGHT', 'PRESS', shift=True)
672     kmi.properties.type = 'RIGHT'
673     kmi.properties.align_active = True
674     kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_TOP', 'PRESS', shift=True)
675     kmi.properties.type = 'TOP'
676     kmi.properties.align_active = True
677
678     # Fly mode
679     kmi = km.keymap_items.new('view3d.fly', 'F', 'CLICK', shift=True)
680
681     # Misc
682     kmi = km.keymap_items.new('view3d.view_selected', 'NUMPAD_PERIOD', 'CLICK')
683     kmi = km.keymap_items.new('view3d.view_center_cursor', 'NUMPAD_PERIOD', 'CLICK', ctrl=True)
684     kmi = km.keymap_items.new('view3d.zoom_camera_1_to_1', 'NUMPAD_ENTER', 'CLICK', shift=True)
685     kmi = km.keymap_items.new('view3d.view_center_camera', 'HOME', 'CLICK')
686     kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'CLICK')
687     kmi.properties.center = False
688     kmi = km.keymap_items.new('view3d.view_all', 'C', 'CLICK', shift=True)
689     kmi.properties.center = True
690
691     #-----------
692     # Selection
693
694     # Click select
695     kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'CLICK')
696     kmi.properties.extend = False
697     kmi.properties.center = False
698     kmi.properties.enumerate = False
699     kmi.properties.object = False
700     kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'CLICK', shift=True)
701     kmi.properties.extend = True
702     kmi.properties.center = False
703     kmi.properties.enumerate = False
704     kmi.properties.object = False
705     kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'CLICK', ctrl=True)
706     kmi.properties.extend = False
707     kmi.properties.center = True
708     kmi.properties.enumerate = False
709     kmi.properties.object = True
710     kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'CLICK', alt=True)
711     kmi.properties.extend = False
712     kmi.properties.center = False
713     kmi.properties.enumerate = True
714     kmi.properties.object = False
715     kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'CLICK', shift=True, ctrl=True)
716     kmi.properties.extend = True
717     kmi.properties.center = True
718     kmi.properties.enumerate = False
719     kmi.properties.object = False
720     kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'CLICK', ctrl=True, alt=True)
721     kmi.properties.extend = False
722     kmi.properties.center = True
723     kmi.properties.enumerate = True
724     kmi.properties.object = False
725     kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'CLICK', shift=True, alt=True)
726     kmi.properties.extend = True
727     kmi.properties.center = False
728     kmi.properties.enumerate = True
729     kmi.properties.object = False
730     kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'CLICK', shift=True, ctrl=True, alt=True)
731     kmi.properties.extend = True
732     kmi.properties.center = True
733     kmi.properties.enumerate = True
734     kmi.properties.object = False
735
736     # Box select
737     kmi = km.keymap_items.new('view3d.select_border', 'B', 'CLICK')
738
739     # Lasso select
740     kmi = km.keymap_items.new('view3d.select_lasso', 'EVT_TWEAK_A', 'ANY', ctrl=True)
741     kmi.properties.deselect = False
742     kmi = km.keymap_items.new('view3d.select_lasso', 'EVT_TWEAK_A', 'ANY', shift=True, ctrl=True)
743     kmi.properties.deselect = True
744
745     # Paint select
746     kmi = km.keymap_items.new('view3d.select_circle', 'C', 'CLICK')
747
748     #-------------
749     # Manipulator
750     kmi = km.keymap_items.new('view3d.manipulator', 'EVT_TWEAK_L', 'ANY', any=True)
751     kmi.properties.release_confirm = True
752
753     if MAYA_STYLE_MANIPULATORS:
754         kmi = km.keymap_items.new('view3d.manipulator_set', 'Q', 'CLICK')
755         kmi.properties.mode = 'NONE'
756         kmi = km.keymap_items.new('view3d.manipulator_set', 'W', 'CLICK')
757         kmi.properties.mode = 'TRANSLATE'
758         kmi = km.keymap_items.new('view3d.manipulator_set', 'E', 'CLICK')
759         kmi.properties.mode = 'ROTATE'
760         kmi = km.keymap_items.new('view3d.manipulator_set', 'R', 'CLICK')
761         kmi.properties.mode = 'SCALE'
762     else:
763         kmi = km.keymap_items.new('wm.context_toggle', 'SPACE', 'CLICK', ctrl=True)
764         kmi.properties.data_path = 'space_data.show_manipulator'
765
766     #-----------------------
767     # Transforms via hotkey
768     # Grab, rotate scale
769     kmi = km.keymap_items.new('transform.translate', 'G', 'CLICK')
770     #kmi = km.keymap_items.new('transform.translate', 'EVT_TWEAK_S', 'ANY')
771     kmi = km.keymap_items.new('transform.rotate', 'R', 'CLICK')
772     kmi = km.keymap_items.new('transform.resize', 'S', 'CLICK')
773
774     # Mirror, shear, warp, to-sphere
775     kmi = km.keymap_items.new('transform.mirror', 'M', 'CLICK', ctrl=True)
776     kmi = km.keymap_items.new('transform.shear', 'S', 'CLICK', shift=True, ctrl=True, alt=True)
777     kmi = km.keymap_items.new('transform.warp', 'W', 'CLICK', shift=True)
778     kmi = km.keymap_items.new('transform.tosphere', 'S', 'CLICK', shift=True, alt=True)
779
780     #-------------------------
781     # Transform texture space
782     kmi = km.keymap_items.new('transform.translate', 'T', 'CLICK', shift=True)
783     kmi.properties.texture_space = True
784     kmi = km.keymap_items.new('transform.resize', 'T', 'CLICK', shift=True, alt=True)
785     kmi.properties.texture_space = True
786
787     #------------------
788     # Transform spaces
789     kmi = km.keymap_items.new('transform.select_orientation', 'SPACE', 'CLICK', alt=True)
790     kmi = km.keymap_items.new('transform.create_orientation', 'SPACE', 'CLICK', ctrl=True, alt=True)
791     kmi.properties.use = True
792
793     #----------
794     # Snapping
795     kmi = km.keymap_items.new('wm.context_toggle', 'TAB', 'CLICK', shift=True)
796     kmi.properties.data_path = 'tool_settings.use_snap'
797     kmi = km.keymap_items.new('transform.snap_type', 'TAB', 'CLICK', shift=True, ctrl=True)
798
799     #---------------
800     # Snapping Menu
801     kmi = km.keymap_items.new('wm.call_menu', 'S', 'CLICK', shift=True)
802     kmi.properties.name = 'VIEW3D_MT_snap'
803
804     #-----------
805     # 3d cursor
806     kmi = km.keymap_items.new('view3d.cursor3d', 'ACTIONMOUSE', 'CLICK')
807
808     #-------------------
809     # Toggle local view
810     kmi = km.keymap_items.new('view3d.localview', 'NUMPAD_SLASH', 'CLICK')
811
812     #--------
813     # Layers
814     kmi = km.keymap_items.new('view3d.layers', 'ACCENT_GRAVE', 'CLICK')
815     kmi.properties.nr = 0
816     kmi = km.keymap_items.new('view3d.layers', 'ONE', 'CLICK', any=True)
817     kmi.properties.nr = 1
818     kmi = km.keymap_items.new('view3d.layers', 'TWO', 'CLICK', any=True)
819     kmi.properties.nr = 2
820     kmi = km.keymap_items.new('view3d.layers', 'THREE', 'CLICK', any=True)
821     kmi.properties.nr = 3
822     kmi = km.keymap_items.new('view3d.layers', 'FOUR', 'CLICK', any=True)
823     kmi.properties.nr = 4
824     kmi = km.keymap_items.new('view3d.layers', 'FIVE', 'CLICK', any=True)
825     kmi.properties.nr = 5
826     kmi = km.keymap_items.new('view3d.layers', 'SIX', 'CLICK', any=True)
827     kmi.properties.nr = 6
828     kmi = km.keymap_items.new('view3d.layers', 'SEVEN', 'CLICK', any=True)
829     kmi.properties.nr = 7
830     kmi = km.keymap_items.new('view3d.layers', 'EIGHT', 'CLICK', any=True)
831     kmi.properties.nr = 8
832     kmi = km.keymap_items.new('view3d.layers', 'NINE', 'CLICK', any=True)
833     kmi.properties.nr = 9
834     kmi = km.keymap_items.new('view3d.layers', 'ZERO', 'CLICK', any=True)
835     kmi.properties.nr = 10
836
837     #------------------
838     # Viewport drawing
839     kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'CLICK')
840     kmi.properties.data_path = 'space_data.viewport_shade'
841     kmi.properties.value_1 = 'SOLID'
842     kmi.properties.value_2 = 'WIREFRAME'
843     kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'CLICK', alt=True)
844     kmi.properties.data_path = 'space_data.viewport_shade'
845     kmi.properties.value_1 = 'TEXTURED'
846     kmi.properties.value_2 = 'SOLID'
847
848     #-------------
849     # Pivot point
850     kmi = km.keymap_items.new('wm.context_set_enum', 'COMMA', 'CLICK')
851     kmi.properties.data_path = 'space_data.pivot_point'
852     kmi.properties.value = 'BOUNDING_BOX_CENTER'
853     kmi = km.keymap_items.new('wm.context_set_enum', 'COMMA', 'CLICK', ctrl=True)
854     kmi.properties.data_path = 'space_data.pivot_point'
855     kmi.properties.value = 'MEDIAN_POINT'
856     kmi = km.keymap_items.new('wm.context_toggle', 'COMMA', 'CLICK', alt=True)
857     kmi.properties.data_path = 'space_data.use_pivot_point_align'
858     kmi = km.keymap_items.new('wm.context_set_enum', 'PERIOD', 'CLICK')
859     kmi.properties.data_path = 'space_data.pivot_point'
860     kmi.properties.value = 'CURSOR'
861     kmi = km.keymap_items.new('wm.context_set_enum', 'PERIOD', 'CLICK', ctrl=True)
862     kmi.properties.data_path = 'space_data.pivot_point'
863     kmi.properties.value = 'INDIVIDUAL_ORIGINS'
864     kmi = km.keymap_items.new('wm.context_set_enum', 'PERIOD', 'CLICK', alt=True)
865     kmi.properties.data_path = 'space_data.pivot_point'
866     kmi.properties.value = 'ACTIVE_ELEMENT'
867
868     #------
869     # Misc
870     kmi = km.keymap_items.new('view3d.clip_border', 'B', 'CLICK', alt=True)
871     kmi = km.keymap_items.new('view3d.zoom_border', 'B', 'CLICK', shift=True)
872     kmi = km.keymap_items.new('view3d.render_border', 'B', 'CLICK', shift=True)
873     kmi = km.keymap_items.new('view3d.camera_to_view', 'NUMPAD_0', 'CLICK', ctrl=True, alt=True)
874     kmi = km.keymap_items.new('view3d.object_as_camera', 'NUMPAD_0', 'CLICK', ctrl=True)
875     
876
877 def MapAdd_View3D_Object_Nonmodal(kc):
878     """ Object Non-modal Map
879         This essentially applies globally within the 3d view.  But technically
880         only when objects are involved (but when are they not...?).
881     """
882     km = kc.keymaps.new('Object Non-modal', space_type='EMPTY', region_type='WINDOW', modal=False)
883     
884     # Mode switching
885     kmi = km.keymap_items.new('wm.call_menu', 'SPACE', 'PRESS')
886     kmi.properties.name = 'OBJECT_MT_mode_switch_menu'
887
888
889 def MapAdd_View3D_ObjectMode(kc):
890     """ Object Mode Map
891     """
892     km = kc.keymaps.new('Object Mode', space_type='EMPTY', region_type='WINDOW', modal=False)
893
894     #--------
895     # Delete
896     kmi = km.keymap_items.new('object.delete_no_confirm', 'X', 'CLICK')
897     kmi = km.keymap_items.new('object.delete_no_confirm', 'DEL', 'CLICK')
898
899
900
901     kmi = km.keymap_items.new('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
902     kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
903     kmi = km.keymap_items.new('wm.context_toggle', 'O', 'PRESS')
904     kmi.properties.data_path = 'tool_settings.use_proportional_edit_objects'
905     kmi = km.keymap_items.new('view3d.game_start', 'P', 'PRESS')
906     kmi = km.keymap_items.new('object.select_all', 'A', 'PRESS')
907     kmi.properties.action = 'TOGGLE'
908     kmi = km.keymap_items.new('object.select_all', 'I', 'PRESS', ctrl=True)
909     kmi.properties.action = 'INVERT'
910     kmi = km.keymap_items.new('object.select_linked', 'L', 'PRESS', shift=True)
911     kmi = km.keymap_items.new('object.select_grouped', 'G', 'PRESS', shift=True)
912     kmi = km.keymap_items.new('object.select_mirror', 'M', 'PRESS', shift=True, ctrl=True)
913     kmi = km.keymap_items.new('object.select_hierarchy', 'LEFT_BRACKET', 'PRESS')
914     kmi.properties.direction = 'PARENT'
915     kmi.properties.extend = False
916     kmi = km.keymap_items.new('object.select_hierarchy', 'LEFT_BRACKET', 'PRESS', shift=True)
917     kmi.properties.direction = 'PARENT'
918     kmi.properties.extend = True
919     kmi = km.keymap_items.new('object.select_hierarchy', 'RIGHT_BRACKET', 'PRESS')
920     kmi.properties.direction = 'CHILD'
921     kmi.properties.extend = False
922     kmi = km.keymap_items.new('object.select_hierarchy', 'RIGHT_BRACKET', 'PRESS', shift=True)
923     kmi.properties.direction = 'CHILD'
924     kmi.properties.extend = True
925     kmi = km.keymap_items.new('object.parent_set', 'P', 'PRESS', ctrl=True)
926     kmi = km.keymap_items.new('object.parent_no_inverse_set', 'P', 'PRESS', shift=True, ctrl=True)
927     kmi = km.keymap_items.new('object.parent_clear', 'P', 'PRESS', alt=True)
928     kmi = km.keymap_items.new('object.track_set', 'T', 'PRESS', ctrl=True)
929     kmi = km.keymap_items.new('object.track_clear', 'T', 'PRESS', alt=True)
930     kmi = km.keymap_items.new('object.constraint_add_with_targets', 'C', 'PRESS', shift=True, ctrl=True)
931     kmi = km.keymap_items.new('object.constraints_clear', 'C', 'PRESS', ctrl=True, alt=True)
932     kmi = km.keymap_items.new('object.location_clear', 'G', 'PRESS', alt=True)
933     kmi = km.keymap_items.new('object.rotation_clear', 'R', 'PRESS', alt=True)
934     kmi = km.keymap_items.new('object.scale_clear', 'S', 'PRESS', alt=True)
935     kmi = km.keymap_items.new('object.origin_clear', 'O', 'PRESS', alt=True)
936     kmi = km.keymap_items.new('object.hide_view_clear', 'H', 'PRESS', alt=True)
937     kmi = km.keymap_items.new('object.hide_view_set', 'H', 'PRESS')
938     kmi.properties.unselected = False
939     kmi = km.keymap_items.new('object.hide_view_set', 'H', 'PRESS', shift=True)
940     kmi.properties.unselected = True
941     kmi = km.keymap_items.new('object.hide_render_clear', 'H', 'PRESS', ctrl=True, alt=True)
942     kmi = km.keymap_items.new('object.hide_render_set', 'H', 'PRESS', ctrl=True)
943     kmi = km.keymap_items.new('object.move_to_layer', 'M', 'PRESS')
944
945     kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', shift=True)
946     kmi.properties.name = 'INFO_MT_add'
947     kmi = km.keymap_items.new('object.duplicates_make_real', 'A', 'PRESS', shift=True, ctrl=True)
948     kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', ctrl=True)
949     kmi.properties.name = 'VIEW3D_MT_object_apply'
950     kmi = km.keymap_items.new('wm.call_menu', 'U', 'PRESS')
951     kmi.properties.name = 'VIEW3D_MT_make_single_user'
952     kmi = km.keymap_items.new('wm.call_menu', 'L', 'PRESS', ctrl=True)
953     kmi.properties.name = 'VIEW3D_MT_make_links'
954     kmi = km.keymap_items.new('object.duplicate_move', 'D', 'PRESS', shift=True)
955     kmi = km.keymap_items.new('object.duplicate_move_linked', 'D', 'PRESS', alt=True)
956     kmi = km.keymap_items.new('object.join', 'J', 'PRESS', ctrl=True)
957     kmi = km.keymap_items.new('object.convert', 'C', 'PRESS', alt=True)
958     kmi = km.keymap_items.new('object.proxy_make', 'P', 'PRESS', ctrl=True, alt=True)
959     kmi = km.keymap_items.new('object.make_local', 'L', 'PRESS')
960     kmi = km.keymap_items.new('anim.keyframe_insert_menu', 'I', 'PRESS')
961     kmi = km.keymap_items.new('anim.keyframe_delete_v3d', 'I', 'PRESS', alt=True)
962     kmi = km.keymap_items.new('anim.keying_set_active_set', 'I', 'PRESS', shift=True, ctrl=True, alt=True)
963     kmi = km.keymap_items.new('group.create', 'G', 'PRESS', ctrl=True)
964     kmi = km.keymap_items.new('group.objects_remove', 'G', 'PRESS', ctrl=True, alt=True)
965     kmi = km.keymap_items.new('group.objects_add_active', 'G', 'PRESS', shift=True, ctrl=True)
966     kmi = km.keymap_items.new('group.objects_remove_active', 'G', 'PRESS', shift=True, alt=True)
967     kmi = km.keymap_items.new('wm.call_menu', 'W', 'PRESS')
968     kmi.properties.name = 'VIEW3D_MT_object_specials'
969     kmi = km.keymap_items.new('object.subdivision_set', 'ZERO', 'PRESS', ctrl=True)
970     kmi.properties.level = 0
971     kmi = km.keymap_items.new('object.subdivision_set', 'ONE', 'PRESS', ctrl=True)
972     kmi.properties.level = 1
973     kmi = km.keymap_items.new('object.subdivision_set', 'TWO', 'PRESS', ctrl=True)
974     kmi.properties.level = 2
975     kmi = km.keymap_items.new('object.subdivision_set', 'THREE', 'PRESS', ctrl=True)
976     kmi.properties.level = 3
977     kmi = km.keymap_items.new('object.subdivision_set', 'FOUR', 'PRESS', ctrl=True)
978     kmi.properties.level = 4
979     kmi = km.keymap_items.new('object.subdivision_set', 'FIVE', 'PRESS', ctrl=True)
980     kmi.properties.level = 5
981
982
983 def MapAdd_View3D_MeshEditMode(kc):
984     """ Mesh Edit Mode Map
985     """
986     km = kc.keymaps.new('Mesh', space_type='EMPTY', region_type='WINDOW', modal=False)
987
988     #---------------------------------
989     # Vertex/Edge/Face mode switching
990     #---------------------------------
991     kmi = km.keymap_items.new('view3d.set_edit_mesh_select_mode', 'ONE', 'PRESS')
992     kmi.properties.mode = 'VERT'
993     kmi.properties.toggle = False
994     kmi = km.keymap_items.new('view3d.set_edit_mesh_select_mode', 'TWO', 'PRESS')
995     kmi.properties.mode = 'EDGE'
996     kmi.properties.toggle = False
997     kmi = km.keymap_items.new('view3d.set_edit_mesh_select_mode', 'THREE', 'PRESS')
998     kmi.properties.mode = 'FACE'
999     kmi.properties.toggle = False
1000
1001     kmi = km.keymap_items.new('view3d.set_edit_mesh_select_mode', 'ONE', 'PRESS', shift=True)
1002     kmi.properties.mode = 'VERT'
1003     kmi.properties.toggle = True
1004     kmi = km.keymap_items.new('view3d.set_edit_mesh_select_mode', 'TWO', 'PRESS', shift=True)
1005     kmi.properties.mode = 'EDGE'
1006     kmi.properties.toggle = True
1007     kmi = km.keymap_items.new('view3d.set_edit_mesh_select_mode', 'THREE', 'PRESS', shift=True)
1008     kmi.properties.mode = 'FACE'
1009     kmi.properties.toggle = True
1010
1011
1012     #-----------
1013     # Selection
1014     #-----------
1015     kmi = km.keymap_items.new('mesh.loop_select', 'SELECTMOUSE', 'CLICK', alt=True)
1016     kmi.properties.extend = False
1017     kmi = km.keymap_items.new('mesh.loop_select', 'SELECTMOUSE', 'CLICK', shift=True, alt=True)
1018     kmi.properties.extend = True
1019     kmi = km.keymap_items.new('mesh.edgering_select', 'SELECTMOUSE', 'CLICK', ctrl=True, alt=True)
1020     kmi.properties.extend = False
1021     kmi = km.keymap_items.new('mesh.edgering_select', 'SELECTMOUSE', 'CLICK', shift=True, ctrl=True, alt=True)
1022     kmi.properties.extend = True
1023     kmi = km.keymap_items.new('mesh.select_shortest_path', 'SELECTMOUSE', 'CLICK', ctrl=True)
1024     kmi = km.keymap_items.new('mesh.select_all', 'A', 'CLICK')
1025     kmi.properties.action = 'TOGGLE'
1026     kmi = km.keymap_items.new('mesh.select_all', 'I', 'CLICK', ctrl=True)
1027     kmi.properties.action = 'INVERT'
1028     kmi = km.keymap_items.new('mesh.select_more', 'NUMPAD_PLUS', 'CLICK', ctrl=True)
1029     kmi = km.keymap_items.new('mesh.select_less', 'NUMPAD_MINUS', 'CLICK', ctrl=True)
1030     kmi = km.keymap_items.new('mesh.select_non_manifold', 'M', 'CLICK', shift=True, ctrl=True, alt=True)
1031     kmi = km.keymap_items.new('mesh.select_linked', 'L', 'CLICK', ctrl=True)
1032     kmi = km.keymap_items.new('mesh.select_linked_pick', 'L', 'CLICK')
1033     kmi.properties.deselect = False
1034     kmi = km.keymap_items.new('mesh.select_linked_pick', 'L', 'CLICK', shift=True)
1035     kmi.properties.deselect = True
1036     kmi = km.keymap_items.new('mesh.faces_select_linked_flat', 'F', 'CLICK', shift=True, ctrl=True, alt=True)
1037     kmi = km.keymap_items.new('mesh.select_similar', 'G', 'CLICK', shift=True)
1038
1039     #----------------------
1040     # Proportional editing
1041     #----------------------
1042     kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'CLICK')
1043     kmi.properties.data_path = 'tool_settings.proportional_edit'
1044     kmi.properties.value_1 = 'DISABLED'
1045     kmi.properties.value_2 = 'ENABLED'
1046     kmi = km.keymap_items.new('wm.context_cycle_enum', 'O', 'CLICK', shift=True)
1047     kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
1048     kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'CLICK', alt=True)
1049     kmi.properties.data_path = 'tool_settings.proportional_edit'
1050     kmi.properties.value_1 = 'DISABLED'
1051     kmi.properties.value_2 = 'CONNECTED'
1052
1053     #--------
1054     # Hiding
1055     #--------
1056     kmi = km.keymap_items.new('mesh.hide', 'H', 'CLICK')
1057     kmi.properties.unselected = False
1058     kmi = km.keymap_items.new('mesh.hide', 'H', 'CLICK', shift=True)
1059     kmi.properties.unselected = True
1060     kmi = km.keymap_items.new('mesh.reveal', 'H', 'CLICK', alt=True)
1061
1062     #--------
1063     # Create
1064     #--------
1065     kmi = km.keymap_items.new('mesh.loopcut_slide', 'R', 'CLICK', ctrl=True)
1066     kmi = km.keymap_items.new('mesh.knifetool', 'K', 'CLICK')
1067     kmi = km.keymap_items.new('view3d.edit_mesh_extrude_move_normal', 'E', 'CLICK')
1068     kmi = km.keymap_items.new('wm.call_menu', 'E', 'CLICK', alt=True)
1069     kmi.properties.name = 'VIEW3D_MT_edit_mesh_extrude'
1070     kmi = km.keymap_items.new('mesh.edge_face_add', 'F', 'CLICK')
1071     kmi = km.keymap_items.new('mesh.vert_connect', 'J', 'CLICK')
1072     kmi = km.keymap_items.new('mesh.spin', 'R', 'CLICK', alt=True)
1073     kmi = km.keymap_items.new('mesh.fill', 'F', 'CLICK', alt=True)
1074     kmi = km.keymap_items.new('mesh.beautify_fill', 'F', 'CLICK', shift=True, alt=True)
1075     kmi = km.keymap_items.new('mesh.duplicate_move', 'D', 'CLICK', shift=True)
1076     kmi = km.keymap_items.new('wm.call_menu', 'A', 'CLICK', shift=True)
1077     kmi.properties.name = 'INFO_MT_mesh_add'
1078     kmi = km.keymap_items.new('mesh.dupli_extrude_cursor', 'ACTIONMOUSE', 'CLICK', ctrl=True)
1079     kmi.properties.rotate_source = True
1080     kmi = km.keymap_items.new('mesh.dupli_extrude_cursor', 'ACTIONMOUSE', 'CLICK', shift=True, ctrl=True)
1081     kmi.properties.rotate_source = False
1082
1083     #--------
1084     # Delete
1085     #--------
1086     kmi = km.keymap_items.new('wm.call_menu', 'X', 'CLICK')
1087     kmi.properties.name = 'VIEW3D_MT_edit_mesh_delete'
1088     kmi = km.keymap_items.new('wm.call_menu', 'DEL', 'CLICK')
1089     kmi.properties.name = 'VIEW3D_MT_edit_mesh_delete'
1090
1091     #----------
1092     # Separate
1093     #----------
1094     kmi = km.keymap_items.new('mesh.rip_move', 'V', 'CLICK')
1095     kmi = km.keymap_items.new('mesh.split', 'Y', 'CLICK')
1096     kmi = km.keymap_items.new('mesh.separate', 'P', 'CLICK')
1097
1098     #-------
1099     # Merge
1100     #-------
1101     kmi = km.keymap_items.new('mesh.merge', 'M', 'CLICK', alt=True)
1102
1103     #-----------
1104     # Transform
1105     #-----------
1106     kmi = km.keymap_items.new('transform.shrink_fatten', 'S', 'CLICK', alt=True)
1107     kmi = km.keymap_items.new('transform.edge_crease', 'E', 'CLICK', shift=True)
1108     kmi = km.keymap_items.new('mesh.quads_convert_to_tris', 'T', 'CLICK', ctrl=True)
1109     kmi = km.keymap_items.new('mesh.quads_convert_to_tris', 'T', 'CLICK', shift=True, ctrl=True)
1110     kmi.properties.use_beauty = False
1111     kmi = km.keymap_items.new('mesh.tris_convert_to_quads', 'J', 'CLICK', alt=True)
1112
1113     #------------
1114     # Tool Menus
1115     #------------
1116     kmi = km.keymap_items.new('wm.call_menu', 'W', 'CLICK')
1117     kmi.properties.name = 'VIEW3D_MT_edit_mesh_specials'
1118     kmi = km.keymap_items.new('wm.call_menu', 'F', 'CLICK', ctrl=True)
1119     kmi.properties.name = 'VIEW3D_MT_edit_mesh_faces'
1120     kmi = km.keymap_items.new('wm.call_menu', 'E', 'CLICK', ctrl=True)
1121     kmi.properties.name = 'VIEW3D_MT_edit_mesh_edges'
1122     kmi = km.keymap_items.new('wm.call_menu', 'V', 'CLICK', ctrl=True)
1123     kmi.properties.name = 'VIEW3D_MT_edit_mesh_vertices'
1124
1125     #------
1126     # UV's
1127     #------
1128     kmi = km.keymap_items.new('wm.call_menu', 'U', 'CLICK')
1129     kmi.properties.name = 'VIEW3D_MT_uv_map'
1130
1131     #-------------------
1132     # Calculate normals
1133     #-------------------
1134     kmi = km.keymap_items.new('mesh.normals_make_consistent', 'N', 'CLICK', ctrl=True)
1135     kmi.properties.inside = False
1136     kmi = km.keymap_items.new('mesh.normals_make_consistent', 'N', 'CLICK', shift=True, ctrl=True)
1137     kmi.properties.inside = True
1138
1139     #-------------------
1140     # Subsurf shortcuts
1141     #-------------------
1142
1143     if SUBSURF_RELATIVE:
1144         kmi = km.keymap_items.new('object.shift_subsurf_level', 'EQUAL', 'CLICK')
1145         kmi.properties.delta = 1
1146         kmi.properties.max = 4
1147         kmi = km.keymap_items.new('object.shift_subsurf_level', 'MINUS', 'CLICK')
1148         kmi.properties.delta = -1
1149         kmi.properties.min = 0
1150     else:
1151         kmi = km.keymap_items.new('object.subdivision_set', 'ZERO', 'CLICK', ctrl=True)
1152         kmi.properties.level = 0
1153         kmi = km.keymap_items.new('object.subdivision_set', 'ONE', 'CLICK', ctrl=True)
1154         kmi.properties.level = 1
1155         kmi = km.keymap_items.new('object.subdivision_set', 'TWO', 'CLICK', ctrl=True)
1156         kmi.properties.level = 2
1157         kmi = km.keymap_items.new('object.subdivision_set', 'THREE', 'CLICK', ctrl=True)
1158         kmi.properties.level = 3
1159         kmi = km.keymap_items.new('object.subdivision_set', 'FOUR', 'CLICK', ctrl=True)
1160         kmi.properties.level = 4
1161         kmi = km.keymap_items.new('object.subdivision_set', 'FIVE', 'CLICK', ctrl=True)
1162         kmi.properties.level = 5
1163
1164     #---------
1165     # Rigging
1166     #---------
1167     kmi = km.keymap_items.new('object.vertex_parent_set', 'P', 'CLICK', ctrl=True)
1168     kmi = km.keymap_items.new('wm.call_menu', 'H', 'CLICK', ctrl=True)
1169     kmi.properties.name = 'VIEW3D_MT_hook'
1170     kmi = km.keymap_items.new('wm.call_menu', 'G', 'CLICK', ctrl=True)
1171     kmi.properties.name = 'VIEW3D_MT_vertex_group'
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195 def MapAdd_ModalStandard(kc):
1196     """ Standard Modal Map
1197         Super basic modal stuff that applies globally in Blender.
1198     """
1199     km = kc.keymaps.new('Standard Modal Map', space_type='EMPTY', region_type='WINDOW', modal=True)
1200
1201     kmi = km.keymap_items.new_modal('CANCEL', 'ESC', 'PRESS', any=True)
1202     kmi = km.keymap_items.new_modal('APPLY', 'LEFTMOUSE', 'ANY', any=True)
1203     kmi = km.keymap_items.new_modal('APPLY', 'RET', 'PRESS', any=True)
1204     kmi = km.keymap_items.new_modal('APPLY', 'NUMPAD_ENTER', 'PRESS', any=True)
1205     kmi = km.keymap_items.new_modal('STEP10', 'LEFT_CTRL', 'PRESS', any=True)
1206     kmi = km.keymap_items.new_modal('STEP10_OFF', 'LEFT_CTRL', 'RELEASE', any=True)
1207
1208
1209 def MapAdd_ModalTransform(kc):
1210     """ Transform Modal Map
1211         Keys for when the user is in a transform mode, such as grab/rotate/scale.
1212     """
1213     km = kc.keymaps.new('Transform Modal Map', space_type='EMPTY', region_type='WINDOW', modal=True)
1214
1215     # Cancel
1216     kmi = km.keymap_items.new_modal('CANCEL', 'ESC', 'PRESS', any=True)
1217
1218     # Confirm
1219     kmi = km.keymap_items.new_modal('CONFIRM', 'LEFTMOUSE', 'PRESS', any=True)
1220     kmi = km.keymap_items.new_modal('CONFIRM', 'RET', 'CLICK', any=True)
1221     kmi = km.keymap_items.new_modal('CONFIRM', 'NUMPAD_ENTER', 'CLICK', any=True)
1222
1223     # Snapping
1224     kmi = km.keymap_items.new_modal('SNAP_TOGGLE', 'TAB', 'PRESS', shift=True)
1225     kmi = km.keymap_items.new_modal('SNAP_INV_ON', 'LEFT_CTRL', 'PRESS', any=True)
1226     kmi = km.keymap_items.new_modal('SNAP_INV_OFF', 'LEFT_CTRL', 'RELEASE', any=True)
1227     kmi = km.keymap_items.new_modal('SNAP_INV_ON', 'RIGHT_CTRL', 'PRESS', any=True)
1228     kmi = km.keymap_items.new_modal('SNAP_INV_OFF', 'RIGHT_CTRL', 'RELEASE', any=True)
1229     kmi = km.keymap_items.new_modal('ADD_SNAP', 'A', 'CLICK')
1230     kmi = km.keymap_items.new_modal('REMOVE_SNAP', 'A', 'CLICK', alt=True)
1231
1232     # Proportional edit adjusting
1233     kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_UP', 'PAGE_UP', 'PRESS')
1234     kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_DOWN', 'PAGE_DOWN', 'PRESS')
1235     kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_UP', 'WHEELDOWNMOUSE', 'PRESS')
1236     kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_DOWN', 'WHEELUPMOUSE', 'PRESS')
1237
1238     # Auto-ik adjusting
1239     kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_UP', 'PAGE_UP', 'PRESS', shift=True)
1240     kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_DOWN', 'PAGE_DOWN', 'PRESS', shift=True)
1241     kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_UP', 'WHEELDOWNMOUSE', 'PRESS', shift=True)
1242     kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_DOWN', 'WHEELUPMOUSE', 'PRESS', shift=True)
1243
1244     # Constraining to axes
1245     kmi = km.keymap_items.new_modal('AXIS_X', 'X', 'CLICK')
1246     kmi = km.keymap_items.new_modal('AXIS_Y', 'Y', 'CLICK')
1247     kmi = km.keymap_items.new_modal('AXIS_Z', 'Z', 'CLICK')
1248     kmi = km.keymap_items.new_modal('PLANE_X', 'X', 'CLICK', shift=True)
1249     kmi = km.keymap_items.new_modal('PLANE_Y', 'Y', 'CLICK', shift=True)
1250     kmi = km.keymap_items.new_modal('PLANE_Z', 'Z', 'CLICK', shift=True)
1251
1252     # ???
1253     #kmi = km.keymap_items.new_modal('TRANSLATE', 'G', 'CLICK')
1254     #kmi = km.keymap_items.new_modal('ROTATE', 'R', 'CLICK')
1255     #kmi = km.keymap_items.new_modal('RESIZE', 'S', 'CLICK')
1256
1257
1258 wm = bpy.context.window_manager
1259 kc = wm.keyconfigs.new('Blender 2012 (experimental!)')
1260
1261 clear_keymap(kc)
1262
1263 MapAdd_Window(kc)
1264 MapAdd_Screen(kc)
1265
1266 MapAdd_View2D(kc)
1267
1268 MapAdd_View3D_Global(kc)
1269 MapAdd_View3D_Object_Nonmodal(kc)
1270 MapAdd_View3D_ObjectMode(kc)
1271 MapAdd_View3D_MeshEditMode(kc)
1272
1273 MapAdd_ModalStandard(kc)
1274 MapAdd_ModalTransform(kc)
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287