3


0

cursesの自動キーリピートを検出する

Linuxでcursesを使用して、小さなテキストモードアプリケーションを作成しています。

キーボード入力には、curses関数を使用します。 キーの自動リピート機能、例えば キーを押し続けると、キーを再度離すまで複数のキーイベントが発生します。

また、実際のキーイベントとキーリピートロジックによって生成されたイベントを区別することは可能ですか?

背景:アプリケーションは、ユーザーが特定のパラメーターの整数値を変更できる小さなデータ入力フロントエンドです。 長期的には、アプリケーションは標準キーボードなしで動作します。 データ入力用のボタンは、「増加」、「減少」、「OK」、「キャンセル」の4つだけです。

番号の範囲が大きいため、ユーザーがキーを押しているかどうかを知りたいです。 そうすれば、数値を1ずつ増やすのではなく、10または100ずつ増やすことで、数値範囲をより速くスキャンできます。 ユーザーがキーをタップした場合、入力方法は再び正確になり、数字を1つずつ増減します。

cursesのキーボード入力機能でこれは可能ですか?

1 Answer


3


いいえ-cursesは端末からキーを受け取るだけです。 本当に必要な場合は、各キーを押す間の遅延を調べることにより、キーの繰り返しが自動化されているかどうかを_try_で確認できます。 ただし、特にリモート接続では、遅延はネットワーク遅延の影響を受けるため、これは適切なソリューションではない場合があります。

最適なソリューションは、小さなステップにはUP / DOWNを使用し、大きなステップにはPAGEUP / PAGEDOWNを使用することです。