0

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 

d とスペースはまったく検出されません。

誰かが理由を教えてもらえますか?

ありがとう。

4

1 に答える 1

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

     }
 }
于 2013-07-09T16:18:26.743 に答える