0

非正規端末エミュレーションで遊んでいて、単一の文字 (入力) をバックスペースと比較しようとしています

if(c == '\x08')
{
 dosomething();
}

ベアメタル OS では動作しますが、virtualbox で実行するとまったく動作しません。Virtualbox はバックスペースのみを検出します。

if(c == '\x7f')
{
 dosomething();
}

これは、仮想ボックスが実際のキーボード入力を妨害しているエミュレーションによるものでしょうか?

4

1 に答える 1

1

DEL古典的な対BKSPジレンマに遭遇したところです。完全な解決策はありませんBKSP。ユーザーがバックスペースを押したときに (0x08) ASCII 文字を出力するように構成されている端末と、 DEL(0x7f) を出力する端末があることを認識する必要があります。

ほとんどの端末エミュレータには、この種のオプションがありますが、実際にこの問題を回避するアプリケーション ソフトウェアはあまり見たことがありません。これは通常、端末プログラムに任されており、適切なプログラム操作を確保するために、ユーザーは DEL または BKSP を押すか、端末を再構成するかを決定します。

于 2013-09-12T04:08:04.850 に答える