ショートカットキーの動作制御に関する質問

ショートカットキーの動作制御に関する質問

Ctrl-keyターミナルで組み合わせがどのように機能するのか混乱しています。 Bashのマニュアルページには、次のようなさまざまな組み合わせがあります。

  • C-e- 行末に移動
  • C-f- 一文字前に移動

など。

しかし、もう少しあります。文書化されていないショートカットの例:

  • C-j(OR C-m)は戻りキーとして使用されます。
  • C-hバックスペースキーの場合
  • C-iタブなどの場合

このショートカットが録音するのを忘れましたか?または

  • C-jはいLF
  • C-mはいCR
  • C-iはいTab

これがASCIIの「基本」動作ですか?つまり、動作ですがC-j実装されC-mません。C-i渡すbashが他のものを介して?

C-vもう一つの問題は、左矢印キーを押すと^[[D画面が表示されることです。つまり、ESC-[-d。ただし、を押すとESC-[-dカーソルが左に移動しません。その理由は何ですか?

編集する:

C-j最初は、を押すとキーボードがカーネル00001010に直接渡されると思いました。しかし、などのプログラムを使ってキー押しと表示が別のイベントでxev観察されたのでそうではないと思いました。したがって、を押すとキーボードは送信しませんが、複数のバイトを送信できます。では、これらの複数のバイトはどこで変換されますか?evtestControljC-j0000101000001010

ベストアンサー1

C-m背中の動作はbashで実装されていますが、背中とC-i同じであるという事実は、端末の動作によって決まります。すべての端末は常にこのように動作しており、これがアプリケーションで期待しているので、すべての端末がこのように動作します。端末とアプリケーション間のインターフェースは、キー入力ではなく文字(実際にはバイト)に基づいているため、印刷可能文字を送信しないキー入力とキー入力の組み合わせは、いかなる方法でもエンコードする必要があります。バラよりReturnTabキーボード入力とテキスト出力はどのように機能しますか?このトピックに関する追加情報。また、見ることができますhttps://emacs.stackexchange.com/questions/1020/problems-with-keybounds-when-using-terminal

TABタブ文字ですASCIIコード、これはASCIIのCtrl + I文字と同じです。他のキーも同じです。端末は、ユーザーがを押すとTab+を押すと両方ともこの文字を送信します。 (CR)および、および(ほとんどのキーボードにはありません)、およびの場合も同様です。またどちらが送るのか、それはそれ自体の問題です。CtrlIRETC-mLFDC-jESCC-[BackSpaceC-hC-?

端末の構成(stty設定)も機能します。これはbashのいくつかの設定に影響しますが(たとえば、stty erase @bashは押しをBackSpaceとして扱います)、現在の行には影響もコミットもしません@C-mC-j

^[[DはいEsc [ D、しかし資本金が必要ですD。を押すとカーソルキーエスケープシーケンスが宣言されているので、Esc [ Dbashはキーを見るでしょう。Left用語キャップまたは用語情報データベース。デフォルトのバインディングはありませんEsc [ d(共通端末から送信されたエスケープシーケンスではありません)。

おすすめ記事