Hi, thanks for your answer!
You're absolutely right about the ui_actions, I fixed that real quick.
About the "default" control node, I do not really have one, as in, there should be no UI elements reacting to keyboard input while the user is sculpting terrain. So the best "default" node would be the root control node for the UI I guess?
For the ui_clear_focus action, having to press escape (or any other key for that matter) after every interaction with the ui seems kind of tedious. It is still nice to have, just not enough as the only option imo.
So I added a script to the root control node (I had to change the nodes focus mode) :
extends Control
func _unhandled_input(event):
grab_focus()
This way, every time there is input that is not meant for the UI, the root node takes away focus and no actions are passed to any of the ui elements. It seems to work fine for now, but I am not sure how 'safe' this is.
Any comments on this?