0

当我运行这个脚本时,鼠标的位置一直到第 255 列 - 然后计数从 0 开始。这是否意味着我的终端不支持SGR/mode 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";
4

2 回答 2

3

不。

这意味着您还没有使用最新的libtermkey库,即支持大于第 255 列的位置的库。可能是因为我还没有真正发布它;)

一旦完成,我会通知您,以及对位置报告的额外 CSI 捕获支持等。

另外:如果您有更libtermkey具体的问题,您可能想让我更直接地知道。例如,你可以给我发电子邮件,让我知道你已经发布了一个问题;我并不总是养成搜索它们的习惯。:)


编辑 2012/04/26:我现在发布了libtermkey0.15 和Term::TermKey0.14,它们支持 255 以上的这些列,以及位置报告 API。

于 2012-04-24T11:14:09.733 回答
1

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

于 2012-04-22T07:32:16.347 回答