Положение курсора мыши в C на многоэкранной системе - PullRequest
7 голосов
/ 08 декабря 2010

как я могу установить курсор мыши в окне X в C под Linux с несколькими экранами? У меня есть 2 монитора (с разным разрешением), подключенных к одному ПК Linux. Я использовал «: 0.1» для адресации второго монитора. Я запускаю приложение с монитора 1, удерживая мышь на мониторе 1 также .... в результате мышь перемещается, но не прыгает на монитор 2. Если я вручную наведу курсор мыши на монитор 2 и запусту приложение с монитора 1, мышь начнет двигаться.

Мне нужен способ перемещения курсора между мониторами.

#include "Xlib.h"
int main() {
  int delta_x = 5, delta_y = 5;
  Display *display = XOpenDisplay(":0.1");
  // move pointer relative to current position
  XWarpPointer(display, None, None, 0, 0, 0, 0, delta_x, delta_y);
  XCloseDisplay(display);
}

1 Ответ

4 голосов
/ 08 декабря 2010

Вам нужно передать дескриптор корневого окна дисплея, на который вы хотите переместить указатель:

    root = RootWindow(display, screennumber);
    XWarpPointer(display, None, root, 0, 0, 0, 0, x, y);

Здесь приведен полный рабочий пример C:

http://www.ishiboo.com/~danny/Projects/xwarppointer/

, которые могут быть полезны:)

...