【发布时间】:2012-03-28 17:54:35
【问题描述】:
在Curses之外有没有类似keypad(1)的东西?
我想写这样的东西,但不使用Curses,也不自己处理转义序列。
#!/usr/bin/env perl
use warnings;
use 5.012;
use Curses;
initscr();
raw();
printw( qq{Press "Delete"} );
noecho();
keypad(1);
my $c = getch();
endwin();
if ( $c =~ /\A330\z/ ) {
say "OK";
} else {
say qq{You didn't press "Delete"};
}
当我使用Term::ReadKey 时,它的行为有所不同:
#!/usr/bin/env perl
use warnings;
use 5.012;
use Term::ReadKey;
ReadMode('raw');
print qq{Press "Delete" };
while ( 1 ) {
my $c = ReadKey( 0 );
last if $c eq 'q';
say "<$c>";
}
ReadMode('normal');
按“删除”后的输出:
Press "Delete" <
<[>
<3>
<~>
【问题讨论】:
-
Term::ReadKey 不这样做?
-
它确实做到了,但工作量更大。