ttys are complex beasts, which can work in several different modes. E.g. when running
vi(1), you don't want characters typed to show up on screen, the editor is in charge of what is displayed. This is called "raw" mode. Usually you are in "echo" mode, in which the kernel sends what is typed to the screen directly. If a program which took over the details of the display crashes and doesn't restore the mode before exiting, all sorts of weird stuff gets displayed when typing. Another popular way to screw up the settings is to sed a binary file (e.g. an executable or an image) to the screen, they are prone to contain the key sequences to change settings...
The way to restore the
tty settings to normal is to run the command
reset, which is done by
^J is ctrl-J, press the ctrl and J keys simultaneously).
ctrl-J is what C calls '\n', NEWLINE, it ends the previous line the shell was reading (if any);
reset is the command;
ctrl-J ends the line and makes the shell run the command. This nonsense is needed since the return key generates '\r', CARRIAGE RETURN, which the normal mode translates into ´\n' for convenience.
Welcome to the intricacies of Unix roots.