'\" t .\" Title: xselectextensionevent .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 05/04/2023 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" .TH "XSELECTEXTENSIONEVEN" "3" "05/04/2023" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * 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 .\}