Term :: TermKey:如何启用宽鼠标支持?

时间:2012-04-22 07:07:07

标签: perl terminal mouseevent libtermkey

当我运行此脚本时,鼠标的位置直到列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";

2 个答案:

答案 0 :(得分:3)

没有

这意味着你还没有使用最新的libtermkey库,支持大于255的位置的库。可能是因为我还没有实际发布它;)

我会告诉你一旦这个,以及对位置报告的额外CSI捕获支持等。

另外:如果您有更多libtermkey个具体问题,您可以直接告诉我更多信息。例如。你可以给我发电子邮件让我知道你发了一个问题;我并不总是养成搜寻它们的习惯。 :)


编辑2012/04/26 :我现在发布了libtermkey 0.15和Term::TermKey 0.14,它支持255以上的这些列以及位置报告API。

答案 1 :(得分:1)

开启模式1006会更改鼠标事件编码,但实际上并不启用鼠标报告。为此,您需要打开模式1000(仅限单击和释放),1002(单击,释放和拖动)或1003(单击,释放和任何鼠标移动)。