我创建了一个脚本,通过将其绑定到热键来键入随机数字字符串:
#!/bin/bash
ran="$(shuf -i 100000-999999 -n 1)"
sleep .2
xdotool type --delay 12 "untitled_$ran "
由于某种原因,该xdotool
命令在前十分之一秒左右不会执行任何操作。如果没有sleep
,则不输入任何内容。如果sleep
命令较短,则键入的字符少于六个。就好像命令正在运行,但在脚本执行后的最初几分钟内被忽略。
为什么会出现这种情况,我该如何解决这个问题?
答案1
您在评论中说过您正在使用某种热键来触发此脚本。我无法确定发生了什么,但我怀疑键盘焦点正在移动,并且xdotool
当无延迟运行时,正在运行,而焦点不是预期的终端。我推荐使用以下方法来检验这个假设:
xev
从终端开始。- 聚焦
xev
窗口(将鼠标移入窗口等),同时保持终端可见。 - 按你的热键。
- 监视
FocusOut
并FocusIn
记录事件xev
。如果发生其中任何一种情况,他们可以解释为什么xev
缺少按键。 KeyPress
事件KeyRelease
应该表明你xdotool
正在做它的工作。
如果假设是正确的,那么至于如何解决它,您必须以某种不会导致焦点变化的方式激活热键。我不知道...