Отправить INSERT и F12 в ожидаемом скрипте - PullRequest
0 голосов
/ 29 мая 2018

Я знаю, что для отправки return в ожидаемом скрипте я делаю что-то вроде этого:

send -- "\r"

Что такое команда отправки для INSERT и F12 ключей?Я посмотрел онлайн и нигде не могу его найти.

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Определите символы, которые ваш терминал отправляет, когда вы нажимаете INSERT , а затем F12 , выполняя od -c:

$ od -c
^[[2z^[[193z       <-- Press keys here, then ENTER and Ctrl-D
0000000 033   [   2   z 033   [   1   9   3   z  \n
0000013

Это означает, что вы должны send -- "\E\[2z\E\[193z".Обратите внимание, что это зависит от терминала.Приведенная выше последовательность отправлена ​​моим TERM=xterm-256color.

0 голосов
/ 30 мая 2018

Я должен сказать, что изначально принятый ответ неверен, поскольку

  1. Реальная последовательность символов не одинакова для разных типов терминалов;
  2. send -- "[2~" неверно, потому что
    1. [ в Tcl имеет специальное значение (подстановка команд), поэтому его следует экранировать обратной косой чертой;
    2. Символ ESC (\E)как в выводе infocmp) отсутствует;

Правильный путь:

set kf12 [exec tput kf12]
set kins [exec tput kich1]
... ...
send $kf12

Если вам нужно вручную указать тип TERM,используйте tput -T:

-T тип

обозначает тип терминала.Обычно этот параметр не требуется, поскольку значение по умолчанию берется из переменной среды TERM.Если указано -T, то переменные оболочки LINES и COLUMNS также будут игнорироваться.

Для магических строк kf12 и kich1 найдите в руководство пользователя terminfo стр.

0 голосов
/ 29 мая 2018

Используя infocmp xterm в качестве источника:

$ infocmp xterm |grep -oP "f12=\S+|kich1=\S+"
f12=\E[24~,
kich1=\E[2~,
  • INSERT: send -- "[2~" или send -- {[2~}
  • F12: send -- "[24~" или send -- {[24~}
...