'\" t
.\" Title: xselectextensionevent
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1
.\" Date: 09/15/2021
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
.TH "XSELECTEXTENSIONEVEN" "libmansuffix" "09/15/2021" "\ \&" "\ \&"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
XSelectExtensionEvent, XGetSelectedExtensionEvents \- select extension events, get the list of currently selected extension events
.SH "SYNOPSIS"
.sp
.nf
#include
.fi
.sp
.nf
XSelectExtensionEvent( Display *display,
Window w,
XEventClass *event_list,
int event_count);
.fi
.sp
.nf
XGetSelectedExtensionEvents( Display *display,
Window w,
int *this_client_event_count_return,
XEventClass **this_client_event_list_return,
int *all_clients_event_count_return,
XEventClass **all_clients_event_list_return);
.fi
.sp
.nf
display
Specifies the connection to the X server\&.
.fi
.sp
.nf
w
Specifies the window whose events you are interested in\&.
.fi
.sp
.nf
event_list
Specifies the list of event classes that describe the
events you are interested in\&.
.fi
.sp
.nf
event_count
Specifies the count of event classes in the event list\&.
.fi
.sp
.nf
this_client_event_count_return
Returns the count of event classes selected by this
client\&.
.fi
.sp
.nf
this_client_event_list_return
Returns a pointer to the list of event classes selected
by this client\&.
.fi
.sp
.nf
all_clients_event_count_return
Returns the count of event classes selected by all
clients\&.
.fi
.sp
.nf
all_clients_event_list_return
Returns a pointer to the list of event classes selected
by all clients\&.
.fi
.SH "DESCRIPTION"
.sp
.if n \{\
.RS 4
.\}
.nf
The XSelectExtensionEvent request causes the X server to report
the events associated with the specified list of event classes\&.
Initially, X will not report any of these events\&. Events are
reported relative to a window\&. If a window is not interested in
a device event, it usually propagates to the closest ancestor
that is interested, unless the do_not_propagate mask prohibits
it\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Multiple clients can select for the same events on the same
window with the following restrictions:
* Multiple clients can select events on the same window
because their event masks are disjoint\&. When the X server
generates an event, it reports it to all interested
clients\&.
* Only one client at a time can select a DeviceButtonPress
event with automatic passive grabbing enabled, which is
associated with the event class DeviceButtonPressGrab\&. To
receive DeviceButtonPress events without automatic passive
grabbing, use event class DeviceButtonPress but do not
specify event class DeviceButtonPressGrab\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The server reports the event to all interested clients\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Information contained in the XDevice structure returned by
XOpenDevice is used by macros to obtain the event classes that
clients use in making XSelectExtensionEvent requests\&. Currently
defined macros include DeviceKeyPress, DeviceKeyRelease,
DeviceButtonPress, DeviceButtonRelease, DeviceMotionNotify,
DeviceFocusIn, DeviceFocusOut, ProximityIn, ProximityOut,
DeviceStateNotify, DeviceMappingNotify, ChangeDeviceNotify,
DevicePointerMotionHint, DeviceButton1Motion,
DeviceButton2Motion, DeviceButton3Motion, DeviceButton4Motion,
DeviceButton5Motion, DeviceButtonMotion, DeviceOwnerGrabButton,
DeviceButtonPressGrab, and NoExtensionEvent\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
To obtain the proper event class for a particular device, one
of the above macros is invoked using the XDevice structure for
that device\&. For example,
DeviceKeyPress (*device, type, eventclass);
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
returns the DeviceKeyPress event type and the eventclass for
selecting DeviceKeyPress events from this device\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XSelectExtensionEvent can generate a BadWindow or BadClass
error\&. The XGetSelectedExtensionEvents request reports the
extension events selected by this client and all clients for
the specified window\&. This request returns pointers to two
XEventClass arrays\&. One lists the input extension events
selected by this client from the specified window\&. The other
lists the event classes selected by all clients from the
specified window\&. You should use XFree to free these two
arrays\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
XGetSelectedExtensionEvents can generate a BadWindow error\&.
.fi
.if n \{\
.RE
.\}
.SH "DIAGNOSTICS"
.sp
.if n \{\
.RS 4
.\}
.nf
BadWindow
A value for a Window argument does not name a defined
window\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
BadClass
A value for an XEventClass is invalid\&.
.fi
.if n \{\
.RE
.\}