我目前正在开发一个“autotype”脚本经过。为此,我需要输入用户名,按“Tab”,然后输入密码。
为了进行测试,我使用以下代码:
WID=$(xdotool selectwindow)
xdotool windowactivate $WID type --delay 100 "Hello World"
xdotool windowactivate $WID key --clearmodifiers Tab
xdotool windowactivate $WID type --delay 100 "Hello World"
然后我选择kate
作为窗口,但输出Hello World8Hello World
不是Hello World Hello World
.我究竟做错了什么?
编辑:
作为解决方法,您可以使用包xte 'key Tab'
中的内容xautomation
。但最初的问题仍然存在。
答案1
xdotool
正在寻找一个“X 键符号”字符串,但关于如何确定它的文档很简洁:
一般来说,任何有效的 X Keysym 字符串都可以使用。多个键用“+”分隔。 “alt”、“ctrl”、“shift”、“super”和“meta”存在别名,它们都映射到 Foo_L,例如
Alt_L
和Control_L
, ETC。
我使用了诸如0xff09
(的键码标签) 在 xterm 上开发页面时特殊键。通过这种方法,我能够发送键盘配置中定义的所有键。
我的命令行不同。仅测试脚本的相关部分就显示了这一点:
KEY=0xff09 # XK_tab
sendkey() {
echo "** $1"
xdotool key --window $ID $1 2>/dev/null
}
sendkey "$KEY"
你有问题的命令是
xdotool windowactivate $ID key --clearmodifiers $1 2>/dev/null
xdotool
的手册建议可能有必要添加一个--sync
选项,并暗示命令链接将起作用(以便windowactivate
和key
链接在一起),但该组合对我来说也不起作用。但--window
的选项key
确实有效:
xdotool key --window $ID --clearmodifiers $1 2>/dev/null
答案2
我知道这有点旧,但也许这会对某人有所帮助..例如,您也可以使用 KP_Tab 或 KP_Enter