2016-12-09 12 views
0

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

Я написал это для окон, используя WM_MOUSE_LL крючок. Мне не удалось найти решение для меня. Возможно ли даже глобальное блокирование щелчка мыши в X11?

Windows full code

+0

что вы пытаетесь сделать? просто заблокировать «быстрый» двойной щелчок? –

+0

@ I-V, да, если мы правильно понимаем друг друга – Inline

+0

Я действительно имел в виду, если вы попытаетесь заблокировать щелчок на той же машине, на которой работает ваш код (или заблокировать его на удаленной машине через rdp)? –

ответ

1

Насколько я знаю, стандартный протокол X11 не позволяет этого. Расширение XInput 2.0 может, но я сомневаюсь в этом .. в то время как Windows предполагает одну очередь событий, которую слушает каждая программа, чтобы программа могла перехватить событие и предотвратить его отправку в очередь другим слушателям, каждый клиент X11 имеет его собственная независимая очередь и все клиенты, которые регистрируют интерес к событию, получают независимую копию в очереди. Это означает, что при нормальных обстоятельствах невозможно, чтобы ошибочная программа блокировала запуск других программ; но это также означает, что в те моменты, когда клиент должен блокировать других клиентов, он должен захватить сервер, чтобы сервер не обрабатывал события для любого другого клиента.

Что означает, что вы можете либо

  • использовать прокси-сервер X-сервер (не будет трудно, но будет довольно медленным)

или

  • сделать это на уровень входного устройства. /dev/input/event<n> дают вам входные события. Вы можете прочитать нажатие клавиш и решить, следует ли их распространять далее. К сожалению, для этого нет реальной документации, но заголовочный файл linux/include/input.h вполне объяснителен.