私はttyでユーザー入力を待つスクリーンセーバーシステムを実装しています。入力が受信されない場合は、入力が受信されるまでスクリーンセーバーを再生します。
私は何をしますか?効率的なttyをクリックしたときのユーザー入力(例/dev/pts/1
:)
よろしくお願いします。
答え1
したがって、これは実際にはstdinではなくPTYに関するものです。実行中のプロセスのキーストロークは通常stdinではありません!
したがって、必要なのは、入力を処理し、画面に何も起こらないときに時間を記録するタイマーを維持できる疑似TTYエミュレータです。
tmux
これは可能です。をインストールし(少なくとも)、次を含むintmux
を生成します(60秒のスクリーンセーバー遅延)。tmux.conf
~/.config/tmux
set -g lock-command "the program you want to be screensaver. It has to quit when a key is pressed, but that's your problem to implement"
set -g lock-after-time 60
その後、「基本」プログラムを実行できます。
tmux new yourprogram
(または通常どおりtmuxを使用してください。tmux チュートリアル)
これにより、reptyr
既存のプログラムをtmux
まだ試していないセッションに移行して、非アクティブ検出がまだ機能していることを確認できます。