Credo che 57 righe di codice siano troppe per risolvere una "problema" simile
codice:
#include <iostream>
#include <windows.h>
#include <conio.h>

using namespace std;

int main()
{
	char str[6]="nulla";
	do
	{
		if( kbhit() )
		{
			str[0] = getch();
			str[1]=0;
		}
		printf("%s ", str);
		Sleep(500);
	}
	while( str[0]!=27 );
	return 0;
}