端末でEscキーを一時的に無効にする方法は?

端末でEscキーを一時的に無効にする方法は?

たとえば、キーボード入力を解析していますが、実際のキー押下と他のキー押下によって生成された制御シーケンスの最初のエスケープ文字(バイト)をread -n 1区別する方法が見つかりませんでした。 、... EscapeLEFTRIGHT

Escape間はキーは不要なので、readキーを無効にすると問題が解決します。Escapeローカライズされた方法でキーを無効または再割り当てする方法はありますか? ...現在の端末と現在のスクリプトにのみ適用されます。

答え1

これは端末内では実行できません。残念ながら、同じESC文字をキーボードの特定のキーに送信する文字と複数文字のシーケンスの接頭辞として使用することができます。両側の歴史的先例は無視するには強すぎる。

アプリケーションは個別にセマンティック割り当てを回避するEscか、遅延を設定します(通常は1秒)。たとえば、vimでは、挿入モードに入り、ESC O Dすばやく押すことはキーを押すのと同じですLeft。ただし、を押してから長すぎるとEsc通常モードに切り替わり、現在のモードの上に1行を挿入します(O通常モードコマンド)。

Escキー入力が()文字ではなくいくつかのエスケープシーケンスを送信するように端末エミュレータを再設定できます。ただし、キーを集中的に使用するアプリケーション(vi(m)など)を実行している場合、これは非生産的になる可能性があります。ESC\eESC

答え2

Macをお使いの場合は、次のツールペアを心からお勧めします。

  • PCキーボードハッカー、キーを別のものに再マップするユーティリティcaps lock
  • そしてキー再マッピング4MacBook、同じハッカーの別の(より洗練された)ユーティリティは、ほぼすべてを再マップすることができます。その他キー(つまり、ないcaps lock

caps lock組み合わせてに再マッピングEscし、実際のEscキーを完全に無効にしました(これまでは「ここ」にあり、再マッピングしたCaps Lockキーを使用することをお勧めします。)

関連情報