From e09303f1b89d0aa17c87582cc8cf3405fff78ed2 Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Sun, 19 Oct 2025 19:15:03 +0300 Subject: [PATCH] Added keyboard control to main menu. Reworked logic --- .gitattributes | 4 +- game/game.gd | 59 +++++----- game/passage.gd | 12 ++ menu/credits.gd | 4 + menu/credits.tscn | 10 +- menu/main_menu.gd | 22 ++++ menu/main_menu.tscn | 4 + menu/options.gd | 20 +++- menu/options.tscn | 13 ++- menu/pause_menu.gd | 16 +++ menu/pause_menu.tscn | 14 ++- project.godot | 255 +++++++++++++++++++++++++++++++++++-------- 12 files changed, 349 insertions(+), 84 deletions(-) diff --git a/.gitattributes b/.gitattributes index 59a33bc..16c2c66 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ -*.png filter=lfs diff=lfs merge=lfs -text lockable -*.aseprite filter=lfs diff=lfs merge=lfs -text lockable +*.png filter=lfs diff=lfs merge=lfs -text lockable +*.aseprite filter=lfs diff=lfs merge=lfs -text lockable diff --git a/game/game.gd b/game/game.gd index bb1d17a..ff1e46c 100644 --- a/game/game.gd +++ b/game/game.gd @@ -3,43 +3,44 @@ extends Node signal show_main_menu -var _current_scene: Node -var _current_passage: Node - - -func _process(_delta: float) -> void: - if Input.is_action_pressed("pause"): - _show_pause_menu() - +var _pause_menu: PauseMenu +var _current_passage: Passage +var _show_pause_menu: bool = false func _ready() -> void: - _show_passage() + _current_passage = load("res://game/passage.tscn").instantiate() + add_child(_current_passage) + + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("pause") and not _current_passage.is_paused(): + _pause_game() -func _show_passage() -> void: - if _current_scene != null: - _current_scene.queue_free() +func _process(_delta: float) -> void: + if _show_pause_menu: + _pause_menu = load("res://menu/pause_menu.tscn").instantiate() + add_child(_pause_menu) + _pause_menu.continue_game.connect(_unpause_game) + _pause_menu.show_main_menu.connect(_show_main_menu) + _show_pause_menu = false + + +func _pause_game() -> void: + _current_passage.set_paused(true) + _current_passage.visible = false - if _current_passage == null: - _current_passage = load("res://game/passage.tscn").instantiate() - add_child(_current_passage) - else: - _current_passage.visible = true + _show_pause_menu = true - -func _show_pause_menu() -> void: - if _current_scene != null: - _current_scene.queue_free() - if _current_passage != null: - _current_passage.visible = false - - var scene : Node = load("res://menu/pause_menu.tscn").instantiate() - add_child(scene) - scene.continue_game.connect(_show_passage) - scene.show_main_menu.connect(_show_main_menu) - _current_scene = scene + + +func _unpause_game() -> void: + _current_passage.set_paused(false) + _current_passage.visible = true + + _pause_menu.queue_free() func _show_main_menu() -> void: diff --git a/game/passage.gd b/game/passage.gd index e251cf8..c443bc8 100644 --- a/game/passage.gd +++ b/game/passage.gd @@ -1 +1,13 @@ +class_name Passage + extends Node2D + +var _paused : bool = false + + +func set_paused(paused: bool) -> void: + _paused = paused + + +func is_paused() -> bool: + return _paused diff --git a/menu/credits.gd b/menu/credits.gd index 0fdddf5..1d460fd 100644 --- a/menu/credits.gd +++ b/menu/credits.gd @@ -3,5 +3,9 @@ extends Node signal show_main_menu +func _ready() -> void: + $%MainMenuButton.grab_focus() + + func _on_main_menu_button_pressed() -> void: show_main_menu.emit() diff --git a/menu/credits.tscn b/menu/credits.tscn index 10f674c..149bd3c 100644 --- a/menu/credits.tscn +++ b/menu/credits.tscn @@ -1,7 +1,13 @@ -[gd_scene load_steps=2 format=3 uid="uid://c3q3g2647qc27"] +[gd_scene load_steps=4 format=3 uid="uid://c3q3g2647qc27"] [ext_resource type="Script" uid="uid://dclkpithyykju" path="res://menu/credits.gd" id="1_wp78b"] +[sub_resource type="InputEventAction" id="InputEventAction_wp78b"] +action = &"ui_cancel" + +[sub_resource type="Shortcut" id="Shortcut_nidem"] +events = [SubResource("InputEventAction_wp78b")] + [node name="Credits" type="Control"] layout_mode = 3 anchors_preset = 0 @@ -32,7 +38,9 @@ layout_mode = 2 alignment = 2 [node name="MainMenuButton" type="Button" parent="VBoxContainer/HBoxContainer"] +unique_name_in_owner = true layout_mode = 2 +shortcut = SubResource("Shortcut_nidem") text = "Main Menu" [connection signal="pressed" from="VBoxContainer/HBoxContainer/MainMenuButton" to="." method="_on_main_menu_button_pressed"] diff --git a/menu/main_menu.gd b/menu/main_menu.gd index 3b1101c..e455073 100644 --- a/menu/main_menu.gd +++ b/menu/main_menu.gd @@ -5,6 +5,28 @@ signal new_game signal quit_game signal show_options +func _ready() -> void: + _init_focus() + _setup_neighbors() + + +func _init_focus() -> void: + if $%ContinueButton.disabled: + $%StartButton.grab_focus() + else: + $%ContinueButton.grab_focus() + + +func _setup_neighbors() -> void: + if $%ContinueButton.disabled: + $%ContinueButton.focus_neighbor_top = "" + $%StartButton.focus_neighbor_top = $%QuitButton.get_path() + $%QuitButton.focus_neighbor_bottom = $%StartButton.get_path() + else: + $%ContinueButton.focus_neighbor_top = $%QuitButton.get_path() + $%StartButton.focus_neighbor_top = "" + $%QuitButton.focus_neighbor_bottom = $%ContinueButton.get_path() + func _on_continue_button_pressed() -> void: continue_game.emit() diff --git a/menu/main_menu.tscn b/menu/main_menu.tscn index 85fd2ff..6fcecc3 100644 --- a/menu/main_menu.tscn +++ b/menu/main_menu.tscn @@ -15,19 +15,23 @@ offset_right = 179.0 offset_bottom = 236.0 [node name="ContinueButton" type="Button" parent="VBoxContainer"] +unique_name_in_owner = true layout_mode = 2 disabled = true text = "Continue" [node name="StartButton" type="Button" parent="VBoxContainer"] +unique_name_in_owner = true layout_mode = 2 text = "Start" [node name="OptionsButton" type="Button" parent="VBoxContainer"] +unique_name_in_owner = true layout_mode = 2 text = "Options" [node name="QuitButton" type="Button" parent="VBoxContainer"] +unique_name_in_owner = true layout_mode = 2 text = "Quit" diff --git a/menu/options.gd b/menu/options.gd index 426e476..5564bef 100644 --- a/menu/options.gd +++ b/menu/options.gd @@ -3,22 +3,30 @@ extends Node signal show_credits signal show_main_menu -@onready var fullscreen_check := $%FullscreenCheckButton -@onready var window_factor := $%WindowFactorOptionButton - func _ready() -> void: _load_current_settings() + _init_focus() + _setup_neighbors() + + +func _init_focus() -> void: + $%FullscreenCheckButton.grab_focus() + + +func _setup_neighbors() -> void: + $%CreditsButton.focus_neighbor_left = $%BackButton.get_path() + $%BackButton.focus_neighbor_right = $%CreditsButton.get_path() func _load_current_settings() -> void: - fullscreen_check.button_pressed = SettingsManager.fullscreen() - window_factor.selected = SettingsManager.window_factor() + $%FullscreenCheckButton.button_pressed = SettingsManager.fullscreen() + $%WindowFactorOptionButton.selected = SettingsManager.window_factor() _update_window_factor_disabled() func _update_window_factor_disabled() -> void: - window_factor.disabled = SettingsManager.fullscreen() + $%WindowFactorOptionButton.disabled = SettingsManager.fullscreen() func _on_fullscreen_check_button_toggled(toggled: bool) -> void: diff --git a/menu/options.tscn b/menu/options.tscn index 0efaa84..c662b23 100644 --- a/menu/options.tscn +++ b/menu/options.tscn @@ -1,7 +1,13 @@ -[gd_scene load_steps=2 format=3 uid="uid://btr60idiit4y7"] +[gd_scene load_steps=4 format=3 uid="uid://btr60idiit4y7"] [ext_resource type="Script" uid="uid://ceng1u112aqg0" path="res://menu/options.gd" id="1_61pji"] +[sub_resource type="InputEventAction" id="InputEventAction_61pji"] +action = &"ui_cancel" + +[sub_resource type="Shortcut" id="Shortcut_1tdpy"] +events = [SubResource("InputEventAction_61pji")] + [node name="Options" type="Control"] layout_mode = 3 anchors_preset = 0 @@ -20,6 +26,7 @@ layout_mode = 2 columns = 2 [node name="FullscreenLabel" type="Label" parent="VBoxContainer/OptionsGridContainer"] +unique_name_in_owner = true layout_mode = 2 text = "Fullscreen" @@ -28,6 +35,7 @@ unique_name_in_owner = true layout_mode = 2 [node name="WindowFactorLabel" type="Label" parent="VBoxContainer/OptionsGridContainer"] +unique_name_in_owner = true layout_mode = 2 text = "Window Factor" @@ -54,11 +62,14 @@ layout_mode = 2 alignment = 2 [node name="CreditsButton" type="Button" parent="VBoxContainer/HBoxContainer"] +unique_name_in_owner = true layout_mode = 2 text = "Credits" [node name="BackButton" type="Button" parent="VBoxContainer/HBoxContainer"] +unique_name_in_owner = true layout_mode = 2 +shortcut = SubResource("Shortcut_1tdpy") text = "Back" [connection signal="toggled" from="VBoxContainer/OptionsGridContainer/FullscreenCheckButton" to="." method="_on_fullscreen_check_button_toggled"] diff --git a/menu/pause_menu.gd b/menu/pause_menu.gd index 74caa8d..1816a8d 100644 --- a/menu/pause_menu.gd +++ b/menu/pause_menu.gd @@ -1,9 +1,25 @@ +class_name PauseMenu + extends Node signal continue_game signal show_main_menu +func _ready() -> void: + _init_focus() + _setup_neighbors() + + +func _init_focus() -> void: + $%ContinueButton.grab_focus() + + +func _setup_neighbors() -> void: + $%ContinueButton.focus_neighbor_top = $%MainMenuButton.get_path() + $%MainMenuButton.focus_neighbor_bottom = $%ContinueButton.get_path() + + func _on_continue_button_pressed() -> void: continue_game.emit() diff --git a/menu/pause_menu.tscn b/menu/pause_menu.tscn index 4103ec6..f153522 100644 --- a/menu/pause_menu.tscn +++ b/menu/pause_menu.tscn @@ -1,7 +1,16 @@ -[gd_scene load_steps=2 format=3 uid="uid://bclo2wl8ibrcg"] +[gd_scene load_steps=5 format=3 uid="uid://bclo2wl8ibrcg"] [ext_resource type="Script" uid="uid://npqs2m5g5bd6" path="res://menu/pause_menu.gd" id="1_inj1j"] +[sub_resource type="InputEventAction" id="InputEventAction_inj1j"] +action = &"ui_cancel" + +[sub_resource type="InputEventAction" id="InputEventAction_vy7sn"] +action = &"pause" + +[sub_resource type="Shortcut" id="Shortcut_lgp46"] +events = [SubResource("InputEventAction_inj1j"), SubResource("InputEventAction_vy7sn")] + [node name="PauseMenu" type="Control"] layout_mode = 3 anchors_preset = 0 @@ -15,10 +24,13 @@ offset_right = 196.0 offset_bottom = 166.0 [node name="ContinueButton" type="Button" parent="VBoxContainer"] +unique_name_in_owner = true layout_mode = 2 +shortcut = SubResource("Shortcut_lgp46") text = "Continue" [node name="MainMenuButton" type="Button" parent="VBoxContainer"] +unique_name_in_owner = true layout_mode = 2 text = "Main Menu" diff --git a/project.godot b/project.godot index 8ba5f0c..0f24bc7 100644 --- a/project.godot +++ b/project.godot @@ -36,58 +36,225 @@ window/stretch/scale_mode="integer" [input] -menu_up={ -"deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":11,"pressure":0.0,"pressed":true,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) -] -} -menu_down={ -"deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":12,"pressure":0.0,"pressed":true,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) -] -} -menu_left={ -"deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":13,"pressure":0.0,"pressed":true,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) -] -} -menu_right={ -"deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":true,"script":null) -, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) -] -} -menu_accept={ -"deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194310,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +ui_accept={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) ] } -menu_decline={ -"deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +ui_cancel={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194308,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null) ] } -menu_back={ -"deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194308,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null) +ui_focus_next={ +"deadzone": 0.5, +"events": [] +} +ui_focus_prev={ +"deadzone": 0.5, +"events": [] +} +ui_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) ] } +ui_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +] +} +ui_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +] +} +ui_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":83,"physical_keycode":0,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} +ui_focus_mode={ +"deadzone": 0.5, +"events": [] +} +ui_text_completion_query={ +"deadzone": 0.5, +"events": [] +} +ui_text_completion_accept={ +"deadzone": 0.5, +"events": [] +} +ui_text_completion_replace={ +"deadzone": 0.5, +"events": [] +} +ui_text_newline={ +"deadzone": 0.5, +"events": [] +} +ui_text_newline_blank={ +"deadzone": 0.5, +"events": [] +} +ui_text_newline_above={ +"deadzone": 0.5, +"events": [] +} +ui_text_indent={ +"deadzone": 0.5, +"events": [] +} +ui_text_dedent={ +"deadzone": 0.5, +"events": [] +} +ui_text_backspace_word={ +"deadzone": 0.5, +"events": [] +} +ui_text_backspace_word.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_backspace_all_to_left.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_delete_word={ +"deadzone": 0.5, +"events": [] +} +ui_text_delete_word.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_delete_all_to_right.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_word_left={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_word_left.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_word_right={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_word_right.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_document_start={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_document_start.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_document_end={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_document_end.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_add_below={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_add_below.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_add_above={ +"deadzone": 0.5, +"events": [] +} +ui_text_caret_add_above.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_select_word_under_caret={ +"deadzone": 0.5, +"events": [] +} +ui_text_select_word_under_caret.macos={ +"deadzone": 0.5, +"events": [] +} +ui_text_add_selection_for_next_occurrence={ +"deadzone": 0.5, +"events": [] +} +ui_text_skip_selection_for_next_occurrence={ +"deadzone": 0.5, +"events": [] +} +ui_text_toggle_insert_mode={ +"deadzone": 0.5, +"events": [] +} +ui_unicode_start={ +"deadzone": 0.5, +"events": [] +} +ui_graph_duplicate={ +"deadzone": 0.5, +"events": [] +} +ui_graph_delete={ +"deadzone": 0.5, +"events": [] +} +ui_graph_follow_left={ +"deadzone": 0.5, +"events": [] +} +ui_graph_follow_left.macos={ +"deadzone": 0.5, +"events": [] +} +ui_graph_follow_right={ +"deadzone": 0.5, +"events": [] +} +ui_graph_follow_right.macos={ +"deadzone": 0.5, +"events": [] +} +ui_swap_input_direction={ +"deadzone": 0.5, +"events": [] +} +ui_colorpicker_delete_preset={ +"deadzone": 0.5, +"events": [] +} pause={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)