我尝试在 Debian 的 Chrome 窗口上使用 xdotool 命令行,通常通过执行以下操作:
sleep 2 && xdotool type "2"
# Switch to the Chrome window and focus on the relevant text field
# before the 2 seconds timer above runs out; "2" should be auto-written.
这在大多数情况下都有效,除了在某些进行特殊事件处理的字段中。 Google 搜索计时器就是一个很好的例子:
- 执行上述过程在 Google 搜索栏中写入 2 是可行的,但是
- 当我在 google.com 上搜索“计时器”时,我得到了特殊计时器答案,其中包含一个特殊字段,允许用户更改计时器值(仅限数字)。 虽然用我的常规键盘输入“2”效果很好,但使用上面的 xdotool(应该使用 XTEST)不起作用(什么也没有发生)。发送 Tab 而不是 2 确实有效(该字段失去焦点)。
注意:我注意到这种情况也发生在其他数字字段上,所有这些数字字段都具有相同的其他特殊性,但它们不适用于例如需要按 Shift 才能获取数字的法语 AZERTY 键盘布局。因此,我在美国布局中尝试了“xdotool key 2”,也在法国布局中尝试了“xdotool key shift+2”,但都不起作用。
更新:我尝试了 3 台笔记本电脑:
- Debian 上的 Google Chrome,默认为 FR 布局,
- Ubuntu 上的 Firefox,默认 FR 布局,
- Ubuntu 上的 Firefox,默认为美国布局(从未使用过其他布局)
并且该错误在 1. 和 2. 上重现,但在 3. 上没有重现,因此表明即使我在 1. 和 2. 中将布局切换回美国,默认布局或键盘配置仍然会扰乱 xdotool 模拟文本的能力键入。
答案1
在改变的同时当前的键盘布局不能解决问题,更改默认美国的键盘布局确实解决了这个问题。这看起来不像是 WAI,但鉴于此解决方法,我仍然会将这个问题标记为已解决。