1
""" An experimental new keymap for Blender.
6
###############################################################
7
# Some configuration variables to toggle various ideas on/off #
8
###############################################################
9
DEVELOPER_HOTKEYS = False # Weird hotkeys that only developers use
11
WINDOW_TYPE_SWITCHING = False # Shift-f# hotkeys for switching window types
13
SUBSURF_RELATIVE = True # Make subsurf hotkeys work by relative
14
# shifting instead of absolute setting
16
MAYA_STYLE_MANIPULATORS = False # Maya-style "QWER" hotkeys for manipulators
21
###############################
22
# Custom operators/menus/etc. #
23
###############################
25
class ShiftSubsurfLevel(bpy.types.Operator):
26
''' Shifts the subsurf level of the selected objects up or
27
down by the given amount. Has maximum limit, to avoid
28
going crazy and running out of RAM.
30
bl_idname = "object.shift_subsurf_level"
31
bl_label = "Shift Subsurf Level"
33
delta = bpy.props.IntProperty(name="Delta", description="Amount to increase/decrease the subsurf level.", default=1)
34
min = bpy.props.IntProperty(name="Minimum", description="The lowest subsurf level to shift to.", default=0)
35
max = bpy.props.IntProperty(name="Maximum", description="The highest subsurf level to shift to.", default=4)
38
def poll(cls, context):
39
return context.active_object is not None
41
def execute(self, context):
42
for obj in context.selected_objects:
43
# Find the last subsurf modifier in the stack
45
for mod in obj.modifiers:
46
if mod.type == "SUBSURF":
49
# Add a subsurf modifier if necessary
50
if not m and self.delta > 0:
51
m = obj.modifiers.new(name="Subsurf", type='SUBSURF')
54
# Adjust it's subsurf level
57
if (m.levels + self.delta) <= self.max:
58
m.levels += self.delta
60
if (m.levels + self.delta) >= self.min:
61
m.levels += self.delta
63
bpy.utils.register_class(ShiftSubsurfLevel)
66
class SetManipulator(bpy.types.Operator):
67
'''Set's the manipulator mode.'''
68
bl_idname = "view3d.manipulator_set"
69
bl_label = "Set Manipulator"
70
mode = bpy.props.EnumProperty(items=[("NONE", "None", ""),
71
("TRANSLATE", "Translate", ""),
72
("ROTATE", "Rotate", ""),
73
("SCALE", "Scale", "")],
76
def execute(self, context):
77
if self.mode == "NONE":
78
context.space_data.show_manipulator = False
79
elif self.mode == "TRANSLATE":
80
context.space_data.show_manipulator = True
81
context.space_data.use_manipulator_translate = True
82
context.space_data.use_manipulator_rotate = False
83
context.space_data.use_manipulator_scale = False
84
elif self.mode == "ROTATE":
85
context.space_data.show_manipulator = True
86
context.space_data.use_manipulator_translate = False
87
context.space_data.use_manipulator_rotate = True
88
context.space_data.use_manipulator_scale = False
89
elif self.mode == "SCALE":
90
context.space_data.show_manipulator = True
91
context.space_data.use_manipulator_translate = False
92
context.space_data.use_manipulator_rotate = False
93
context.space_data.use_manipulator_scale = True
96
bpy.utils.register_class(SetManipulator)
99
class ModeSwitchMenu(bpy.types.Menu):
100
""" A menu for switching between object modes.
102
bl_idname = "OBJECT_MT_mode_switch_menu"
103
bl_label = "Switch Mode"
105
def draw(self, context):
107
layout.operator_enum("object.mode_set", "mode")
109
bpy.utils.register_class(ModeSwitchMenu)
111
bpy.ops.object.mode_set(mode='OBJECT', toggle=False) # XXX, WHY IS THE KEYMAP DOING THIS? - campbell
118
######################################################################
119
######################################################################
120
############### KEYMAP BEGINS ########################################
121
######################################################################
122
######################################################################
123
wm = bpy.context.window_manager
124
kc = wm.keyconfigs.new('Blender 2012 (experimental!)')
130
km = kc.keymaps.new('Window', space_type='EMPTY', region_type='WINDOW', modal=False)
135
kmi = km.keymap_items.new('wm.quit_blender', 'Q', 'PRESS', ctrl=True)
137
#----------------------
138
# Operator search menu
139
#----------------------
140
kmi = km.keymap_items.new('wm.search_menu', 'TAB', 'PRESS')
146
kmi = km.keymap_items.new('wm.read_homefile', 'N', 'PRESS', ctrl=True)
147
kmi = km.keymap_items.new('wm.save_homefile', 'U', 'PRESS', ctrl=True)
148
kmi = km.keymap_items.new('wm.open_mainfile', 'O', 'PRESS', ctrl=True)
149
kmi = km.keymap_items.new('wm.link_append', 'O', 'PRESS', ctrl=True, alt=True)
152
kmi = km.keymap_items.new('wm.save_mainfile', 'S', 'PRESS', ctrl=True)
153
kmi = km.keymap_items.new('wm.save_as_mainfile', 'S', 'PRESS', shift=True, ctrl=True)
158
if WINDOW_TYPE_SWITCHING:
159
kmi = km.keymap_items.new('wm.context_set_enum', 'F2', 'PRESS', shift=True)
160
kmi.properties.data_path = 'area.type'
161
kmi.properties.value = 'LOGIC_EDITOR'
162
kmi = km.keymap_items.new('wm.context_set_enum', 'F3', 'PRESS', shift=True)
163
kmi.properties.data_path = 'area.type'
164
kmi.properties.value = 'NODE_EDITOR'
165
kmi = km.keymap_items.new('wm.context_set_enum', 'F4', 'PRESS', shift=True)
166
kmi.properties.data_path = 'area.type'
167
kmi.properties.value = 'CONSOLE'
168
kmi = km.keymap_items.new('wm.context_set_enum', 'F5', 'PRESS', shift=True)
169
kmi.properties.data_path = 'area.type'
170
kmi.properties.value = 'VIEW_3D'
171
kmi = km.keymap_items.new('wm.context_set_enum', 'F6', 'PRESS', shift=True)
172
kmi.properties.data_path = 'area.type'
173
kmi.properties.value = 'GRAPH_EDITOR'
174
kmi = km.keymap_items.new('wm.context_set_enum', 'F7', 'PRESS', shift=True)
175
kmi.properties.data_path = 'area.type'
176
kmi.properties.value = 'PROPERTIES'
177
kmi = km.keymap_items.new('wm.context_set_enum', 'F8', 'PRESS', shift=True)
178
kmi.properties.data_path = 'area.type'
179
kmi.properties.value = 'SEQUENCE_EDITOR'
180
kmi = km.keymap_items.new('wm.context_set_enum', 'F9', 'PRESS', shift=True)
181
kmi.properties.data_path = 'area.type'
182
kmi.properties.value = 'OUTLINER'
183
kmi = km.keymap_items.new('wm.context_set_enum', 'F10', 'PRESS', shift=True)
184
kmi.properties.data_path = 'area.type'
185
kmi.properties.value = 'IMAGE_EDITOR'
186
kmi = km.keymap_items.new('wm.context_set_enum', 'F11', 'PRESS', shift=True)
187
kmi.properties.data_path = 'area.type'
188
kmi.properties.value = 'TEXT_EDITOR'
189
kmi = km.keymap_items.new('wm.context_set_enum', 'F12', 'PRESS', shift=True)
190
kmi.properties.data_path = 'area.type'
191
kmi.properties.value = 'DOPESHEET_EDITOR'
196
kmi = km.keymap_items.new('wm.call_menu', 'NDOF_BUTTON_MENU', 'PRESS')
197
kmi.properties.name = 'USERPREF_MT_ndof_settings'
198
kmi = km.keymap_items.new('wm.ndof_sensitivity_change', 'NDOF_BUTTON_PLUS', 'PRESS')
199
kmi.properties.decrease = False
200
kmi.properties.fast = False
201
kmi = km.keymap_items.new('wm.ndof_sensitivity_change', 'NDOF_BUTTON_MINUS', 'PRESS')
202
kmi.properties.decrease = True
203
kmi.properties.fast = False
204
kmi = km.keymap_items.new('wm.ndof_sensitivity_change', 'NDOF_BUTTON_PLUS', 'PRESS', shift=True)
205
kmi.properties.decrease = False
206
kmi.properties.fast = True
207
kmi = km.keymap_items.new('wm.ndof_sensitivity_change', 'NDOF_BUTTON_MINUS', 'PRESS', shift=True)
208
kmi.properties.decrease = True
209
kmi.properties.fast = True
214
kmi = km.keymap_items.new('wm.window_fullscreen_toggle', 'F11', 'PRESS', alt=True)
216
#-----------------------
217
# Development/debugging
218
#-----------------------
219
if DEVELOPER_HOTKEYS:
220
kmi = km.keymap_items.new('wm.redraw_timer', 'T', 'PRESS', ctrl=True, alt=True)
221
kmi = km.keymap_items.new('wm.debug_menu', 'D', 'PRESS', ctrl=True, alt=True)
226
kmi = km.keymap_items.new('info.reports_display_update', 'TIMER', 'ANY', any=True)
234
km = kc.keymaps.new('3D View', space_type='VIEW_3D', region_type='WINDOW', modal=False)
240
kmi = km.keymap_items.new('view3d.rotate', 'MOUSEROTATE', 'ANY')
241
kmi = km.keymap_items.new('view3d.smoothview', 'TIMER1', 'ANY', any=True)
244
kmi = km.keymap_items.new('view3d.view_persportho', 'NUMPAD_5', 'PRESS')
247
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_0', 'PRESS')
248
kmi.properties.type = 'CAMERA'
251
kmi = km.keymap_items.new('view3d.rotate', 'MIDDLEMOUSE', 'PRESS')
252
kmi = km.keymap_items.new('view3d.move', 'MIDDLEMOUSE', 'PRESS', shift=True)
253
kmi = km.keymap_items.new('view3d.zoom', 'MIDDLEMOUSE', 'PRESS', ctrl=True)
254
kmi = km.keymap_items.new('view3d.dolly', 'MIDDLEMOUSE', 'PRESS', shift=True, ctrl=True)
256
# Basics with mouse wheel
257
kmi = km.keymap_items.new('view3d.zoom', 'WHEELINMOUSE', 'PRESS')
258
kmi.properties.delta = 1
259
kmi = km.keymap_items.new('view3d.zoom', 'WHEELOUTMOUSE', 'PRESS')
260
kmi.properties.delta = -1
261
kmi = km.keymap_items.new('view3d.view_pan', 'WHEELUPMOUSE', 'PRESS', ctrl=True)
262
kmi.properties.type = 'PANRIGHT'
263
kmi = km.keymap_items.new('view3d.view_pan', 'WHEELDOWNMOUSE', 'PRESS', ctrl=True)
264
kmi.properties.type = 'PANLEFT'
265
kmi = km.keymap_items.new('view3d.view_pan', 'WHEELUPMOUSE', 'PRESS', shift=True)
266
kmi.properties.type = 'PANUP'
267
kmi = km.keymap_items.new('view3d.view_pan', 'WHEELDOWNMOUSE', 'PRESS', shift=True)
268
kmi.properties.type = 'PANDOWN'
269
kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELUPMOUSE', 'PRESS', ctrl=True, alt=True)
270
kmi.properties.type = 'ORBITLEFT'
271
kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELDOWNMOUSE', 'PRESS', ctrl=True, alt=True)
272
kmi.properties.type = 'ORBITRIGHT'
273
kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELUPMOUSE', 'PRESS', shift=True, alt=True)
274
kmi.properties.type = 'ORBITUP'
275
kmi = km.keymap_items.new('view3d.view_orbit', 'WHEELDOWNMOUSE', 'PRESS', shift=True, alt=True)
276
kmi.properties.type = 'ORBITDOWN'
278
# Basics with trackpad
279
kmi = km.keymap_items.new('view3d.rotate', 'TRACKPADPAN', 'ANY', alt=True)
280
kmi = km.keymap_items.new('view3d.move', 'TRACKPADPAN', 'ANY')
281
kmi = km.keymap_items.new('view3d.zoom', 'TRACKPADZOOM', 'ANY')
284
kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_8', 'PRESS')
285
kmi.properties.type = 'ORBITUP'
286
kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_2', 'PRESS')
287
kmi.properties.type = 'ORBITDOWN'
288
kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_4', 'PRESS')
289
kmi.properties.type = 'ORBITLEFT'
290
kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_6', 'PRESS')
291
kmi.properties.type = 'ORBITRIGHT'
292
kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_8', 'PRESS', ctrl=True)
293
kmi.properties.type = 'PANUP'
294
kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_2', 'PRESS', ctrl=True)
295
kmi.properties.type = 'PANDOWN'
296
kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_4', 'PRESS', ctrl=True)
297
kmi.properties.type = 'PANLEFT'
298
kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_6', 'PRESS', ctrl=True)
299
kmi.properties.type = 'PANRIGHT'
300
kmi = km.keymap_items.new('view3d.zoom', 'NUMPAD_PLUS', 'PRESS')
301
kmi.properties.delta = 1
302
kmi = km.keymap_items.new('view3d.zoom', 'NUMPAD_MINUS', 'PRESS')
303
kmi.properties.delta = -1
305
# Zoom in/out alternatives
306
kmi = km.keymap_items.new('view3d.zoom', 'EQUAL', 'PRESS', ctrl=True)
307
kmi.properties.delta = 1
308
kmi = km.keymap_items.new('view3d.zoom', 'MINUS', 'PRESS', ctrl=True)
309
kmi.properties.delta = -1
311
# Front/Right/Top/Back/Left/Bottom
312
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'PRESS')
313
kmi.properties.type = 'FRONT'
314
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'PRESS')
315
kmi.properties.type = 'RIGHT'
316
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'PRESS')
317
kmi.properties.type = 'TOP'
318
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'PRESS', ctrl=True)
319
kmi.properties.type = 'BACK'
320
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'PRESS', ctrl=True)
321
kmi.properties.type = 'LEFT'
322
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'PRESS', ctrl=True)
323
kmi.properties.type = 'BOTTOM'
325
# Selection-aligned Front/Right/Top/Back/Left/Bottom
326
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'PRESS', shift=True)
327
kmi.properties.type = 'FRONT'
328
kmi.properties.align_active = True
329
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'PRESS', shift=True)
330
kmi.properties.type = 'RIGHT'
331
kmi.properties.align_active = True
332
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'PRESS', shift=True)
333
kmi.properties.type = 'TOP'
334
kmi.properties.align_active = True
335
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'PRESS', shift=True, ctrl=True)
336
kmi.properties.type = 'BACK'
337
kmi.properties.align_active = True
338
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'PRESS', shift=True, ctrl=True)
339
kmi.properties.type = 'LEFT'
340
kmi.properties.align_active = True
341
kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'PRESS', shift=True, ctrl=True)
342
kmi.properties.type = 'BOTTOM'
343
kmi.properties.align_active = True
346
kmi = km.keymap_items.new('view3d.ndof_orbit', 'NDOF_BUTTON_MENU', 'ANY')
347
kmi = km.keymap_items.new('view3d.ndof_pan', 'NDOF_BUTTON_MENU', 'ANY', shift=True)
348
kmi = km.keymap_items.new('view3d.view_selected', 'NDOF_BUTTON_FIT', 'PRESS')
349
kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_FRONT', 'PRESS')
350
kmi.properties.type = 'FRONT'
351
kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_BACK', 'PRESS')
352
kmi.properties.type = 'BACK'
353
kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_LEFT', 'PRESS')
354
kmi.properties.type = 'LEFT'
355
kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_RIGHT', 'PRESS')
356
kmi.properties.type = 'RIGHT'
357
kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_TOP', 'PRESS')
358
kmi.properties.type = 'TOP'
359
kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_BOTTOM', 'PRESS')
360
kmi.properties.type = 'BOTTOM'
361
kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_FRONT', 'PRESS', shift=True)
362
kmi.properties.type = 'FRONT'
363
kmi.properties.align_active = True
364
kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_RIGHT', 'PRESS', shift=True)
365
kmi.properties.type = 'RIGHT'
366
kmi.properties.align_active = True
367
kmi = km.keymap_items.new('view3d.viewnumpad', 'NDOF_BUTTON_TOP', 'PRESS', shift=True)
368
kmi.properties.type = 'TOP'
369
kmi.properties.align_active = True
372
kmi = km.keymap_items.new('view3d.fly', 'F', 'PRESS', shift=True)
375
kmi = km.keymap_items.new('view3d.view_selected', 'NUMPAD_PERIOD', 'PRESS')
376
kmi = km.keymap_items.new('view3d.view_center_cursor', 'NUMPAD_PERIOD', 'PRESS', ctrl=True)
377
kmi = km.keymap_items.new('view3d.zoom_camera_1_to_1', 'NUMPAD_ENTER', 'PRESS', shift=True)
378
kmi = km.keymap_items.new('view3d.view_center_camera', 'HOME', 'PRESS')
379
kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'PRESS')
380
kmi.properties.center = False
381
kmi = km.keymap_items.new('view3d.view_all', 'C', 'PRESS', shift=True)
382
kmi.properties.center = True
388
kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'PRESS')
389
kmi.properties.extend = False
390
kmi.properties.center = False
391
kmi.properties.enumerate = False
392
kmi.properties.object = False
393
kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'PRESS', shift=True)
394
kmi.properties.extend = True
395
kmi.properties.center = False
396
kmi.properties.enumerate = False
397
kmi.properties.object = False
398
kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'PRESS', ctrl=True)
399
kmi.properties.extend = False
400
kmi.properties.center = True
401
kmi.properties.enumerate = False
402
kmi.properties.object = True
403
kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'PRESS', alt=True)
404
kmi.properties.extend = False
405
kmi.properties.center = False
406
kmi.properties.enumerate = True
407
kmi.properties.object = False
408
kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'PRESS', shift=True, ctrl=True)
409
kmi.properties.extend = True
410
kmi.properties.center = True
411
kmi.properties.enumerate = False
412
kmi.properties.object = False
413
kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'PRESS', ctrl=True, alt=True)
414
kmi.properties.extend = False
415
kmi.properties.center = True
416
kmi.properties.enumerate = True
417
kmi.properties.object = False
418
kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'PRESS', shift=True, alt=True)
419
kmi.properties.extend = True
420
kmi.properties.center = False
421
kmi.properties.enumerate = True
422
kmi.properties.object = False
423
kmi = km.keymap_items.new('view3d.select', 'SELECTMOUSE', 'PRESS', shift=True, ctrl=True, alt=True)
424
kmi.properties.extend = True
425
kmi.properties.center = True
426
kmi.properties.enumerate = True
427
kmi.properties.object = False
430
kmi = km.keymap_items.new('view3d.select_border', 'B', 'PRESS')
433
kmi = km.keymap_items.new('view3d.select_lasso', 'EVT_TWEAK_A', 'ANY', ctrl=True)
434
kmi.properties.deselect = False
435
kmi = km.keymap_items.new('view3d.select_lasso', 'EVT_TWEAK_A', 'ANY', shift=True, ctrl=True)
436
kmi.properties.deselect = True
439
kmi = km.keymap_items.new('view3d.select_circle', 'C', 'PRESS')
444
kmi = km.keymap_items.new('view3d.manipulator', 'LEFTMOUSE', 'PRESS', any=True)
445
kmi.properties.release_confirm = True
447
if MAYA_STYLE_MANIPULATORS:
448
kmi = km.keymap_items.new('view3d.manipulator_set', 'Q', 'PRESS')
449
kmi.properties.mode = 'NONE'
450
kmi = km.keymap_items.new('view3d.manipulator_set', 'W', 'PRESS')
451
kmi.properties.mode = 'TRANSLATE'
452
kmi = km.keymap_items.new('view3d.manipulator_set', 'E', 'PRESS')
453
kmi.properties.mode = 'ROTATE'
454
kmi = km.keymap_items.new('view3d.manipulator_set', 'R', 'PRESS')
455
kmi.properties.mode = 'SCALE'
457
kmi = km.keymap_items.new('wm.context_toggle', 'SPACE', 'PRESS', ctrl=True)
458
kmi.properties.data_path = 'space_data.show_manipulator'
460
#-----------------------
461
# Transforms via hotkey
462
#-----------------------
464
kmi = km.keymap_items.new('transform.translate', 'G', 'PRESS')
465
kmi = km.keymap_items.new('transform.translate', 'EVT_TWEAK_S', 'ANY')
466
kmi = km.keymap_items.new('transform.rotate', 'R', 'PRESS')
467
kmi = km.keymap_items.new('transform.resize', 'S', 'PRESS')
469
# Mirror, shear, warp, to-sphere
470
kmi = km.keymap_items.new('transform.mirror', 'M', 'PRESS', ctrl=True)
471
kmi = km.keymap_items.new('transform.shear', 'S', 'PRESS', shift=True, ctrl=True, alt=True)
472
kmi = km.keymap_items.new('transform.warp', 'W', 'PRESS', shift=True)
473
kmi = km.keymap_items.new('transform.tosphere', 'S', 'PRESS', shift=True, alt=True)
475
#-------------------------
476
# Transform texture space
477
#-------------------------
478
kmi = km.keymap_items.new('transform.translate', 'T', 'PRESS', shift=True)
479
kmi.properties.texture_space = True
480
kmi = km.keymap_items.new('transform.resize', 'T', 'PRESS', shift=True, alt=True)
481
kmi.properties.texture_space = True
486
kmi = km.keymap_items.new('transform.select_orientation', 'SPACE', 'PRESS', alt=True)
487
kmi = km.keymap_items.new('transform.create_orientation', 'SPACE', 'PRESS', ctrl=True, alt=True)
488
kmi.properties.use = True
493
kmi = km.keymap_items.new('wm.context_toggle', 'TAB', 'PRESS', shift=True)
494
kmi.properties.data_path = 'tool_settings.use_snap'
495
kmi = km.keymap_items.new('transform.snap_type', 'TAB', 'PRESS', shift=True, ctrl=True)
500
kmi = km.keymap_items.new('wm.call_menu', 'S', 'PRESS', shift=True)
501
kmi.properties.name = 'VIEW3D_MT_snap'
506
kmi = km.keymap_items.new('view3d.cursor3d', 'ACTIONMOUSE', 'PRESS')
511
kmi = km.keymap_items.new('view3d.localview', 'NUMPAD_SLASH', 'PRESS')
516
kmi = km.keymap_items.new('view3d.layers', 'ACCENT_GRAVE', 'PRESS')
517
kmi.properties.nr = 0
518
kmi = km.keymap_items.new('view3d.layers', 'ONE', 'PRESS', any=True)
519
kmi.properties.nr = 1
520
kmi = km.keymap_items.new('view3d.layers', 'TWO', 'PRESS', any=True)
521
kmi.properties.nr = 2
522
kmi = km.keymap_items.new('view3d.layers', 'THREE', 'PRESS', any=True)
523
kmi.properties.nr = 3
524
kmi = km.keymap_items.new('view3d.layers', 'FOUR', 'PRESS', any=True)
525
kmi.properties.nr = 4
526
kmi = km.keymap_items.new('view3d.layers', 'FIVE', 'PRESS', any=True)
527
kmi.properties.nr = 5
528
kmi = km.keymap_items.new('view3d.layers', 'SIX', 'PRESS', any=True)
529
kmi.properties.nr = 6
530
kmi = km.keymap_items.new('view3d.layers', 'SEVEN', 'PRESS', any=True)
531
kmi.properties.nr = 7
532
kmi = km.keymap_items.new('view3d.layers', 'EIGHT', 'PRESS', any=True)
533
kmi.properties.nr = 8
534
kmi = km.keymap_items.new('view3d.layers', 'NINE', 'PRESS', any=True)
535
kmi.properties.nr = 9
536
kmi = km.keymap_items.new('view3d.layers', 'ZERO', 'PRESS', any=True)
537
kmi.properties.nr = 10
542
kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'PRESS')
543
kmi.properties.data_path = 'space_data.viewport_shade'
544
kmi.properties.value_1 = 'SOLID'
545
kmi.properties.value_2 = 'WIREFRAME'
546
kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'PRESS', alt=True)
547
kmi.properties.data_path = 'space_data.viewport_shade'
548
kmi.properties.value_1 = 'TEXTURED'
549
kmi.properties.value_2 = 'SOLID'
554
kmi = km.keymap_items.new('wm.context_set_enum', 'COMMA', 'PRESS')
555
kmi.properties.data_path = 'space_data.pivot_point'
556
kmi.properties.value = 'BOUNDING_BOX_CENTER'
557
kmi = km.keymap_items.new('wm.context_set_enum', 'COMMA', 'PRESS', ctrl=True)
558
kmi.properties.data_path = 'space_data.pivot_point'
559
kmi.properties.value = 'MEDIAN_POINT'
560
kmi = km.keymap_items.new('wm.context_toggle', 'COMMA', 'PRESS', alt=True)
561
kmi.properties.data_path = 'space_data.use_pivot_point_align'
562
kmi = km.keymap_items.new('wm.context_set_enum', 'PERIOD', 'PRESS')
563
kmi.properties.data_path = 'space_data.pivot_point'
564
kmi.properties.value = 'CURSOR'
565
kmi = km.keymap_items.new('wm.context_set_enum', 'PERIOD', 'PRESS', ctrl=True)
566
kmi.properties.data_path = 'space_data.pivot_point'
567
kmi.properties.value = 'INDIVIDUAL_ORIGINS'
568
kmi = km.keymap_items.new('wm.context_set_enum', 'PERIOD', 'PRESS', alt=True)
569
kmi.properties.data_path = 'space_data.pivot_point'
570
kmi.properties.value = 'ACTIVE_ELEMENT'
575
kmi = km.keymap_items.new('view3d.clip_border', 'B', 'PRESS', alt=True)
576
kmi = km.keymap_items.new('view3d.zoom_border', 'B', 'PRESS', shift=True)
577
kmi = km.keymap_items.new('view3d.render_border', 'B', 'PRESS', shift=True)
578
kmi = km.keymap_items.new('view3d.camera_to_view', 'NUMPAD_0', 'PRESS', ctrl=True, alt=True)
579
kmi = km.keymap_items.new('view3d.object_as_camera', 'NUMPAD_0', 'PRESS', ctrl=True)
583
#######################
584
# Transform Modal Map #
585
#######################
586
km = kc.keymaps.new('Transform Modal Map', space_type='EMPTY', region_type='WINDOW', modal=True)
589
kmi = km.keymap_items.new_modal('CANCEL', 'ESC', 'PRESS', any=True)
592
kmi = km.keymap_items.new_modal('CONFIRM', 'LEFTMOUSE', 'PRESS', any=True)
593
kmi = km.keymap_items.new_modal('CONFIRM', 'RET', 'PRESS', any=True)
594
kmi = km.keymap_items.new_modal('CONFIRM', 'NUMPAD_ENTER', 'PRESS', any=True)
597
kmi = km.keymap_items.new_modal('SNAP_TOGGLE', 'TAB', 'PRESS', shift=True)
598
kmi = km.keymap_items.new_modal('SNAP_INV_ON', 'LEFT_CTRL', 'PRESS', any=True)
599
kmi = km.keymap_items.new_modal('SNAP_INV_OFF', 'LEFT_CTRL', 'RELEASE', any=True)
600
kmi = km.keymap_items.new_modal('SNAP_INV_ON', 'RIGHT_CTRL', 'PRESS', any=True)
601
kmi = km.keymap_items.new_modal('SNAP_INV_OFF', 'RIGHT_CTRL', 'RELEASE', any=True)
602
kmi = km.keymap_items.new_modal('ADD_SNAP', 'A', 'PRESS')
603
kmi = km.keymap_items.new_modal('REMOVE_SNAP', 'A', 'PRESS', alt=True)
605
# Proportional edit adjusting
606
kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_UP', 'PAGE_UP', 'PRESS')
607
kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_DOWN', 'PAGE_DOWN', 'PRESS')
608
kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_UP', 'WHEELDOWNMOUSE', 'PRESS')
609
kmi = km.keymap_items.new_modal('PROPORTIONAL_SIZE_DOWN', 'WHEELUPMOUSE', 'PRESS')
612
kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_UP', 'PAGE_UP', 'PRESS', shift=True)
613
kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_DOWN', 'PAGE_DOWN', 'PRESS', shift=True)
614
kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_UP', 'WHEELDOWNMOUSE', 'PRESS', shift=True)
615
kmi = km.keymap_items.new_modal('AUTOIK_CHAIN_LEN_DOWN', 'WHEELUPMOUSE', 'PRESS', shift=True)
617
# Constraining to axes
618
kmi = km.keymap_items.new_modal('AXIS_X', 'X', 'PRESS')
619
kmi = km.keymap_items.new_modal('AXIS_Y', 'Y', 'PRESS')
620
kmi = km.keymap_items.new_modal('AXIS_Z', 'Z', 'PRESS')
621
kmi = km.keymap_items.new_modal('PLANE_X', 'X', 'PRESS', shift=True)
622
kmi = km.keymap_items.new_modal('PLANE_Y', 'Y', 'PRESS', shift=True)
623
kmi = km.keymap_items.new_modal('PLANE_Z', 'Z', 'PRESS', shift=True)
626
#kmi = km.keymap_items.new_modal('TRANSLATE', 'G', 'PRESS')
627
#kmi = km.keymap_items.new_modal('ROTATE', 'R', 'PRESS')
628
#kmi = km.keymap_items.new_modal('RESIZE', 'S', 'PRESS')
635
km = kc.keymaps.new('Object Non-modal', space_type='EMPTY', region_type='WINDOW', modal=False)
638
#-----------------------
639
# Object mode switching
640
#-----------------------
641
kmi = km.keymap_items.new('wm.call_menu', 'SPACE', 'PRESS')
642
kmi.properties.name = 'OBJECT_MT_mode_switch_menu'
649
km = kc.keymaps.new('Mesh', space_type='EMPTY', region_type='WINDOW', modal=False)
651
#---------------------------------
652
# Vertex/Edge/Face mode switching
653
#---------------------------------
654
kmi = km.keymap_items.new('wm.call_menu', 'TAB', 'PRESS', ctrl=True)
655
kmi.properties.name = 'VIEW3D_MT_edit_mesh_select_mode'
660
kmi = km.keymap_items.new('mesh.loop_select', 'SELECTMOUSE', 'PRESS', alt=True)
661
kmi.properties.extend = False
662
kmi = km.keymap_items.new('mesh.loop_select', 'SELECTMOUSE', 'PRESS', shift=True, alt=True)
663
kmi.properties.extend = True
664
kmi = km.keymap_items.new('mesh.edgering_select', 'SELECTMOUSE', 'PRESS', ctrl=True, alt=True)
665
kmi.properties.extend = False
666
kmi = km.keymap_items.new('mesh.edgering_select', 'SELECTMOUSE', 'PRESS', shift=True, ctrl=True, alt=True)
667
kmi.properties.extend = True
668
kmi = km.keymap_items.new('mesh.select_shortest_path', 'SELECTMOUSE', 'PRESS', ctrl=True)
669
kmi = km.keymap_items.new('mesh.select_all', 'A', 'PRESS')
670
kmi.properties.action = 'TOGGLE'
671
kmi = km.keymap_items.new('mesh.select_all', 'I', 'PRESS', ctrl=True)
672
kmi.properties.action = 'INVERT'
673
kmi = km.keymap_items.new('mesh.select_more', 'NUMPAD_PLUS', 'PRESS', ctrl=True)
674
kmi = km.keymap_items.new('mesh.select_less', 'NUMPAD_MINUS', 'PRESS', ctrl=True)
675
kmi = km.keymap_items.new('mesh.select_non_manifold', 'M', 'PRESS', shift=True, ctrl=True, alt=True)
676
kmi = km.keymap_items.new('mesh.select_linked', 'L', 'PRESS', ctrl=True)
677
kmi = km.keymap_items.new('mesh.select_linked_pick', 'L', 'PRESS')
678
kmi.properties.deselect = False
679
kmi = km.keymap_items.new('mesh.select_linked_pick', 'L', 'PRESS', shift=True)
680
kmi.properties.deselect = True
681
kmi = km.keymap_items.new('mesh.faces_select_linked_flat', 'F', 'PRESS', shift=True, ctrl=True, alt=True)
682
kmi = km.keymap_items.new('mesh.select_similar', 'G', 'PRESS', shift=True)
684
#----------------------
685
# Proportional editing
686
#----------------------
687
kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS')
688
kmi.properties.data_path = 'tool_settings.proportional_edit'
689
kmi.properties.value_1 = 'DISABLED'
690
kmi.properties.value_2 = 'ENABLED'
691
kmi = km.keymap_items.new('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
692
kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
693
kmi = km.keymap_items.new('wm.context_toggle_enum', 'O', 'PRESS', alt=True)
694
kmi.properties.data_path = 'tool_settings.proportional_edit'
695
kmi.properties.value_1 = 'DISABLED'
696
kmi.properties.value_2 = 'CONNECTED'
701
kmi = km.keymap_items.new('mesh.hide', 'H', 'PRESS')
702
kmi.properties.unselected = False
703
kmi = km.keymap_items.new('mesh.hide', 'H', 'PRESS', shift=True)
704
kmi.properties.unselected = True
705
kmi = km.keymap_items.new('mesh.reveal', 'H', 'PRESS', alt=True)
710
kmi = km.keymap_items.new('mesh.loopcut_slide', 'R', 'PRESS', ctrl=True)
711
kmi = km.keymap_items.new('mesh.knifetool', 'K', 'PRESS')
712
kmi = km.keymap_items.new('view3d.edit_mesh_extrude_move_normal', 'E', 'PRESS')
713
kmi = km.keymap_items.new('wm.call_menu', 'E', 'PRESS', alt=True)
714
kmi.properties.name = 'VIEW3D_MT_edit_mesh_extrude'
715
kmi = km.keymap_items.new('mesh.edge_face_add', 'F', 'PRESS')
716
kmi = km.keymap_items.new('mesh.vert_connect', 'J', 'PRESS')
717
kmi = km.keymap_items.new('mesh.spin', 'R', 'PRESS', alt=True)
718
kmi = km.keymap_items.new('mesh.fill', 'F', 'PRESS', alt=True)
719
kmi = km.keymap_items.new('mesh.beautify_fill', 'F', 'PRESS', shift=True, alt=True)
720
kmi = km.keymap_items.new('mesh.duplicate_move', 'D', 'PRESS', shift=True)
721
kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', shift=True)
722
kmi.properties.name = 'INFO_MT_mesh_add'
723
kmi = km.keymap_items.new('mesh.dupli_extrude_cursor', 'ACTIONMOUSE', 'CLICK', ctrl=True)
724
kmi.properties.rotate_source = True
725
kmi = km.keymap_items.new('mesh.dupli_extrude_cursor', 'ACTIONMOUSE', 'CLICK', shift=True, ctrl=True)
726
kmi.properties.rotate_source = False
731
kmi = km.keymap_items.new('wm.call_menu', 'X', 'PRESS')
732
kmi.properties.name = 'VIEW3D_MT_edit_mesh_delete'
733
kmi = km.keymap_items.new('wm.call_menu', 'DEL', 'PRESS')
734
kmi.properties.name = 'VIEW3D_MT_edit_mesh_delete'
739
kmi = km.keymap_items.new('mesh.rip_move', 'V', 'PRESS')
740
kmi = km.keymap_items.new('mesh.split', 'Y', 'PRESS')
741
kmi = km.keymap_items.new('mesh.separate', 'P', 'PRESS')
746
kmi = km.keymap_items.new('mesh.merge', 'M', 'PRESS', alt=True)
751
kmi = km.keymap_items.new('transform.shrink_fatten', 'S', 'PRESS', alt=True)
752
kmi = km.keymap_items.new('transform.edge_crease', 'E', 'PRESS', shift=True)
753
kmi = km.keymap_items.new('mesh.quads_convert_to_tris', 'T', 'PRESS', ctrl=True)
754
kmi = km.keymap_items.new('mesh.quads_convert_to_tris', 'T', 'PRESS', shift=True, ctrl=True)
755
kmi.properties.use_beauty = False
756
kmi = km.keymap_items.new('mesh.tris_convert_to_quads', 'J', 'PRESS', alt=True)
761
kmi = km.keymap_items.new('wm.call_menu', 'W', 'PRESS')
762
kmi.properties.name = 'VIEW3D_MT_edit_mesh_specials'
763
kmi = km.keymap_items.new('wm.call_menu', 'F', 'PRESS', ctrl=True)
764
kmi.properties.name = 'VIEW3D_MT_edit_mesh_faces'
765
kmi = km.keymap_items.new('wm.call_menu', 'E', 'PRESS', ctrl=True)
766
kmi.properties.name = 'VIEW3D_MT_edit_mesh_edges'
767
kmi = km.keymap_items.new('wm.call_menu', 'V', 'PRESS', ctrl=True)
768
kmi.properties.name = 'VIEW3D_MT_edit_mesh_vertices'
773
kmi = km.keymap_items.new('wm.call_menu', 'U', 'PRESS')
774
kmi.properties.name = 'VIEW3D_MT_uv_map'
779
kmi = km.keymap_items.new('mesh.normals_make_consistent', 'N', 'PRESS', ctrl=True)
780
kmi.properties.inside = False
781
kmi = km.keymap_items.new('mesh.normals_make_consistent', 'N', 'PRESS', shift=True, ctrl=True)
782
kmi.properties.inside = True
789
kmi = km.keymap_items.new('object.shift_subsurf_level', 'EQUAL', 'CLICK')
790
kmi.properties.delta = 1
791
kmi.properties.max = 4
792
kmi = km.keymap_items.new('object.shift_subsurf_level', 'MINUS', 'CLICK')
793
kmi.properties.delta = -1
794
kmi.properties.min = 0
796
kmi = km.keymap_items.new('object.subdivision_set', 'ZERO', 'PRESS', ctrl=True)
797
kmi.properties.level = 0
798
kmi = km.keymap_items.new('object.subdivision_set', 'ONE', 'PRESS', ctrl=True)
799
kmi.properties.level = 1
800
kmi = km.keymap_items.new('object.subdivision_set', 'TWO', 'PRESS', ctrl=True)
801
kmi.properties.level = 2
802
kmi = km.keymap_items.new('object.subdivision_set', 'THREE', 'PRESS', ctrl=True)
803
kmi.properties.level = 3
804
kmi = km.keymap_items.new('object.subdivision_set', 'FOUR', 'PRESS', ctrl=True)
805
kmi.properties.level = 4
806
kmi = km.keymap_items.new('object.subdivision_set', 'FIVE', 'PRESS', ctrl=True)
807
kmi.properties.level = 5
812
kmi = km.keymap_items.new('object.vertex_parent_set', 'P', 'PRESS', ctrl=True)
813
kmi = km.keymap_items.new('wm.call_menu', 'H', 'PRESS', ctrl=True)
814
kmi.properties.name = 'VIEW3D_MT_hook'
815
kmi = km.keymap_items.new('wm.call_menu', 'G', 'PRESS', ctrl=True)
816
kmi.properties.name = 'VIEW3D_MT_vertex_group'