2010-03-23 78 views
3

使用Perl模块Net :: Telnet,您如何将箭头键发送到telnet会话,以便它与用户按下键盘上的下键相同?如何使用Net :: Telnet模块在Perl中发送箭头键?

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); 

list of VT102 codes说,光标键码如下:

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

我怎么会在远程登录发送这些?这些代码是否与在键盘上按下的箭头键相同?

回答

5

尝试打印"\e[B"。这些代码实际上是相同的 - 尝试在没有读取支持的情况下运行Bourne shell sh,并点击向上/向下箭头,您将看到类似^[[A的地方,^[代表转义字符。

+0

我看到剧本之前,它不包含任何明显提及发送箭头键。这里可能会有一些混淆,VT102负责跟踪光标的移动,以便重新绘制屏幕的某些部分。为了我的目的,我不关心光标,我只是想发送一个箭头键的键盘代码。我可能是错的,如果是这样,你是否有一个VT102样本用于发送箭头键(而不是光标移动)? – pokstad 2010-03-23 18:01:09

+0

对不起,屏幕截图标签让我建议VT102。 – rjh 2010-03-23 18:26:33

+0

不用担心,我用完好的标签附上了这个问题。我会尝试您的建议,并尽快提供信用证明:D – pokstad 2010-03-23 18:34:38

1

一些程序希望SS3逃脱,而不是CSI。如果“\ E [A”和朋友不工作,请尝试:

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

(这些都是大写字母o的,不是零)