Since you're using ncurses, you start by calling cbreak
to turn off line buffering. Then you'll call nodelay
to tell it not to wait before returning -- getch
will always return immediately. When it does, you'll check whether a key was pressed, and if so what key that was (and react appropriately).