如何在Linux中使用D编程语言来缓冲输入?

默认情况下,如果不等待用户按下Enter键,就无法在Unix中获取终端输入.
如何立即获得输入?我在debian Linux上使用gdc,所以不能使用ncurses.
谢谢.

解决方法:

ncurses是一个很好的解决方案,几乎可以在任何带有任何编译器的linux安装上使用…

但是,如果您不想使用ncurses,则还有其他一些选择:

>我的terminal.d提供了它并且可以在大多数终端上运行,但是不如ncurses那样多(我说我涵盖了98%的典型设置,但是有很多变化,而且我没有尝试像它一样全面) ncurses):https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff/blob/master/terminal.d

在文件底部附近查找版本(Demo)void main(). RealTimeConsoleInput为您提供事件循环,其中包含即时输入和其他所需信息(鼠标,调整大小等).

>您也可以通过正确的tcgetattr和tcsetattr调用更改终端模式,然后正常执行其他所有操作.您将要导入core.sys.posix.termios;.并导入core.sys.posix.unistd;对于函数,其余的操作与C中相同.

这样做的方法如下:

 termios old;
 tcgetattr(1, &old);
 scope(exit) tcsetattr(1, TCSANOW, &old); // put the terminal back to how it was
 auto n = old;
 n.c_lflag &= ~ICANON; // turn off canonical mode
 tcsetattr(1, TCSANOW, &n); // do the change

然后,您可以立即使用输入.

上一篇:在ncurses中的指定位置添加相同符号的简短方法是什么?


下一篇:使用Python Urwid / NCurses在终端应用程序内创建水平和垂直滚动表