2012-02-09 16 views
0

ちょっと、getchとgetcharをテストしましたが、その入力を待っていましたが、キーボードバッファを読み込むfunktionがあるはずです。私のコードの パートNcursesキーボード入力

while (1) { 
    if (key!='r') 
    { 
     if (key!='q') 
     { 
      mvprintw(LINES-2, 1, "Display will refresh in %2d seconds ", t); 
      refresh(); 
      sleep(1); 
      t--; 
      break; 
     } 
     else 
     { 
     exit (0); 
     } 
    } 
    else 
    { 
    return; 
    } 

}

+0

'read(1、buffer、buffer_size)'を試したことがありますか? – Eregrith

答えて

4

あなたはgetch()を待ちたくない場合は、nodelay()で、ノンブロッキングであることを、それを設定する必要があります。

if (nodelay (pWin, 1) == ERR) { 
    // some error occurred. 
} 

の入力が利用可能でない場合、getch()ERRが返されます。実行した後

入力オプションのマンページはhereであり、動作はgetchであり、それ自体もマンページでも、リンクhereと記載されています。


NODELAYオプションは、getchは、非ブロッキング・コールされます。入力が準備完了でない場合、getchはERRを返します。無効にすると(bfがFALSE)、getchはキーが押されるのを待ちます。無遅延モードで


入力が待機されていない場合、値ERRが返されます。

+0

ねえ、私はそれをnodelay(stdscr、TRUE)で解決しました。キーパッド(stdscr、TRUE); noecho(); – Mar

関連する問題