インタラクティブでカーソルキーの使用に反応するシェルスクリプトを書きたいと思います。私の現在のアプローチは少し複雑に思えます。tput kcud1
etc. を使用してカーソル キーのエスケープ シーケンスを決定し、read -s -n 1 a
バイト単位で読み取り、収集された文字列にそのバイトを追加し、収集された文字列を決定されたエスケープ シーケンスと比較します。どちらかが一致する場合、私は反応することができます。
エスケープ シーケンスがどこで終了するのかわからないため、これには問題があります。たとえば、tput kcud1
ここで (下矢印) は を返します"\eOB"
。未知のエスケープ シーケンスを無視するためにタイムアウトを使用します (エスケープ文字が到着した場合は、おそらく最初からやり直します)。これはすべて私には良く見えません。
シェルスクリプトで矢印キーの使用に反応する簡単な方法はありませんか?