Commands bound to a key are meant to be used as part of line editing. They run with the terminal in raw mode without echo, with bash expecting to handle each key press¹. Most commands expect to run with the terminal in cooked mode, where the terminal reads one line at a time and echoes the input.
To run a command that takes over the terminal interaction, temporarily set the terminal to cooked mode.
bind -x '"\C-p": _bash_stty_save=$(stty -g); stty sane; su dargod; stty "$_bash_stty_save"'
Note that this may still not work perfectly, because you're doing something that bash doesn't expect. Bindings are not the right tool to run a command. To define a shortcut for a command, use an alias.
¹ strictly speaking, it's not a complete raw mode as ^C
, ^Z
,^\
(isig
) and ^Q
/ ^S
(ixon
) are not disabled in bash' line editor (even though ^S
conflicts with its emacs mode incremental search).