
bind -p
どちらでもマッピングが見つかりませんstty -a
。また、Linuxシステムコンソールではなく、私が試したターミナルエミュレータ(xterm、konsole、gnome-terminal)でのみ機能します。私はそれが伝統的にemacsマップだと思います。
^V^/
編集:bash printsと入力すると、^_
バインディングで元に戻すようにマップされます。しかし、^/
どこにマッピングされますか^_
?
答え1
答え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..94
96..126
031
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ライブラリで行われます。
追加資料: