默认情况下,如果不等待用户按下回车,您无法在 Unix 中获得终端输入。如何立即获得输入?我在 debian Linux 上使用 gdc,所以我不能使用 ncurses。谢谢。
问问题
154 次
1 回答
3
ncurses 是一个很好的解决方案,应该适用于几乎任何带有任何编译器的 Linux 安装......
但是,如果您不想使用 ncurses,还有其他一些选择:
- 我的 terminal.d 提供它并在大多数终端上工作,但不如 ncurses 那么多(我想说我涵盖了 98% 的典型设置,但那里有很多变化,我没有尝试像 ncurses 那样全面): https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff/blob/master/terminal.d
在文件底部附近查找version(Demo) void main()
. RealTimeConsoleInput
如果需要(鼠标、调整大小等),可为您提供带有即时输入和其他信息的事件循环。
- 您也可以使用正确的
tcgetattr
和tcsetattr
调用更改终端模式,然后正常执行其他所有操作。你会想要import core.sys.posix.termios;
和import core.sys.posix.unistd;
for 函数,然后其余的与 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
然后您可以立即使用输入。
于 2014-03-02T19:05:42.147 回答