xdotool 打印 8 而不是 Tab

xdotool 打印 8 而不是 Tab

我目前正在开发一个“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_LControl_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选项,并暗示命令链接将起作用(以便windowactivatekey链接在一起),但该组合对我来说也不起作用。但--window的选项key确实有效:

xdotool key --window $ID --clearmodifiers $1 2>/dev/null

答案2

我知道这有点旧,但也许这会对某人有所帮助..例如,您也可以使用 KP_Tab 或 KP_Enter

相关内容