Nano Hash - криптовалюты, майнинг, программирование

Term::TermKey: Как правильно перехватывать события мыши и нажатия клавиш?

Это работает для нажатий клавиш, но не для щелчков мышью. Что здесь нужно изменить, чтобы все заработало (Term::TermKey)?

#!/usr/bin/env perl
use warnings;
use 5.12.0;
use utf8;
use Term::TermKey qw(FLAG_UTF8);
my $tk = Term::TermKey->new( \*STDIN );
binmode STDOUT, ':encoding(utf-8)' if $tk->get_flags & FLAG_UTF8;

while( 1 ) {
    my $key;
    $tk->waitkey( $key );

    if ( $key->type_is_mouse ) {
        my ( $ev, $button, $line, $col ) = $tk->interpret_mouse( $key );
        say "event : $ev";
        say "button: $button";
        say "line  : $line";
        say "col   : $col";
    }
    else {
        say "<", $tk->format_key( $key, 0 ), ">";
    }
}

  • binmode STDOUT, ':encoding(utf-8)', если $tk->get_flags & FLAG_UTF8; Вы, вероятно, имеете в виду encoding(UTF-8) здесь 22.04.2012
  • Я думал, что они равнозначны. 22.04.2012

Ответы:


1

Когда я активирую режим мыши, он работает.

#!/usr/bin/env perl
use warnings;
use 5.12.0;
use utf8;
use Term::TermKey qw(FLAG_UTF8);
my $tk = Term::TermKey->new( \*STDIN );
binmode STDOUT, ':encoding(utf-8)' if $tk->get_flags & FLAG_UTF8;

$|++;

print "\e[?1003h";

say "Quit with \"q\"";
while( 1 ) {
    my $key;
    $tk->waitkey( $key );

    if ( $key->type_is_mouse ) {
        my ( $ev, $button, $line, $col ) = $tk->interpret_mouse( $key );
        say "event : $ev";
        say "button: $button";
        say "line  : $line";
        say "col   : $col";
    }
    else {
        say "<", $tk->format_key( $key, 0 ), ">";
        last if $tk->format_key( $key, 0 ) eq 'q';
    }
}

print "\e[?1003l";
20.04.2012
  • Это тот. libtermkey может распознавать события мыши, если он их получает, но, поскольку изначально он не взаимодействует с терминалом, он не может включить режим мыши. Для этого достаточно вашего режима DEC 1003. 22.04.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..