Ncurses没有检测到击键

时间:2013-07-09 16:00:43

标签: c++ c ncurses

我正在尝试使用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 

根本没有检测到空间和空格。

有人可以告诉我为什么吗?

感谢。

1 个答案:

答案 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");
           }

     }
 }