Ожидайте клавиши со стрелками скрипта

Я не знал, как отправлять клавиши со стрелками с помощью expect, поэтому я сгенерировал скрипт autoexpect для всех клавиш со стрелками и обнаружил, что autoexpect генерирует этот символ для клавиши со стрелкой вправо:

send -- "^[\[C"

Я использовал ту же команду отправки в своем пользовательском скрипте, и я получаю следующую ошибку:

while executing
"send -- "^[\[C"
expect eof
"
    (file "script_auto.exp" line 38)

Что именно я должен сделать, чтобы отправить клавишу со стрелкой вправо. Любая помощь будет оценена по достоинству.


person Aaron88    schedule 16.12.2014    source источник
comment
Вы отправляете ^ [ или убегаете? Это должен быть escape-[-C.   -  person Brad Lanam    schedule 16.12.2014
comment
Я только нажал стрелку вправо и проверил скрипт, сгенерированный autoexpect. Вышеупомянутая команда была сгенерирована autoexpect.   -  person Aaron88    schedule 16.12.2014
comment
Я попытался захватить клавишу со стрелкой вправо и получил send -- "^[\[1;5C". Интересно, почему такая разница. В любом случае, можешь попробовать send -- {^[\[C} ?   -  person Dinesh    schedule 16.12.2014
comment
Это не дало мне никакой ошибки, но не сделало правый щелчок.   -  person Aaron88    schedule 16.12.2014


Ответы (2)


"^[\[C" — недопустимая строка в Tcl. ^[ должен быть символом ESC, который равен \033. Итак, попробуйте следующее:

send "\033\[C"

ОБНОВЛЕНО:

Самый безопасный способ получить правильную клавишу СТРЕЛКА ВПРАВО для текущего терминала (как в $TERM) — это использовать tput:

[bash] # v=$(tput cuf1)
[bash] # printf '%q\n' "$v"
$'\E[C'
[bash] #

Чтобы узнать, что означает cuf1, выполните поиск на справочной странице terminfo. :)

person pynexj    schedule 16.12.2014

Для клавиши со стрелкой вверх вы должны отправить, как показано ниже

send "\033\[A"

я проверил это

person Vijay S B    schedule 21.07.2020