7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/*
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Copyright © 2009 Red Hat, Inc.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Permission is hereby granted, free of charge, to any person obtaining a
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * copy of this software and associated documentation files (the "Software"),
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * to deal in the Software without restriction, including without limitation
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * and/or sell copies of the Software, and to permit persons to whom the
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Software is furnished to do so, subject to the following conditions:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * The above copyright notice and this permission notice (including the next
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * paragraph) shall be included in all copies or substantial portions of the
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Software.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * DEALINGS IN THE SOFTWARE.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* Conventions for this file:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Names:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * structs: always typedef'd, prefixed with xXI, CamelCase
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * struct members: lower_case_with_underscores
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Exceptions: reqType, ReqType, repType, RepType, sequenceNumber are
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * named as such for historical reasons.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * request opcodes: X_XIRequestName as CamelCase
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * defines: defines used in client applications must go in XI2.h
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * defines used only in protocol handling: XISOMENAME
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Data types: unless there is a historical name for a datatype (e.g.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Window), use stdint types specifying the size of the datatype.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * historical data type names must be defined and undefined at the top and
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * end of the file.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * General:
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * spaces, not tabs.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * structs specific to a request or reply added before the request
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * definition. structs used in more than one request, reply or event
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * appended to the common structs section before the definition of the
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * first request.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * members of structs vertically aligned on column 16 if datatypes permit.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * otherwise alingned on next available 8n column.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Protocol definitions for the XI2 protocol.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * This file should not be included by clients that merely use XI2, but do not
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * need the wire protocol. Such clients should include XI2.h, or the matching
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * header from the library.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#ifndef _XI2PROTO_H_
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define _XI2PROTO_H_
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#include <X11/Xproto.h>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#include <X11/X.h>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#include <X11/extensions/XI2.h>
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* make sure types have right sizes for protocol structures. */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define Window uint32_t
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define Time uint32_t
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define Atom uint32_t
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define Cursor uint32_t
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * XI2 Request opcodes
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIQueryPointer 40
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIWarpPointer 41
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIChangeCursor 42
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIChangeHierarchy 43
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XISetClientPointer 44
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIGetClientPointer 45
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XISelectEvents 46
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIQueryVersion 47
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIQueryDevice 48
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XISetFocus 49
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIGetFocus 50
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIGrabDevice 51
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIUngrabDevice 52
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIAllowEvents 53
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIPassiveGrabDevice 54
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIPassiveUngrabDevice 55
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIListProperties 56
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIChangeProperty 57
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIDeleteProperty 58
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIGetProperty 59
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define X_XIGetSelectedEvents 60
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/** Number of XI requests */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI2REQUESTS (X_XIGetSelectedEvents - X_XIQueryPointer + 1)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/** Number of XI2 events */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define XI2EVENTS (XI_LASTEVENT + 1)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/*************************************************************************************
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * COMMON STRUCTS *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *************************************************************************************/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/** Fixed point 16.16 */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef int32_t FP1616;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/** Fixed point 32.32 */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync int32_t integral;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t frac;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} FP3232;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Struct to describe a device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * For a MasterPointer or a MasterKeyboard, 'attachment' specifies the
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * paired master device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * For a SlaveKeyboard or SlavePointer, 'attachment' specifies the master
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * device this device is attached to.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * For a FloatingSlave, 'attachment' is undefined.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t use; /**< ::XIMasterPointer, ::XIMasterKeyboard,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XISlavePointer, ::XISlaveKeyboard,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XIFloatingSlave */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t attachment; /**< Current attachment or pairing.*/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_classes; /**< Number of classes following this struct. */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t name_len; /**< Length of name in bytes. */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t enabled; /**< TRUE if device is enabled. */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIDeviceInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Default template for a device class.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * A device class is equivalent to a device's capabilities. Multiple classes
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * are supported per device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t type; /**< One of *class */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sourceid; /**< source device for this class */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIAnyInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Denotes button capability on a device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Struct is followed by num_buttons * Atom that names the buttons in the
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * device-native setup (i.e. ignoring button mappings).
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t type; /**< Always ButtonClass */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sourceid; /**< source device for this class */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_buttons; /**< Number of buttons provide */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIButtonInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Denotes key capability on a device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Struct is followed by num_keys * CARD32 that lists the keycodes available
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * on the device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t type; /**< Always KeyClass */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sourceid; /**< source device for this class */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_keycodes; /**< Number of keys provided */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIKeyInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Denotes an valuator capability on a device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * One XIValuatorInfo describes exactly one valuator (axis) on the device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t type; /**< Always ValuatorClass */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sourceid; /**< source device for this class */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t number; /**< Valuator number */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Atom label; /**< Axis label */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP3232 min; /**< Min value */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP3232 max; /**< Max value */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP3232 value; /**< Last published value */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t resolution; /**< Resolutions in units/m */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t mode; /**< ModeRelative or ModeAbsolute */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIValuatorInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Used to select for events on a given window.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Struct is followed by (mask_len * CARD8), with each bit set representing
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * the event mask for the given type. A mask bit represents an event type if
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * (mask == (1 << type)).
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid; /**< Device id to select for */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t mask_len; /**< Length of mask in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIEventMask;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * XKB modifier information.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * The effective modifier is a binary mask of base, latched, and locked
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * modifiers.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t base_mods; /**< Logically pressed modifiers */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t latched_mods; /**< Logically latched modifiers */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t locked_mods; /**< Logically locked modifiers */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t effective_mods; /**< Effective modifiers */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIModifierInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * XKB group information.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * The effective group is the mathematical sum of base, latched, and locked
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * group after group wrapping is taken into account.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t base_group; /**< Logically "pressed" group */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t latched_group; /**< Logically latched group */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t locked_group; /**< Logically locked group */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t effective_group; /**< Effective group */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGroupInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/*************************************************************************************
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * REQUESTS *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *************************************************************************************/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Query the server for the supported X Input extension version.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType; /**< Input extension major code */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIQueryVersion */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t major_version;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t minor_version;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIQueryVersionReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIQueryVersionReq 8
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< ::X_Reply */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always ::X_XIQueryVersion */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t major_version;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t minor_version;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad4;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad5;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIQueryVersionReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIQueryVersionReply 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Query the server for information about a specific device or all input
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * devices.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType; /**< Input extension major code */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIQueryDevice */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIQueryDeviceReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIQueryDeviceReq 8
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< ::X_Reply */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always ::X_XIQueryDevice */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_devices;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad4;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad5;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIQueryDeviceReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIQueryDeviceReply 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Select for events on a given window.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType; /**< Input extension major code */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XISelectEvents */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window win;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_masks;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXISelectEventsReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXISelectEventsReq 12
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Query for selected events on a given window.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType; /**< Input extension major code */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIGetSelectedEvents */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window win;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGetSelectedEventsReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGetSelectedEventsReq 8
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< Input extension major opcode */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always ::X_XIGetSelectedEvents */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_masks; /**< Number of xXIEventMask structs
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync trailing the reply */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad4;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad5;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGetSelectedEventsReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGetSelectedEventsReply 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Query the given device's screen/window coordinates.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType; /**< Input extension major code */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIQueryPointer */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window win;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIQueryPointerReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIQueryPointerReq 12
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< Input extension major opcode */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always ::X_XIQueryPointer */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window root;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window child;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 root_x;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 root_y;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 win_x;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 win_y;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t same_screen;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t buttons_len;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync xXIModifierInfo mods;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync xXIGroupInfo group;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIQueryPointerReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIQueryPointerReply 56
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Warp the given device's pointer to the specified position.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType; /**< Input extension major code */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIWarpPointer */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window src_win;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window dst_win;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 src_x;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 src_y;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t src_width;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t src_height;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 dst_x;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 dst_y;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIWarpPointerReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIWarpPointerReq 36
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Change the given device's sprite to the given cursor.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType; /**< Input extension major code */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIChangeCursor */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window win;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Cursor cursor;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIChangeCursorReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIChangeCursorReq 16
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Modify the device hierarchy.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType; /**< Input extension major code */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIChangeHierarchy */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t num_changes;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIChangeHierarchyReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIChangeHierarchyReq 8
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Generic header for any hierarchy change.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t type;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIAnyHierarchyChangeInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Create a new master device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Name of new master follows struct (4-byte padded)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t type; /**< Always ::XIAddMaster */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< 2 + (namelen + padding)/4 */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t name_len;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t send_core;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t enable;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIAddMasterInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Delete a master device. Will automatically delete the master device paired
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * with the given master device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t type; /**< Always ::XIRemoveMaster */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< 3 */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t return_mode; /**< ::XIAttachToMaster, ::XIFloating */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t return_pointer; /**< Pointer to attach slave ptr devices to */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t return_keyboard; /**< keyboard to attach slave keybd devices to*/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIRemoveMasterInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Attach an SD to a new device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * NewMaster has to be of same type (pointer->pointer, keyboard->keyboard);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t type; /**< Always ::XIAttachSlave */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< 2 */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t new_master; /**< id of new master device */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIAttachSlaveInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Detach an SD from its current master device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t type; /**< Always ::XIDetachSlave */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< 2 */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIDetachSlaveInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Set the window/client's ClientPointer.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XISetClientPointer */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window win;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXISetClientPointerReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXISetClientPointerReq 12
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Query the given window/client's ClientPointer setting.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_GetClientPointer */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window win;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGetClientPointerReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGetClientPointerReq 8
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< Input extension major opcode */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always ::X_GetClientPointer */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync BOOL set; /**< client pointer is set? */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad4;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad5;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGetClientPointerReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGetClientPointerReply 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Set the input focus to the specified window.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XISetFocus */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window focus;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXISetFocusReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXISetFocusReq 16
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Query the current input focus.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIGetDeviceFocus */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGetFocusReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGetFocusReq 8
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< Input extension major opcode */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always ::X_XIGetFocus */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window focus;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad4;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad5;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGetFocusReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGetFocusReply 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Grab the given device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIGrabDevice */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window grab_window;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Cursor cursor;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t grab_mode;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t paired_device_mode;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t owner_events;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t mask_len;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGrabDeviceReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGrabDeviceReq 24
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Return codes from a XIPassiveGrabDevice request.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t modifiers; /**< Modifier state */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t status; /**< Grab status code */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGrabModifierInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< Input extension major opcode */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always ::X_XIGrabDevice */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t status;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad4;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad5;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad6;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGrabDeviceReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGrabDeviceReply 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Ungrab the specified device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIUngrabDevice */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIUngrabDeviceReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIUngrabDeviceReq 12
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Allow or replay events on the specified grabbed device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIAllowEvents */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t mode;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIAllowEventsReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIAllowEventsReq 12
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Passively grab the device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIPassiveGrabDevice */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window grab_window;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Cursor cursor;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t detail;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_modifiers;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t mask_len;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t grab_type;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t grab_mode;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t paired_device_mode;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t owner_events;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIPassiveGrabDeviceReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIPassiveGrabDeviceReq 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< Input extension major opcode */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always ::X_XIPassiveGrabDevice */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_modifiers;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad4;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad5;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad6;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIPassiveGrabDeviceReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIPassiveGrabDeviceReply 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Delete a passive grab for the given device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIPassiveUngrabDevice */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window grab_window;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t detail;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_modifiers;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t grab_type;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIPassiveUngrabDeviceReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIPassiveUngrabDeviceReq 20
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * List all device properties on the specified device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIListProperties */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIListPropertiesReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIListPropertiesReq 8
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< Input extension major opcode */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always ::X_XIListProperties */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_properties;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad4;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad5;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIListPropertiesReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIListPropertiesReply 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Change a property on the specified device.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always ::X_XIChangeProperty */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t mode;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t format;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Atom property;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Atom type;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t num_items;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIChangePropertyReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIChangePropertyReq 20
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Delete the specified property.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always X_XIDeleteProperty */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Atom property;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIDeletePropertyReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIDeletePropertyReq 12
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Query the specified property's values.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reqType;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t ReqType; /**< Always X_XIGetProperty */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#if defined(__cplusplus) || defined(c_plusplus)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t c_delete;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#else
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t delete;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Atom property;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Atom type;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t offset;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t len;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGetPropertyReq;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGetPropertyReq 24
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct {
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t repType; /**< Input extension major opcode */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t RepType; /**< Always X_XIGetProperty */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Atom type;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t bytes_after;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t num_items;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t format;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGetPropertyReply;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define sz_xXIGetPropertyReply 32
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/*************************************************************************************
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * EVENTS *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * *
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync *************************************************************************************/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Generic XI2 event header. All XI2 events use the same header.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t type;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t extension; /**< XI extension offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t evtype;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIGenericDeviceEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Device hierarchy information.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t attachment; /**< ID of master or paired device */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t use; /**< ::XIMasterKeyboard,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XIMasterPointer,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XISlaveKeyboard,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XISlavePointer,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XIFloatingSlave */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync BOOL enabled; /**< TRUE if the device is enabled */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t flags; /**< ::XIMasterAdded, ::XIMasterRemoved,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XISlaveAttached, ::XISlaveDetached,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XISlaveAdded, ::XISlaveRemoved,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XIDeviceEnabled, ::XIDeviceDisabled */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIHierarchyInfo;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * The device hierarchy has been modified. This event includes the device
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * hierarchy after the modification has been applied.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t type; /**< Always GenericEvent */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t extension; /**< XI extension offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t evtype; /**< ::XI_Hierarchy */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t flags; /**< ::XIMasterAdded, ::XIMasterDeleted,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XISlaveAttached, ::XISlaveDetached,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XISlaveAdded, ::XISlaveRemoved,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XIDeviceEnabled, ::XIDeviceDisabled */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_info;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIHierarchyEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * A device has changed capabilities.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t type; /**< Always GenericEvent */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t extension; /**< XI extension offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length; /**< Length in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t evtype; /**< XI_DeviceChanged */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid; /**< Device that has changed */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t num_classes; /**< Number of classes that have changed */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sourceid; /**< Source of the new classes */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t reason; /**< ::XISlaveSwitch, ::XIDeviceChange */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIDeviceChangedEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Default input event for pointer or keyboard input.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t type; /**< Always GenericEvent */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t extension; /**< XI extension offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length; /**< Length in 4 byte uints */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t evtype;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t detail; /**< Keycode or button */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window root;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window event;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window child;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* └──────── 32 byte boundary ────────┘ */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 root_x; /**< Always screen coords, 16.16 fixed point */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 root_y;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 event_x; /**< Always screen coords, 16.16 fixed point */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 event_y;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t buttons_len; /**< Len of button flags in 4 b units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t valuators_len; /**< Len of val. flags in 4 b units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sourceid; /**< The source device */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t flags; /**< ::XIKeyRepeat */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync xXIModifierInfo mods;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync xXIGroupInfo group;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIDeviceEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Sent when an input event is generated. RawEvents include valuator
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * information in both device-specific data (i.e. unaccelerated) and
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * processed data (i.e. accelerated, if applicable).
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t type; /**< Always GenericEvent */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t extension; /**< XI extension offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length; /**< Length in 4 byte uints */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t evtype; /**< ::XI_RawEvent */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t detail;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t valuators_len; /**< Length of trailing valuator
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync mask in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t flags; /**< ::XIKeyRepeat */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIRawEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Note that the layout of root, event, child, root_x, root_y, event_x,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * event_y must be identical to the xXIDeviceEvent.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t type; /**< Always GenericEvent */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t extension; /**< XI extension offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length; /**< Length in 4 byte uints */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t evtype; /**< ::XI_Enter */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sourceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t mode;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t detail;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window root;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window event;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Window child;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* └──────── 32 byte boundary ────────┘ */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 root_x;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 root_y;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 event_x;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync FP1616 event_y;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync BOOL same_screen;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync BOOL focus;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t buttons_len; /**< Length of trailing button mask
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync in 4 byte units */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync xXIModifierInfo mods;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync xXIGroupInfo group;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIEnterEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef xXIEnterEvent xXILeaveEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef xXIEnterEvent xXIFocusInEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef xXIEnterEvent xXIFocusOutEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/**
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Sent when a device property is created, modified or deleted. Does not
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * include property data, the client is required to query the data.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef struct
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync{
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t type; /**< Always GenericEvent */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t extension; /**< XI extension offset */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t sequenceNumber;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t length; /**< Length in 4 byte uints */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t evtype; /**< ::XI_PropertyEvent */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t deviceid;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Time time;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync Atom property;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t what; /**< ::XIPropertyDeleted,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XIPropertyCreated,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ::XIPropertyMotified */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint8_t pad0;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint16_t pad1;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad2;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync uint32_t pad3;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync} xXIPropertyEvent;
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#undef Window
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#undef Time
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#undef Atom
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#undef Cursor
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif /* _XI2PROTO_H_ */