Как отправить стрелку в Perl с помощью модуля Net :: Telnet? - PullRequest
3 голосов
/ 23 марта 2010

Как использовать Perl-модуль Net :: Telnet, как отправить стрелку в сеанс telnet, чтобы пользователь мог нажимать клавишу «вниз» на клавиатуре?

use Net::Telnet;
my $t = new Net::Telnet();
my $down_key=?; #How do you send a down key in a telnet session?
t->print($down_key);

Этот список кодов VT102 говорит о том, что коды клавиш курсора следующие:

Up:    Esc [   A
       033 133 101
Down:  Esc [   B
       033 133 102
Right: Esc [   C
       033 133 103
Left:  Esc [   D
       033 133 104

Как бы я отправил их в telnet? Эти коды совпадают с нажатой клавишей со стрелкой на клавиатуре?

Ответы [ 2 ]

5 голосов
/ 23 марта 2010

Попробуйте напечатать "\e[B". Эти коды действительно одинаковы - попробуйте запустить оболочку Bourne sh без поддержки readline и нажать стрелки вверх / вниз, вы увидите что-то вроде ^[[A, где ^[ представляет символ перехода.

1 голос
/ 24 марта 2010

Некоторые программы ожидают выхода SS3, а не CSI. Если "\ e [A" и друг не работают, попробуйте:

%ss3 = (
   up    => "\eOA",
   down  => "\eOB",
   right => "\eOC",
   left  => "\eOD",
);

(это заглавные буквы, а не нули)

...