[英]Term::Cap: “key up” doesn't work
#!/usr/bin/env perl
use warnings;
use 5.014;
use Term::Cap;
use POSIX;
my $termios = new POSIX::Termios;
$termios->getattr;
my $ospeed = $termios->getospeed;
my $terminal = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };
$terminal->Trequire("ku"); # move cursor up
my $UP = $terminal->Tputs("ku");
my $t = 500;
while ($t > 0) {
printf "Hour: %d \n", $t/3600;
printf "Minute: %d \n", ($t/60)%60;
printf "Second: %d \n", $t%60;
print $UP,$UP,$UP;
sleep 5;
$t -= 5;
}
當我嘗試這樣做時(在這里找到: 如何在不清除Perl中的情況下更新屏幕上的值? ),我得到以下輸出:
Hour: 0
Minute: 8
Second: 20
AAAHour: 0
Minute: 8
Second: 15
AAAHour: 0
Minute: 8
Second: 10
AAAHour: 0
Minute: 8
Second: 5
這是否意味着該key-up
我的終端不起作用?
您誤解了ku
功能。 這是用戶按下終端上的向上箭頭鍵時生成的字符序列。 要在屏幕上實際向上移動光標,請打印up
功能。 (此外,最好避免使用間接對象語法,盡管這與您的問題無關。)
這是一個更正的版本:
#!/usr/bin/env perl
use warnings;
use 5.014;
use Term::Cap;
use POSIX;
my $termios = POSIX::Termios->new;
$termios->getattr;
my $ospeed = $termios->getospeed;
my $terminal = Term::Cap->Tgetent({ TERM => undef, OSPEED => $ospeed });
$terminal->Trequire("up"); # move cursor up
my $UP = $terminal->Tputs("up");
my $t = 500;
while ($t > 0) {
printf "Hour: %d \n", $t/3600;
printf "Minute: %d \n", ($t/60)%60;
printf "Second: %d \n", $t%60;
print $UP,$UP,$UP;
sleep 5;
$t -= 5;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.