escape-коды VT102 и ANSI - PullRequest
       75

escape-коды VT102 и ANSI

0 голосов
/ 31 января 2019

Я использую Minicom для связи по последовательной линии с устройством, которое выводит символы, полученные в шестнадцатеричном формате.Я делаю это, чтобы увидеть коды для некоторых ключей.Я попробовал minicom один раз с эмуляцией терминала VT102 и один раз ANSI.

Для VT102 и ANSI клавиши со стрелками соответствуют

Up:    Esc [ A
Down:  Esc [ B
Right: Esc [ C
Left:  Esc [ D

Это соответствует тому, что я нахожу на нескольких веб-сайтах, например Руководство пользователя VT102

Я пробовал другие ключи, для которых я не могу найти ссылки в Интернете:

            VT102         ANSI
Home:     Esc [ 1 ~      Esc [ H
End:      Esc O F        Esc O F
Insert:   Esc [ 2 ~      Esc [ @

Являются ли эти коды стандартными?А какой стандарт?где я могу найти совпадение в Интернете?

Если я попытаюсь с помощью командной строки (xfce-терминал) нажать Home, End и Insert в следующем порядке:

$ cat | hexdump -C
^[[H^[[F^[[2~00000000  1b 5b 48 1b 5b 46 1b 5b  32 7e                    |.[H.[F.[2~|

Кажется, чтоHome соответствует последовательности Minicom ANSI, End меняет 'O' на '[', а Insert соответствует escape-последовательности Minicom VT102.
Тот же запущенный GtkTerm.

Я пробовал также с TeraTerm в Windowsс другими результатами.

Подведение итогов

           Minicom VT102        Minicom ANSI    xfce-terminal & GtkTerm    TeraTerm VT100/VT102
Home:         Esc [ 1 ~           Esc [ H              Esc [ H                   Esc [ 1 ~
End:          Esc O F             Esc O F              Esc [ F                   Esc [ 4 ~
Insert:       Esc [ 2 ~           Esc [ @              Esc [ 2 ~                 Esc [ 2 ~

1 Ответ

0 голосов
/ 18 февраля 2019

Стандарт для специальных клавиш не существует.Существующие стандарты (последний раз ECMA-48 , последний раз пересмотренный в 1991 году) имеют дело только с управляющими последовательностями, которые приложение может отправлять на терминал (с очень небольшим числом управляющих последовательностей, которые вызывают ответ ). из терминала).

Специальные ключи (и наиболее часто используемые последовательности управления) документированы в терминальных базах данных , таких как ncurses's.Но, читая описание терминала, вы должны иметь в виду, что многие терминалы могут отправлять различные escape-последовательности (или ни одной вообще) в зависимости от режима, в котором они установлены.Это было бы задокументировано разработчиками этих терминальных эмуляторов , но для приведенных примеров разработчики не предоставляют эту информацию.

В ncurses есть единственная документация: терминал xfce и gtkterm "скины" , использующие VTE для всех соответствующих функций.Если вы посмотрите на их зависимости, вы увидите некоторую информацию о версии, которая может быть связана с описаниями в ncurses (начните здесь ).

...