Keymap: ignore repeat events for transform actions

Resolves T54297
This commit is contained in:
Campbell Barton 2020-03-06 18:12:56 +11:00
parent e6aa349c68
commit 2e7cfb86fe
2 changed files with 106 additions and 91 deletions

@ -855,12 +855,12 @@ def km_uv_editor(params):
op_menu_pie("IMAGE_MT_uvs_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
op_menu("IMAGE_MT_uvs_select_mode", {"type": 'TAB', "value": 'PRESS', "ctrl": True}),
*_template_items_proportional_editing(connected=False),
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True, "repeat": False}, None),
("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True, "repeat": False}, None),
("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True},
{"properties": [("data_path", 'tool_settings.use_snap')]}),
("wm.context_menu_enum", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True},
@ -1142,19 +1142,19 @@ def km_view3d(params):
("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
# Transform.
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None),
("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True, "repeat": False}, None),
("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True, "repeat": False}, None),
("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True, "repeat": False}, None),
("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True, "repeat": False}, None),
("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True},
{"properties": [("data_path", 'tool_settings.use_snap')]}),
op_panel("VIEW3D_PT_snapping", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True}, [("keep_open", False)]),
("object.transform_axis_target", {"type": 'T', "value": 'PRESS', "shift": True}, None),
("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True}, None),
("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True, "repeat": False}, None),
])
if not params.legacy:
@ -1210,9 +1210,9 @@ def km_view3d(params):
{"properties": [("type", 'RIGHT')]}),
("transform.create_orientation", {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True},
{"properties": [("use", True)]}),
("transform.translate", {"type": 'T', "value": 'PRESS', "shift": True},
("transform.translate", {"type": 'T', "value": 'PRESS', "shift": True, "repeat": False},
{"properties": [("texture_space", True)]}),
("transform.resize", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True},
("transform.resize", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True, "repeat": False},
{"properties": [("texture_space", True)]}),
# Old pivot.
("wm.context_set_enum", {"type": 'COMMA', "value": 'PRESS'},
@ -1312,10 +1312,10 @@ def km_mask_editing(params):
("mask.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
("mask.copy_splines", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
("mask.paste_splines", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True},
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False},
{"properties": [("mode", 'MASK_SHRINKFATTEN')]}),
])
@ -1514,12 +1514,12 @@ def km_graph_editor(params):
("graph.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True},
{"properties": [("only_active", False)]}),
("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
("transform.transform", {"type": 'E', "value": 'PRESS'},
("transform.transform", {"type": 'E', "value": 'PRESS', "repeat": False},
{"properties": [("mode", 'TIME_EXTEND')]}),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
("wm.context_toggle", {"type": 'O', "value": 'PRESS'},
{"properties": [("data_path", 'tool_settings.use_proportional_fcurve')]}),
op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}),
@ -1770,13 +1770,13 @@ def km_node_editor(params):
("node.translate_attach", {"type": 'G', "value": 'PRESS'}, None),
("node.translate_attach", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None),
("node.translate_attach", {"type": params.select_tweak, "value": 'ANY'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'},
{"properties": [("release_confirm", True)]}),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'},
{"properties": [("release_confirm", True)]}),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
("node.move_detach_links", {"type": 'D', "value": 'PRESS', "alt": True}, None),
("node.move_detach_links_release", {"type": params.action_tweak, "value": 'ANY', "alt": True}, None),
("node.move_detach_links", {"type": params.select_tweak, "value": 'ANY', "alt": True}, None),
@ -2052,15 +2052,15 @@ def km_dopesheet(params):
("action.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None),
("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None),
("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
("transform.transform", {"type": 'G', "value": 'PRESS'},
("transform.transform", {"type": 'G', "value": 'PRESS', "repeat": False},
{"properties": [("mode", 'TIME_TRANSLATE')]}),
("transform.transform", {"type": params.select_tweak, "value": 'ANY'},
{"properties": [("mode", 'TIME_TRANSLATE')]}),
("transform.transform", {"type": 'E', "value": 'PRESS'},
("transform.transform", {"type": 'E', "value": 'PRESS', "repeat": False},
{"properties": [("mode", 'TIME_EXTEND')]}),
("transform.transform", {"type": 'S', "value": 'PRESS'},
("transform.transform", {"type": 'S', "value": 'PRESS', "repeat": False},
{"properties": [("mode", 'TIME_SCALE')]}),
("transform.transform", {"type": 'T', "value": 'PRESS', "shift": True},
("transform.transform", {"type": 'T', "value": 'PRESS', "shift": True, "repeat": False},
{"properties": [("mode", 'TIME_SLIDE')]}),
("wm.context_toggle", {"type": 'O', "value": 'PRESS'},
{"properties": [("data_path", 'tool_settings.use_proportional_action')]}),
@ -2183,13 +2183,13 @@ def km_nla_editor(params):
("nla.clear_scale", {"type": 'S', "value": 'PRESS', "alt": True}, None),
op_menu_pie("NLA_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}),
("nla.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None),
("transform.transform", {"type": 'G', "value": 'PRESS'},
("transform.transform", {"type": 'G', "value": 'PRESS', "repeat": False},
{"properties": [("mode", 'TRANSLATION')]}),
("transform.transform", {"type": params.select_tweak, "value": 'ANY'},
{"properties": [("mode", 'TRANSLATION')]}),
("transform.transform", {"type": 'E', "value": 'PRESS'},
("transform.transform", {"type": 'E', "value": 'PRESS', "repeat": False},
{"properties": [("mode", 'TIME_EXTEND')]}),
("transform.transform", {"type": 'S', "value": 'PRESS'},
("transform.transform", {"type": 'S', "value": 'PRESS', "repeat": False},
{"properties": [("mode", 'TIME_SCALE')]}),
("marker.add", {"type": 'M', "value": 'PRESS'}, None),
("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
@ -2494,9 +2494,9 @@ def km_sequencer(params):
("sequencer.slip", {"type": 'S', "value": 'PRESS'}, None),
("wm.context_set_int", {"type": 'O', "value": 'PRESS'},
{"properties": [("data_path", 'scene.sequence_editor.overlay_frame'), ("value", 0)]}),
("transform.seq_slide", {"type": 'G', "value": 'PRESS'}, None),
("transform.seq_slide", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.seq_slide", {"type": params.select_tweak, "value": 'ANY'}, None),
("transform.transform", {"type": 'E', "value": 'PRESS'},
("transform.transform", {"type": 'E', "value": 'PRESS', "repeat": False},
{"properties": [("mode", 'TIME_EXTEND')]}),
("marker.add", {"type": 'M', "value": 'PRESS'}, None),
("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
@ -2735,10 +2735,10 @@ def km_clip_editor(params):
{"properties": [("data_path", 'space_data.show_marker_search')]}),
("wm.context_toggle", {"type": 'M', "value": 'PRESS'},
{"properties": [("data_path", 'space_data.use_mute_footage')]}),
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True},
{"properties": [("action", 'REMAINED'), ("clear_active", False)]}),
("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True},
@ -2792,10 +2792,10 @@ def km_clip_graph_editor(params):
{"properties": [("action", 'ALL'), ("clear_active", True)]}),
("clip.graph_disable_markers", {"type": 'D', "value": 'PRESS', "shift": True},
{"properties": [("action", 'TOGGLE')]}),
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
])
if params.select_mouse == 'LEFTMOUSE' and not params.legacy:
@ -3143,17 +3143,17 @@ def km_grease_pencil_stroke_edit_mode(params):
# Move to layer
op_menu("GPENCIL_MT_move_to_layer", {"type": 'M', "value": 'PRESS'}),
# Transform tools
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None),
("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None),
("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None),
("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True},
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True, "repeat": False}, None),
("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True, "repeat": False}, None),
("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True, "repeat": False}, None),
("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True, "repeat": False}, None),
("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False},
{"properties": [("mode", 'GPENCIL_SHRINKFATTEN')]}),
("transform.transform", {"type": 'F', "value": 'PRESS', "shift": True},
("transform.transform", {"type": 'F', "value": 'PRESS', "shift": True, "repeat": False},
{"properties": [("mode", 'GPENCIL_OPACITY')]}),
# Proportional editing.
*_template_items_proportional_editing(connected=True),
@ -3475,7 +3475,7 @@ def km_pose(params):
("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None),
("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None),
("pose.bone_layers", {"type": 'M', "value": 'PRESS'}, None),
("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, None),
("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True, "repeat": False}, None),
("anim.keyframe_insert_menu", {"type": 'I', "value": 'PRESS'}, None),
("anim.keyframe_delete_v3d", {"type": 'I', "value": 'PRESS', "alt": True}, None),
("anim.keying_set_active_set", {"type": 'I', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None),
@ -3621,10 +3621,10 @@ def km_paint_curve(params):
("paintcurve.delete_point", {"type": 'DEL', "value": 'PRESS'}, None),
("paintcurve.draw", {"type": 'RET', "value": 'PRESS'}, None),
("paintcurve.draw", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
])
return keymap
@ -3664,8 +3664,8 @@ def km_curve(params):
("curve.dissolve_verts", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
("curve.dissolve_verts", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None),
("curve.tilt_clear", {"type": 'T', "value": 'PRESS', "alt": True}, None),
("transform.tilt", {"type": 'T', "value": 'PRESS', "ctrl": True}, None),
("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True},
("transform.tilt", {"type": 'T', "value": 'PRESS', "ctrl": True, "repeat": False}, None),
("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False},
{"properties": [("mode", 'CURVE_SHRINKFATTEN')]}),
("curve.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None),
("curve.hide", {"type": 'H', "value": 'PRESS'},
@ -4053,7 +4053,7 @@ def km_mesh(params):
{"properties": [("inside", True)]}),
("view3d.edit_mesh_extrude_move_normal", {"type": 'E', "value": 'PRESS'}, None),
op_menu("VIEW3D_MT_edit_mesh_extrude", {"type": 'E', "value": 'PRESS', "alt": True}),
("transform.edge_crease", {"type": 'E', "value": 'PRESS', "shift": True}, None),
("transform.edge_crease", {"type": 'E', "value": 'PRESS', "shift": True, "repeat": False}, None),
("mesh.fill", {"type": 'F', "value": 'PRESS', "alt": True}, None),
("mesh.quads_convert_to_tris", {"type": 'T', "value": 'PRESS', "ctrl": True},
{"properties": [("quad_method", 'BEAUTY'), ("ngon_method", 'BEAUTY')]}),
@ -4066,7 +4066,7 @@ def km_mesh(params):
{"properties": [("MESH_OT_rip", [("use_fill", True), ],)]}),
("mesh.rip_edge_move", {"type": 'D', "value": 'PRESS', "alt": True}, None),
op_menu("VIEW3D_MT_edit_mesh_merge", {"type": 'M', "value": 'PRESS', "alt": True}),
("transform.shrink_fatten", {"type": 'S', "value": 'PRESS', "alt": True}, None),
("transform.shrink_fatten", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False}, None),
("mesh.edge_face_add", {"type": 'F', "value": 'PRESS'}, None),
("mesh.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
op_menu("VIEW3D_MT_mesh_add", {"type": 'A', "value": 'PRESS', "shift": True}),
@ -4074,7 +4074,7 @@ def km_mesh(params):
("mesh.split", {"type": 'Y', "value": 'PRESS'}, None),
("mesh.vert_connect_path", {"type": 'J', "value": 'PRESS'}, None),
("mesh.point_normals", {"type": 'L', "value": 'PRESS', "alt": True}, None),
("transform.vert_slide", {"type": 'V', "value": 'PRESS', "shift": True}, None),
("transform.vert_slide", {"type": 'V', "value": 'PRESS', "shift": True, "repeat": False}, None),
("mesh.dupli_extrude_cursor", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True},
{"properties": [("rotate_source", True)]}),
("mesh.dupli_extrude_cursor", {"type": params.action_mouse, "value": 'CLICK', "shift": True, "ctrl": True},
@ -4196,10 +4196,10 @@ def km_armature(params):
("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None),
("armature.bone_layers", {"type": 'M', "value": 'PRESS'}, None),
# Special transforms.
("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, None),
("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True},
("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True, "repeat": False}, None),
("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False},
{"properties": [("mode", 'BONE_ENVELOPE')]}),
("transform.transform", {"type": 'R', "value": 'PRESS', "ctrl": True},
("transform.transform", {"type": 'R', "value": 'PRESS', "ctrl": True, "repeat": False},
{"properties": [("mode", 'BONE_ROLL')]}),
# Menus.
*_template_items_context_menu("VIEW3D_MT_armature_context_menu", params.context_menu_event),
@ -4503,23 +4503,23 @@ def km_transform_modal_map(_params):
("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None),
("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None),
("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None),
("AXIS_X", {"type": 'X', "value": 'PRESS'}, None),
("AXIS_Y", {"type": 'Y', "value": 'PRESS'}, None),
("AXIS_Z", {"type": 'Z', "value": 'PRESS'}, None),
("PLANE_X", {"type": 'X', "value": 'PRESS', "shift": True}, None),
("PLANE_Y", {"type": 'Y', "value": 'PRESS', "shift": True}, None),
("PLANE_Z", {"type": 'Z', "value": 'PRESS', "shift": True}, None),
("CONS_OFF", {"type": 'C', "value": 'PRESS'}, None),
("TRANSLATE", {"type": 'G', "value": 'PRESS'}, None),
("ROTATE", {"type": 'R', "value": 'PRESS'}, None),
("RESIZE", {"type": 'S', "value": 'PRESS'}, None),
("SNAP_TOGGLE", {"type": 'TAB', "value": 'PRESS', "shift": True}, None),
("AXIS_X", {"type": 'X', "value": 'PRESS', "repeat": False}, None),
("AXIS_Y", {"type": 'Y', "value": 'PRESS', "repeat": False}, None),
("AXIS_Z", {"type": 'Z', "value": 'PRESS', "repeat": False}, None),
("PLANE_X", {"type": 'X', "value": 'PRESS', "shift": True, "repeat": False}, None),
("PLANE_Y", {"type": 'Y', "value": 'PRESS', "shift": True, "repeat": False}, None),
("PLANE_Z", {"type": 'Z', "value": 'PRESS', "shift": True, "repeat": False}, None),
("CONS_OFF", {"type": 'C', "value": 'PRESS', "repeat": False}, None),
("TRANSLATE", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
("ROTATE", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
("RESIZE", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
("SNAP_TOGGLE", {"type": 'TAB', "value": 'PRESS', "shift": True, "repeat": False}, None),
("SNAP_INV_ON", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None),
("SNAP_INV_OFF", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None),
("SNAP_INV_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None),
("SNAP_INV_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None),
("ADD_SNAP", {"type": 'A', "value": 'PRESS'}, None),
("REMOVE_SNAP", {"type": 'A', "value": 'PRESS', "alt": True}, None),
("ADD_SNAP", {"type": 'A', "value": 'PRESS', "repeat": False}, None),
("REMOVE_SNAP", {"type": 'A', "value": 'PRESS', "alt": True, "repeat": False}, None),
("PROPORTIONAL_SIZE_UP", {"type": 'PAGE_UP', "value": 'PRESS'}, None),
("PROPORTIONAL_SIZE_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None),
("PROPORTIONAL_SIZE_UP", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, None),
@ -4535,7 +4535,7 @@ def km_transform_modal_map(_params):
("AUTOIK_CHAIN_LEN_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, None),
("AUTOIK_CHAIN_LEN_UP", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None),
("AUTOIK_CHAIN_LEN_DOWN", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None),
("INSERTOFS_TOGGLE_DIR", {"type": 'T', "value": 'PRESS'}, None),
("INSERTOFS_TOGGLE_DIR", {"type": 'T', "value": 'PRESS', "repeat": False}, None),
])
return keymap

@ -1187,10 +1187,22 @@ int transformEvent(TransInfo *t, const wmEvent *event)
/* else do non-mapped events */
else if (event->val == KM_PRESS) {
switch (event->type) {
case ESCKEY:
case RIGHTMOUSE:
t->state = TRANS_CANCEL;
handled = true;
break;
case SPACEKEY:
case PADENTER:
case RETKEY:
if (event->is_repeat) {
break;
}
t->state = TRANS_CONFIRM;
handled = true;
break;
/* enforce redraw of transform when modifiers are used */
case LEFTSHIFTKEY:
case RIGHTSHIFTKEY:
@ -1198,12 +1210,6 @@ int transformEvent(TransInfo *t, const wmEvent *event)
t->redraw |= TREDRAW_HARD;
handled = true;
break;
case SPACEKEY:
t->state = TRANS_CONFIRM;
handled = true;
break;
case MIDDLEMOUSE:
if ((t->flag & T_NO_CONSTRAINT) == 0) {
/* exception for switching to dolly, or trackball, in camera view */
@ -1240,16 +1246,10 @@ int transformEvent(TransInfo *t, const wmEvent *event)
handled = true;
}
break;
case ESCKEY:
t->state = TRANS_CANCEL;
handled = true;
break;
case PADENTER:
case RETKEY:
t->state = TRANS_CONFIRM;
handled = true;
break;
case GKEY:
if (event->is_repeat) {
break;
}
/* only switch when... */
if (ELEM(t->mode, TFM_ROTATION, TFM_RESIZE, TFM_TRACKBALL)) {
restoreTransObjects(t);
@ -1262,6 +1262,9 @@ int transformEvent(TransInfo *t, const wmEvent *event)
}
break;
case SKEY:
if (event->is_repeat) {
break;
}
/* only switch when... */
if (ELEM(t->mode, TFM_ROTATION, TFM_TRANSLATION, TFM_TRACKBALL)) {
restoreTransObjects(t);
@ -1274,6 +1277,9 @@ int transformEvent(TransInfo *t, const wmEvent *event)
}
break;
case RKEY:
if (event->is_repeat) {
break;
}
/* only switch when... */
if (!(t->options & CTX_TEXTURE)) {
if (ELEM(t->mode, TFM_ROTATION, TFM_RESIZE, TFM_TRACKBALL, TFM_TRANSLATION)) {
@ -1294,6 +1300,9 @@ int transformEvent(TransInfo *t, const wmEvent *event)
}
break;
case CKEY:
if (event->is_repeat) {
break;
}
if (event->alt) {
if (!(t->options & CTX_NO_PET)) {
t->flag ^= T_PROP_CONNECTED;
@ -1305,6 +1314,9 @@ int transformEvent(TransInfo *t, const wmEvent *event)
}
break;
case OKEY:
if (event->is_repeat) {
break;
}
if (t->flag & T_PROP_EDIT && event->shift) {
t->prop_mode = (t->prop_mode + 1) % PROP_MODE_MAX;
calculatePropRatio(t);
@ -1362,6 +1374,9 @@ int transformEvent(TransInfo *t, const wmEvent *event)
}
break;
case NKEY:
if (event->is_repeat) {
break;
}
if (ELEM(t->mode, TFM_ROTATION)) {
if ((t->flag & T_EDIT) && t->obedit_type == OB_MESH) {
restoreTransObjects(t);