更好的选择是

更好的选择是

我想知道是否有人知道一种方法,可以让一个窗口(例如浏览器)处于焦点状态,并将按键发送到非活动窗口(例如文本编辑器)。例如,在最小化文本编辑器的同时写一些东西(这不是我正在做的具体任务,这只是一个例子)。

答案1

mzke 一个打开文本框的脚本,然后 xdotool 激活编辑器并粘贴文本,然后重新激活当前窗口。设置 ubuntu 键盘快捷键来运行脚本。

这个如果用于是/否..修改为文本输入样式

dialogue --man

有一个适合您的应用程序的--inputbox。您需要自己做。

sudo apt install dialog 

dialog --title "texttoeditor" \
--backtitle "Suspend Confirmation " \
--yesno "Are you sure you want to suspend 
\"/tmp/foo.txt\"?" 7 60
# Get exit status
# 0 means user hit [yes] button.
# 1 means user hit [no] button.
# 255 means user hit [Esc] key.
response=$?
case $response in
0) systemctl suspend -i ;;
1) echo "suspend cancelled.";;
255) echo "[ESC] key pressed.";;
esac
text=<however we get the result as text for that input 
dialogue  for use below by xdotool  
clear
exit

现在您已经输入了文本,将其复制到剪贴板或存储为脚本的变量 $text

sudo apt 安装 xdotool

我们可以获取活动窗口并存储它的 id,临时激活文本编辑器(这里使用 gedit),使用编辑器的按键(例如 ctrl-v)从剪贴板粘贴文本,然后重新激活活动窗口。啊,这不起作用,因为当前窗口是对话框,所以您需要在调用上面的对话框之前放置以下 id1 行。

存储当前窗口 id id1= $(xdotool getwindowfocus) # xdotool 需要来自编辑器名称的 id

name="gedit"

id2 = $(xdotool 搜索--桌面 0--class“$name”)

 xdotool windowactivate --sync $id2 key  --clearmodifiers  --delay 100

xdotool keydown ctrl && xdotool key v

更好的选择是

xdotool type --window $id2 $text

更多关于 xdotool 的信息请点击此处 https://www.linux.org/threads/xdotool-keyboard.10528/ xdotool windowactivate --sync $id1 key --clearmodifiers --delay 100

有一些工作可以为你完成,但我还没有测试过所有这些。

相关内容