使用stdin和ncurses

时间:2012-04-03 09:52:36

标签: c stdin readline ncurses curses

我正在使用ncurses来处理涉及从用户那里获取输入的简单UI。 输入是一个1行高的窗口,所有的窗口都是光标。 我目前正在使用wgetnstr(inputwindow, input, inputlen)

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

但是,除了ncurses提供的功能之外,我还无法使用stdin。如果能让我获得上述好处,那么放弃inputwindow就行了。但我不确定它是否可能。

所以,

  • 是否可以使用readline或使用ncurses及其提供的输入功能来实现此类功能? 和/或
  • 是否可以,如何在curses窗口下面有一个空行,这将允许用户直接使用stdin(即所有常见的读取输入函数,甚至直接readline)提供输入?

如果这些是可行的,一些简单的代码会很棒,但指导和指针也很棒。如果没有,那就很高兴知道,而不是浪费时间试图让它发挥作用。

1 个答案:

答案 0 :(得分:1)

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

如果你需要在ncurses程序中输入readline样式,你需要自己实现它。

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