#!/usr/bin/env perl
use warnings;
use 5.012;
use Term::ReadKey;
sub getch {
my $c = ReadKey 0;
if ($c eq "\e") {
my $c = ReadKey 0.10;
if ($c eq '[') {
my $c = ReadKey 0;
if ($c eq 'M') {
my $event_type = ord(ReadKey 0) - 32;
my $x = ord(ReadKey 0) - 32;
my $y = ord(ReadKey 0) - 32;
return $x, $y;
} } } }
binmode STDIN, ':encoding(utf-8)' or die $!;
ReadMode 'ultra-raw';
# enter_mouse_mode
binmode STDIN, ':raw' or die $!;
print "\e[?1003h"; # sets SET_ANY_EVENT_MOUSE mode
my($x, $y ) = getch();
# leave_mouse_mode
binmode STDIN, ':encoding(utf-8)' or die $!;
print "\e[?1003l"; # cancels SET_ANY_EVENT_MOUSE mode
ReadMode 'restore';
say "x = $x";
say "y = $y";
이 스크립트는 최대 223 열 (223 + 32 -> 1 바이트)까지만 작동합니다.
아무도, extended mouse mode 활성화하는 방법을 알고 있습니까? 나는이 방법을 마우스 모드를 변경하는 시도했지만 작동하지 않았다 :확장 마우스 모드를 활성화하는 방법은 무엇입니까?
# enter_mouse_mode
binmode STDIN, ':utf8' or die $!;
print "\e[?1003h";
print "\e[?1005h"; ###
my($x, $y ) = getch();
# leave_mouse_mode
binmode STDIN, ':encoding(utf-8)' or die $!;
print "\e[?1003l";
print "\e[?1005l"; ###
이제 작동합니다 (xterm v268) 종류 - 마우스를 움직일 때 (클릭하지 않고) 이미 결과를 얻습니다. 하지만 KDE의 Konsole을 사용하고 있다는 사실을 잊어 버렸습니다. 아직 작동하지 않습니다. –