diff --git a/addons/godot_xterm/editor_plugins/terminal/settings/default_copy_shortcut.tres b/addons/godot_xterm/editor_plugins/terminal/settings/default_copy_shortcut.tres index 3e8f729..791f7ed 100644 --- a/addons/godot_xterm/editor_plugins/terminal/settings/default_copy_shortcut.tres +++ b/addons/godot_xterm/editor_plugins/terminal/settings/default_copy_shortcut.tres @@ -1,3 +1,9 @@ -[gd_resource type="Shortcut" format=3 uid="uid://cdr3iu6ttahlt"] +[gd_resource type="Shortcut" load_steps=2 format=3 uid="uid://cdr3iu6ttahlt"] + +[sub_resource type="InputEventKey" id="InputEventKey_emaic"] +shift_pressed = true +ctrl_pressed = true +keycode = 67 [resource] +events = [SubResource("InputEventKey_emaic")] diff --git a/addons/godot_xterm/editor_plugins/terminal/settings/default_kill_terminal_shortcut.tres b/addons/godot_xterm/editor_plugins/terminal/settings/default_kill_terminal_shortcut.tres index 5927cc0..26bf5af 100644 --- a/addons/godot_xterm/editor_plugins/terminal/settings/default_kill_terminal_shortcut.tres +++ b/addons/godot_xterm/editor_plugins/terminal/settings/default_kill_terminal_shortcut.tres @@ -1,11 +1,9 @@ -[gd_resource type="Shortcut" load_steps=2 format=2] +[gd_resource type="Shortcut" load_steps=2 format=3 uid="uid://b5vans7f0vp2y"] -[sub_resource type="InputEventKey" id=1] -shift = true -control = true -command = true -pressed = true -scancode = 88 +[sub_resource type="InputEventKey" id="InputEventKey_7k47m"] +shift_pressed = true +ctrl_pressed = true +keycode = 88 [resource] -shortcut = SubResource( 1 ) +events = [SubResource("InputEventKey_7k47m")] diff --git a/addons/godot_xterm/editor_plugins/terminal/settings/default_new_terminal_shortcut.tres b/addons/godot_xterm/editor_plugins/terminal/settings/default_new_terminal_shortcut.tres index a2c942f..c34cee5 100644 --- a/addons/godot_xterm/editor_plugins/terminal/settings/default_new_terminal_shortcut.tres +++ b/addons/godot_xterm/editor_plugins/terminal/settings/default_new_terminal_shortcut.tres @@ -1,11 +1,9 @@ -[gd_resource type="Shortcut" load_steps=2 format=2] +[gd_resource type="Shortcut" load_steps=2 format=3 uid="uid://d3iu5cplfailp"] -[sub_resource type="InputEventKey" id=1] -shift = true -control = true -command = true -pressed = true -scancode = 84 +[sub_resource type="InputEventKey" id="InputEventKey_0hq5g"] +shift_pressed = true +ctrl_pressed = true +keycode = 84 [resource] -shortcut = SubResource( 1 ) +events = [SubResource("InputEventKey_0hq5g")] diff --git a/addons/godot_xterm/editor_plugins/terminal/settings/default_paste_shortcut.tres b/addons/godot_xterm/editor_plugins/terminal/settings/default_paste_shortcut.tres index d45b04e..6d78098 100644 --- a/addons/godot_xterm/editor_plugins/terminal/settings/default_paste_shortcut.tres +++ b/addons/godot_xterm/editor_plugins/terminal/settings/default_paste_shortcut.tres @@ -1,11 +1,9 @@ -[gd_resource type="Shortcut" load_steps=2 format=2] +[gd_resource type="Shortcut" load_steps=2 format=3 uid="uid://cn2b3aeang6b"] -[sub_resource type="InputEventKey" id=1] -shift = true -control = true -command = true -pressed = true -scancode = 86 +[sub_resource type="InputEventKey" id="InputEventKey_sihkr"] +shift_pressed = true +ctrl_pressed = true +keycode = 86 [resource] -shortcut = SubResource( 1 ) +events = [SubResource("InputEventKey_sihkr")] diff --git a/addons/godot_xterm/editor_plugins/terminal/settings/default_tab_left_shortcut.tres b/addons/godot_xterm/editor_plugins/terminal/settings/default_tab_left_shortcut.tres index 8f27a59..cbfffab 100644 --- a/addons/godot_xterm/editor_plugins/terminal/settings/default_tab_left_shortcut.tres +++ b/addons/godot_xterm/editor_plugins/terminal/settings/default_tab_left_shortcut.tres @@ -1,10 +1,8 @@ -[gd_resource type="Shortcut" load_steps=2 format=2] +[gd_resource type="Shortcut" load_steps=2 format=3 uid="uid://dpb1qwlv6mkfs"] -[sub_resource type="InputEventKey" id=1] -control = true -command = true -pressed = true -scancode = 16777235 +[sub_resource type="InputEventKey" id="InputEventKey_v5b4d"] +ctrl_pressed = true +keycode = 4194324 [resource] -shortcut = SubResource( 1 ) +events = [SubResource("InputEventKey_v5b4d")] diff --git a/addons/godot_xterm/editor_plugins/terminal/settings/default_tab_right_shortcut.tres b/addons/godot_xterm/editor_plugins/terminal/settings/default_tab_right_shortcut.tres index e2a5947..c4ed22f 100644 --- a/addons/godot_xterm/editor_plugins/terminal/settings/default_tab_right_shortcut.tres +++ b/addons/godot_xterm/editor_plugins/terminal/settings/default_tab_right_shortcut.tres @@ -1,10 +1,8 @@ -[gd_resource type="Shortcut" load_steps=2 format=2] +[gd_resource type="Shortcut" load_steps=2 format=3 uid="uid://djs5hhu8vbmqf"] -[sub_resource type="InputEventKey" id=1] -control = true -command = true -pressed = true -scancode = 16777236 +[sub_resource type="InputEventKey" id="InputEventKey_svjos"] +ctrl_pressed = true +keycode = 4194323 [resource] -shortcut = SubResource( 1 ) +events = [SubResource("InputEventKey_svjos")] diff --git a/addons/godot_xterm/editor_plugins/terminal/terminal_panel.gd b/addons/godot_xterm/editor_plugins/terminal/terminal_panel.gd index b705d22..ca1cb55 100644 --- a/addons/godot_xterm/editor_plugins/terminal/terminal_panel.gd +++ b/addons/godot_xterm/editor_plugins/terminal/terminal_panel.gd @@ -67,24 +67,23 @@ func _update_settings() -> void: tabs.tab_close_display_policy = TabBar.CLOSE_BUTTON_SHOW_ALWAYS -#FIXME -# # Update shortcuts. -# if _settings.new_terminal_shortcut: -# terminal_popup_menu.set_item_shortcut( -# TerminalPopupMenuOptions.NEW_TERMINAL, _settings.new_terminal_shortcut, true -# ) -# if _settings.kill_terminal_shortcut: -# terminal_popup_menu.set_item_shortcut( -# TerminalPopupMenuOptions.KILL_TERMINAL, _settings.kill_terminal_shortcut, false -# ) -# if _settings.copy_shortcut: -# terminal_popup_menu.set_item_shortcut( -# TerminalPopupMenuOptions.COPY, _settings.copy_shortcut, false -# ) -# if _settings.paste_shortcut: -# terminal_popup_menu.set_item_shortcut( -# TerminalPopupMenuOptions.PASTE, _settings.paste_shortcut, false -# ) + # Update shortcuts. + if _settings.new_terminal_shortcut: + terminal_popup_menu.set_item_shortcut( + TerminalPopupMenuOptions.NEW_TERMINAL, _settings.new_terminal_shortcut, true + ) + if _settings.kill_terminal_shortcut: + terminal_popup_menu.set_item_shortcut( + TerminalPopupMenuOptions.KILL_TERMINAL, _settings.kill_terminal_shortcut, false + ) + if _settings.copy_shortcut: + terminal_popup_menu.set_item_shortcut( + TerminalPopupMenuOptions.COPY, _settings.copy_shortcut, false + ) + if _settings.paste_shortcut: + terminal_popup_menu.set_item_shortcut( + TerminalPopupMenuOptions.PASTE, _settings.paste_shortcut, false + ) _update_terminal_tabs() @@ -172,53 +171,43 @@ func _input(event: InputEvent) -> void: return # Global shortcut to open new terminal and make terminal panel visible. - # FIXME -# if _settings.new_terminal_shortcut and _settings.new_terminal_shortcut.shortcut: -# if event.is_match(_settings.new_terminal_shortcut.shortcut): -# get_tree().set_input_as_handled() -# editor_plugin.make_bottom_panel_item_visible(self) -# _on_AddButton_pressed() + if _settings.new_terminal_shortcut and _settings.new_terminal_shortcut.matches_event(event): + get_viewport().set_input_as_handled() + editor_plugin.make_bottom_panel_item_visible(self) + _on_AddButton_pressed() # Non-global shortcuts, only applied if terminal is active and focused. if ( tabs.get_tab_count() > 0 and tab_container.get_child(tabs.current_tab).has_focus() or terminal_popup_menu.has_focus() ): - pass # Kill terminal. - # FIXME shortcut + if ( + _settings.kill_terminal_shortcut + and _settings.kill_terminal_shortcut.matches_event(event) + ): + get_viewport().set_input_as_handled() + _on_TerminalPopupMenu_id_pressed(TerminalPopupMenuOptions.KILL_TERMINAL) + # Copy. + if _settings.copy_shortcut and _settings.copy_shortcut.matches_event(event): + get_viewport().set_input_as_handled() + _on_TerminalPopupMenu_id_pressed(TerminalPopupMenuOptions.COPY) -# if _settings.kill_terminal_shortcut and _settings.kill_terminal_shortcut.shortcut: -# if event.is_match(_settings.kill_terminal_shortcut.shortcut): -# get_tree().set_input_as_handled() -# _on_TerminalPopupMenu_id_pressed(TerminalPopupMenuOptions.KILL_TERMINAL) + # Paste. + if _settings.paste_shortcut and _settings.paste_shortcut.matches_event(event): + get_viewport().set_input_as_handled() + _on_TerminalPopupMenu_id_pressed(TerminalPopupMenuOptions.PASTE) -# Copy. -#FIXME -# if _settings.copy_shortcut and _settings.copy_shortcut.shortcut: -# if event.is_match(_settings.copy_shortcut.shortcut): -# get_tree().set_input_as_handled() -# _on_TerminalPopupMenu_id_pressed(TerminalPopupMenuOptions.COPY) + # Next tab. + if _settings.next_tab_shortcut and _settings.next_tab_shortcut.matches_event(event): + get_viewport().set_input_as_handled() + tabs.current_tab = min(tabs.current_tab + 1, tabs.get_tab_count() - 1) -# Paste. -#FIXME -# if _settings.paste_shortcut and _settings.paste_shortcut.shortcut: -# if event.is_match(_settings.paste_shortcut.shortcut): -# get_tree().set_input_as_handled() -# _on_TerminalPopupMenu_id_pressed(TerminalPopupMenuOptions.PASTE) -# -# # Next tab. -# if _settings.next_tab_shortcut and _settings.next_tab_shortcut.shortcut: -# if event.is_match(_settings.next_tab_shortcut.shortcut): -# get_tree().set_input_as_handled() -# tabs.current_tab = min(tabs.current_tab + 1, tabs.get_tab_count() - 1) -# -# # Previous tab. -# if _settings.previous_tab_shortcut and _settings.previous_tab_shortcut.shortcut: -# if event.is_match(_settings.previous_tab_shortcut.shortcut): -# get_tree().set_input_as_handled() -# tabs.current_tab = max(tabs.current_tab - 1, 0) + # Previous tab. + if _settings.previous_tab_shortcut and _settings.previous_tab_shortcut.matches_event(event): + get_viewport().set_input_as_handled() + tabs.current_tab = max(tabs.current_tab - 1, 0) func _on_TabContainer_gui_input(event): @@ -238,11 +227,7 @@ func _on_TerminalPopupMenu_id_pressed(id): TerminalPopupMenuOptions.COPY: DisplayServer.clipboard_set(terminal.copy_selection()) TerminalPopupMenuOptions.PASTE: - for i in DisplayServer.clipboard_get().length(): - var event = InputEventKey.new() - event.unicode = DisplayServer.clipboard_get().unicode_at(i) - event.button_pressed = true - terminal._gui_input(event) + terminal.write(DisplayServer.clipboard_get()) TerminalPopupMenuOptions.COPY_ALL: DisplayServer.clipboard_set(terminal.copy_all()) TerminalPopupMenuOptions.CLEAR: