Shell-Script
在不專注於終端時進行“閱讀”工作
我有以下腳本,當按下 V 按鈕時,它會向程序中的按鈕發送垃圾郵件
#!/bin/bash winid=$(xdotool search "application name here" | head -n1) while true; do read -rsn1 input if [ "$input" = "v" ]; then xdotool keydown --window $winid "button" xdotool keyup --window $winid "button" fi done
但是,這僅在終端聚焦時才有效,有沒有辦法讓它聽所有按鍵?
這適用於root使用者:
cat /dev/input/$(grep -E 'Handlers|EV=' /proc/bus/input/devices | \ grep -B1 'EV=120013' | grep -Eo 'event[0-9]+') | \ while read -rsn1 foo ; do echo "$foo" ; done | nl
輸出(直到Ctrl-C):
1 ԥ 2 �W 3 ^ 4 5
程式碼從目前對應於鍵盤的*/dev/input/event**文件中讀取。在單獨的行上回顯每個按鍵,然後對每行進行編號——按鍵快速累積,因此行號有助於顯範常式正在執行。
嘗試在一個小的前台視窗中打開一個文本編輯器,在編輯器中輸入一些文本,然後注意數字在後台終端上滾動。
上面的
grep
程式碼借鑒了JacobP的答案: Linux 鍵盤事件擷取 /dev/inputX