Содержание | Список структур |
Нажатия и отжатия клавиш на клавиатуре порождают событие XKeyEvent. В зависимости от нажатия или отжатия значение поля type принимает значение KeyPress или KeyRelease соответственно. Для более упорядоченной обработки событий клавиатуры определены дополнительные названия этой структуры: XKeyPressedEvent и XKeyReleasedEvent.
Формат структуры:
typedef struct { int type; unsigned long serial; Bool send_event; Display *display; Window window; Window root; Window subwindow; Time time; int x, y; int x_root, y_root; unsigned int state; unsigned int keycode; Bool same_screen; } XKeyEvent; typedef XKeyEvent XKeyPressedEvent; typedef XKeyEvent XKeyReleasedEvent;
Поле type определяет тип события и принимает значение KeyPress или KeyRelease.
Поле serial хранит серийный номер последнего обработанного запроса.
Поле send_event принимает значение True, если событие послано другим клиентом через вызов XSendEvent.
Поле display хранит указатель на структуру, описывающую дисплей, с которого было получено это событие.
Поле window хранит идентификатор окна, для которого сгенерировано это событие.
Поле root указывает на корневое окно, которому принадлежит окно window.
Поле subwindow будет указывать на дочернее окно окна window в том случае, если событие принадлежит дочернему окну. Иначе в это поле записывается значение None.
Поле time хранит время, в которое событие было сгенерировано.
Поля x и y хранят координаты графического курсора мыши относительно окна window.
Поля x_root и y_root хранят координаты графического курсора мыши относительно корневого окна.
Поле state указывает состояние клавиш-модификаторов на клавиатуре. Оно является битовой маской. Для каждого разряда определена своя маска: ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask и Mod5Mask. Установленный в единицу разряд означает активное состояние клавиши-модификатора. Проверка состояния какой-либо клавиши производится путём логического умножения поля state с битовой маской этой клавиши. Если результат будет ненулевым, то значит клавиша активна.
Поле keycode хранит код клавиши. Его значение является аппаратно-зависимыми. Для получения соответствующего кода символа с учетом языка и клавиш-переключателей необходимо использовать функцию XKeyCodeToKeySym.
Поле same_screen принимает значение True, если событие было порождено на том же экране, которому принадлежит окно window.
Содержание | Список структур |