msvcrt.getch()
メソッドを使用してkeypressをキャッチするためにmsvcrt
パッケージをPythonで使用できるようにしたいが、ターミナルウィンドウにフォーカスが必要なように見える働くこれを回避する方法はありますか?端末ウィンドウがフォーカスにないときにMSVCRTを使用してPythonでWindowsでKeypressesをキャッチ
答えて
@IInspectableのようにCtypes用のPythonラッパーが見つかりました。 low_level Keyboardフックを素敵なモニタークラスでラップします。
[低レベルキーボードフック](https://msdn.microsoft.com/en-us/library/windows/desktop/ms644985.aspx)ドキュメントのメモをお読みになりましたか? * "[...]アプリケーションが低レベルのフックを使用する必要があるほとんどの場合、**未処理の入力を監視する必要があります。**これは、未処理の入力が対象となるマウスとキーボードメッセージを非同期に監視できるためですRaw入力の詳細については、[Raw Input](https://msdn.microsoft.com/en-us/library/ms645536(vs.85).aspx)を参照してください。 "* – IInspectable
私はここでLEDを点灯させています。宇宙への答えを正確に計算するわけではありません。私の実装は現在十分に速いようです。 –
お勧めはあなたのアプリケーションにのみ関連していません。低レベルのキーボードフックは、システム全体にパフォーマンスの影響を与えます。すべてのキーボード入力に対して、2つのコンテキストスイッチが追加され、フックがイベントを処理するのにかかる時間も加算されます。 Stack OverflowはQ&Aサイトなので、誰かがあなたの質問を見つけるかもしれません。**彼らは**宇宙への答えを計算しています**。 – IInspectable
- 1. 端末でpythonを実行し、端末が閉じたときに終了しないでください
- 2. node.jsスクリプトを使用して端末にフォーカスを移動
- 3. Jupyterで使用できない端末
- 4. mediarecorderを使用しているときにAndroid端末がシャットダウンしてログを取得できない
- 5. Mac端末でR端末コマンドを使用できますか?
- 6. 端末でPythonを実行しているときにArgvを使用するとエラーが発生する
- 7. 端末コマンドをPythonコードに使用
- 8. Pytestが端末ウィンドウにテスト結果を表示しない
- 9. pythonのようなコマンドが端末で実行されているときのウィンドウとは何ですか?
- 10. 端末のテキストがtcltkウィンドウにリアルタイムで表示されない
- 11. アクティブセッションのないWindowsサーバーにウィンドウをフォーカス
- 12. Pythonを使用して端末でオーディオベルを生成
- 13. applescriptを使用して端末ウィンドウを隠す
- 14. Python IdleがWindows上でどの端末を使用しているのですか
- 15. Pythonを使用してAppleScriptを使用して端末に印刷
- 16. Abaqus nogui pythonインターフェイスを使用して端末に印刷
- 17. 端末でscpを使用
- 18. すべてのAndroid端末で自動フォーカスが機能しない
- 19. CIを使用すると、端末の出力がウィンドウの端に達すると停止します。
- 20. Windows XPでHerokuを使用しようとしたときにmsvcrt-ruby18.dllが見つかりません
- 21. スクリーンにプリントする方法 - 端末ウィンドウではない(bash)
- 22. 端末内でコマンドを実行して端末を使用する方法は?
- 23. jquery端末でグリーティングが入力されているときに端末プロンプトを非表示にする
- 24. macportsを使用してpython 3.6をインストールした後に端末でPythonを使用する際のエラー
- 25. フラッシュアプリのフォーカスが合っていないときにキャッチF11を押した?
- 26. 電子がWindows 10タッチキーボードにフォーカスを奪って使用できなくなる
- 27. 同じウィンドウ(Ubuntu)で端末を開く
- 28. _statusItemがクリックされたときにNSMenuを使用してウィンドウをフォーカスしていないときにアクションを実行することはできません。
- 29. MacVimでConqueを使用しているときの端末の色
- 30. フォーカスがないQTreeWidgetでkeyPressEventをキャッチ
入力だけで、これまで最前面ウィンドウになりますので、明らかに 'getch'を呼び出すプロセスは、フォアグラウンド・プロセスでなければなりません。ルールを変更することはできません。しかし、あなたは解決しようとしている実際の問題については尋ねませんでした。それは何ですか? – IInspectable
さて、キーボードのキーを押したときに、LEDストリップを制御しているArduinoにPythonがメッセージを送信しているので、ターミナルウィンドウにフォーカスがないときでもキーの押下を検出できるようにしたい。ウィンドウをバックグラウンドで永続化する方法はありますか? –
* "ウィンドウをバックグラウンドで永続化する方法はありますか?" - Uhm ...いいえ、しかし、あったとしても、ウィンドウを前面に持ってこないでしょう( 'getch() '意味のあることをする)。フォアグラウンドプロセスを使用せずに入力を監視する場合は、[Raw Input](https://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx)のようなものが必要です。 [低レベルキーボードフック](https://msdn.microsoft.com/en-us/library/windows/desktop/ms644985.aspx)を参照してください。 – IInspectable