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