在Linux中从pygtk应用程序粘贴ctrl-v到另一个窗口

2 投票
1 回答
533 浏览
提问于 2025-04-17 12:43

我正在使用pygtk、gtk剪贴板和keybinder。以下是我想要做的事情。

  1. 捕捉在其他窗口的文本框中按下的按键,比如在浏览器里
  2. 弹出一个gtk应用程序,处理一些用户输入
  3. 将处理后的数据复制到gtk剪贴板
  4. 将剪贴板中的数据粘贴到原窗口的文本框中
  5. 清空剪贴板

我已经能够捕捉到按键并弹出窗口了。我可以将数据复制到剪贴板,也可以关闭gtk应用程序并将焦点返回到原来的文本框。现在唯一的问题是我不知道如何完成第4步。目前,用户需要按ctrl-v才能将剪贴板中的内容粘贴到文本框里,我想去掉这个按键操作。

1 个回答

1

我想到的最好办法是用python-wnck来获取窗口的名称,然后用gnome-clipboard把它复制到剪贴板,接着再用xdotool通过命令和窗口名称来调用一个子进程。

paste_cmd = 'ctrl+v'
xdo_cmd = 'xdotool search "%s" windowactivate --sync key --clearmodifiers %s'

这个方法似乎能用,但如果有更本地化的解决方案会更好。

撰写回答