当不专注于终端时使“阅读”工作

当不专注于终端时使“阅读”工作

我有以下脚本,当按下 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

但是,这仅在终端聚焦时有效,有什么办法让它监听所有按键?

答案1

这适用于用户:

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/输入/事件*文件当前对应于键盘。在单独的行上回显每个按键,然后对每行进行编号——按键会快速累积,因此行号有助于显示例程是否正在运行。

尝试在一个小的前台窗口中打开一个文本编辑器,在编辑器中输入一些文本,然后注意数字在后台终端上滚动。


上面的代码grep借用自雅各布·P的回答在这里: Linux键盘事件捕获/dev/inputX

相关内容