增加键缓冲区(用于取消绑定)

时间:2014-03-22 08:10:52

标签: perl ncurses curses

在我的curses程序中,我有时需要使用ungetch一次性放回很多字符。但是,有一个限制:

foreach my $character (reverse split('', "put back this string")) {
  ungetch($character);
}

对于大字符串,ungetch失败(它返回-1,我应该检查上面的内容)。如何在我必须执行getch之前增加缓冲区或限制来控制我必须推回多少个字母?

1 个答案:

答案 0 :(得分:4)

缓冲区的大小由Perl curses实现的底层curses库提供。在ncurses中,输入队列大小定义在ncurses/curses.priv.h,其中定义为FIFO_SIZE是MAXCOLUMNS + 2,对于较新版本的ncurses,它是137。

为了增加输入队列大小,您需要增加该值并重新编译系统的curses实现。

清除输入队列fifo_clear的基础方法不会暴露在curses实现源代码之外,这意味着它不会提供给Perl绑定。我所知道的唯一提供的方法是getch,您已将其指定为解决方法。