Доброго времени суток,
есть id окна, есть координаты, нужно в это окно послать клик мышкой по данным координатам.
Создаю своё окно, указываю ему в параметрах
event_mask=ButtonPressMask
А при вызове createWindow указываю маску CWEventMask.
Далее отслеживаю события в своём окне, при событии ButtonPress посылаю сигнал клика в другое окно:
case ButtonPress: xEvent.xbutton.window = targetWindowId;
xEvent.type = ButtonPress; XSendEvent (d, targetWindowId, False, ButtonPressMask, &xEvent);
nanosleep(&clickDelay, NULL);
xEvent.type = ButtonRelease; XSendEvent (d, targetWindowId, False, ButtonReleaseMask, &xEvent);
Проблемы: - Разным окнам задержка в clickDelay нужна разная, кому то меньше кому то больше. - Для некоторых окон пришлось использовать XWarpPointer, ждать и только потом клик слать. - Но некоторым окнам и этого было мало, пришлось MotionEvent посылать. - И всё равно остались окна, которым по барабану. - Так же есть окна, например netbeans, в которых элементы меню работают хорошо, а поле редактора либо вообще не принимает клик, либо в одном и том же месте.
Вопросы: - Как правильно послать клик мышкой окну с известным id? - Если провести по окну приложения, которое не в фокусе курсором, то там где курсор попадает на элементы меню, эти элементы реагируют, а если я в своём окне отлавливаю MotionNotify, и пересылаю его другому окну, то они не подсвечаиваются, хотя xev показывает что все события отлично доходят, почему так?