summaryrefslogtreecommitdiff
path: root/include/events.h
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-07-27 16:54:33 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2009-07-30 08:43:13 +1000
commit4e9b2938cd8637a5d3b0a4c9f69d6ee75faab3a0 (patch)
treee399904f7ab33652c978d778b84bba71084c5f49 /include/events.h
parentfad5f96c01811af7490a071719e4017c019a8d9b (diff)
include: untangle events.h from the SDK headers.
InternalEvents shouldn't be used anywhere outside the X server itself. Split up into events.h for opaque typedefs for the events needed by various headers and eventstr.h for the actual struct definitions. eventstr.h must only be included by code that requires internal events and is not part of the SDK. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'include/events.h')
-rw-r--r--include/events.h210
1 files changed, 5 insertions, 205 deletions
diff --git a/include/events.h b/include/events.h
index 4b0c6dcb4..9f6a94c5b 100644
--- a/include/events.h
+++ b/include/events.h
@@ -24,212 +24,12 @@
#ifndef EVENTS_H
#define EVENTS_H
-
-/**
- * @file events.h
- * This file describes the event structures used internally by the X
- * server during event generation and event processing.
- *
- * When are internal events used?
- * Events from input devices are stored as internal events in the EQ and
- * processed as internal events until late in the processing cycle. Only then
- * do they switch to their respective wire events.
- */
-
-/**
- * Event types. Used exclusively internal to the server, not visible on the
- * protocol.
- *
- * Note: Keep KeyPress to Motion aligned with the core events.
- * Keep ET_Raw* in the same order as KeyPress - Motion
- */
-enum {
- ET_KeyPress = 2,
- ET_KeyRelease,
- ET_ButtonPress,
- ET_ButtonRelease,
- ET_Motion,
- ET_Enter,
- ET_Leave,
- ET_FocusIn,
- ET_FocusOut,
- ET_ProximityIn,
- ET_ProximityOut,
- ET_DeviceChanged,
- ET_Hierarchy,
-#if XFreeXDGA
- ET_DGAEvent,
-#endif
- ET_RawKeyPress,
- ET_RawKeyRelease,
- ET_RawButtonPress,
- ET_RawButtonRelease,
- ET_RawMotion,
- ET_Internal = 0xFF /* First byte */
-} EventType;
-
-#define CHECKEVENT(ev) if (ev && ((InternalEvent*)(ev))->any.header != 0xFF) \
- FatalError("Wrong event type %d.\n", \
- ((InternalEvent*)(ev))->any.header);
-
-/**
- * Used for ALL input device events internal in the server until
- * copied into the matching protocol event.
- *
- * Note: We only use the device id because the DeviceIntPtr may become invalid while
- * the event is in the EQ.
- */
-typedef struct
-{
- unsigned char header; /**< Always ET_Internal */
- int type; /**< One of EventType */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms */
- int deviceid; /**< Device to post this event for */
- int sourceid; /**< The physical source device */
- union {
- uint32_t button; /**< Button number */
- uint32_t key; /**< Key code */
- } detail;
- uint16_t root_x; /**< Pos relative to root window in integral data */
- float root_x_frac; /**< Pos relative to root window in frac part */
- uint16_t root_y; /**< Pos relative to root window in integral part */
- float root_y_frac; /**< Pos relative to root window in frac part */
- uint8_t buttons[(MAX_BUTTONS + 7)/8]; /**< Button mask */
- struct {
- uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */
- uint8_t mode[(MAX_VALUATORS + 7)/8]; /**< Valuator mode (Abs or Rel)*/
- uint32_t data[MAX_VALUATORS]; /**< Valuator data */
- int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */
- } valuators;
- struct {
- uint32_t base; /**< XKB base modifiers */
- uint32_t latched; /**< XKB latched modifiers */
- uint32_t locked; /**< XKB locked modifiers */
- uint32_t effective;/**< XKB effective modifiers */
- } mods;
- struct {
- uint8_t base; /**< XKB base group */
- uint8_t latched; /**< XKB latched group */
- uint8_t locked; /**< XKB locked group */
- uint8_t effective;/**< XKB effective group */
- } group;
- Window root; /**< Root window of the event */
- int corestate; /**< Core key/button state BEFORE the event */
-} DeviceEvent;
-
-
-/* Flags used in DeviceChangedEvent to signal if new/old slave is present. */
-#define DEVCHANGE_HAS_OLD_SLAVE 0x1
-#define DEVCHANGE_HAS_NEW_SLAVE 0x2
-/* Flags used in DeviceChangedEvent to signal whether the event was a
- * pointer event or a keyboard event */
-#define DEVCHANGE_POINTER_EVENT 0x4
-#define DEVCHANGE_KEYBOARD_EVENT 0x8
-/* device capabilities changed */
-#define DEVCHANGE_DEVICE_CHANGE 0x10
-
-/**
- * Sent whenever a device's capabilities have changed.
- */
-typedef struct
-{
- unsigned char header; /**< Always ET_Internal */
- int type; /**< ET_DeviceChanged */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms */
- int deviceid; /**< Device whose capabilities have changed */
- int flags; /**< Mask of ::HAS_OLD_SLAVE, ::HAS_NEW_SLAVE,
- ::POINTER_EVENT, ::KEYBOARD_EVENT */
- /** If flags & HAS_OLD_SLAVE is set, old_slaveid specifies SD previously
- * attached to this device. */
- int old_slaveid;
- /** If flags & HAS_OLD_SLAVE is set, old_slaveid specifies device now
- * attached to this device. */
- int new_slaveid;
-
- struct {
- int num_buttons; /**< Number of buttons */
- Atom names[MAX_BUTTONS];/**< Button names */
- } buttons;
-
- int num_valuators; /**< Number of axes */
- struct {
- uint32_t min; /**< Minimum value */
- uint32_t max; /**< Maximum value */
- /* FIXME: frac parts of min/max */
- uint32_t resolution; /**< Resolution counts/m */
- uint8_t mode; /**< Relative or Absolute */
- Atom name; /**< Axis name */
- } valuators[MAX_VALUATORS];
-
- struct {
- int min_keycode;
- int max_keycode;
- } keys;
-} DeviceChangedEvent;
-
-#if XFreeXDGA
-/**
- * DGAEvent, used by DGA to intercept and emulate input events.
- */
-typedef struct
-{
- unsigned char header; /**< Always ET_Internal */
- int type; /**< ET_DGAEvent */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms */
- int subtype; /**< KeyPress, KeyRelease, ButtonPress,
- ButtonRelease, MotionNotify */
- int detail; /**< Relative x coordinate */
- int dx; /**< Relative x coordinate */
- int dy; /**< Relative y coordinate */
- int screen; /**< Screen number this event applies to */
- uint16_t state; /**< Core modifier/button state */
-} DGAEvent;
-#endif
-
-/**
- * Raw event, contains the data as posted by the device.
- */
-typedef struct
-{
- unsigned char header; /**< Always ET_Internal */
- int type; /**< ET_Raw */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms */
- int deviceid; /**< Device to post this event for */
- int sourceid; /**< The physical source device */
- union {
- uint32_t button; /**< Button number */
- uint32_t key; /**< Key code */
- } detail;
- struct {
- uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */
- int32_t data[MAX_VALUATORS]; /**< Valuator data */
- int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */
- int32_t data_raw[MAX_VALUATORS]; /**< Valuator data as posted */
- int32_t data_raw_frac[MAX_VALUATORS];/**< Fractional part for data_raw */
- } valuators;
-} RawDeviceEvent;
-
-/**
- * Event type used inside the X server for input event
- * processing.
- */
-typedef union {
- struct {
- unsigned char header; /**< Always ET_Internal */
- int type; /**< One of ET_* */
- int length; /**< Length in bytes */
- Time time; /**< Time in ms. */
- } any;
- DeviceEvent device;
- DeviceChangedEvent changed;
+typedef struct _DeviceEvent DeviceEvent;
+typedef struct _DeviceChangedEvent DeviceChangedEvent;
#if XFreeXDGA
- DGAEvent dga;
+typedef struct _DGAEvent DGAEvent;
#endif
- RawDeviceEvent raw;
-} InternalEvent;
+typedef struct _RawDeviceEvent RawDeviceEvent;
+typedef union _InternalEvent InternalEvent;
#endif