Create a function to check for key press in unix using ncurses
You can use the nodelay()
function to turn getch()
into a non-blocking call, which returns ERR
if no key-press is available. If a key-press is available, it is pulled from the input queue, but you can push it back onto the queue if you like with ungetch()
.
#include <ncurses.h>#include <unistd.h> /* only for sleep() */int kbhit(void){ int ch = getch(); if (ch != ERR) { ungetch(ch); return 1; } else { return 0; }}int main(void){ initscr(); cbreak(); noecho(); nodelay(stdscr, TRUE); scrollok(stdscr, TRUE); while (1) { if (kbhit()) { printw("Key pressed! It was: %d\n", getch()); refresh(); } else { printw("No key pressed yet...\n"); refresh(); sleep(1); } }}