使用stdin和ncurses

问题描述:

我正在使用ncurses来获取用户输入的简单UI。 输入是1行高度的窗口,所有的都是光标。我正在使用wgetnstr(inputwindow, input, inputlen)使用stdin和ncurses

我想要的是能够编辑输入行,就像readline一样。也就是说,能够使用^ W(^ U工作btw),回到缓冲区并进行更改等。 如果我可以保留输入的历史记录并能够使用“向上”箭头访问它,那也会很棒。

但是,我一直无法使stdin与除ncurses提供的函数之外的任何其他工作无关。如果这能让我获得上述好处,那么放弃inputwindow就可以了。但我不确定是否有可能。

所以,

  • 是否有可能使用readline或使用ncurses并提供输入功能具有这样的功能? 和/或
  • 是否有可能以及如何在curses窗口下方有空行,这将允许用户直接使用stdin提供输入(即所有常见的读取输入函数,因此即使直接使用readline) ?

如果这些都是可行的,一些简单的代码将是巨大的,但指导和指针也很棒。如果不是这样,那么知道这件事会很高兴,而不是浪费时间去努力工作。

+0

[这里](http://*.com/questions/1706678/ncurses-and-stdin-blocking-problem)是一个类似的问题,但不是真的一样。 – c00kiemon5ter 2012-04-03 09:54:12

+0

可能是我想要的最好的东西,是客户如何处理输入。例如。 'irssi'和'weechat'。我会挖一点。 – c00kiemon5ter 2012-04-03 10:10:39

ncurses希望控制整个屏幕。混合ncurses输入/输出与非ncurses输入/输出可能是可能的,但我不会建议尝试它。

如果您需要在ncurses程序中使用readline style输入,您需要自己实现它。

form库(包含在ncurses中)允许您使用可编辑字段定义表单。尽管你需要自己处理历史。这些表格可以放置在panels中,以便更轻松地控制屏幕上的位置。