当我运行此脚本时,鼠标的位置直到列255 - 然后计数开始为0.这是否意味着我的终端不支持SGR
/模式1006?
(编辑由于ak2的回答)
#!/usr/bin/env perl
use warnings;
use 5.12.0;
use utf8;
use Term::TermKey qw(FLAG_UTF8 FORMAT_LONGMOD FORMAT_MOUSE_POS);
my $tk = Term::TermKey->new( \*STDIN );
binmode STDOUT, ':encoding(UTF-8)' if $tk->get_flags & FLAG_UTF8;
$|++;
print "\e[?1003h";
print "\e[?1006h";
say "Quit with \"q\"";
while( 1 ) {
$tk->waitkey( my $key );
say $tk->format_key( $key, FORMAT_LONGMOD | FORMAT_MOUSE_POS );
last if $tk->format_key( $key, 0 ) eq 'q';
}
print "\e[?1006l";
print "\e[?1003l";
答案 0 :(得分:3)
没有
这意味着你还没有使用最新的libtermkey
库,支持大于255的位置的库。可能是因为我还没有实际发布它;)
我会告诉你一旦这个,以及对位置报告的额外CSI捕获支持等。
另外:如果您有更多libtermkey
个具体问题,您可以直接告诉我更多信息。例如。你可以给我发电子邮件让我知道你发了一个问题;我并不总是养成搜寻它们的习惯。 :)
编辑2012/04/26 :我现在发布了libtermkey
0.15和Term::TermKey
0.14,它支持255以上的这些列以及位置报告API。
答案 1 :(得分:1)
开启模式1006会更改鼠标事件编码,但实际上并不启用鼠标报告。为此,您需要打开模式1000(仅限单击和释放),1002(单击,释放和拖动)或1003(单击,释放和任何鼠标移动)。