ダイアログボックスの実行中にESCをキャプチャ/無視する方法は?

ダイアログボックスの実行中にESCをキャプチャ/無視する方法は?

現在のダイアログコマンドで遊んでいますが、Shift-Tabを押すかESCを押すとすぐに実行が終了し、コマンドプロンプトに戻ります。これは信号ではないため、トラップしてしまうことはできません。もしそうなら、ダイアログを終了する唯一の方法は、私が設定したウィジェット/ボックスを介してのみ、このエスケープを「トラップ」/キャプチャして破棄できますか?

注:ShiftとTabを組み合わせると、エスケープが発生する理由がすでに調査されています。これは単一のキー入力ではなく、予想される入力が単一のキーボード入力の場合にのみ機能するソリューションです。マニュアルページ以外の内容は不足しているようです。

答え1

Shift+はTab一般的に使用可能な端末のバックタブです。

マニュアルページセクションキーバインディングダイアログボックスのキーバインドが可能であるという説明鍵を呪う

以下から派生した名前のいずれかです。curses.h、例: "助ける「から」KEY_HELP」。

そしてセクションでは組み込みバインディング説明する。--traceオプションを使用して組み込みバインディングを表示できます。

このマニュアルページには、各ウィジェットのキーバインディングはリストされていません。詳しくは、以下を実行して取得できるからです。dialog.設定した場合--traceオプション、dialog登録された各ウィジェットのキーバインディング情報を作成します。

たとえば、バインディング方法を示します。タブそしてビタブ(cursesから派生した名前KEY_BTAB):

          bindkey formfield TAB  form_NEXT
          bindkey formbox   TAB  form_NEXT
          bindkey formfield BTAB form_prev
          bindkey formbox   BTAB form_prev

KEY_BTAB(よりつかむマニュアルページ)はバックタブキー。

〜の中用語情報、名前は次のとおりですkcbt

     key_btab                    kcbt      kB     back-tab key

以下を使用して端末の説明を表示できます。infocmp

TERMを定義しない端末記述に設定した場合kcbt(通常エスケープシーケンス)、cursesはそれを認識せず、ASCIIエスケープ文字(ダイアログボックス)を使用して個々のバイトをアプリケーション(ダイアログボックス)に渡します。ESC)現在のウィジェットをキャンセルするには、シェルスクリプトで終了ステータスを確認して確認できます。環境このセクションでは、終了ステータスをカスタマイズするために使用できる環境変数について説明します。

終了コードを変更するには、次のいずれかの変数を定義します。 キャンセル (1)、エラー(-1),ESC(255),追加(サム)、助ける(2)、 --item-help ヘルプ(2)またはいいね (0)通常、シェルスクリプトは-1と255を区別できません。

関連情報