eventstr.h revision a3f3701cea1ba388e7c877955252bb7375eedebd
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Copyright © 2009 Red Hat, Inc.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Permission is hereby granted, free of charge, to any person obtaining a
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * copy of this software and associated documentation files (the "Software"),
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * to deal in the Software without restriction, including without limitation
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * the rights to use, copy, modify, merge, publish, distribute, sublicense,
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * and/or sell copies of the Software, and to permit persons to whom the
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Software is furnished to do so, subject to the following conditions:
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * The above copyright notice and this permission notice (including the next
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * paragraph) shall be included in all copies or substantial portions of the
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * DEALINGS IN THE SOFTWARE.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * This file describes the event structures used internally by the X
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * server during event generation and event processing.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * When are internal events used?
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Events from input devices are stored as internal events in the EQ and
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * processed as internal events until late in the processing cycle. Only then
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * do they switch to their respective wire events.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Event types. Used exclusively internal to the server, not visible on the
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Note: Keep KeyPress to Motion aligned with the core events.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Keep ET_Raw* in the same order as KeyPress - Motion
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Used for ALL input device events internal in the server until
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * copied into the matching protocol event.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Note: We only use the device id because the DeviceIntPtr may become invalid while
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * the event is in the EQ.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian unsigned char header; /**< Always ET_Internal */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian enum EventType type; /**< One of EventType */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int deviceid; /**< Device to post this event for */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian int sourceid; /**< The physical source device */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint32_t button; /**< Button number (also used in pointer emulating
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian touch events) */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint32_t touchid; /**< Touch ID (client_id) */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int16_t root_x; /**< Pos relative to root window in integral data */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian float root_x_frac; /**< Pos relative to root window in frac part */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int16_t root_y; /**< Pos relative to root window in integral part */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian float root_y_frac; /**< Pos relative to root window in frac part */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint8_t buttons[(MAX_BUTTONS + 7) / 8]; /**< Button mask */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint8_t mask[(MAX_VALUATORS + 7) / 8];/**< Valuator mask */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint8_t mode[(MAX_VALUATORS + 7) / 8];/**< Valuator mode (Abs or Rel)*/
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian double data[MAX_VALUATORS]; /**< Valuator data */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint32_t latched; /**< XKB latched modifiers */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint32_t locked; /**< XKB locked modifiers */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint32_t effective;/**< XKB effective modifiers */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint8_t effective;/**< XKB effective group */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian Window root; /**< Root window of the event */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int corestate; /**< Core key/button state BEFORE the event */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int key_repeat; /**< Internally-generated key repeat event */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint32_t flags; /**< Flags to be copied into the generated event */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Generated internally whenever a touch ownership chain changes - an owner
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * has accepted or rejected a touch, or a grab/event selection in the delivery
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * chain has been removed.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian unsigned char header; /**< Always ET_Internal */
d2365b013d4199b49b3a1438d57aea23423e02adPavel Tatashin enum EventType type; /**< One of EventType */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int deviceid; /**< Device to post this event for */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int sourceid; /**< The physical source device */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint32_t touchid; /**< Touch ID (client_id) */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian uint8_t reason; /**< ::XIAcceptTouch, ::XIRejectTouch */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian uint32_t resource; /**< Provoking grab or event selection */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian uint32_t flags; /**< Flags to be copied into the generated event */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian/* Flags used in DeviceChangedEvent to signal if the slave has changed */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian/* Flags used in DeviceChangedEvent to signal whether the event was a
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian * pointer event or a keyboard event */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian/* device capabilities changed */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian * Sent whenever a device's capabilities have changed.
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian unsigned char header; /**< Always ET_Internal */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian enum EventType type; /**< ET_DeviceChanged */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int deviceid; /**< Device whose capabilities have changed */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian ::POINTER_EVENT, ::KEYBOARD_EVENT */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int masterid; /**< MD when event was generated */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int sourceid; /**< The device that caused the change */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian Atom names[MAX_BUTTONS];/**< Button names */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian /* FIXME: frac parts of min/max */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint32_t resolution; /**< Resolution counts/m */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian ScrollInfo scroll; /**< Smooth scrolling info */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * DGAEvent, used by DGA to intercept and emulate input events.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian unsigned char header; /**< Always ET_Internal */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int subtype; /**< KeyPress, KeyRelease, ButtonPress,
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian ButtonRelease, MotionNotify */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int detail; /**< Button number or key code */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian int screen; /**< Screen number this event applies to */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian uint16_t state; /**< Core modifier/button state */
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian * Raw event, contains the data as posted by the device.
023e71de9e5670cebc23dd51162833661d3d2d3bHaik Aftandilian unsigned char header; /**< Always ET_Internal */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian int deviceid; /**< Device to post this event for */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian int sourceid; /**< The physical source device */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian uint8_t mask[(MAX_VALUATORS + 7) / 8];/**< Valuator mask */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian double data[MAX_VALUATORS]; /**< Valuator data */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian double data_raw[MAX_VALUATORS]; /**< Valuator data as posted */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian uint32_t flags; /**< Flags to be copied into the generated event */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian unsigned char header; /**< Always ET_Internal */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian enum EventType type; /**< Always ET_XQuartz */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian int subtype; /**< Subtype defined by XQuartz DDX */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian uint32_t data[XQUARTZ_EVENT_MAXARGS]; /**< Up to 5 32bit values passed to handler */
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian * Event type used inside the X server for input event
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian * processing.
00a57bdfe7eeb62d10d0c0b3aab64d24a4d89287Haik Aftandilian unsigned char header; /**< Always ET_Internal */