2012-04-03 78 views
2

我正在使用ncurses來獲取用戶輸入的簡單UI。 輸入是1行高度的窗口,所有的都是光標。我正在使用wgetnstr(inputwindow, input, inputlen)使用stdin和ncurses

我想要的是能夠編輯輸入行,就像readline一樣。也就是說,能夠使用^ W(^ U工作btw),回到緩衝區並進行更改等。 如果我可以保留輸入的歷史記錄並能夠使用「向上」箭頭訪問它,那也會很棒。

但是,我一直無法使stdin與除ncurses提供的函數之外的任何其他工作無關。如果這能讓我獲得上述好處,那麼放棄inputwindow就可以了。但我不確定是否有可能。

所以,

  • 是否有可能使用readline或使用ncurses並提供輸入功能具有這樣的功能? 和/或
  • 是否有可能以及如何在curses窗口下方有空行,這將允許用戶直接使用stdin提供輸入(即所有常見的讀取輸入函數,因此即使直接使用readline) ?

如果這些都是可行的,一些簡單的代碼將是巨大的,但指導和指針也很棒。如果不是這樣,那麼知道這件事會很高興,而不是浪費時間去努力工作。

+0

[這裏](http://stackoverflow.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

回答

1

ncurses希望控制整個屏幕。混合ncurses輸入/輸出與非ncurses輸入/輸出可能是可能的,但我不會建議嘗試它。

如果您需要在ncurses程序中使用readline style輸入,您需要自己實現它。

form庫(包含在ncurses中)允許您使用可編輯字段定義表單。儘管你需要自己處理歷史。這些表格可以放置在panels中,以便更輕鬆地控制屏幕上的位置。