extends Button const BLINK_SPEED: int = 150 export var action: String export var options_screen: NodePath var listen := false func _init() -> void: connect("pressed", self, "_on_pressed") func _ready() -> void: _update_text() func _process(delta: float) -> void: if listen: if Time.get_ticks_msec() % (BLINK_SPEED * 2) < BLINK_SPEED: modulate.a = 0.0 else: modulate.a = 1.0 func _update_text() -> void: text = OS.get_scancode_string(Controls.get_key(action)) modulate.a = 1.0 func _on_pressed() -> void: if not listen: listen = true disabled = true text = "" get_node(options_screen).can_exit = false get_tree().create_timer(2.0, true).connect("timeout", self, "_on_timeout") func _on_timeout() -> void: listen = false disabled = false _update_text() get_node(options_screen).set_deferred("can_exit", true) func _gui_input(event: InputEvent) -> void: if listen: if event is InputEventKey and event.pressed: Controls.set_key(action, event.physical_scancode) listen = false get_node(options_screen).set_deferred("can_exit", true) set_deferred("disabled", false) _update_text() accept_event()