2010-03-23 56 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的,不是零)