/* See LICENSE file for copyright and license details. */
struct libaxl_event_key_press {
#define LIBAXL_EVENT_KEY_PRESS 2
uint8_t code;
libaxl_keycode_t detail;
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
libaxl_bool_t same_screen;
uint8_t __unused[1];
};
struct libaxl_event_key_release {
#define LIBAXL_EVENT_KEY_RELEASE 3
uint8_t code;
libaxl_keycode_t detail;
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
libaxl_bool_t same_screen;
uint8_t __unused[1];
};
struct libaxl_event_key_press_release {
/* key_{press,release} */
uint8_t code;
libaxl_keycode_t detail;
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
libaxl_bool_t same_screen;
uint8_t __unused[1];
};
struct libaxl_event_button_press {
#define LIBAXL_EVENT_BUTTON_PRESS 4
uint8_t code;
libaxl_button_t detail;
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
libaxl_bool_t same_screen;
uint8_t __unused[1];
};
struct libaxl_event_button_release {
#define LIBAXL_EVENT_BUTTON_RELEASE 5
uint8_t code;
libaxl_button_t detail;
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
libaxl_bool_t same_screen;
uint8_t __unused[1];
};
struct libaxl_event_button_press_release {
/* button_{press,release} */
uint8_t code;
libaxl_button_t detail;
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
libaxl_bool_t same_screen;
uint8_t __unused[1];
};
struct libaxl_event_motion_notify {
#define LIBAXL_EVENT_MOTION_NOTIFY 6
uint8_t code;
uint8_t detail; /* LIBAXL_NORMAL or LIBAXL_HINT */
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
libaxl_bool_t same_screen;
uint8_t __unused[1];
};
struct libaxl_event_input_device_event {
/* {key,button}_{press,release}, motion_notify */
uint8_t code;
uint8_t detail;
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
libaxl_bool_t same_screen;
uint8_t __unused[1];
};
struct libaxl_event_enter_notify {
#define LIBAXL_EVENT_ENTER_NOTIFY 7
uint8_t code;
uint8_t detail; /* See "pointer window details" in libaxl-consts.h */
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
uint8_t mode; /* LIBAXL_NORMAL, LIBAXL_GRAB, or LIBAXL_UNGRAB */
uint8_t flags; /* TODO #x01 = Focus, #x02 = Same-screen */
};
struct libaxl_event_leave_notify {
#define LIBAXL_EVENT_LEAVE_NOTIFY 8
uint8_t code;
uint8_t detail; /* See "pointer window details" in libaxl-consts.h */
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
uint8_t mode; /* LIBAXL_NORMAL, LIBAXL_GRAB, or LIBAXL_UNGRAB */
uint8_t flags; /* TODO #x01 = Focus, #x02 = Same-screen */
};
struct libaxl_event_pointer_window_event {
/* {enter,leave}_notify */
uint8_t code;
uint8_t detail; /* See "pointer window details" in libaxl-consts.h */
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t root;
libaxl_window_t event;
libaxl_window_t child; /* Can be LIBAXL_NONE */
int16_t root_x;
int16_t root_y;
int16_t event_x;
int16_t event_y;
libaxl_keybutmask_t state;
uint8_t mode; /* LIBAXL_NORMAL, LIBAXL_GRAB, or LIBAXL_UNGRAB */
uint8_t flags; /* TODO #x01 = Focus, #x02 = Same-screen */
};
struct libaxl_event_focus_in {
#define LIBAXL_EVENT_FOCUS_IN 9
uint8_t code;
uint8_t detail; /* See "window focus details" in libaxl-consts.h (Beware of namespacing!) */
uint16_t sequence_number;
libaxl_window_t window;
uint8_t mode; /* LIBAXL_NORMAL, LIBAXL_GRAB, LIBAXL_UNGRAB, or LIBAXL_WHILE_GRABBED */
uint8_t __unused[23];
};
struct libaxl_event_focus_out {
#define LIBAXL_EVENT_FOCUS_OUT 10
uint8_t code;
uint8_t detail; /* See "window focus details" in libaxl-consts.h (Beware of namespacing!) */
uint16_t sequence_number;
libaxl_window_t window;
uint8_t mode; /* LIBAXL_NORMAL, LIBAXL_GRAB, LIBAXL_UNGRAB, or LIBAXL_WHILE_GRABBED */
uint8_t __unused[23];
};
struct libaxl_event_input_focus_event {
/* focus_{in,out} */
uint8_t code;
uint8_t detail; /* See "window focus details" in libaxl-consts.h (Beware of namespacing!) */
uint16_t sequence_number;
libaxl_window_t window;
uint8_t mode; /* LIBAXL_NORMAL, LIBAXL_GRAB, LIBAXL_UNGRAB, or LIBAXL_WHILE_GRABBED */
uint8_t __unused[23];
};
struct libaxl_event_keymap_notify {
#define LIBAXL_EVENT_KEYMAP_NOTIFY 11
uint8_t code;
uint8_t keys[31]; /* Byte for keycodes 0-7, which are unused, is omitted */
};
struct libaxl_event_expose {
#define LIBAXL_EVENT_EXPOSE 12
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t window;
uint16_t x;
uint16_t y;
uint16_t width;
uint16_t height;
uint16_t count;
uint8_t __unused[14];
};
struct libaxl_event_graphics_exposure {
#define LIBAXL_EVENT_GRAPHICS_EXPOSURE 13
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_drawable_t drawable;
uint16_t x;
uint16_t y;
uint16_t width;
uint16_t height;
uint16_t minor_opcode;
uint16_t count;
uint8_t major_opcode;
uint8_t __unused[11];
};
struct libaxl_event_no_exposure {
#define LIBAXL_EVENT_NO_EXPOSURE 14
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_drawable_t drawable;
uint16_t minor_opcode;
uint8_t major_opcode;
uint8_t __unused[21];
};
struct libaxl_event_visibility_notify {
#define LIBAXL_EVENT_VISIBILITY_NOTIFY 15
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_drawable_t drawable;
uint8_t state; /* LIBAXL_UNOBSCURED, LIBAXL_PARTIALLY_OBSCURED, or LIBAXL_FULLY_OBSCURED */
uint8_t __unused[23];
};
struct libaxl_event_create_notify {
#define LIBAXL_EVENT_CREATE_NOTIFY 16
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t parent;
libaxl_window_t window;
int16_t x;
int16_t y;
int16_t width;
int16_t height;
int16_t border_width;
libaxl_bool_t override_redirect;
uint8_t __unused[9];
};
struct libaxl_event_destroy_notify {
#define LIBAXL_EVENT_DESTROY_NOTIFY 17
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t event;
libaxl_window_t window;
uint8_t __unused[20];
};
struct libaxl_event_unmap_notify {
#define LIBAXL_EVENT_UNMAP_NOTIFY 18
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t event;
libaxl_window_t window;
libaxl_bool_t from_configure;
uint8_t __unused[19];
};
struct libaxl_event_map_notify {
#define LIBAXL_EVENT_MAP_NOTIFY 19
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t event;
libaxl_window_t window;
libaxl_bool_t override_redirect;
uint8_t __unused[19];
};
struct libaxl_event_map_request {
#define LIBAXL_EVENT_MAP_REQUEST 20
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t parent;
libaxl_window_t window;
uint8_t __unused[20];
};
struct libaxl_event_reparent_notify {
#define LIBAXL_EVENT_REPARENT_NOTIFY 21
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t event;
libaxl_window_t window;
libaxl_window_t parent;
int16_t x;
int16_t y;
libaxl_bool_t override_redirect;
uint8_t __unused[11];
};
struct libaxl_event_configure_notify {
#define LIBAXL_EVENT_CONFIGURE_NOTIFY 22
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t event;
libaxl_window_t window;
libaxl_window_t above_sibling; /* Can be LIBAXL_NONE */
int16_t x;
int16_t y;
uint16_t width;
uint16_t height;
uint16_t border_width;
libaxl_bool_t override_redirect;
uint8_t __unused[5];
};
struct libaxl_event_configure_request {
#define LIBAXL_EVENT_CONFIGURE_REQUEST 23
uint8_t code;
uint8_t stack_mode; /* See "stack mode" in libaxl-consts.h */
uint16_t sequence_number;
libaxl_window_t event;
libaxl_window_t window;
libaxl_window_t sibling; /* Can be LIBAXL_NONE */
int16_t x;
int16_t y;
uint16_t width;
uint16_t height;
uint16_t border_width;
uint16_t value_mask;
#define LIBAXL_EVENT_CONFIGURE_REQUEST_X 0x0001U
#define LIBAXL_EVENT_CONFIGURE_REQUEST_Y 0x0002U
#define LIBAXL_EVENT_CONFIGURE_REQUEST_WIDTH 0x0004U
#define LIBAXL_EVENT_CONFIGURE_REQUEST_HEIGHT 0x0008U
#define LIBAXL_EVENT_CONFIGURE_REQUEST_BORDER_WIDTH 0x0010U
#define LIBAXL_EVENT_CONFIGURE_REQUEST_SIBLING 0x0020U
#define LIBAXL_EVENT_CONFIGURE_REQUEST_STACK_MODE 0x0040U
uint8_t __unused[4];
};
struct libaxl_event_gravity_notify {
#define LIBAXL_EVENT_GRAVITY_NOTIFY 24
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t event;
libaxl_window_t window;
int16_t x;
int16_t y;
uint8_t __unused[16];
};
struct libaxl_event_resize_request {
#define LIBAXL_EVENT_RESIZE_REQUEST 25
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t window;
uint16_t width;
uint16_t height;
uint8_t __unused[20];
};
struct libaxl_event_circulate_notify {
#define LIBAXL_EVENT_CIRCULATE_NOTIFY 26
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t event;
libaxl_window_t window;
uint32_t __unused1;
uint8_t place; /* LIBAXL_TOP or LIBAXL_BOTTOM */
uint8_t __unused[15];
};
struct libaxl_event_circulate_request {
#define LIBAXL_EVENT_CIRCULATE_REQUEST 27
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t parent;
libaxl_window_t window;
uint32_t __unused1;
uint8_t place; /* LIBAXL_TOP or LIBAXL_BOTTOM */
uint8_t __unused[15];
};
struct libaxl_event_property_notify {
#define LIBAXL_EVENT_PROPERTY_NOTIFY 28
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t window;
libaxl_atom_t atom;
uint8_t state; /* LIBAXL_NEW_VALUE or LIBAXL_DELETED */
uint8_t __unused[15];
};
struct libaxl_event_selection_clear {
#define LIBAXL_EVENT_SELECTION_CLEAR 29
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_timestamp_t time;
libaxl_window_t owner;
libaxl_atom_t selection;
uint8_t __unused[16];
};
struct libaxl_event_selection_request {
#define LIBAXL_EVENT_SELECTION_REQUEST 30
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_timestamp_t time; /* Can be LIBAXL_CURRENT_TIME */
libaxl_window_t owner;
libaxl_window_t requestor;
libaxl_atom_t selection;
libaxl_atom_t target;
libaxl_atom_t property; /* Can be LIBAXL_NONE */
uint8_t __unused[4];
};
struct libaxl_event_selection_notify {
#define LIBAXL_EVENT_SELECTION_NOTIFY 31
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_timestamp_t time; /* Can be LIBAXL_CURRENT_TIME */
libaxl_window_t requestor;
libaxl_atom_t selection;
libaxl_atom_t target;
libaxl_atom_t property; /* Can be LIBAXL_NONE */
uint8_t __unused[8];
};
struct libaxl_event_colormap_notify {
#define LIBAXL_EVENT_COLORMAP_NOTIFY 32
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
libaxl_window_t requestor;
libaxl_colormap_t colormap; /* Can be LIBAXL_NONE */
libaxl_bool_t new;
uint8_t state; /* LIBAXL_UNINSTALLED or LIBAXL_INSTALLED */
uint8_t __unused[18];
};
struct libaxl_event_client_message {
#define LIBAXL_EVENT_CLIENT_MESSAGE 33
uint8_t code;
uint8_t format; /* {8, 16, 32} */
uint16_t sequence_number;
libaxl_window_t window;
libaxl_atom_t type;
uint8_t __unused[20];
};
struct libaxl_event_mapping_notify {
#define LIBAXL_EVENT_MAPPING_NOTIFY 34
uint8_t code;
uint8_t __pad;
uint16_t sequence_number;
uint8_t request; /* LIBAXL_MODIFIER, LIBAXL_KEYBOARD, or LIBAXL_POINTER */
libaxl_keycode_t first_keycode;
uint8_t count;
uint8_t __unused[25];
};
union libaxl_event {
uint8_t code; /* Highest bit marks the event as sent with SendEvent */
/* .keymap_notify does not have a sequence number */
#include "libaxl-events-structs.h"
};