The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Перехват клавиатуры, !*! Андрей, 20-Май-18, 15:27  [смотреть все]
Доброго времени суток!

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

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

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

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

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

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

    • Перехват клавиатуры, !*! михалыч, 15:44 , 22-Май-18 (3)
      > порт на TermKey отсутствует, но можно его и самому сделать

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

      • Перехват клавиатуры, !*! Pahanivo, 00:07 , 23-Май-18 (4) –3
        > собрал для FreeBSD 11.1, но загрузить здесь некуда ((

        що думаешь он

        cpan
        install module

        не осилит?

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

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

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

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

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

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

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

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

            • Перехват клавиатуры, !*! михалыч, 12:14 , 23-Май-18 (7)
              Что, к каждой бочке затычка?

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

    • Перехват клавиатуры, !*! михалыч, 12:22 , 23-Май-18 (8)
      Порт 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

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

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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