たとえば、キーボード入力を解析していますが、実際のキー押下と他のキー押下によって生成された制御シーケンスの最初のエスケープ文字(バイト)をread -n 1
区別する方法が見つかりませんでした。 、... EscapeLEFTRIGHT
Escape間はキーは不要なので、read
キーを無効にすると問題が解決します。Escapeローカライズされた方法でキーを無効または再割り当てする方法はありますか? ...現在の端末と現在のスクリプトにのみ適用されます。
答え1
これは端末内では実行できません。残念ながら、同じESC
文字をキーボードの特定のキーに送信する文字と複数文字のシーケンスの接頭辞として使用することができます。両側の歴史的先例は無視するには強すぎる。
アプリケーションは個別にセマンティック割り当てを回避するEscか、遅延を設定します(通常は1秒)。たとえば、vimでは、挿入モードに入り、ESC O D
すばやく押すことはキーを押すのと同じですLeft。ただし、を押してから長すぎるとEsc通常モードに切り替わり、現在のモードの上に1行を挿入します(O
通常モードコマンド)。
Escキー入力が()文字ではなくいくつかのエスケープシーケンスを送信するように端末エミュレータを再設定できます。ただし、キーを集中的に使用するアプリケーション(vi(m)など)を実行している場合、これは非生産的になる可能性があります。ESC
\e
ESC
答え2
Macをお使いの場合は、次のツールペアを心からお勧めします。
- PCキーボードハッカー、キーを別のものに再マップするユーティリティcaps lock、
- そしてキー再マッピング4MacBook、同じハッカーの別の(より洗練された)ユーティリティは、ほぼすべてを再マップすることができます。その他キー(つまり、ないcaps lock)
caps lock組み合わせてに再マッピングEscし、実際のEscキーを完全に無効にしました(これまでは「ここ」にあり、再マッピングしたCaps Lockキーを使用することをお勧めします。)