lcd keypad

what I'd expect from this code is that the keys that are pressed on the keypad will be shown on column "0" row "1".

Exactly. And that IS what you see.

So, what's the problem?

It should be fairly obvious that telling the LCD to display the next character in the 0th column every time is not what you want. Count how many characters have been received, and use that count to determine where to display the character just received.