我想模拟键盘输入,以便我可以将剪贴板内容“粘贴”到不允许这样做的应用程序(例如远程 KVM)。现在,我正在尝试使用xdotool
和xclip
:
xdotool type "$(xclip -o)"
如果我待在终端窗口中并自己输入该命令,此命令就会起作用。当我运行该命令时,它会返回我的剪贴板内容。我的目标是将此命令绑定到热键,以便它在任何应用程序中都能起作用。
如果我使用此热键,任何具有焦点的窗口都会发生意外行为。例如,我的终端窗口大小会缩小(实际上,这有点有趣)。如果我将其保存为脚本并调用该脚本,或者如果我用 封装命令,也会出现类似的结果sh -c
。我如何才能实际使用这个强大的xdotool type
命令?
答案1
此命令有两个问题。首先,您需要确保在尝试运行命令时未按下绑定中的元键。其次,默认情况下 xclip 选择XA_Primary
缓冲区而不是XA_CLIPBOARD
。因此,您应该将其clipboard
作为 xclip 的选择参数传递。将您的热键命令更改为以下内容:
sh -c 'sleep 0.5; xdotool type "$(xclip -o -selection clipboard)"'
答案2
xdotool 创建按键,它不会为您释放 Ctrl 键...最简单的解决方案是添加延迟,例如 sleep 0.5
等待半秒钟,并确保您足够快地释放 Ctrl。
答案3
sh -c ‘xdotool 类型 --clearmodifiers -- “$(xclip -o -selection 剪贴板)”’
“--clearmodifiers” 删除 CTRL/ALT/Shift 等,希望这意味着不需要睡眠
“--” 表示 xdotool 选项的结束,因此,如果粘贴的测试以 - 开头,xdotool 将不会尝试将其解释为选项
答案4
由于 Unbuntu 现在使用 Wayland,因此xdotool
默认情况下不起作用。
我可以修改 Alex L 的解决方案以使用ydotool
:
sh -c 'sleep 0.5; xclip -o -selection clipboard | ydotool type --file -'
我需要将换行符输入为回车符,这在内置的 0.1.8 ydotool 中不可用,但在从以下来源安装的 1.0.4 中运行良好本指南。