web-dev-qa-db-ja.com

MobaXtermバックスペースが^ Hを送信

長い質問:多くのリクエストをTelnetで処理し、サーバーがどのように反応するかを確認することで、簡単なHTTPサーバーをテストしようとしています。しかし、タイプミスをして、Backspaceキーを押して前の文字を消去すると、MobaXtermは文字列から文字を削除する代わりに^Hを送信します。 Shift + Backspaceを押すと、すべてが思い通りに機能しますが、しばらくするとこれは非常に煩わしくなります...では、Backspaceの機能を変更するだけの解決策はありますか?

短い質問:^Hを送信する代わりに、バックスペースで文字を削除することはできますか?

7
DutChen18

MobaXtermは、トグルすることを試みることができるチェックボックス設定「Backspaceが^ Hを送信する」を提案します(MobaXtermグローバル設定->「ターミナル」タブで)。

保存されたセッションを使用している場合は、このセッションを編集し、[ターミナル設定]タブに移動して、[Backspaceが^ Hを送信する]チェックボックスをオンにする必要があります。

12
Didier

「バックスペース」というラベルの付いたキーは、競合の問題です。技術的には、それは[oughtを送信することです^Hは、単にASCII制御文字の名前であるためです。他のものは異なります。この機能の履歴(削除キーが機能しないのはなぜですか?を参照)。

あなたがtypingであると言う議論では、通常の意味合い(明確化を欠く)は、ターミナルを起動してから、ターミナル内でプログラムを実行することです。その場合、対応する端末の初期化があります。たとえば、シェルとsttyなどのプログラムを使用します。これはローカルマシン(入力している場所)で実行されます。 MobaXterm 提供sttyバージョン3.2(2011-05-30)以降。

その場合、MobaXtermが^Hを送信する場合、端末の初期化で次を使用する必要があります

stty erase \^H

たとえば コマンドstty erase ^Hは何をしますか? を参照してください。

一方、あなたはcouldを使用して(質問では明らかではありません)、アプリケーションと端末の一貫性を保つためにsttyを使用できないように端末が起動される状況を構築しました。または、Backspaceキーの動作を変更する理由が他にもある可能性があります。 PuTTY(xtermのような)はこれのために2つのメカニズムを提供します:

  • 1つ(元はrxvtで実装されていました)を使用すると、 shift 「バックスペース」から送信されるコードをASCIIバックスペース(BS = 8 = ^H)と削除(DEL = 127、^?と表示されることが多い)の間で切り替える修飾子。
  • もう1つは端末設定です(ターミナルセクションのキーボードセクションのダイアログ設定)。

xtermは、PuTTYにないように見える3番目のメカニズムを提供します(XTerm制御シーケンスを参照):

CSI ? Pm h
      DEC Private Mode Set (DECSET).
            Ps = 6 7  -> Backarrow key sends backspace (DECBKM).

PuTTYがそれを実装した場合、アプリケーションは端末の動作を直接設定できます。むしろ、初期化中に、PuTTYはその構成の初期状態をチェックし、(プラットフォームによっては)デバイスに設定されている端末モードも(xtermのように)チェックし、バックスペースと削除の動作を選択します。

3
Thomas Dickey