FreeBSD端末でLinux .bashrc設定を使用しようとしています。 Linuxでは、set -o vi
キーバインディングでbashを使用しますCtr+H
(私の履歴ファイルのエディタを呼び出します)。仮想マシンのFreeBSDでは(sshを介して接続されていない)、バックスペースキーを押すたびにこのキーバインディングが呼び出されます。
Linux端末に表示され、バックスペースキーを生成します^?
(とは異なります^H
)。 FreeBSDでバックスペースとして生成されたキーはです。^H
これは私のキーバインディングをトリガーします。私のキーバインディングが両方の端末で動作するようにする方法があるか^H
(つまり、FreeBSD端末で^ Hの代わりにバックスペースとして^?を使用させる方法)、それとも別のショートカット方式を使用する必要があるかどうか疑問に思います。
私は努力したstty -a
。... erase = ^?; erase2 = ^H ...
試してみましたstty erase2 ^?
。stty -a
期待どおりに出力が変更されましたが、バックスペースキーの動作は変わらず、まだ作成中です^H
。
ベストアンサー1
stty
これとは何の関係もありません。これは制御ライン規律。ラインルールは、カーネル仮想端末の仮想ワイヤをたどると文字に応答します。この時点で、入力は実際の行を介して送信される実際の端末のように文字になります。
カーネル仮想端末の文字にキーストロークをマッピングするのがキーマップです。
% sed -ne '2,4p;/014/p' /usr/share/vt/keymaps/uk.capsctrl.kbd
# alt
# scan cntrl alt alt cntrl lock
# code base shift cntrl shift alt shift cntrl shift state
014 bs bs del del bs bs del del O
%
14は、PCモデルMおよびWindowsキーボードのISO 9995-1位置A13およびA14にあるバックスペースキーのPC / ATキーコードです。このキーマップでどのようにマッピングされているかを確認できます。ここで何を変えるべきかは明確でなければなりません。 ☺
kbdcontrol
ターゲットカーネルの仮想端末デバイスを標準入力として使用してキーマップをロードできます。もちろん、ファイル形式はkbdmap(5)として文書化されています。実際には完全にSCO Unixで提供されており、それに関する文書を見つけることができます。FreeBSDよりも優れています。。
追加読書
- 鍵盤§7.SCO Unixのマニュアル。