You have to modify the step event in the obj_textbox object to accept more than just keyboard inputs. My recommendation to avoid the instant trigger issue would be to use a script which checks at that instant whether or not a button was pressed, and returns true or false, like this:
function checkInteract() {
if (keyboard_check_pressed(global.interact_key) || gamepad_button_check_pressed(0, global.gp_interact_key))
return true;
else
return false;
}
If anyone who sees this needs anymore guidance, just reply.