Отправка событий системной мыши на Linux - PullRequest
0 голосов
/ 08 апреля 2020

Я написал программу Qt, которая отправляет события мыши на Windows с помощью SendEvent. Вот код, который я нашел, который отлично работает. Эти события go до «Верхнего окна» на экране в самый раз. Теперь мне нужно переместить эту программу в Linux.

Насколько я понимаю, Qt App функционирует как QCoreApplication :: postEvent go событие только текущего приложения l oop, так что это не решит моя проблема. Мне нужно отправить событие в верхнее окно на экране в то время. Вот что я использую на Windows.

Также было бы полезно получить указатели на то, как обусловить код для Windows / Linux.

Спасибо.

void MainWindow::mouseClick()
{
    INPUT Inputs[3];

    Inputs[0] = {}; // probably a better way to zero out this array
    Inputs[1] = {};
    Inputs[2] = {};

    Inputs[0].type = INPUT_MOUSE;
    // I'm not clear on coords that this uses, but 500 is not very far,
    // so use 2000. Clearly it's not pixels.
    Inputs[0].mi.dx = 2000; // desired X coordinate
    Inputs[0].mi.dy = 2000; // desired Y coordinate
    Inputs[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;

    Inputs[1].type = INPUT_MOUSE;
    Inputs[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;

    Inputs[2].type = INPUT_MOUSE;
    Inputs[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;

    SendInput(3, Inputs, sizeof(INPUT));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...