# Handles background inputs (inputs when unfocused) extends Node signal key_pressed(key: Key) signal key_released(key: Key) signal all_keys_released #background input capture signal emptiedCapture signal pressedKey var costumeKeys = ["1","2","3","4","5","6","7","8","9","0"] var pressed_keys: Array[Key] = [] func should_fire_signal() -> bool: return get_viewport().gui_get_focus_owner() == null or not DisplayServer.window_is_focused() func _process(_delta): # This is a Dictionary[Key, bool] but I can't return typed dicts nor cast them var keys = BackgroundInputCapture.get_keys() for key in keys: if keys[key]: pressed_keys.append(key) if should_fire_signal(): key_pressed.emit(key) else: pressed_keys.erase(key) if should_fire_signal(): key_released.emit(key) #process_key_presses(keys) #bgInputSprite(keys) # #func process_key_presses(keys_pressed: Dictionary[Key, bool]): #if Global.main.fileSystemOpen: #return # #var keyStrings = keys_pressed.map( #func(i) -> String: return OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i) #) # #if keyStrings.size() <= 0: #emit_signal("emptiedCapture") #return # #if settingsMenu.awaitingCostumeInput >= 0: # #if keyStrings[0] == "Keycode1": #if !settingsMenu.hasMouse: #emit_signal("pressedKey") #return # #var currentButton = costumeKeys[settingsMenu.awaitingCostumeInput] #costumeKeys[settingsMenu.awaitingCostumeInput] = keyStrings[0] #Saving.settings["costumeKeys"] = costumeKeys #Global.pushUpdate("Changed costume " + str(settingsMenu.awaitingCostumeInput+1) + " hotkey from \"" + currentButton + "\" to \"" + keyStrings[0] + "\"") #emit_signal("pressedKey") # #for key in keyStrings: #var i = costumeKeys.find(key) #if i >= 0: #changeCostume(i+1) # # ## Handles background input for sprites #func bgInputSprite(keys_pressed: Dictionary[Key, bool]): #if fileSystemOpen: #return # #if keys_pressed.size() <= 0: #emit_signal("all_keys_released") #return # #spriteVisToggles.emit( #keys_pressed.map( #func(i) -> String: return OS.get_keycode_string(i) if !OS.get_keycode_string(i).strip_edges().is_empty() else "Keycode" + str(i) #) #)