デフォルトでは、ユーザーが Enter キーを押すのを待たずに Unix で端末入力を取得することはできません。すぐに入力を取得するにはどうすればよいですか? debian Linux で gdc を使用しているため、ncurses を使用できません。ありがとう。
1 に答える
3
ncurses は、ほぼすべての Linux インストールで任意のコンパイラで動作する優れたソリューションです...
ただし、ncurses を使用したくない場合は、他にいくつかのオプションがあります。
- 私の terminal.d はそれを提供し、ほとんどの端末で動作しますが、ncurses ほど多くはありません (典型的なセットアップの 98% をカバーしていると言えますが、そこにはたくさんのバリエーションがあり、ncurses ほど包括的であろうとはしませんでした): https://github.com/adamdruppe/misc-stuff-included-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;
、関数のために、残りは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 に答える