Does godot provide a way for the player to customize their own controls, or do I have to program this?
There is nothing built-in per say. You can remap input events to input actions, giving a way to change the controls in a semi-generic fashion. I believe this demo on the demo repository shows how it can be done.
thank you, I'll look at the source code there.