使用ncurses创build一个函数来检查unix中的按键

我一直在寻找一个相当于kbhit(),我已经阅读了这个问题上的几个论坛,大多数似乎build议使用ncurses

我应该如何去检查是否使用ncurses在c ++中按下了一个键。

由ncurses提供的函数getch()从窗口读取字符。 我想写一个函数,只检查是否有一个按键,然后我想要getch()。

提前致谢。

您可以使用nodelay()函数将getch()转换为非阻塞呼叫,如果没有按键可用,则返回ERR 。 如果有按键可用,则从输入队列中拉出,但如果您喜欢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); } } }