X11 Inside Qt Как щелкнуть мышью в верхнем окне - PullRequest
0 голосов
/ 09 апреля 2020

Создание приложения Qt, которое порождает другое приложение и затем щелкает по нему - я думаю, это верхнее окно. Работал на Windows с SendInput, теперь по той же идее на Linux Я пытаюсь использовать X11. Найдено много примеров с использованием XQueryPointer и XSendEvent. Нечетное l oop просматривает windows и sub windows Я понятия не имею о. Во всяком случае, это не работает, и я понятия не имею, на какое окно пытается нацелиться код. Никто не говорит об этом в примерах.

Код выполняется, проверяет ошибки и не находит ни одного. Но щелчки не работают. Мой щелчок мышью срабатывает мгновенно.

Как определить, куда идут щелчки? И как мне найти верхнее окно или все, что мне нужно для отправки кликов?

Код длинный, поэтому я опубликую его и вернусь сюда с ответом со ссылкой на подпрограммы кода.

Выходные данные приложения показывают, что клики отправлены

Вот сообщение в блоге с кодом:

https://windyweather.net/2019/04/09/x11-xsendevent-does-not-click-mouse/

Кстати, Github Gists работают здесь? Тем не мение. Просто открыл их, и они круто. Отлично работает на wordpress.com. Кто знал.

Не нужно использовать X11, просто он кажется проще, чем альтернатива uinput, которую я видел раньше. Спасибо.

1 Ответ

0 голосов
/ 10 апреля 2020

Я ударился головой о стену, пытаясь исправить программу QtShowRunner, которая работает на Windows, чтобы работать на Linux. Ни один из методов не сработал.

  • Вызовы API ядра uinput никогда не работали.
  • Использование X11 XSendEvent для отправки щелчков мыши или событий Key не работало.

Наконец-то я нашел команду под названием xdotool, которая выполняет множество операций X, включая отправку щелчков мышью и нажатий клавиш. Вот сценарий оболочки, который использует xdotool для запуска soffice впечатления, чтобы показать слайд-шоу, а затем завершить показ и затем выйти из сценария.

Подробнее в моем блоге:

Скрипт для запуска слайд-шоу

...