Вставить текст в активное окно в Linux - PullRequest
1 голос
/ 20 сентября 2009

Я хочу написать приложение, которое вставляет некоторый текст в активное окно при некотором нажатии клавиши. Как я могу сделать это с Python или C ++?

Я хочу написать приложение, которое будет работать как демон, и при некотором глобальном нажатии клавиши вставить некоторый текст в текущее активное приложение (текстовый редактор, браузер и клиент Jabber). Я думаю, что мне нужно будет использовать какой-то низкоуровневый серверный интерфейс X Window.

Ответы [ 2 ]

1 голос
/ 20 сентября 2009

Взаимодействие между интерфейсами нескольких приложений может быть сложным, поэтому может помочь предоставить больше информации о том, что именно вы пытаетесь сделать.

Тем не менее, у вас есть несколько вариантов, если вы хотите использовать буфер обмена для достижения этой цели. В Windows API Windows предоставляет GetClipboardData и SetClipboardData . Чтобы использовать эти функции из Python, вы хотели бы воспользоваться win32com .

В Linux у вас есть два основных варианта (которые я знаю) для взаимодействия с буфером обмена. PyGTK предоставляет объект gtk.Clipboard . Существует также инструмент командной строки для установки X «selection», XSel . Вы можете взаимодействовать с XSel с помощью Python с помощью подпрограммы os.popen или . См. это руководство для получения информации об использовании gtk.Clipboard и xsel.

С точки зрения того, как вы на самом деле используете буфер обмена. Одно приложение может опрашивать буфер обмена так часто, ища изменения.

Если вы хотите получить настоящую «корпоративную» архитектуру, вы можете использовать шину сообщений, такую ​​как RabbitMQ , для связи между двумя приложениями.

0 голосов
/ 20 сентября 2009

Если вы используете Tkinter (библиотека с графическим интерфейсом, которая работает в Linux, Mac OS X, Windows и везде) и создаете любой виджет (например, текстовый виджет), копия ( Ctrl + *) Команды 1003 * C ) и paste ( Ctrl + V ) работают автоматически. Например, в следующем коде показан виджет «Текст», в котором можно вводить многострочный текст, а также копировать и вставлять его в другие приложения или из другого приложения (например, 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...