我为这个问题绞尽了脑汁好一阵子,但还是无计可施。
我只是尝试使用该xdotool key --window window_id
函数将一个键输入发送到未聚焦的窗口。窗口已找到,但未注册任何内容。
简单来说:我打开两个终端窗口。我xdotool getactivewindow
在终端窗口 A 中运行并获取 window_ID。我xdotool key --window "window_ID_A" x
在终端窗口 B 中运行,代码运行,但什么也没发生。
我运行了一些健全性检查,例如sleep 5; xdotool key x
,然后手动将焦点更改为终端窗口 A,它按预期工作。我尝试运行 sleep 5; xdotool key --window "window_ID_A" x
并手动更改焦点,但没有结果。当我输入虚假的 window_ID: xdotool key --window "window_ID_C" x
xdotool 正确地恢复为使用聚焦窗口作为目标,这让我相信在原始代码中找到了正确的窗口。我尝试运行 --clearmodifiers,使用记事本或 libreoffice 作为我的目标窗口,甚至使用 sudo 运行,但没有任何变化。我尝试的任何方法都无法使 --window 函数起作用。
有什么因素可能会特别阻碍这一功能吗?
我正在运行 Linux Mint 20、Xfce 64 位、x11
我通常最终会自己解决这类问题,但这让我很抓狂。任何帮助我都非常感谢!
编辑:我能想到的唯一解决方法是:tmp=$(xdotool getactivewindow); xdotool windowactivate --sync $(xdotool search --name "window_name") key x; xdotool windowactivate $tmp
这不是一个很好的解决方法,因为每次运行脚本时,我的屏幕都会弹到另一个窗口并返回。