GDScript : problems using action_add_event or set_scancode

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By CaptainSweet

Hello everybody,

I read and watched a lot of tutorial explaining how to bind new inputs to actions.
The objective was to autoload a config file containing the key bindings. I ended up with the following code (full script):

extends Node
var config_file_path : String = "res://keybinds.ini"
var config_file

var keybinds = {}

func _ready():
	config_file =
	if config_file.load(config_file_path) == OK:
		for key in config_file.get_section_keys("keybinds"):
			var key_value = config_file.get_value("keybinds", key)
			keybinds[key] = key_value
		print("NO CONFIG FILE")

func set_game_binds():
	for key in keybinds.keys():
		var value = keybinds[key]
		var actionlist = InputMap.get_action_list(key)
		if !actionlist.empty():
			InputMap.action_erase_event(key, actionlist[0])
		var new_key =
		InputMap.action_add_event(key, new_key)
		print(key, " : ",  new_key)

The program autoload and run without error. However, the edited inputs don’t work anymore after it ran. The tests seem to show that the problem comes from the last six lines:

    if !actionlist.empty():
        InputMap.action_erase_event(key, actionlist[0]) Remove the action from the key

=> This part works : inputs works correctly when I remove this line and don’t respond anymore when I add it.

    var new_key =

    InputMap.action_add_event(key, new_key)
    print(key, " : ",  new_key)

=> At this point, I get no more answers from the edited inputs (ie : the associated buttons don’t reach any input(event)). Inputs that aren’t configured by this file work fine.
I also tried to print(OS.get_scancode_string(new_key)), but it returns nothing.

My config file (called keybinds.ini) contains :



To test my game, I simply added this code:

func _input(_event):
	if Input.is_action_just_pressed("ui_accept"):
		print("Accept command works")
 if Input.is_action_just_pressed("ui_cancel"):
		print("Cancel command works")

Another possibility is that I missed differences between keys and controller button bindings.
Thank you to tell me if you see any mistake.

Good evening.