キーボードとして表示されるUSBリモートプレゼンターがあります。
を使用すると、evtest
デバイスから着信入力イベントを表示できます。
シェルスクリプトでこれらのイベントをどのようにキャプチャできますか?
私はいくつかの解決策が使用されているのを見ましたが、可能な場合にのみ使用される解決策をC
好みます。bash
私はいくつか試しましたが、xbindkeys
キーボードイベントもキャプチャされるので、望ましくありません。
私もいくつかの内容を読んでudev rules
いますが、これらのルールはプラグアンドプラグイベントにのみ役に立つようです。
答え1
@paulequilibrio 投稿ありがとうございます。 mi IRリモートは、Ubuntu 18.04でlircなしでRhythmboxで動作するようにスクリプトを変更して、自動実行の驚異を追加しました。
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
答え2
@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
だからデバイスの一意のIDを見つけました。
S: input/by-id/usb-Targus_Laser_Presentation_Remote-if02-event-kbd
最後に、再び使用してデバイスからすべてのイベントをキャプチャし、ステートメントで使用することevtest
ができました。case
答え3
この例では、タッチパッドのクリックを監視します。
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
必要に応じて簡単に修正できます。