Ncurses键盘输入

时间:2012-02-09 09:33:05

标签: c linux input keyboard ncurses

嘿,我已经测试了getch和getchar,但是它输入的功能,我认为必须有一个读取键盘缓冲区的功能。 我的部分代码

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

}

1 个答案:

答案 0 :(得分:4)

如果您不希望getch()等待,则必须使用nodelay()将其设置为非阻止。

执行后:

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

如果没有可用的输入,getch()将返回ERR

输入选项的联机帮助页是here,并且在其自己的联机帮助页中也提到了getch的行为,链接here


  

nodelay选项使getch成为非阻塞调用。如果没有准备好输入,则getch返回ERR。如果禁用(bf为FALSE),则getch会等待,直到按下某个键。


  

在无延迟模式下,如果没有输入正在等待,则返回值ERR。