2016-12-26 8 views
0

ESCを押してもこのコードをtrueに戻すにはどうすればよいですか?Macでsys.stdin ESCをテストするには?

if sys.stdin in select.select([sys.stdin], [], [], 0)[0]: 
+0

端末を非バッファーモードにしましたか? – Dolda2000

+0

他の言葉で言えば、あなたの式が真を返さないのはEscだけでしょうか、あるいはEnter以外のほとんどのキーでも同じでしょうか? – Dolda2000

答えて

0

これは文脈上少しです。 selectは、読み取り可能なものがあるかどうかを報告するためにここで使用されます。何を見つけるには、あなたはそれを読む必要があります。しかし、押し付けられているものと同じではなく、まだ押しつけられているという意味です。そのような場合は、pygame.key.get_pressed()のようなインターフェイスが必要になります。 Unixライクなシステムでのデフォルトの動作は、ターミナル層がプログラムに渡す前に、バックスペースで文字を消去することを含めて、行全体を処理することです。それより細かい詳細は、たとえばcurses.cbreak()またはcurses.raw()など、調理されていないモードを使用する必要があります。これはキー押下の概念を復元しますが、キーが保持されているかどうかはまだ報告しません。しかし、キー自体はエンコードされています(多くは端末のエスケープシーケンスを使用し、エスケープ自体をデコードするのが最悪です)ので、getchまたはgetkeyを使用してそれらを識別する必要があります。

関連する問題