Как я могу запустить сценарий оболочки при событии устройства ввода

El comando correcto es

root@localhost ~ # nft add rule inet filter output ip daddr 8.8.8.8 counter                       

Observe el prefijo inetantes del nombre de la tabla(filter). Ese es el tipo de familia de la mesa. Es opcional, pero si lo omite, nft asumeip(= IPv4 ), pero estoy usando inetpseudo -familia (tanto IPv4 como IPv6 ).

Aprendí esto gracias a la gente en el canal #netfilteren Freenode.

No hace falta decir que los mensajes de error de nft son cualquier cosa menos útiles.:-)

2
06.03.2018, 04:49
3 ответа

@JeffSchaller, спасибо за правки.

На основе ответа @IporSircer (спасибо! ), мне удалось создать следующий скрипт:

#!/bin/bash

device='/dev/input/by-id/usb-Targus_Laser_Presentation_Remote-if02-event-kbd'
event_blank='*code 48 (KEY_B), value 1*'
event_esc='*code 1 (KEY_ESC), value 1*'
event_f5='*code 63 (KEY_F5), value 1*'
event_prev='*code 104 (KEY_PAGEUP), value 1*'
event_next='*code 109 (KEY_PAGEDOWN), value 1*'

evtest "$device" | while read line; do
  case $line in
    ($event_blank) echo "BLANK SCREEN" ;;
    ($event_f5)    echo "F5" ;;
    ($event_esc)   echo "ESCAPE" ;;
    ($event_prev)  echo "PREVIOUS" ;;
    ($event_next)  echo "NEXT" ;;
  esac
done

С помощью evtestмне удалось узнать номер события /dev/input/event18для устройства, но этот номер может различаться в зависимости от устройств в вашей системе и порядка их подключения

Из-за этого я использовал udevadm info /dev/input/event18, чтобы узнать уникальный идентификатор устройства

S: input/by-id/usb-Targus_Laser_Presentation_Remote-if02-event-kbd

Наконец, снова используя evtest, я смог перехватить все события с устройства, чтобы использовать их в операторе case.

1
28.04.2021, 23:49

Este ejemplo es monitorear toques en el panel táctil:

xinput test-xi2 --root "AlpsPS/2 ALPS DualPoint TouchPad" \
| grep --line-buffered "EVENT type 15 (RawButtonPress)"| while read line; do
    paplay --volume 22000 -d $PULSE_SINK $HOME/scripts/data/click.aiff
done

Puede modificarlo fácilmente según sus necesidades.

2
28.04.2021, 23:49

@paulequilibrio, спасибо за ваш пост. Я изменил ваш скрипт, чтобы кнопки Mi IR Remote Next, Prev и Stop работали с Rhythmbox без lirc в Ubuntu 18.04, это добавило к автозапуску его изумительные...

device='/dev/input/by-id/usb-Formosa21_Beanbag_Emulation_Device_000052F1-event-if00'

#key_playpause='*type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1*'
key_stop='*type 1 (EV_KEY), code 128 (KEY_STOP), value 1*'
key_next='*type 1 (EV_KEY), code 407 (KEY_NEXT), value 1*'
key_previous='*type 1 (EV_KEY), code 412 (KEY_PREVIOUS), value 1*'

sudo evtest "$device" | while read line; do
    case $line in
#       ($key_playpause)    notify-send "Play/Pause" && rhythmbox-client --playpause ;;
        ($key_stop)     notify-send "Stop" && rhythmbox-client --stop ;;
        ($key_next)     notify-send "Next" && rhythmbox-client --next ;;
        ($key_previous)     notify-send "Previous" && rhythmbox-client --previous ;;
    esac
done
4
28.04.2021, 23:49

Теги

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