Режим передачи с клавиатуры в эмуляторе терминала vt100
Я реализую эмулятор терминала vt100 в javascript и спецификации vt100 (из man terminfo
а также infocmp
) говорит мне, что smkx=\E[?1h\E=
код для входа в режим передачи с клавиатуры и rmkx=\E[?1l\E>
код для выхода из режима передачи с клавиатуры. Я не мог понять, что такое режим передачи с клавиатуры.
С http://vt100.net/dec/ek-vt220-tm-001.pdf,
7.4.4.1 Режим передачи с клавиатуры - коды клавиатуры и несколько других специальных кодов передаются через последовательный линейный выход в ПОРТ 8051. Передаваемый сигнал поступает с 8051 на драйвер через кабель клавиатуры, монитор и видеокабель в процессор. UART в 8051 контролирует передачу "
Я получаю эти коды при входе и выходе vim
соответственно. Могу ли я безопасно игнорировать эти коды или мне нужно их обрабатывать? В последнем случае, что я должен делать?
2 ответа
Эти две строки содержат две последовательности каждая; они тонко контролируют разные вещи:
Первый из них,
CSI ? 1h
CSI ? 1l
управляет частным режимом DEC № 1, DECCKM
, режим курсора. Этот режим определяет, будут ли четыре клавиши со стрелками (вверх, вниз, влево, вправо) отправлять последовательности с префиксом SS3 или CSI.
Вторая пара последовательностей,
ESC =
ESC >
называются DECKPAM
, режим приложения клавиатуры, и DECKPNM
, цифровой режим клавиатуры. Это определяет, будет ли цифровая клавиатура отправлять управляющие последовательности или нормальные числа (т. Е. Считать, что это похоже на функцию Numlock).
smkx/rmkx контролирует, будет ли клавиатура передавать цифры или escape-код. Кроме того, это "клавиатура-режим передачи", а не "клавиатура-режим передачи"