Blender  V2.59
armature_ops.c
Go to the documentation of this file.
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