5

Длинный вопрос: я пытаюсь протестировать мой простой HTTP-сервер, набирая по Telnet много запросов и выясняя, как сервер реагирует. Но когда я делаю опечатку и нажимаю клавишу Backspace, чтобы стереть предыдущий символ, MobaXterm отправляет ^H вместо удаления символа из строки. Когда я нажимаю Shift+Backspace, все работает так, как я хочу, но через некоторое время это очень раздражает ... Итак, есть ли решение, которое просто меняет функциональность Backspace?

Короткий вопрос: можно ли заставить backspace удалять символ вместо отправки ^H?

2 ответа2

11

MobaXterm также предлагает установить флажок «Backspace send ^ H», который вы можете попробовать включить (в глобальных настройках MobaXterm -> вкладка "Терминал").

Если вы используете сохраненный сеанс, вам нужно будет отредактировать этот сеанс, перейдите на вкладку "Настройки терминала" и установите флажок «Backspace send ^ H».

3

Ключ с надписью "Backspace" является предметом спора. Технически, он должен послать ^H просто потому, что это имя управляющего символа ASCII. Другие отличаются, потому что история этих функций повлияла на их ожидания (см. Почему мой ключ удаления не работает?).

В дискуссии, где вы говорите, что печатаете, обычное значение (без пояснений) состоит в том, что вы запустили терминал, а затем запустили программу в терминале. Для этого случая имеется соответствующая инициализация терминала, например, с использованием оболочки и программы, такой как stty . Это выполняется на локальной машине (где вы печатаете). MobaXterm предоставляет stty начиная с версии 3.2 (2011-05-30).

Учитывая, что, если MobaXterm отправляет ^H , ваша инициализация терминала должна использовать

stty erase \^H

Посмотрите, например, что делает команда stty erase ^H ? ,

С другой стороны, вы могли бы (не очевидно в этом вопросе) создать ситуацию, когда терминал запускается таким образом, что исключает использование stty для согласованности приложения и терминала. Или у вас может быть какая-то другая причина для изменения поведения клавиши возврата. PuTTY (как и xterm) предоставляет два механизма для этого:

  • один (изначально реализованный в rxvt) позволяет использовать модификатор shift для переключения кода, отправляемого из "backspace" между ASCII backspace (BS = 8 = ^H) и delete (DEL = 127, часто отображается как ^?).
  • другая конфигурация терминала (настройка диалога в разделе « Клавиатура» раздела « Терминал »).

xterm предоставляет третий механизм, которого, по-видимому, нет в PuTTY (см. Последовательности управления XTerm):

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

Если PuTTY реализует это, ваше приложение может напрямую настроить поведение терминала. Скорее, во время инициализации PuTTY проверяет начальное состояние своей конфигурации и (в зависимости от платформы) также проверяет (например, xterm) режимы терминала, установленные в устройстве, и выбирает режим возврата или удаления, который можно приспособить или изменить, как отмечено.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .