Что-то наподовие SendKey в Linux реализовать бы

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Yura
незнакомец
Сообщения: 3
Зарегистрирован: 19.09.2007 21:26:59

Что-то наподовие SendKey в Linux реализовать бы

Сообщение Yura »

Есть нужда реализовать программу, которая бы в Linux управляла бы другими запущенными приложениями. Типа могла бы для них эмуляцию нажатия в них клавиш клавиатуры. Для Винды была когда-то реализован аналог VB-шной функции SendKey, а как сделать что-то подобное для Linux?
Аватара пользователя
Browny
новенький
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Сообщение Browny »

В Win32 для этого можно использовать механизм сообщений. Ищется хэндл окна искомого приложения, затем отправляется сообщение (WM_KEYUP, WM_KEYDOWN) в оконную функцию.
Для Linux не могу подсказать, но схожий механизм должен быть. Только, думаю, это должно быть привязано к GTK2 или QT.
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

есть програмка xneur она это точно умеет делать. смотри исходник или с автором спешись. она работает вроде и с гтк и кде и остальным.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Yura
а что ты хочеш сделать?
посылать любой программе или конкретной?
если конкретной - то может у неё есть специальнйы интерфейс для взаимодействия?
Yura
незнакомец
Сообщения: 3
Зарегистрирован: 19.09.2007 21:26:59

Сообщение Yura »

Да любой программе отослать событие хотелось бы. Попробую порыть в сторону LIRC. Там на С что-то похожее реализовано, похоже с использованием XLib.
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Yura
еще раз грю посмотри xneur.ru там код вроде не плохо документирован и автор на связи все время.

решением не забуть поделится =)
Ответить