默认情况下,如果不等待用户按下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
然后,您可以立即使用输入.