|
Blender
V2.59
|
00001 /* 00002 * $Id: armature_ops.c 37987 2011-06-30 15:43:38Z campbellbarton $ 00003 * 00004 * ***** BEGIN GPL LICENSE BLOCK ***** 00005 * 00006 * This program is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU General Public License 00008 * as published by the Free Software Foundation; either version 2 00009 * of the License, or (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software Foundation, 00018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00019 * 00020 * The Original Code is Copyright (C) 2009 Blender Foundation. 00021 * All rights reserved. 00022 * 00023 * 00024 * Contributor(s): Blender Foundation 00025 * 00026 * ***** END GPL LICENSE BLOCK ***** 00027 */ 00028 00034 #include <stdlib.h> 00035 #include <math.h> 00036 00037 #include "BLO_sys_types.h" 00038 00039 #include "BLI_math.h" 00040 #include "BLI_blenlib.h" 00041 00042 00043 #include "RNA_access.h" 00044 00045 #include "WM_api.h" 00046 #include "WM_types.h" 00047 00048 #include "ED_armature.h" 00049 #include "ED_screen.h" 00050 #include "ED_transform.h" 00051 00052 #include "armature_intern.h" 00053 00054 /* ************************** registration **********************************/ 00055 00056 /* Both operators ARMATURE_OT_xxx and POSE_OT_xxx here */ 00057 void ED_operatortypes_armature(void) 00058 { 00059 /* EDIT ARMATURE */ 00060 WM_operatortype_append(ARMATURE_OT_bone_primitive_add); 00061 00062 WM_operatortype_append(ARMATURE_OT_align); 00063 WM_operatortype_append(ARMATURE_OT_calculate_roll); 00064 WM_operatortype_append(ARMATURE_OT_switch_direction); 00065 WM_operatortype_append(ARMATURE_OT_subdivide); 00066 00067 WM_operatortype_append(ARMATURE_OT_parent_set); 00068 WM_operatortype_append(ARMATURE_OT_parent_clear); 00069 00070 WM_operatortype_append(ARMATURE_OT_select_all); 00071 WM_operatortype_append(ARMATURE_OT_select_inverse); 00072 WM_operatortype_append(ARMATURE_OT_select_hierarchy); 00073 WM_operatortype_append(ARMATURE_OT_select_linked); 00074 00075 WM_operatortype_append(ARMATURE_OT_delete); 00076 WM_operatortype_append(ARMATURE_OT_duplicate); 00077 WM_operatortype_append(ARMATURE_OT_extrude); 00078 WM_operatortype_append(ARMATURE_OT_hide); 00079 WM_operatortype_append(ARMATURE_OT_reveal); 00080 WM_operatortype_append(ARMATURE_OT_click_extrude); 00081 WM_operatortype_append(ARMATURE_OT_fill); 00082 WM_operatortype_append(ARMATURE_OT_merge); 00083 WM_operatortype_append(ARMATURE_OT_separate); 00084 00085 WM_operatortype_append(ARMATURE_OT_autoside_names); 00086 WM_operatortype_append(ARMATURE_OT_flip_names); 00087 00088 WM_operatortype_append(ARMATURE_OT_layers_show_all); 00089 WM_operatortype_append(ARMATURE_OT_armature_layers); 00090 WM_operatortype_append(ARMATURE_OT_bone_layers); 00091 00092 /* SKETCH */ 00093 WM_operatortype_append(SKETCH_OT_gesture); 00094 WM_operatortype_append(SKETCH_OT_delete); 00095 WM_operatortype_append(SKETCH_OT_draw_stroke); 00096 WM_operatortype_append(SKETCH_OT_draw_preview); 00097 WM_operatortype_append(SKETCH_OT_finish_stroke); 00098 WM_operatortype_append(SKETCH_OT_cancel_stroke); 00099 WM_operatortype_append(SKETCH_OT_convert); 00100 WM_operatortype_append(SKETCH_OT_select); 00101 00102 /* POSE */ 00103 WM_operatortype_append(POSE_OT_hide); 00104 WM_operatortype_append(POSE_OT_reveal); 00105 00106 WM_operatortype_append(POSE_OT_armature_apply); 00107 WM_operatortype_append(POSE_OT_visual_transform_apply); 00108 00109 WM_operatortype_append(POSE_OT_rot_clear); 00110 WM_operatortype_append(POSE_OT_loc_clear); 00111 WM_operatortype_append(POSE_OT_scale_clear); 00112 WM_operatortype_append(POSE_OT_transforms_clear); 00113 00114 WM_operatortype_append(POSE_OT_copy); 00115 WM_operatortype_append(POSE_OT_paste); 00116 00117 WM_operatortype_append(POSE_OT_select_all); 00118 WM_operatortype_append(POSE_OT_select_inverse); 00119 00120 WM_operatortype_append(POSE_OT_select_parent); 00121 WM_operatortype_append(POSE_OT_select_hierarchy); 00122 WM_operatortype_append(POSE_OT_select_linked); 00123 WM_operatortype_append(POSE_OT_select_constraint_target); 00124 WM_operatortype_append(POSE_OT_select_grouped); 00125 WM_operatortype_append(POSE_OT_select_flip_active); 00126 00127 WM_operatortype_append(POSE_OT_group_add); 00128 WM_operatortype_append(POSE_OT_group_remove); 00129 WM_operatortype_append(POSE_OT_group_assign); 00130 WM_operatortype_append(POSE_OT_group_unassign); 00131 WM_operatortype_append(POSE_OT_group_select); 00132 WM_operatortype_append(POSE_OT_group_deselect); 00133 00134 WM_operatortype_append(POSE_OT_paths_calculate); 00135 WM_operatortype_append(POSE_OT_paths_clear); 00136 00137 WM_operatortype_append(POSE_OT_autoside_names); 00138 WM_operatortype_append(POSE_OT_flip_names); 00139 00140 WM_operatortype_append(POSE_OT_quaternions_flip); 00141 00142 WM_operatortype_append(POSE_OT_armature_layers); 00143 WM_operatortype_append(POSE_OT_bone_layers); 00144 00145 WM_operatortype_append(POSE_OT_propagate); 00146 00147 /* POSELIB */ 00148 WM_operatortype_append(POSELIB_OT_browse_interactive); 00149 WM_operatortype_append(POSELIB_OT_apply_pose); 00150 00151 WM_operatortype_append(POSELIB_OT_pose_add); 00152 WM_operatortype_append(POSELIB_OT_pose_remove); 00153 WM_operatortype_append(POSELIB_OT_pose_rename); 00154 00155 WM_operatortype_append(POSELIB_OT_new); 00156 WM_operatortype_append(POSELIB_OT_unlink); 00157 00158 WM_operatortype_append(POSELIB_OT_action_sanitise); 00159 00160 /* POSE SLIDING */ 00161 WM_operatortype_append(POSE_OT_push); 00162 WM_operatortype_append(POSE_OT_relax); 00163 WM_operatortype_append(POSE_OT_breakdown); 00164 } 00165 00166 void ED_operatormacros_armature(void) 00167 { 00168 wmOperatorType *ot; 00169 wmOperatorTypeMacro *otmacro; 00170 00171 ot= WM_operatortype_append_macro("ARMATURE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); 00172 if(ot) { 00173 WM_operatortype_macro_define(ot, "ARMATURE_OT_duplicate"); 00174 otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); 00175 RNA_enum_set(otmacro->ptr, "proportional", 0); 00176 } 00177 00178 ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_move", "Extrude", OPTYPE_UNDO|OPTYPE_REGISTER); 00179 if(ot) { 00180 otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude"); 00181 RNA_boolean_set(otmacro->ptr, "forked", 0); 00182 otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); 00183 RNA_enum_set(otmacro->ptr, "proportional", 0); 00184 } 00185 00186 // XXX would it be nicer to just be able to have standard extrude_move, but set the forked property separate? 00187 // that would require fixing a properties bug 19733 00188 ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_forked", "Extrude Forked", OPTYPE_UNDO|OPTYPE_REGISTER); 00189 if(ot) { 00190 otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude"); 00191 RNA_boolean_set(otmacro->ptr, "forked", 1); 00192 otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); 00193 RNA_enum_set(otmacro->ptr, "proportional", 0); 00194 } 00195 } 00196 00197 void ED_keymap_armature(wmKeyConfig *keyconf) 00198 { 00199 wmKeyMap *keymap; 00200 wmKeyMapItem *kmi; 00201 00202 /* Armature ------------------------ */ 00203 keymap= WM_keymap_find(keyconf, "Armature", 0, 0); 00204 keymap->poll= ED_operator_editarmature; 00205 00206 /* Armature -> Etch-A-Ton ------------------------ */ 00207 WM_keymap_add_item(keymap, "SKETCH_OT_delete", XKEY, KM_PRESS, 0, 0); 00208 WM_keymap_add_item(keymap, "SKETCH_OT_delete", DELKEY, KM_PRESS, 0, 0); 00209 WM_keymap_add_item(keymap, "SKETCH_OT_finish_stroke", RIGHTMOUSE, KM_PRESS, 0, 0); 00210 WM_keymap_add_item(keymap, "SKETCH_OT_cancel_stroke", ESCKEY, KM_PRESS, 0, 0); 00211 // Already part of view3d select 00212 //WM_keymap_add_item(keymap, "SKETCH_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); 00213 00214 /* sketch poll checks mode */ 00215 WM_keymap_add_item(keymap, "SKETCH_OT_gesture", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); 00216 WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", LEFTMOUSE, KM_PRESS, 0, 0); 00217 kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); 00218 RNA_boolean_set(kmi->ptr, "snap", 1); 00219 WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, 0, 0); 00220 kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, KM_CTRL, 0); 00221 RNA_boolean_set(kmi->ptr, "snap", 1); 00222 00223 /* only set in editmode armature, by space_view3d listener */ 00224 WM_keymap_add_item(keymap, "ARMATURE_OT_hide", HKEY, KM_PRESS, 0, 0); 00225 kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); 00226 RNA_boolean_set(kmi->ptr, "unselected", 1); 00227 WM_keymap_add_item(keymap, "ARMATURE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); 00228 WM_keymap_add_item(keymap, "ARMATURE_OT_align", AKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); 00229 WM_keymap_add_item(keymap, "ARMATURE_OT_calculate_roll", NKEY, KM_PRESS, KM_CTRL, 0); 00230 00231 WM_keymap_add_item(keymap, "ARMATURE_OT_switch_direction", FKEY, KM_PRESS, KM_ALT, 0); 00232 00233 WM_keymap_add_item(keymap, "ARMATURE_OT_bone_primitive_add", AKEY, KM_PRESS, KM_SHIFT, 0); 00234 00235 WM_keymap_add_item(keymap, "ARMATURE_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); 00236 WM_keymap_add_item(keymap, "ARMATURE_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0); 00237 00238 WM_keymap_add_item(keymap, "ARMATURE_OT_select_all", AKEY, KM_PRESS, 0, 0); 00239 WM_keymap_add_item(keymap, "ARMATURE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); 00240 00241 kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0); 00242 RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT); 00243 kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); 00244 RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT); 00245 RNA_boolean_set(kmi->ptr, "extend", 1); 00246 00247 kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, 0, 0); 00248 RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD); 00249 kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); 00250 RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD); 00251 RNA_boolean_set(kmi->ptr, "extend", 1); 00252 00253 WM_keymap_add_item(keymap, "ARMATURE_OT_select_linked", LKEY, KM_PRESS, 0, 0); 00254 00255 WM_keymap_add_item(keymap, "ARMATURE_OT_delete", XKEY, KM_PRESS, 0, 0); 00256 WM_keymap_add_item(keymap, "ARMATURE_OT_delete", DELKEY, KM_PRESS, 0, 0); 00257 WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); 00258 WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, 0, 0); 00259 WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_forked", EKEY, KM_PRESS, KM_SHIFT, 0); 00260 WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_CLICK, KM_CTRL, 0); 00261 WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0); 00262 WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0); 00263 00264 WM_keymap_add_item(keymap, "ARMATURE_OT_separate", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); 00265 00266 /* set flags */ 00267 WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_toggle", WKEY, KM_PRESS, KM_SHIFT, 0); 00268 WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); 00269 WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_disable", WKEY, KM_PRESS, KM_ALT, 0); 00270 00271 /* armature/bone layers */ 00272 WM_keymap_add_item(keymap, "ARMATURE_OT_layers_show_all", ACCENTGRAVEKEY, KM_PRESS, KM_CTRL, 0); 00273 WM_keymap_add_item(keymap, "ARMATURE_OT_armature_layers", MKEY, KM_PRESS, KM_SHIFT, 0); 00274 WM_keymap_add_item(keymap, "ARMATURE_OT_bone_layers", MKEY, KM_PRESS, 0, 0); 00275 00276 /* special transforms: */ 00277 /* 1) envelope/b-bone size */ 00278 kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); 00279 RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE); 00280 /* 2) set roll */ 00281 kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", RKEY, KM_PRESS, KM_CTRL, 0); 00282 RNA_enum_set(kmi->ptr, "mode", TFM_BONE_ROLL); 00283 00284 /* menus */ 00285 WM_keymap_add_menu(keymap, "VIEW3D_MT_armature_specials", WKEY, KM_PRESS, 0, 0); 00286 00287 /* Pose ------------------------ */ 00288 /* only set in posemode, by space_view3d listener */ 00289 keymap= WM_keymap_find(keyconf, "Pose", 0, 0); 00290 keymap->poll= ED_operator_posemode; 00291 00292 /* set parent and add object are object-based operators, but we make them 00293 available here because it's useful to do in pose mode too */ 00294 WM_keymap_add_item(keymap, "OBJECT_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); 00295 WM_keymap_add_menu(keymap, "INFO_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); 00296 00297 WM_keymap_add_item(keymap, "POSE_OT_hide", HKEY, KM_PRESS, 0, 0); 00298 kmi= WM_keymap_add_item(keymap, "POSE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); 00299 RNA_boolean_set(kmi->ptr, "unselected", 1); 00300 WM_keymap_add_item(keymap, "POSE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); 00301 00302 WM_keymap_add_menu(keymap, "VIEW3D_MT_pose_apply", AKEY, KM_PRESS, KM_CTRL, 0); 00303 00304 // TODO: clear pose 00305 WM_keymap_add_item(keymap, "POSE_OT_rot_clear", RKEY, KM_PRESS, KM_ALT, 0); 00306 WM_keymap_add_item(keymap, "POSE_OT_loc_clear", GKEY, KM_PRESS, KM_ALT, 0); 00307 WM_keymap_add_item(keymap, "POSE_OT_scale_clear", SKEY, KM_PRESS, KM_ALT, 0); 00308 00309 WM_keymap_add_item(keymap, "POSE_OT_quaternions_flip", FKEY, KM_PRESS, KM_ALT, 0); 00310 00311 WM_keymap_add_item(keymap, "POSE_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); 00312 WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); 00313 kmi= WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); 00314 RNA_boolean_set(kmi->ptr, "flipped", 1); 00315 00316 WM_keymap_add_item(keymap, "POSE_OT_select_all", AKEY, KM_PRESS, 0, 0); 00317 WM_keymap_add_item(keymap, "POSE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); 00318 00319 WM_keymap_add_item(keymap, "POSE_OT_select_parent", PKEY, KM_PRESS, KM_SHIFT, 0); 00320 00321 kmi= WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0); 00322 RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT); 00323 kmi= WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); 00324 RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT); 00325 RNA_boolean_set(kmi->ptr, "extend", 1); 00326 00327 kmi= WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, 0, 0); 00328 RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD); 00329 kmi= WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); 00330 RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD); 00331 RNA_boolean_set(kmi->ptr, "extend", 1); 00332 00333 WM_keymap_add_item(keymap, "POSE_OT_select_linked", LKEY, KM_PRESS, 0, 0); 00334 WM_keymap_add_item(keymap, "POSE_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); 00335 WM_keymap_add_item(keymap, "POSE_OT_select_flip_active", FKEY, KM_PRESS, KM_SHIFT, 0); 00336 00337 WM_keymap_add_item(keymap, "POSE_OT_constraint_add_with_targets", CKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); 00338 WM_keymap_add_item(keymap, "POSE_OT_constraints_clear", CKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); 00339 WM_keymap_add_item(keymap, "POSE_OT_ik_add", IKEY, KM_PRESS, /*KM_CTRL|*/KM_SHIFT, 0); 00340 WM_keymap_add_item(keymap, "POSE_OT_ik_clear", IKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); 00341 00342 WM_keymap_add_menu(keymap, "VIEW3D_MT_pose_group", GKEY, KM_PRESS, KM_CTRL, 0); 00343 00344 /* set flags */ 00345 WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_toggle", WKEY, KM_PRESS, KM_SHIFT, 0); 00346 WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); 00347 WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_disable", WKEY, KM_PRESS, KM_ALT, 0); 00348 00349 /* armature/bone layers */ 00350 WM_keymap_add_item(keymap, "ARMATURE_OT_layers_show_all", ACCENTGRAVEKEY, KM_PRESS, KM_CTRL, 0); 00351 WM_keymap_add_item(keymap, "POSE_OT_armature_layers", MKEY, KM_PRESS, KM_SHIFT, 0); 00352 WM_keymap_add_item(keymap, "POSE_OT_bone_layers", MKEY, KM_PRESS, 0, 0); 00353 00354 /* special transforms: */ 00355 /* 1) envelope/b-bone size */ 00356 kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); 00357 RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE); 00358 00359 /* keyframes management */ 00360 WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0); 00361 WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0); 00362 WM_keymap_verify_item(keymap, "ANIM_OT_keying_set_active_set", IKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0); 00363 00364 /* Pose -> PoseLib ------------- */ 00365 /* only set in posemode, by space_view3d listener */ 00366 WM_keymap_add_item(keymap, "POSELIB_OT_browse_interactive", LKEY, KM_PRESS, KM_CTRL, 0); 00367 00368 WM_keymap_add_item(keymap, "POSELIB_OT_pose_add", LKEY, KM_PRESS, KM_SHIFT, 0); 00369 WM_keymap_add_item(keymap, "POSELIB_OT_pose_remove", LKEY, KM_PRESS, KM_ALT, 0); 00370 WM_keymap_add_item(keymap, "POSELIB_OT_pose_rename", LKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); 00371 00372 /* Pose -> Pose Sliding ------------- */ 00373 /* only set in posemode, by space_view3d listener */ 00374 WM_keymap_add_item(keymap, "POSE_OT_push", EKEY, KM_PRESS, KM_CTRL, 0); 00375 WM_keymap_add_item(keymap, "POSE_OT_relax", EKEY, KM_PRESS, KM_ALT, 0); 00376 WM_keymap_add_item(keymap, "POSE_OT_breakdown", EKEY, KM_PRESS, KM_SHIFT, 0); 00377 } 00378