我正在尝试使用ncurses来获取非阻塞输入。
#include <iostream>
#include <ncurses.h>
int main()
{
char ch;
nodelay(stdscr, TRUE);
while(1)
{
ch= getch();
if (ch == ERR) {
printf("here \n");
usleep(100000);
}
else {
printf("---------------\n");
}
}
}
然而,当我运行此代码时,无论我按什么,我总是只是“打印”。
示例输出:
Latitude-E6430:~$ ./try
here
here
here
here
here
here
here
here
here
here
here
here
here
here
here
here
here
here
here
here
here
here
here
dhere
ddhere
dhere
here
根本没有检测到空间和空格。
有人可以告诉我为什么吗?
感谢。
答案 0 :(得分:0)
最后我找到了问题的答案。
我需要做initscr();
之后我能够正确打印出来(虽然格式化不是预期的)。
正确的代码:
#include <iostream>
#include <ncurses.h>
int main()
{
char ch;
initscr();
nodelay(stdscr, TRUE);
while(1)
{
ch= getch();
if (ch == ' ') {
// printf("here \n");
usleep(100000);
}
else {
printf("---------------\n");
}
}
}