Skip to content

Commit a9b207d

Browse files
authored
Improve macOS shortcuts (dialogic-godot#2686)
* Improve macOS shortcuts * Tweak shortcut based on PR feedback
1 parent e5d0ba8 commit a9b207d

4 files changed

Lines changed: 46 additions & 26 deletions

File tree

addons/dialogic/Editor/CharacterEditor/character_editor.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ func _register() -> void:
3636
add_character_button.shortcut.events.append(InputEventKey.new())
3737
add_character_button.shortcut.events[0].keycode = KEY_2
3838
add_character_button.shortcut.events[0].ctrl_pressed = true
39+
add_character_button.shortcut.events[0].command_or_control_autoremap = true
3940

4041
## By default show the no character screen
4142
$NoCharacterScreen.show()

addons/dialogic/Editor/TimelineEditor/VisualEditor/timeline_editor_visual.gd

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,42 +1056,42 @@ func _input(event:InputEvent) -> void:
10561056

10571057
## Some shortcuts should always work
10581058
match event.as_text():
1059-
"Ctrl+T": # Add text event
1059+
"Ctrl+T", "Command+T": # Add text event
10601060
_add_event_button_pressed(DialogicTextEvent.new(), true)
10611061
get_viewport().set_input_as_handled()
10621062

1063-
"Ctrl+Shift+T", "Ctrl+Alt+T", "Ctrl+Option+T": # Add text event with current or previous character
1063+
"Ctrl+Shift+T", "Ctrl+Alt+T", "Shift+Command+T", "Option+Command+T": # Add text event with current or previous character
10641064
get_viewport().set_input_as_handled()
10651065
var ev := DialogicTextEvent.new()
1066-
ev.character = get_previous_character(event.as_text() == "Ctrl+Alt+T" or event.as_text() == "Ctrl+Option+T")
1066+
ev.character = get_previous_character(event.as_text() == "Ctrl+Alt+T" or event.as_text() == "Option+Command+T")
10671067
_add_event_button_pressed(ev, true)
10681068

1069-
"Ctrl+E": # Add character join event
1069+
"Ctrl+E", "Command+E": # Add character join event
10701070
_add_event_button_pressed(DialogicCharacterEvent.new(), true)
10711071
get_viewport().set_input_as_handled()
10721072

1073-
"Ctrl+Shift+E": # Add character update event
1073+
"Ctrl+Shift+E", "Shift+Command+E": # Add character update event
10741074
var ev := DialogicCharacterEvent.new()
10751075
ev.action = DialogicCharacterEvent.Actions.UPDATE
10761076
_add_event_button_pressed(ev, true)
10771077
get_viewport().set_input_as_handled()
10781078

1079-
"Ctrl+Alt+E", "Ctrl+Option+E": # Add character leave event
1079+
"Ctrl+Alt+E", "Ctrl+Option+E", "Option+Command+E": # Add character leave event
10801080
var ev := DialogicCharacterEvent.new()
10811081
ev.action = DialogicCharacterEvent.Actions.LEAVE
10821082
_add_event_button_pressed(ev, true)
10831083
get_viewport().set_input_as_handled()
10841084

1085-
"Ctrl+J": # Add jump event
1085+
"Ctrl+J", "Command+J": # Add jump event
10861086
_add_event_button_pressed(DialogicJumpEvent.new(), true)
10871087
get_viewport().set_input_as_handled()
1088-
"Ctrl+L": # Add label event
1088+
"Ctrl+L", "Command+L": # Add label event
10891089
_add_event_button_pressed(DialogicLabelEvent.new(), true)
10901090
get_viewport().set_input_as_handled()
10911091

1092-
"Ctrl+F6" when OS.get_name() != "macOS": # Play from here
1092+
"Ctrl+F6" when OS.get_name() != "macOS": # Play from here
10931093
play_from_here()
1094-
"Ctrl+Shift+B" when OS.get_name() == "macOS": # Play from here
1094+
"Ctrl+Shift+B" when OS.get_name() == "macOS": # Play from here
10951095
play_from_here()
10961096

10971097
## Some shortcuts should be disabled when writing text.
@@ -1100,12 +1100,12 @@ func _input(event:InputEvent) -> void:
11001100
return
11011101

11021102
match event.as_text():
1103-
"Ctrl+Z": # UNDO
1103+
"Ctrl+Z", "Command+Z": # UNDO
11041104
TimelineUndoRedo.undo()
11051105
indent_events()
11061106
get_viewport().set_input_as_handled()
11071107

1108-
"Ctrl+Shift+Z", "Ctrl+Y": # REDO
1108+
"Ctrl+Shift+Z", "Ctrl+Y", "Shift+Command+Z", "Command+Y": # REDO
11091109
TimelineUndoRedo.redo()
11101110
indent_events()
11111111
get_viewport().set_input_as_handled()
@@ -1137,22 +1137,22 @@ func _input(event:InputEvent) -> void:
11371137
TimelineUndoRedo.commit_action()
11381138
get_viewport().set_input_as_handled()
11391139

1140-
"Ctrl+A": # select all
1140+
"Ctrl+A", "Command+A": # select all
11411141
if (len(selected_items) != 0):
11421142
select_all_items()
11431143
get_viewport().set_input_as_handled()
11441144

1145-
"Ctrl+Shift+A": # deselect all
1145+
"Ctrl+Shift+A", "Shift+Command+A": # deselect all
11461146
if (len(selected_items) != 0):
11471147
deselect_all_items()
11481148
get_viewport().set_input_as_handled()
11491149

1150-
"Ctrl+C":
1150+
"Ctrl+C", "Command+C":
11511151
select_events_indexed(get_events_indexed(selected_items))
11521152
copy_selected_events()
11531153
get_viewport().set_input_as_handled()
11541154

1155-
"Ctrl+V":
1155+
"Ctrl+V", "Command+V":
11561156
var events_list := get_clipboard_data()
11571157
var paste_position := 0
11581158
if selected_items:
@@ -1167,15 +1167,15 @@ func _input(event:InputEvent) -> void:
11671167
get_viewport().set_input_as_handled()
11681168

11691169

1170-
"Ctrl+X":
1170+
"Ctrl+X", "Command+X":
11711171
var events_indexed := get_events_indexed(selected_items)
11721172
TimelineUndoRedo.create_action("[D] Cut "+str(len(selected_items))+" event(s).")
11731173
TimelineUndoRedo.add_do_method(cut_events_indexed.bind(events_indexed))
11741174
TimelineUndoRedo.add_undo_method(add_events_indexed.bind(events_indexed))
11751175
TimelineUndoRedo.commit_action()
11761176
get_viewport().set_input_as_handled()
11771177

1178-
"Ctrl+D":
1178+
"Ctrl+D", "Command+D":
11791179
duplicate_selected()
11801180
get_viewport().set_input_as_handled()
11811181

addons/dialogic/Editor/TimelineEditor/shortcut_popup.gd

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ extends PanelContainer
55
var shortcuts := [
66

77
{"shortcut":"Ctrl+T", "text":"Add Text event", "editor":"VisualEditor"},
8-
{"shortcut":"Ctrl+Shift+T", "text":"Add Text event with current character", "editor":"VisualEditor"},
9-
{"shortcut":"Ctrl+Alt/Opt+T", "text":"Add Text event with previous character", "editor":"VisualEditor"},
8+
{"shortcut":"Ctrl+Shift+T", "text":"Add Text event with current character", "editor":"VisualEditor"},
9+
{"shortcut":"Ctrl+Alt+T", "text":"Add Text event with previous character", "editor":"VisualEditor"},
1010
{"shortcut":"Ctrl+E", "text":"Add Character join event", "editor":"VisualEditor"},
11-
{"shortcut":"Ctrl+Shift+E", "text":"Add Character update event", "editor":"VisualEditor"},
12-
{"shortcut":"Ctrl+Alt/Opt+E", "text":"Add Character leave event", "editor":"VisualEditor"},
11+
{"shortcut":"Ctrl+Shift+E", "text":"Add Character update event", "editor":"VisualEditor"},
12+
{"shortcut":"Ctrl+Alt+E", "text":"Add Character leave event", "editor":"VisualEditor"},
1313
{"shortcut":"Ctrl+J", "text":"Add Jump event", "editor":"VisualEditor"},
1414
{"shortcut":"Ctrl+L", "text":"Add Label event", "editor":"VisualEditor"},
1515
{},
16-
{"shortcut":"Alt/Opt+Up", "text":"Move selected events/lines up"},
17-
{"shortcut":"Alt/Opt+Down", "text":"Move selected events/lines down"},
16+
{"shortcut":"Alt+Up", "text":"Move selected events/lines up"},
17+
{"shortcut":"Alt+Down", "text":"Move selected events/lines down"},
1818
{},
1919
{"shortcut":"Ctrl+F", "text":"Search"},
2020
{"shortcut":"Ctrl+R", "text":"Replace"},
@@ -42,6 +42,23 @@ var shortcuts := [
4242
{},
4343
]
4444

45+
func _process_shortcuts_for_platform(shortcuts: Array) -> Array:
46+
var formatted = []
47+
for shortcut in shortcuts:
48+
if not (shortcut is Dictionary and "shortcut" in shortcut):
49+
continue
50+
51+
var shortcut_text = shortcut["shortcut"]
52+
53+
if OS.has_feature("macos"):
54+
shortcut_text = shortcut_text.replace("Ctrl", "Command")
55+
shortcut_text = shortcut_text.replace("Alt", "Opt")
56+
57+
var entry = shortcut.duplicate()
58+
entry["shortcut"] = shortcut_text
59+
formatted.append(entry)
60+
61+
return formatted
4562

4663
# Called when the node enters the scene tree for the first time.
4764
func _ready() -> void:
@@ -54,7 +71,7 @@ func reload_shortcuts() -> void:
5471
i.queue_free()
5572

5673
var is_text_editor: bool = %TextEditor.visible
57-
for i in shortcuts:
74+
for i in _process_shortcuts_for_platform(shortcuts):
5875
if i.is_empty():
5976
%ShortcutList.add_child(HSeparator.new())
6077
%ShortcutList.add_child(HSeparator.new())

addons/dialogic/Editor/TimelineEditor/timeline_editor.gd

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ func _register() -> void:
2727
add_timeline_button.shortcut.events.append(InputEventKey.new())
2828
add_timeline_button.shortcut.events[0].keycode = KEY_1
2929
add_timeline_button.shortcut.events[0].ctrl_pressed = true
30+
add_timeline_button.shortcut.events[0].command_or_control_autoremap = true
31+
3032
# play timeline button
3133
play_timeline_button = editors_manager.add_custom_button(
3234
"Play Timeline",
@@ -35,7 +37,7 @@ func _register() -> void:
3537
play_timeline_button.pressed.connect(play_timeline)
3638
play_timeline_button.tooltip_text = "Play the current timeline (CTRL+F5)"
3739
if OS.get_name() == "macOS":
38-
play_timeline_button.tooltip_text = "Play the current timeline (CTRL+B)"
40+
play_timeline_button.tooltip_text = "Play the current timeline (Command+B)"
3941

4042
%VisualEditor.load_event_buttons()
4143

0 commit comments

Comments
 (0)