我无法使用xdotool在浏览器中模拟简单的按键。
现在我的浏览器在启动时启动,在' /home/pi/.xintirc'
中添加以下代码#!/bin/sh
xset -dpms
xset s off
xset s noblank
// not sure if this is needed.
killall -TERM matchbox-window-manager 2>/dev/null;
killall -9 matchbox-window-manager 2>/dev/null;
exec matchbox-window-manager -use_titlebar no &
iceweasel [someURL]
python /etc/xdo_test.py
我的/etc/xdo_test.py看起来如下:
import time
import subprocess
time.sleep(20)
subprocess.call(["xdotool", "key", "c"]);
在启动时使用此文件时,我没有此文件的任何输出,但如果我在另一个控制台中执行此操作,则会得到以下输出:
Error: Can't open display: (null)
Failed creating new xdo instance
有没有人知道我为什么会收到此错误以及如何解决?
答案 0 :(得分:0)
您在python脚本中使用.xinitrc
命令。此调用不会在子进程中设置当前设置的环境变量。因此缺少显示。只需直接在
#!/bin/sh
xset -dpms
xset s off
xset s noblank
// not sure if this is needed.
killall -TERM matchbox-window-manager 2>/dev/null;
killall -9 matchbox-window-manager 2>/dev/null;
exec matchbox-window-manager -use_titlebar no &
iceweasel [someURL] & #<--- add ampersand
sleep 20
# you have to determine the window to which you want to send the keystroke
WIN=`xdotool search --sync --onlyvisible --class iceweasel | head -1`
# then activate it
xdotool windowactivate $WIN
# and send the keystroke
xdotool key --window $WIN c
文件中调用xdotool命令即可。
iceweasel
如果您在AssetManager
来电中遇到&符问题,请尝试在网址旁边添加引号。
答案 1 :(得分:0)
我得到了它的工作。我最终找到了this教程并使用了它的一些想法。我会为可能遇到类似问题的人发布解决方案。
这是我放在/home/pi/.xinitrc文件中的内容:
#!/bin/sh
xset -dpms
xset s off
xset s noblank
// not sure if this is needed.
killall -TERM matchbox-window-manager 2>/dev/null;
killall -9 matchbox-window-manager 2>/dev/null;
exec matchbox-window-manager -use_titlebar no &
iceweasel [someURL] &
sudo /etc/xdo_test.sh
我将python脚本更改为shell脚本并插入以下代码:
sleep 20
$WIN=$(xdotool search --onlyvisible --class Iceweasel|head -1)
xdotool key --window $WIN c
while:
do
sleep 300
done
最后的while循环是我添加的东西,因为Xserver从失去与脚本的连接的那一刻起就崩溃了。我仍然在寻找一个更简洁的解决方案来结束脚本,但现在这样做。当我找到一个时,我会更新这个芒果。
感谢Sebastian Stigler的帮助!
答案 2 :(得分:0)
在运行窗口管理器之前调用xdo_test.sh