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/26libtermkey : 0.15 と0.14 をリリースしましTerm::TermKeyた。これは、位置レポート API と共に、255 を超えるこれらの列をサポートします。

于 2012-04-24T11:14:09.733 に答える
1

モード1006をオンにすると、マウスイベントのエンコードが変更されますが、実際にはマウスのレポートは有効になりません。そのためには、モード1000(クリックしてリリースのみ)、1002(クリック、リリース、ドラッグ)、または1003(クリック、リリース、およびマウスの動き)をオンにする必要があります。

于 2012-04-22T07:32:16.347 に答える