Может кто-нибудь объяснить этот раздел о событиях в Xlib? - PullRequest
1 голос
/ 20 октября 2019

Раздел, который меня смущает, взят из Том первый: Руководство по программированию Xlib .

События клавиатуры и указателя генерируются в самом маленьком окне, включающемуказатель (или захват указателя, как описано в разделе 8.3.2.2, «Захват клавиатуры и указателя»). Затем событие одного из этих типов (только) распространяется вверх по иерархии окна, пока тип события не будет найден в атрибутах event_mask или do_not_propagate_mask окна. Если событие сначала обнаруживается в event_mask (или в обоих в одном и том же окне), то событие отправляется так, как если бы оно произошло в этом окне, а если оно сначала обнаруживается в do_not_propagate_mask, то оно никогда не выполняетсяпослал. Идентификатор окна, которое, наконец, получило событие (если есть), помещается в элемент окна структуры события.

Что автор подразумевает под «сгенерированным» в отношении событий клавиатуры и указателя

1 Ответ

0 голосов
/ 21 октября 2019

Все события сериализуются как 32 байта данных, «сгенерировано» в вашем контексте «заполнить 32 байта данных всей необходимой информацией (некоторые распространены среди событий, таких как идентификатор целевого окна, время сервера событий, некоторые специфичны для события»). введите как x, y позиции указателя или код клавиши нажатой клавиши) "+ отправить его в сокет, связанный с соединением

https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html

События имеют длину 32 байта. Неиспользуемые байты в событии не гарантируются равными нулю. Каждое событие содержит 8-битный код типа. Наиболее значимый бит в этом коде устанавливается, если событие было сгенерировано из запроса SendEvent. Коды событий с 64 по 127 зарезервированы для расширений, хотя основной протокол не определяет механизм выбора интереса к таким событиям. Каждое основное событие (за исключением KeymapNotify) также содержит младшие 16 битов порядкового номера последнего запроса, выданного клиентом, который был (или в настоящее время обрабатывается) сервером.

...