Доброго времени суток!Есть такая штука в перл, как перехват CTRL+C:
$SIG{INT} = \&tsktsk;
sub tsktsk {
$SIG{INT} = \&tsktsk;
#Выполняемый код, перед завершением программы
exit;
}А как можно сделать подобное, но чтобы перехватывалось нажатие любой клавиши?
> Доброго времени суток!
> Есть такая штука в перл, как перехват CTRL+C:
> $SIG{INT} = \&tsktsk;
> sub tsktsk {
> $SIG{INT} = \&tsktsk;
> #Выполняемый код, перед завершением программы
> exit;
> }
> А как можно сделать подобное, но чтобы перехватывалось нажатие любой клавиши?причем тут подобное? он тут не коды перехватывает, а функцию в качестве обработчика сигнала прикручивает.
> Доброго времени суток!
> Есть такая штука в перл, как перехват CTRL+C:
> $SIG{INT} = \&tsktsk;
> sub tsktsk {
> $SIG{INT} = \&tsktsk;
> #Выполняемый код, перед завершением программы
> exit;
> }
> А как можно сделать подобное, но чтобы перехватывалось нажатие любой клавиши?модули на CPAN
http://search.cpan.org/dist/Term-RawInput/
http://search.cpan.org/dist/TermReadKey/
http://search.cpan.org/dist/Term-TermKey/если система FreeBSD то можно найти в портах
/usr/ports/devel/p5-Term-RawInput
/usr/ports/devel/p5-Term-ReadKeyпосмотреть можно здесь =>
https://stackoverflow.com/questions/32489924/perl-termreadke...порт на TermKey отсутствует, но можно его и самому сделать
> порт на TermKey отсутствует, но можно его и самому сделатьда, порт для TermKey собрал, протестировал
что можно сказать? - "нажатие клавиш" перехватывает, показывает какие были нажаты
работает ))
собрал для FreeBSD 11.1, но загрузить здесь некуда ((
> собрал для FreeBSD 11.1, но загрузить здесь некуда ((що думаешь он
cpan
install moduleне осилит?
>> собрал для FreeBSD 11.1, но загрузить здесь некуда ((
> що думаешь он
> cpan
> install module
> не осилит?Ты меня об этом спрашиваешь?!
Я не знаю осилит он или нет, спроси об этом у самого ТС.Вообще-то, там есть зависимости и если у ТС ОС FreeBSD,
то идеологически правильнее использовать pkg или ручками устанавливать из портов
- зависимости подтянутся автоматически.PS
Только ради Бога, ради всего святого, не устраивай из этого треда
очередную помойку и не разводи здесь срaч.
> Ты меня об этом спрашиваешь?!
> Вообще-то, там есть зависимости и если у ТС ОС FreeBSD,
> то идеологически правильнее использовать pkg или ручками устанавливать из портов
> - зависимости подтянутся автоматически."cpan install" также подтянет все зависимости
и боюсь, что если запихать все модули пэрла в порты там будет реальная "помойка", не
особо нужная монтейнерам, ибо держать херову кучу мелких модулей совсем не айс.> Только ради Бога, ради всего святого, не устраивай из этого треда
> очередную помойку и не разводи здесьТолько не надо тащить религиозную щнягу в тех форум :)
установка из портов в данном случае рецепт конкретной ОСи.
cpan install, внезапно, вещица универсальная, хоть под freebsd, хоть под linux,
даже под еретические винды прекрасно ставиться (каюсь, юзаю перл для виндов).
в чем помойка? в чем сра_ч? чего ради?
CPAN для тебя ересь? странный ты ...
Что, к каждой бочке затычка?> "cpan install" также подтянет все зависимости
Нет. Не все.
> и боюсь, что если запихать все модули пэрла в порты там будет реальная "помойка",
> не особо нужная монтейнерам, ибо держать херову кучу мелких модулей совсем не айс.Ты "монтейнер"? Нет? Тогда не бойся за них. Они обойдутся и справятся без тебя.
Не тебе решать.> Только не надо тащить религиозную щнягу в тех форум :)
В данном контексте, фразеологизмы "ради Бога" и "ради всего святого"
призывали тебя не затоплять данную ветвь обсуждения пустыми и не относящимися к теме сообщениями, иначе говоря - не флудить.> установка из портов в данном случае рецепт конкретной ОСи.
> cpan install, внезапно, вещица универсальная, хоть под freebsd, хоть под linux,
> даже под еретические винды прекрасно ставиться (каюсь, юзаю перл для виндов).Да замечательно, да на здоровье!
Во FreeBSD удобно устанавливать что-либо из портов или с помощью pkg не только из-за
автоматического подтягивания зависимостей. В этой ОС строгая иерархия - что и куда должно устанавливаться.
Это позволяет удобно обновлять систему и т.д. и т.п.
Но неужеле же всё это нужно разжёвывать и расписывать?> в чем помойка? в чем сра_ч? чего ради?
А вот уже и получился cрaч - бессмысленный спор.
> CPAN для тебя ересь? странный ты ...
Это где же я об этом говорил??
Ересь?
> Только не надо тащить религиозную щнягу в тех форум :)А сам тащишь.
И ты ещё говоришь про странность?! Хм, однако!
Кстати, ни cpan ни cpanp не справились. Во FreeBSD во всяком случае.
(cpanm не пробовал, хватило двух, а может я не умею их готовить ))Возможно это не только из-за perl зависимостей, но и из-за lib-зависимостей
Term::TermKey требует Module::Build , ExtUtils::PkgConfig и libtermkey.so
а libtermkey.so требует в свою очередь libunibilium.so и вдобавок gmakeда ещё и Module::Build также минимум парочку подтянет - Archive::Zip и PAR::Dist (если не установлены). И так до бесконечности. (типа юмор, а то кое-кто не поймёт)
Ниже выложу файлы порта, благо они маленькие. ))
2Pahanivo, давай, завязывай, а?!
Глупый спор ради спора и опять за деревьями леса не видно.
Порт p5-Term-TermKey
Всё ниже перечисленное относится к FreeBSD 11.1 и проверялось на ней же ))cd /usr/ports/devel
mkdir p5-Term-TermKeytouch distinfo
touch Makefile
touch pkg-descr
touch pkg-plistсодержимое
cat distinfo
SHA256 (Term-TermKey-0.16.tar.gz) = 0e8672b996b3566fbcea40fdb9a3586ff326c4a692ca7d1e973a9f6d065668a6
SIZE (Term-TermKey-0.16.tar.gz) = 34907cat Makefile
# Created by: Anonymous User <anonym@FreeBSD.org>
# $FreeBSD: tags/RELEASE_11_1_0/devel/p5-Term-TermKey/Makefile 412346 2018-05-22 00:00:00Z mat $PORTNAME= Term-TermKey
PORTVERSION= 0.16
CATEGORIES= devel perl5
MASTER_SITES= CPAN
MASTER_SITE_SUBDIR= CPAN:PEVANS
PKGNAMEPREFIX= p5-MAINTAINER= anonym@FreeBSD.org
COMMENT= Perl wrapper around libtermkeyLICENSE= GPLv1
LIB_DEPENDS= libtermkey.so:devel/libtermkey
BUILD_DEPENDS= p5-Module-Build>=0:devel/p5-Module-Build \
p5-ExtUtils-PkgConfig>=0:devel/p5-ExtUtils-PkgConfig
RUN_DEPENDS:= ${BUILD_DEPENDS}USES= perl5
USE_PERL5= configure.include <bsd.port.mk>
cat pkg-descr
This module provides a light perl wrapper around the `libtermkey'
library. This library attempts to provide an abstract way to read
keypress events in terminal-based programs by providing structures that
describe keys, rather than simply returning raw bytes as read from the
TTY device.This version of Term::TermKey requires libtermkey version at least 0.16.
WWW: http://search.cpan.org/dist/Term-TermKey/
WWW: https://metacpan.org/pod/Term::TermKeycat pkg-plist
%%PERL5_MAN3%%/Term::TermKey.3.gz
%%SITE_ARCH%%/Term/TermKey.pm
%%SITE_ARCH%%/auto/Term/TermKey/TermKey.so
ll /usr/ports/devel/p5-Term-TermKey/
-rw-r--r-- 1 root wheel 141 distinfo
-rw-r--r-- 1 root wheel 620 Makefile
-rw-r--r-- 1 root wheel 453 pkg-descr
-rw-r--r-- 1 root wheel 107 pkg-plistи не забываем про tab'ы в файле Makefile
> Доброго времени суток!
> Есть такая штука в перл, как перехват CTRL+C:
> $SIG{INT} = \&tsktsk;
> sub tsktsk {
> $SIG{INT} = \&tsktsk;
> #Выполняемый код, перед завершением программы
> exit;
> }
> А как можно сделать подобное, но чтобы перехватывалось нажатие любой клавиши?Тут проще вставку на ASM сделать...