3

デフォルトでは、ユーザーが Enter キーを押すのを待たずに Unix で端末入力を取得することはできません。すぐに入力を取得するにはどうすればよいですか? debian Linux で gdc を使用しているため、ncurses を使用できません。ありがとう。

4

1 に答える 1

3

ncurses は、ほぼすべての Linux インストールで任意のコンパイラで動作する優れたソリューションです...

ただし、ncurses を使用したくない場合は、他にいくつかのオプションがあります。

ファイルの下部にある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 に答える