将文本粘贴到Linux上的活动窗口

时间:2009-09-20 12:09:17

标签: c++ python linux x11

我想编写一个应用程序,在某些击键时将一些文本粘贴到活动窗口。我怎么能用Python或C ++做到这一点?

我想编写一个类似守护进程的应用程序,并在一些全局按键上将一些文本粘贴到当前活动应用程序(文本编辑器,浏览器和jabber客户端)。我想我需要使用一些低级X Window服务器API。

2 个答案:

答案 0 :(得分:1)

多个应用程序接口之间的交互可能很棘手,因此可能有助于提供有关您要执行的具体操作的更多信息。

尽管如此,如果您想使用剪贴板来完成此任务,您还有一些选择。在Windows上,Windows API提供GetClipboardDataSetClipboardData。要从Python中使用这些函数,您可能希望利用win32com

在Linux上,您有两个主要选项(我知道)用于与剪贴板交互。 PyGTK提供了gtk.Clipboard个对象。还有一个命令行工具,用于设置X“选择”XSel。您可以通过os.popensubprocess使用Python与XSel交互。有关使用gtk.Clipboard和xsel的信息,请参阅this guide

就实际使用剪贴板的方式而言。一个应用程序可能会经常轮询剪贴板,以便经常查找更改。

如果您想进入真正的“企业”架构,可以使用消息总线(如RabbitMQ)在两个应用程序之间进行通信。

答案 1 :(得分:0)

如果你使用Tkinter(一个可在Linux,Mac OS X,Windows和其他地方工作的GUI库),并制作任何小部件(例如文本小部件),副本( Ctrl + C )和粘贴( Ctrl + V )命令自动工作。例如,以下代码显示了一个Text小部件,您可以在其中键入多行文本,复制并粘贴到其他应用程序或其他应用程序(例如,OpenOffice)。

from Tkinter import *
root = Tk()                 # Initialize GUI
t = Text(root)              # Create a text widget
t.grid()                    # Show the widget
root.mainloop()             # Start the GUI

我已经使用Windows和Linux / KDE 3.5测试了代码。