Putty emulates a terminal which is connected to the Unix machine via serial (RS232c) connection. Look here for configuration options. Typical terminal types include vt100, vt200, xterm, ansi.
To get proper operation, your Unix environment variable TERM has to match the type of terminal being emulated (cf. Putty configuration Connection/Data/Terminal-type). I am using xterm, also for text-mode console windows.
Use echo $TERM as command to find the current value.
Esc is the first character of terminal control sequences. Therefore, it typically should not be used as stand-alone character. Ctrl, Shift and Alt on their own do not trigger any character to be sent to your Unix machine. You can make use of the Putty configuration menu Terminal/Keyboard to influence how certain keys are translated.