超时NCURSES和缓冲区

时间:2012-10-03 21:56:53

标签: ncurses

我正在尝试向使用ncurses创建的终端应用程序添加一些细节。

应用程序类似于超时测验...如果用户浪费太多时间,则会发生超时并清除屏幕。

现在问题是:如何在超时前显示用户插入的文本,如果需要,可以编辑/重新编辑?

示例:

问:你觉得开心吗? (正确答案是的,我感到高兴)

答:是的,我是(TIMEOUT,清洁屏幕,问题再次打印,但没有打印出“是的,我是”)。

我不知道是否有可能将其添加到stdin缓冲区或行缓冲区......

...思想

非常感谢

1 个答案:

答案 0 :(得分:0)

你可以这样做:

  • 通过调用nodelay(stdscr, TRUE);
  • 禁用阻止键盘读取
  • 在循环中,使用getch()检查是否按下了某个键并检查它是否返回值> 0
    • 如果是,则照常处理密钥
    • 使用usleep()睡几微秒(没有忙碌等待!)并检查超时;如果超时发生,请处理