I think you can do that in few lines of ncurses/C, and it'll be system-portable.
initscr();
noecho();
cbreak();
timeout(10);
int ch;
while(1) {
ch = getch();
if(ch != ERR) {
printf("Key : "%s\n", keyname(ch));
refresh();
}
}
From head, didn't try. If you put this in a C file...