Скрипт для обнаружения щелчков мышью в качестве экранной заставки при игнорировании движения мыши.

Для загрузки с удаленным html используйтеlinks(илиlynx)с опцией -dump:

links -dump http://website.web

Или:

lynx -dump http://website.web

Они отличаются стилем вывода. Во-первых, lynxбудет форматировать гиперссылки, а linksих игнорировать.

Установка

В системе, подобной debian/ubuntu -, любая программа может быть установлена ​​с помощьюapt-get:

apt-get install links

apt-get install lynx
0
08.10.2019, 20:28
2 ответа

Если вы не хотите писать программу для этого, есть несколько программ, которые будут показывать вам события мыши. Например, evemu-recordна устройстве ввода мыши будет отображать каждое нажатие кнопки, прокрутку колесика и движение в очень подробном выводе, таком как (, показанный отредактированным):

E: 0001 0111 0001  # EV_KEY / BTN_RIGHT            1
E: 0000 0000 0000  # ------------ SYN_REPORT (0) ---------- +552ms
E: 0002 0008 -001  # EV_REL / REL_WHEEL            -1
E: 0000 0000 0000  # ------------ SYN_REPORT (0) ---------- +1016ms
E: 0002 0000 0001  # EV_REL / REL_X                1
E: 0002 0001 0003  # EV_REL / REL_Y                3

Запустите evemu-recordбез аргументов, чтобы получить список устройств ввода. В моем случае это было

/dev/input/event5:      Logitech USB Optical Mouse

тогда вы можете написать сценарий оболочки bash, например:

( pid=$BASHPID
  evemu-record /dev/input/event5 |
  stdbuf -oL egrep 'EV_KEY|REL_WHEEL' |
  ( while read -t 5 junk
    do echo -n.
    done
    echo ok
    kill -pipe $pid
  )
)

Здесь используется egrepдля фильтрации всех линий, кроме кнопок и колес, и stdbufдля обеспечения отсутствия буферизации вывода (, хотя ваш grep может принять параметр --line-buffered, который делает то же самое ). Цикл while считывает каждую строку и выводит «.», но если в течение 5 секунд нет ввода (-t 5), цикл останавливается. Наконец, killнеобходим для конвейера, который в противном случае не завершится, пока не будет обнаружено новое событие и egrepне умрет с SIGPIPE. Использование kill -pipeотправляет сигнал SIGPIPE, что позволяет избежать сообщений об ошибках, которые вы получили бы от kill -hup. Внешняя оболочка (...)необходима для получения идентификатора процесса для оболочки ($BASHPID), который не уничтожит окружающий код оболочки.

Кроме того, вы можете получить поток данных PS/2 из /dev/input/mice, но я не знаю всех деталей формата. Вы можете увидеть 3-байтовые записи с помощью

od -v -An -w3 -tx1 /dev/input/mice
0
28.01.2020, 02:39

Основываясь на инструкциях meuh, вот как была сделана эта "экранная заставка":

#!/bin/bash
evemu-record /dev/input/event2 |
stdbuf -oL egrep 'EV_KEY|REL_WHEEL' |
(
   ./network_saver.sh   
)

Где сеть _saver.sh это:

#!/bin/bash
WAIT=5
while [ 1 ]
do
    echo Waiting for $WAIT seconds of mouse button inactivity
    while read -t $WAIT line
    do
        echo -n.
    done
    echo; echo Disabling networking
    nmcli n off
    echo Waiting for a mouse button press
    while read line
    do
        echo -n.
        break;
    done
    echo; echo Enabling networking
    nmcli n on
    # Connect the main nic as soon as possible
    nmcli conn up "Ethernet connection 1" >/dev/null
done
1
28.01.2020, 02:39

Теги

Похожие вопросы