元に戻すためのCtrl + /(^ /)bashショートカットはどこで定義されていますか?

元に戻すためのCtrl + /(^ /)bashショートカットはどこで定義されていますか?

bind -pどちらでもマッピングが見つかりませんstty -a。また、Linuxシステムコンソールではなく、私が試したターミナルエミュレータ(xterm、konsole、gnome-terminal)でのみ機能します。私はそれが伝統的にemacsマップだと思います。

^V^/編集:bash printsと入力すると、^_バインディングで元に戻すようにマップされます。しかし、^/どこにマッピングされますか^_

答え1

これは、ターミナルエミュレータ(ネイティブXイベントを取得してバイトストリームを生成し、擬似ターミナルは^_コード037の制御文字である修飾キーの概念を処理しません)によって生成されます。

このマッピングのソースはVT100です。マッピングされたどちらも文字037にCTRL-?マップされますが、何もマッピングされていないようです。ターミナルエミュレータを177または037にマッピングしてみました。CTRL-/CTRL-_CTRL-?

VT220他のタスクも実行しますが、少なくともXTermではいくつかのマッピングを引き続き使用できます。

答え2

通常、control修飾子は最後の5ビットからすべての文字を削除してASCII文字に対して機能します。さまざまな文字を0..31さまざまなASCII制御文字にマップします。

規則によれば、修飾子を使用して031にマッピングされることが予想されますcontrol

037   31    1F    US  (unit separator)
077   63    3F    ?
137   95    5F    _
177   127   7F    DEL

以下は行われません。

057   47    2F    /
117   79    4F    O
157   111   6F    o

またはcontrol修飾語できる範囲を(大文字/小文字)にマッピングするためにASCIIで使用される32..63キーと同様に、範囲内の文字にのみ適用されます。この場合、これは次にマップできます。shift64..9496..126031

037   31    1F    US  (unit separator)
057   47    2F    /
077   63    3F    ?

そして(久しぶりに)@aprogrammerの観察はおなじみに聞こえます。しかし、VT100のマニュアルにはありません。存在する第3章、これはキーとそれに対応する制御項目を記録するテーブルを指します。完全な95文字の範囲(32..126)のコードを使用しますが、各制御文字ごとに1つのケースのみを記録します。他の可能な文字は文書化されていません。しかし、テーブルファイルに注意してくださいcontrol?。キーボードに?一つあります。移動するキー。 VT100キーボードで見つけた写真には、移動していないキーは表示されませんでした。そして(驚くべきことではありません)その特定のキーの移動されていないコードはです/。 DECは以前の端末の既存のキーに基づいてそれを記録したかもしれませんが、テーブルを短く保つために記録したかもしれません。

ただし、変換は正しく行われませんでしたxterm。特定のキーコードと修飾子情報を含むXイベントを受信します。通常、これらのキーコードはキーボードに表示される文字に対応しますが、修飾子(たとえば、およびshift)はcontrol個別に渡されます。 xterm次の X ランタイム機能を使用します。Xutf8LookupStringまたは、XmbLookupStringいくつかのイベントを結合します(例shift:)。ここで翻訳が決まりますこれら制御文字 xterm後で情報を具体化/修正特殊キー(例backspace)、しかし、ほとんどの変換は、キーボード構成を使用してXライブラリで行われます。

追加資料:

関連情報