The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]



"Перехват клавиатуры"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Perl)
Изначальное сообщение [ Отслеживать ]

"Перехват клавиатуры"  +/
Сообщение от Андрей email(??) on 20-Май-18, 15:27 
Доброго времени суток!

Есть такая штука в перл, как перехват CTRL+C:

$SIG{INT} = \&tsktsk;
sub tsktsk {
  $SIG{INT} = \&tsktsk;
  #Выполняемый код, перед завершением программы      
  exit;
}

А как можно сделать подобное, но чтобы перехватывалось нажатие любой клавиши?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Перехват клавиатуры"  –11 +/
Сообщение от Pahanivo (ok) on 20-Май-18, 22:37 
> Доброго времени суток!
> Есть такая штука в перл, как перехват CTRL+C:
> $SIG{INT} = \&tsktsk;
> sub tsktsk {
>   $SIG{INT} = \&tsktsk;
>   #Выполняемый код, перед завершением программы
>   exit;
> }
> А как можно сделать подобное, но чтобы перехватывалось нажатие любой клавиши?

причем тут подобное? он тут не коды перехватывает, а функцию в качестве обработчика сигнала прикручивает.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Перехват клавиатуры"  +/
Сообщение от михалыч (ok) on 21-Май-18, 19:37 
> Доброго времени суток!
> Есть такая штука в перл, как перехват 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 отсутствует, но можно его и самому сделать

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Перехват клавиатуры"  +/
Сообщение от михалыч (ok) on 22-Май-18, 15:44 
> порт на TermKey отсутствует, но можно его и самому сделать

да, порт для TermKey собрал, протестировал
что можно сказать? - "нажатие клавиш" перехватывает, показывает какие были нажаты
работает ))
собрал для FreeBSD 11.1, но загрузить здесь некуда ((

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Перехват клавиатуры"  –3 +/
Сообщение от Pahanivo (ok) on 23-Май-18, 00:07 
> собрал для FreeBSD 11.1, но загрузить здесь некуда ((

що думаешь он

cpan
install module

не осилит?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Перехват клавиатуры"  +1 +/
Сообщение от михалыч (ok) on 23-Май-18, 04:12 
>> собрал для FreeBSD 11.1, но загрузить здесь некуда ((
> що думаешь он
> cpan
> install module
> не осилит?

Ты меня об этом спрашиваешь?!
Я не знаю осилит он или нет, спроси об этом у самого ТС.

Вообще-то, там есть зависимости и если у ТС ОС FreeBSD,
то идеологически правильнее использовать pkg или ручками устанавливать из портов
- зависимости подтянутся автоматически.

PS
Только ради Бога, ради всего святого, не устраивай из этого треда
очередную помойку и не разводи здесь срaч.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Перехват клавиатуры"  +/
Сообщение от Pahanivo (ok) on 23-Май-18, 09:08 
> Ты меня об этом спрашиваешь?!
> Вообще-то, там есть зависимости и если у ТС ОС FreeBSD,
> то идеологически правильнее использовать pkg или ручками устанавливать из портов
> - зависимости подтянутся автоматически.

"cpan install" также подтянет все зависимости
и боюсь, что если запихать все модули пэрла в порты там будет реальная "помойка", не
особо нужная монтейнерам, ибо держать херову кучу мелких модулей совсем не айс.

> Только ради Бога, ради всего святого, не устраивай из этого треда
> очередную помойку и не разводи здесь

Только не надо тащить религиозную щнягу в тех форум :)
установка из портов в данном случае рецепт конкретной ОСи.
cpan install, внезапно, вещица универсальная, хоть под freebsd, хоть под linux,
даже под еретические винды прекрасно ставиться (каюсь, юзаю перл для виндов).
в чем помойка? в чем сра_ч? чего ради?
CPAN для тебя ересь? странный ты ...

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Перехват клавиатуры"  +/
Сообщение от михалыч (ok) on 23-Май-18, 12:14 
Что, к каждой бочке затычка?

> "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, давай, завязывай, а?!
Глупый спор ради спора и опять за деревьями леса не видно.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Перехват клавиатуры"  +/
Сообщение от михалыч (ok) on 23-Май-18, 12:22 
Порт p5-Term-TermKey
Всё ниже перечисленное относится к FreeBSD 11.1 и проверялось на ней же ))

cd /usr/ports/devel
mkdir p5-Term-TermKey

touch 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) = 34907

cat 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 libtermkey

LICENSE=        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::TermKey

cat 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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

9. "Перехват клавиатуры"  +/
Сообщение от redd email on 23-Май-18, 18:38 
> Доброго времени суток!
> Есть такая штука в перл, как перехват CTRL+C:
> $SIG{INT} = \&tsktsk;
> sub tsktsk {
>   $SIG{INT} = \&tsktsk;
>   #Выполняемый код, перед завершением программы
>   exit;
> }
> А как можно сделать подобное, но чтобы перехватывалось нажатие любой клавиши?

Тут проще вставку на ASM сделать...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2018 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor