Как глобально захватить каждый щелчок мыши в X11? - PullRequest
5 голосов
/ 25 декабря 2011

Я хочу перехватывать каждое событие щелчка мыши в X11 и передавать их в мое приложение C ++.Я хочу не только фиксировать клики, сделанные в верхней части моего главного окна, но и все, независимо от моего главного окна.Похоже, я мог бы легко сделать это с помощью XGrabPointer.Однако я хочу, чтобы все было так, как будто я никогда не схватил событие.То есть я хочу, чтобы события продолжались в их обычном пути к другим клиентам по иерархии, я просто хочу быть первым, кто будет следить за событиями.Я не хочу, чтобы события были «съедены».

Похоже, что есть несколько решений, которые возникают при поиске проблемы в Google, но, очевидно, все они сломаны или устарели.Самым многообещающим был Xrecord + Xtest, но это также кажется устаревшим.

Похоже, что в настоящее время это следует делать с использованием Xinput2, но информации о том, как его использовать, действительно мало.Я был бы признателен за некоторую проницательность.

РЕДАКТИРОВАТЬ: Я все еще хотел бы ответ на это!

Ответы [ 3 ]

2 голосов
/ 07 января 2014

Несколько поздно, но все же - возможно, вы захотите взглянуть на приложение "xkey" [1], которое отслеживает все ключевые события для всех открытых окон. Если вы пошли по этому пути, вы бы также хотели следить за созданием нового окна.

[1] http://www.stllinux.org/meeting_notes/1997/0619/xkey.html

1 голос
/ 25 декабря 2011

Я знаю, что kcolorchooser делает это и написано на C

Может быть, стоит упомянуть: http://www.kde.org/applications/graphics/kcolorchooser/development

0 голосов
/ 25 декабря 2011

Может быть, вам стоит взглянуть на код xev: он фиксирует все мыслимые события X.

...