x11rb_protocol/protocol/
mod.rs

1// This file contains generated code. Do not edit directly.
2// To regenerate this, run 'make'.
3
4//! Bindings to the X11 protocol.
5//!
6//! Each sub-module of this module corresponds to one X11 extension. It contains all the
7//! definitions from that extension. The core X11 protocol is in [`xproto`](xproto/index.html).
8
9// Clippy does not like some names from the XML.
10#![allow(clippy::upper_case_acronyms)]
11// This is not easy to fix, so ignore it.
12#![allow(clippy::needless_borrow, clippy::needless_lifetimes)]
13// clippy::unnecessary_fallible_conversions is new in 1.75. TODO: Remove once our MSRV is high enough.
14#![allow(unknown_lints)]
15// We use TryFrom in places where From could be used, but fixing this would make the code generator more complicated
16#![allow(clippy::unnecessary_fallible_conversions)]
17
18use alloc::borrow::Cow;
19use alloc::string::String;
20use alloc::vec::Vec;
21use core::convert::TryInto;
22use crate::errors::ParseError;
23use crate::RawFdContainer;
24use crate::x11_utils::{TryParse, TryParseFd, X11Error, ReplyRequest, ReplyFDsRequest};
25use crate::x11_utils::{ExtInfoProvider, ReplyParsingFunction, RequestHeader};
26
27fn parse_reply<'a, R: ReplyRequest>(bytes: &'a [u8], _: &mut Vec<RawFdContainer>) -> Result<(Reply, &'a [u8]), ParseError> {
28    let (reply, remaining) = R::Reply::try_parse(bytes)?;
29    Ok((reply.into(), remaining))
30}
31#[allow(dead_code)]
32fn parse_reply_fds<'a, R: ReplyFDsRequest>(bytes: &'a [u8], fds: &mut Vec<RawFdContainer>) -> Result<(Reply, &'a [u8]), ParseError> {
33    let (reply, remaining) = R::Reply::try_parse_fd(bytes, fds)?;
34    Ok((reply.into(), remaining))
35}
36
37pub mod xproto;
38pub mod bigreq;
39#[cfg(feature = "composite")]
40pub mod composite;
41#[cfg(feature = "damage")]
42pub mod damage;
43#[cfg(feature = "dbe")]
44pub mod dbe;
45#[cfg(feature = "dpms")]
46pub mod dpms;
47#[cfg(feature = "dri2")]
48pub mod dri2;
49#[cfg(feature = "dri3")]
50pub mod dri3;
51pub mod ge;
52#[cfg(feature = "glx")]
53pub mod glx;
54#[cfg(feature = "present")]
55pub mod present;
56#[cfg(feature = "randr")]
57pub mod randr;
58#[cfg(feature = "record")]
59pub mod record;
60#[cfg(feature = "render")]
61pub mod render;
62#[cfg(feature = "res")]
63pub mod res;
64#[cfg(feature = "screensaver")]
65pub mod screensaver;
66#[cfg(feature = "shape")]
67pub mod shape;
68#[cfg(feature = "shm")]
69pub mod shm;
70#[cfg(feature = "sync")]
71pub mod sync;
72pub mod xc_misc;
73#[cfg(feature = "xevie")]
74pub mod xevie;
75#[cfg(feature = "xf86dri")]
76pub mod xf86dri;
77#[cfg(feature = "xf86vidmode")]
78pub mod xf86vidmode;
79#[cfg(feature = "xfixes")]
80pub mod xfixes;
81#[cfg(feature = "xinerama")]
82pub mod xinerama;
83#[cfg(feature = "xinput")]
84pub mod xinput;
85#[cfg(feature = "xkb")]
86pub mod xkb;
87#[cfg(feature = "xprint")]
88pub mod xprint;
89#[cfg(feature = "xselinux")]
90pub mod xselinux;
91#[cfg(feature = "xtest")]
92pub mod xtest;
93#[cfg(feature = "xv")]
94pub mod xv;
95#[cfg(feature = "xvmc")]
96pub mod xvmc;
97
98/// Helper container for translating numeric request information to a string
99#[derive(Debug)]
100enum RequestInfo {
101    /// A core protocol request
102    Xproto(&'static str),
103    /// A known request from a known extension. String is of the form "ExtName::RequestName".
104    KnownExt(&'static str),
105    /// A request which could not be identified. The first entry is the extension name (or none for xproto). Second is opcode.
106    UnknownRequest(Option<&'static str>, u8),
107    /// A request from an extension that could not be identified
108    UnknownExtension(u8, u8),
109}
110
111/// Get information about a request based on its major and minor code.
112///
113/// The major and minor opcode are the first and second byte of a request.
114/// Core requests do not have a minor opcode. For these, the minor opcode is ignored by this function.
115///
116/// This function returns the name of the extension to which the request belongs, if available, and information about the specific request.
117fn get_request_name_internal(
118    ext_info_provider: &dyn ExtInfoProvider,
119    major_opcode: u8,
120    minor_opcode: u8,
121) -> (Option<&str>, RequestInfo) {
122    // From the X11 protocol reference manual:
123    // Major opcodes 128 through 255 are reserved for extensions.
124    if major_opcode < 128 {
125        match major_opcode {
126            xproto::CREATE_WINDOW_REQUEST => (None, RequestInfo::Xproto("CreateWindow")),
127            xproto::CHANGE_WINDOW_ATTRIBUTES_REQUEST => (None, RequestInfo::Xproto("ChangeWindowAttributes")),
128            xproto::GET_WINDOW_ATTRIBUTES_REQUEST => (None, RequestInfo::Xproto("GetWindowAttributes")),
129            xproto::DESTROY_WINDOW_REQUEST => (None, RequestInfo::Xproto("DestroyWindow")),
130            xproto::DESTROY_SUBWINDOWS_REQUEST => (None, RequestInfo::Xproto("DestroySubwindows")),
131            xproto::CHANGE_SAVE_SET_REQUEST => (None, RequestInfo::Xproto("ChangeSaveSet")),
132            xproto::REPARENT_WINDOW_REQUEST => (None, RequestInfo::Xproto("ReparentWindow")),
133            xproto::MAP_WINDOW_REQUEST => (None, RequestInfo::Xproto("MapWindow")),
134            xproto::MAP_SUBWINDOWS_REQUEST => (None, RequestInfo::Xproto("MapSubwindows")),
135            xproto::UNMAP_WINDOW_REQUEST => (None, RequestInfo::Xproto("UnmapWindow")),
136            xproto::UNMAP_SUBWINDOWS_REQUEST => (None, RequestInfo::Xproto("UnmapSubwindows")),
137            xproto::CONFIGURE_WINDOW_REQUEST => (None, RequestInfo::Xproto("ConfigureWindow")),
138            xproto::CIRCULATE_WINDOW_REQUEST => (None, RequestInfo::Xproto("CirculateWindow")),
139            xproto::GET_GEOMETRY_REQUEST => (None, RequestInfo::Xproto("GetGeometry")),
140            xproto::QUERY_TREE_REQUEST => (None, RequestInfo::Xproto("QueryTree")),
141            xproto::INTERN_ATOM_REQUEST => (None, RequestInfo::Xproto("InternAtom")),
142            xproto::GET_ATOM_NAME_REQUEST => (None, RequestInfo::Xproto("GetAtomName")),
143            xproto::CHANGE_PROPERTY_REQUEST => (None, RequestInfo::Xproto("ChangeProperty")),
144            xproto::DELETE_PROPERTY_REQUEST => (None, RequestInfo::Xproto("DeleteProperty")),
145            xproto::GET_PROPERTY_REQUEST => (None, RequestInfo::Xproto("GetProperty")),
146            xproto::LIST_PROPERTIES_REQUEST => (None, RequestInfo::Xproto("ListProperties")),
147            xproto::SET_SELECTION_OWNER_REQUEST => (None, RequestInfo::Xproto("SetSelectionOwner")),
148            xproto::GET_SELECTION_OWNER_REQUEST => (None, RequestInfo::Xproto("GetSelectionOwner")),
149            xproto::CONVERT_SELECTION_REQUEST => (None, RequestInfo::Xproto("ConvertSelection")),
150            xproto::SEND_EVENT_REQUEST => (None, RequestInfo::Xproto("SendEvent")),
151            xproto::GRAB_POINTER_REQUEST => (None, RequestInfo::Xproto("GrabPointer")),
152            xproto::UNGRAB_POINTER_REQUEST => (None, RequestInfo::Xproto("UngrabPointer")),
153            xproto::GRAB_BUTTON_REQUEST => (None, RequestInfo::Xproto("GrabButton")),
154            xproto::UNGRAB_BUTTON_REQUEST => (None, RequestInfo::Xproto("UngrabButton")),
155            xproto::CHANGE_ACTIVE_POINTER_GRAB_REQUEST => (None, RequestInfo::Xproto("ChangeActivePointerGrab")),
156            xproto::GRAB_KEYBOARD_REQUEST => (None, RequestInfo::Xproto("GrabKeyboard")),
157            xproto::UNGRAB_KEYBOARD_REQUEST => (None, RequestInfo::Xproto("UngrabKeyboard")),
158            xproto::GRAB_KEY_REQUEST => (None, RequestInfo::Xproto("GrabKey")),
159            xproto::UNGRAB_KEY_REQUEST => (None, RequestInfo::Xproto("UngrabKey")),
160            xproto::ALLOW_EVENTS_REQUEST => (None, RequestInfo::Xproto("AllowEvents")),
161            xproto::GRAB_SERVER_REQUEST => (None, RequestInfo::Xproto("GrabServer")),
162            xproto::UNGRAB_SERVER_REQUEST => (None, RequestInfo::Xproto("UngrabServer")),
163            xproto::QUERY_POINTER_REQUEST => (None, RequestInfo::Xproto("QueryPointer")),
164            xproto::GET_MOTION_EVENTS_REQUEST => (None, RequestInfo::Xproto("GetMotionEvents")),
165            xproto::TRANSLATE_COORDINATES_REQUEST => (None, RequestInfo::Xproto("TranslateCoordinates")),
166            xproto::WARP_POINTER_REQUEST => (None, RequestInfo::Xproto("WarpPointer")),
167            xproto::SET_INPUT_FOCUS_REQUEST => (None, RequestInfo::Xproto("SetInputFocus")),
168            xproto::GET_INPUT_FOCUS_REQUEST => (None, RequestInfo::Xproto("GetInputFocus")),
169            xproto::QUERY_KEYMAP_REQUEST => (None, RequestInfo::Xproto("QueryKeymap")),
170            xproto::OPEN_FONT_REQUEST => (None, RequestInfo::Xproto("OpenFont")),
171            xproto::CLOSE_FONT_REQUEST => (None, RequestInfo::Xproto("CloseFont")),
172            xproto::QUERY_FONT_REQUEST => (None, RequestInfo::Xproto("QueryFont")),
173            xproto::QUERY_TEXT_EXTENTS_REQUEST => (None, RequestInfo::Xproto("QueryTextExtents")),
174            xproto::LIST_FONTS_REQUEST => (None, RequestInfo::Xproto("ListFonts")),
175            xproto::LIST_FONTS_WITH_INFO_REQUEST => (None, RequestInfo::Xproto("ListFontsWithInfo")),
176            xproto::SET_FONT_PATH_REQUEST => (None, RequestInfo::Xproto("SetFontPath")),
177            xproto::GET_FONT_PATH_REQUEST => (None, RequestInfo::Xproto("GetFontPath")),
178            xproto::CREATE_PIXMAP_REQUEST => (None, RequestInfo::Xproto("CreatePixmap")),
179            xproto::FREE_PIXMAP_REQUEST => (None, RequestInfo::Xproto("FreePixmap")),
180            xproto::CREATE_GC_REQUEST => (None, RequestInfo::Xproto("CreateGC")),
181            xproto::CHANGE_GC_REQUEST => (None, RequestInfo::Xproto("ChangeGC")),
182            xproto::COPY_GC_REQUEST => (None, RequestInfo::Xproto("CopyGC")),
183            xproto::SET_DASHES_REQUEST => (None, RequestInfo::Xproto("SetDashes")),
184            xproto::SET_CLIP_RECTANGLES_REQUEST => (None, RequestInfo::Xproto("SetClipRectangles")),
185            xproto::FREE_GC_REQUEST => (None, RequestInfo::Xproto("FreeGC")),
186            xproto::CLEAR_AREA_REQUEST => (None, RequestInfo::Xproto("ClearArea")),
187            xproto::COPY_AREA_REQUEST => (None, RequestInfo::Xproto("CopyArea")),
188            xproto::COPY_PLANE_REQUEST => (None, RequestInfo::Xproto("CopyPlane")),
189            xproto::POLY_POINT_REQUEST => (None, RequestInfo::Xproto("PolyPoint")),
190            xproto::POLY_LINE_REQUEST => (None, RequestInfo::Xproto("PolyLine")),
191            xproto::POLY_SEGMENT_REQUEST => (None, RequestInfo::Xproto("PolySegment")),
192            xproto::POLY_RECTANGLE_REQUEST => (None, RequestInfo::Xproto("PolyRectangle")),
193            xproto::POLY_ARC_REQUEST => (None, RequestInfo::Xproto("PolyArc")),
194            xproto::FILL_POLY_REQUEST => (None, RequestInfo::Xproto("FillPoly")),
195            xproto::POLY_FILL_RECTANGLE_REQUEST => (None, RequestInfo::Xproto("PolyFillRectangle")),
196            xproto::POLY_FILL_ARC_REQUEST => (None, RequestInfo::Xproto("PolyFillArc")),
197            xproto::PUT_IMAGE_REQUEST => (None, RequestInfo::Xproto("PutImage")),
198            xproto::GET_IMAGE_REQUEST => (None, RequestInfo::Xproto("GetImage")),
199            xproto::POLY_TEXT8_REQUEST => (None, RequestInfo::Xproto("PolyText8")),
200            xproto::POLY_TEXT16_REQUEST => (None, RequestInfo::Xproto("PolyText16")),
201            xproto::IMAGE_TEXT8_REQUEST => (None, RequestInfo::Xproto("ImageText8")),
202            xproto::IMAGE_TEXT16_REQUEST => (None, RequestInfo::Xproto("ImageText16")),
203            xproto::CREATE_COLORMAP_REQUEST => (None, RequestInfo::Xproto("CreateColormap")),
204            xproto::FREE_COLORMAP_REQUEST => (None, RequestInfo::Xproto("FreeColormap")),
205            xproto::COPY_COLORMAP_AND_FREE_REQUEST => (None, RequestInfo::Xproto("CopyColormapAndFree")),
206            xproto::INSTALL_COLORMAP_REQUEST => (None, RequestInfo::Xproto("InstallColormap")),
207            xproto::UNINSTALL_COLORMAP_REQUEST => (None, RequestInfo::Xproto("UninstallColormap")),
208            xproto::LIST_INSTALLED_COLORMAPS_REQUEST => (None, RequestInfo::Xproto("ListInstalledColormaps")),
209            xproto::ALLOC_COLOR_REQUEST => (None, RequestInfo::Xproto("AllocColor")),
210            xproto::ALLOC_NAMED_COLOR_REQUEST => (None, RequestInfo::Xproto("AllocNamedColor")),
211            xproto::ALLOC_COLOR_CELLS_REQUEST => (None, RequestInfo::Xproto("AllocColorCells")),
212            xproto::ALLOC_COLOR_PLANES_REQUEST => (None, RequestInfo::Xproto("AllocColorPlanes")),
213            xproto::FREE_COLORS_REQUEST => (None, RequestInfo::Xproto("FreeColors")),
214            xproto::STORE_COLORS_REQUEST => (None, RequestInfo::Xproto("StoreColors")),
215            xproto::STORE_NAMED_COLOR_REQUEST => (None, RequestInfo::Xproto("StoreNamedColor")),
216            xproto::QUERY_COLORS_REQUEST => (None, RequestInfo::Xproto("QueryColors")),
217            xproto::LOOKUP_COLOR_REQUEST => (None, RequestInfo::Xproto("LookupColor")),
218            xproto::CREATE_CURSOR_REQUEST => (None, RequestInfo::Xproto("CreateCursor")),
219            xproto::CREATE_GLYPH_CURSOR_REQUEST => (None, RequestInfo::Xproto("CreateGlyphCursor")),
220            xproto::FREE_CURSOR_REQUEST => (None, RequestInfo::Xproto("FreeCursor")),
221            xproto::RECOLOR_CURSOR_REQUEST => (None, RequestInfo::Xproto("RecolorCursor")),
222            xproto::QUERY_BEST_SIZE_REQUEST => (None, RequestInfo::Xproto("QueryBestSize")),
223            xproto::QUERY_EXTENSION_REQUEST => (None, RequestInfo::Xproto("QueryExtension")),
224            xproto::LIST_EXTENSIONS_REQUEST => (None, RequestInfo::Xproto("ListExtensions")),
225            xproto::CHANGE_KEYBOARD_MAPPING_REQUEST => (None, RequestInfo::Xproto("ChangeKeyboardMapping")),
226            xproto::GET_KEYBOARD_MAPPING_REQUEST => (None, RequestInfo::Xproto("GetKeyboardMapping")),
227            xproto::CHANGE_KEYBOARD_CONTROL_REQUEST => (None, RequestInfo::Xproto("ChangeKeyboardControl")),
228            xproto::GET_KEYBOARD_CONTROL_REQUEST => (None, RequestInfo::Xproto("GetKeyboardControl")),
229            xproto::BELL_REQUEST => (None, RequestInfo::Xproto("Bell")),
230            xproto::CHANGE_POINTER_CONTROL_REQUEST => (None, RequestInfo::Xproto("ChangePointerControl")),
231            xproto::GET_POINTER_CONTROL_REQUEST => (None, RequestInfo::Xproto("GetPointerControl")),
232            xproto::SET_SCREEN_SAVER_REQUEST => (None, RequestInfo::Xproto("SetScreenSaver")),
233            xproto::GET_SCREEN_SAVER_REQUEST => (None, RequestInfo::Xproto("GetScreenSaver")),
234            xproto::CHANGE_HOSTS_REQUEST => (None, RequestInfo::Xproto("ChangeHosts")),
235            xproto::LIST_HOSTS_REQUEST => (None, RequestInfo::Xproto("ListHosts")),
236            xproto::SET_ACCESS_CONTROL_REQUEST => (None, RequestInfo::Xproto("SetAccessControl")),
237            xproto::SET_CLOSE_DOWN_MODE_REQUEST => (None, RequestInfo::Xproto("SetCloseDownMode")),
238            xproto::KILL_CLIENT_REQUEST => (None, RequestInfo::Xproto("KillClient")),
239            xproto::ROTATE_PROPERTIES_REQUEST => (None, RequestInfo::Xproto("RotateProperties")),
240            xproto::FORCE_SCREEN_SAVER_REQUEST => (None, RequestInfo::Xproto("ForceScreenSaver")),
241            xproto::SET_POINTER_MAPPING_REQUEST => (None, RequestInfo::Xproto("SetPointerMapping")),
242            xproto::GET_POINTER_MAPPING_REQUEST => (None, RequestInfo::Xproto("GetPointerMapping")),
243            xproto::SET_MODIFIER_MAPPING_REQUEST => (None, RequestInfo::Xproto("SetModifierMapping")),
244            xproto::GET_MODIFIER_MAPPING_REQUEST => (None, RequestInfo::Xproto("GetModifierMapping")),
245            xproto::NO_OPERATION_REQUEST => (None, RequestInfo::Xproto("NoOperation")),
246            _ => (None, RequestInfo::UnknownRequest(None, major_opcode)),
247        }
248    } else {
249        // Figure out the extension name
250        let ext_name = match ext_info_provider.get_from_major_opcode(major_opcode) {
251            Some((name, _)) => name,
252            None => return (None, RequestInfo::UnknownExtension(major_opcode, minor_opcode)),
253        };
254        let info = match ext_name {
255            bigreq::X11_EXTENSION_NAME => {
256                match minor_opcode {
257                    bigreq::ENABLE_REQUEST => RequestInfo::KnownExt("BigRequests::Enable"),
258                    _ => RequestInfo::UnknownRequest(Some("BigRequests"), minor_opcode),
259                }
260            }
261            #[cfg(feature = "composite")]
262            composite::X11_EXTENSION_NAME => {
263                match minor_opcode {
264                    composite::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Composite::QueryVersion"),
265                    composite::REDIRECT_WINDOW_REQUEST => RequestInfo::KnownExt("Composite::RedirectWindow"),
266                    composite::REDIRECT_SUBWINDOWS_REQUEST => RequestInfo::KnownExt("Composite::RedirectSubwindows"),
267                    composite::UNREDIRECT_WINDOW_REQUEST => RequestInfo::KnownExt("Composite::UnredirectWindow"),
268                    composite::UNREDIRECT_SUBWINDOWS_REQUEST => RequestInfo::KnownExt("Composite::UnredirectSubwindows"),
269                    composite::CREATE_REGION_FROM_BORDER_CLIP_REQUEST => RequestInfo::KnownExt("Composite::CreateRegionFromBorderClip"),
270                    composite::NAME_WINDOW_PIXMAP_REQUEST => RequestInfo::KnownExt("Composite::NameWindowPixmap"),
271                    composite::GET_OVERLAY_WINDOW_REQUEST => RequestInfo::KnownExt("Composite::GetOverlayWindow"),
272                    composite::RELEASE_OVERLAY_WINDOW_REQUEST => RequestInfo::KnownExt("Composite::ReleaseOverlayWindow"),
273                    _ => RequestInfo::UnknownRequest(Some("Composite"), minor_opcode),
274                }
275            }
276            #[cfg(feature = "damage")]
277            damage::X11_EXTENSION_NAME => {
278                match minor_opcode {
279                    damage::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Damage::QueryVersion"),
280                    damage::CREATE_REQUEST => RequestInfo::KnownExt("Damage::Create"),
281                    damage::DESTROY_REQUEST => RequestInfo::KnownExt("Damage::Destroy"),
282                    damage::SUBTRACT_REQUEST => RequestInfo::KnownExt("Damage::Subtract"),
283                    damage::ADD_REQUEST => RequestInfo::KnownExt("Damage::Add"),
284                    _ => RequestInfo::UnknownRequest(Some("Damage"), minor_opcode),
285                }
286            }
287            #[cfg(feature = "dbe")]
288            dbe::X11_EXTENSION_NAME => {
289                match minor_opcode {
290                    dbe::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Dbe::QueryVersion"),
291                    dbe::ALLOCATE_BACK_BUFFER_REQUEST => RequestInfo::KnownExt("Dbe::AllocateBackBuffer"),
292                    dbe::DEALLOCATE_BACK_BUFFER_REQUEST => RequestInfo::KnownExt("Dbe::DeallocateBackBuffer"),
293                    dbe::SWAP_BUFFERS_REQUEST => RequestInfo::KnownExt("Dbe::SwapBuffers"),
294                    dbe::BEGIN_IDIOM_REQUEST => RequestInfo::KnownExt("Dbe::BeginIdiom"),
295                    dbe::END_IDIOM_REQUEST => RequestInfo::KnownExt("Dbe::EndIdiom"),
296                    dbe::GET_VISUAL_INFO_REQUEST => RequestInfo::KnownExt("Dbe::GetVisualInfo"),
297                    dbe::GET_BACK_BUFFER_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("Dbe::GetBackBufferAttributes"),
298                    _ => RequestInfo::UnknownRequest(Some("Dbe"), minor_opcode),
299                }
300            }
301            #[cfg(feature = "dpms")]
302            dpms::X11_EXTENSION_NAME => {
303                match minor_opcode {
304                    dpms::GET_VERSION_REQUEST => RequestInfo::KnownExt("DPMS::GetVersion"),
305                    dpms::CAPABLE_REQUEST => RequestInfo::KnownExt("DPMS::Capable"),
306                    dpms::GET_TIMEOUTS_REQUEST => RequestInfo::KnownExt("DPMS::GetTimeouts"),
307                    dpms::SET_TIMEOUTS_REQUEST => RequestInfo::KnownExt("DPMS::SetTimeouts"),
308                    dpms::ENABLE_REQUEST => RequestInfo::KnownExt("DPMS::Enable"),
309                    dpms::DISABLE_REQUEST => RequestInfo::KnownExt("DPMS::Disable"),
310                    dpms::FORCE_LEVEL_REQUEST => RequestInfo::KnownExt("DPMS::ForceLevel"),
311                    dpms::INFO_REQUEST => RequestInfo::KnownExt("DPMS::Info"),
312                    dpms::SELECT_INPUT_REQUEST => RequestInfo::KnownExt("DPMS::SelectInput"),
313                    _ => RequestInfo::UnknownRequest(Some("DPMS"), minor_opcode),
314                }
315            }
316            #[cfg(feature = "dri2")]
317            dri2::X11_EXTENSION_NAME => {
318                match minor_opcode {
319                    dri2::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("DRI2::QueryVersion"),
320                    dri2::CONNECT_REQUEST => RequestInfo::KnownExt("DRI2::Connect"),
321                    dri2::AUTHENTICATE_REQUEST => RequestInfo::KnownExt("DRI2::Authenticate"),
322                    dri2::CREATE_DRAWABLE_REQUEST => RequestInfo::KnownExt("DRI2::CreateDrawable"),
323                    dri2::DESTROY_DRAWABLE_REQUEST => RequestInfo::KnownExt("DRI2::DestroyDrawable"),
324                    dri2::GET_BUFFERS_REQUEST => RequestInfo::KnownExt("DRI2::GetBuffers"),
325                    dri2::COPY_REGION_REQUEST => RequestInfo::KnownExt("DRI2::CopyRegion"),
326                    dri2::GET_BUFFERS_WITH_FORMAT_REQUEST => RequestInfo::KnownExt("DRI2::GetBuffersWithFormat"),
327                    dri2::SWAP_BUFFERS_REQUEST => RequestInfo::KnownExt("DRI2::SwapBuffers"),
328                    dri2::GET_MSC_REQUEST => RequestInfo::KnownExt("DRI2::GetMSC"),
329                    dri2::WAIT_MSC_REQUEST => RequestInfo::KnownExt("DRI2::WaitMSC"),
330                    dri2::WAIT_SBC_REQUEST => RequestInfo::KnownExt("DRI2::WaitSBC"),
331                    dri2::SWAP_INTERVAL_REQUEST => RequestInfo::KnownExt("DRI2::SwapInterval"),
332                    dri2::GET_PARAM_REQUEST => RequestInfo::KnownExt("DRI2::GetParam"),
333                    _ => RequestInfo::UnknownRequest(Some("DRI2"), minor_opcode),
334                }
335            }
336            #[cfg(feature = "dri3")]
337            dri3::X11_EXTENSION_NAME => {
338                match minor_opcode {
339                    dri3::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("DRI3::QueryVersion"),
340                    dri3::OPEN_REQUEST => RequestInfo::KnownExt("DRI3::Open"),
341                    dri3::PIXMAP_FROM_BUFFER_REQUEST => RequestInfo::KnownExt("DRI3::PixmapFromBuffer"),
342                    dri3::BUFFER_FROM_PIXMAP_REQUEST => RequestInfo::KnownExt("DRI3::BufferFromPixmap"),
343                    dri3::FENCE_FROM_FD_REQUEST => RequestInfo::KnownExt("DRI3::FenceFromFD"),
344                    dri3::FD_FROM_FENCE_REQUEST => RequestInfo::KnownExt("DRI3::FDFromFence"),
345                    dri3::GET_SUPPORTED_MODIFIERS_REQUEST => RequestInfo::KnownExt("DRI3::GetSupportedModifiers"),
346                    dri3::PIXMAP_FROM_BUFFERS_REQUEST => RequestInfo::KnownExt("DRI3::PixmapFromBuffers"),
347                    dri3::BUFFERS_FROM_PIXMAP_REQUEST => RequestInfo::KnownExt("DRI3::BuffersFromPixmap"),
348                    dri3::SET_DRM_DEVICE_IN_USE_REQUEST => RequestInfo::KnownExt("DRI3::SetDRMDeviceInUse"),
349                    dri3::IMPORT_SYNCOBJ_REQUEST => RequestInfo::KnownExt("DRI3::ImportSyncobj"),
350                    dri3::FREE_SYNCOBJ_REQUEST => RequestInfo::KnownExt("DRI3::FreeSyncobj"),
351                    _ => RequestInfo::UnknownRequest(Some("DRI3"), minor_opcode),
352                }
353            }
354            ge::X11_EXTENSION_NAME => {
355                match minor_opcode {
356                    ge::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("GenericEvent::QueryVersion"),
357                    _ => RequestInfo::UnknownRequest(Some("GenericEvent"), minor_opcode),
358                }
359            }
360            #[cfg(feature = "glx")]
361            glx::X11_EXTENSION_NAME => {
362                match minor_opcode {
363                    glx::RENDER_REQUEST => RequestInfo::KnownExt("Glx::Render"),
364                    glx::RENDER_LARGE_REQUEST => RequestInfo::KnownExt("Glx::RenderLarge"),
365                    glx::CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("Glx::CreateContext"),
366                    glx::DESTROY_CONTEXT_REQUEST => RequestInfo::KnownExt("Glx::DestroyContext"),
367                    glx::MAKE_CURRENT_REQUEST => RequestInfo::KnownExt("Glx::MakeCurrent"),
368                    glx::IS_DIRECT_REQUEST => RequestInfo::KnownExt("Glx::IsDirect"),
369                    glx::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Glx::QueryVersion"),
370                    glx::WAIT_GL_REQUEST => RequestInfo::KnownExt("Glx::WaitGL"),
371                    glx::WAIT_X_REQUEST => RequestInfo::KnownExt("Glx::WaitX"),
372                    glx::COPY_CONTEXT_REQUEST => RequestInfo::KnownExt("Glx::CopyContext"),
373                    glx::SWAP_BUFFERS_REQUEST => RequestInfo::KnownExt("Glx::SwapBuffers"),
374                    glx::USE_X_FONT_REQUEST => RequestInfo::KnownExt("Glx::UseXFont"),
375                    glx::CREATE_GLX_PIXMAP_REQUEST => RequestInfo::KnownExt("Glx::CreateGLXPixmap"),
376                    glx::GET_VISUAL_CONFIGS_REQUEST => RequestInfo::KnownExt("Glx::GetVisualConfigs"),
377                    glx::DESTROY_GLX_PIXMAP_REQUEST => RequestInfo::KnownExt("Glx::DestroyGLXPixmap"),
378                    glx::VENDOR_PRIVATE_REQUEST => RequestInfo::KnownExt("Glx::VendorPrivate"),
379                    glx::VENDOR_PRIVATE_WITH_REPLY_REQUEST => RequestInfo::KnownExt("Glx::VendorPrivateWithReply"),
380                    glx::QUERY_EXTENSIONS_STRING_REQUEST => RequestInfo::KnownExt("Glx::QueryExtensionsString"),
381                    glx::QUERY_SERVER_STRING_REQUEST => RequestInfo::KnownExt("Glx::QueryServerString"),
382                    glx::CLIENT_INFO_REQUEST => RequestInfo::KnownExt("Glx::ClientInfo"),
383                    glx::GET_FB_CONFIGS_REQUEST => RequestInfo::KnownExt("Glx::GetFBConfigs"),
384                    glx::CREATE_PIXMAP_REQUEST => RequestInfo::KnownExt("Glx::CreatePixmap"),
385                    glx::DESTROY_PIXMAP_REQUEST => RequestInfo::KnownExt("Glx::DestroyPixmap"),
386                    glx::CREATE_NEW_CONTEXT_REQUEST => RequestInfo::KnownExt("Glx::CreateNewContext"),
387                    glx::QUERY_CONTEXT_REQUEST => RequestInfo::KnownExt("Glx::QueryContext"),
388                    glx::MAKE_CONTEXT_CURRENT_REQUEST => RequestInfo::KnownExt("Glx::MakeContextCurrent"),
389                    glx::CREATE_PBUFFER_REQUEST => RequestInfo::KnownExt("Glx::CreatePbuffer"),
390                    glx::DESTROY_PBUFFER_REQUEST => RequestInfo::KnownExt("Glx::DestroyPbuffer"),
391                    glx::GET_DRAWABLE_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("Glx::GetDrawableAttributes"),
392                    glx::CHANGE_DRAWABLE_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("Glx::ChangeDrawableAttributes"),
393                    glx::CREATE_WINDOW_REQUEST => RequestInfo::KnownExt("Glx::CreateWindow"),
394                    glx::DELETE_WINDOW_REQUEST => RequestInfo::KnownExt("Glx::DeleteWindow"),
395                    glx::SET_CLIENT_INFO_ARB_REQUEST => RequestInfo::KnownExt("Glx::SetClientInfoARB"),
396                    glx::CREATE_CONTEXT_ATTRIBS_ARB_REQUEST => RequestInfo::KnownExt("Glx::CreateContextAttribsARB"),
397                    glx::SET_CLIENT_INFO2_ARB_REQUEST => RequestInfo::KnownExt("Glx::SetClientInfo2ARB"),
398                    glx::NEW_LIST_REQUEST => RequestInfo::KnownExt("Glx::NewList"),
399                    glx::END_LIST_REQUEST => RequestInfo::KnownExt("Glx::EndList"),
400                    glx::DELETE_LISTS_REQUEST => RequestInfo::KnownExt("Glx::DeleteLists"),
401                    glx::GEN_LISTS_REQUEST => RequestInfo::KnownExt("Glx::GenLists"),
402                    glx::FEEDBACK_BUFFER_REQUEST => RequestInfo::KnownExt("Glx::FeedbackBuffer"),
403                    glx::SELECT_BUFFER_REQUEST => RequestInfo::KnownExt("Glx::SelectBuffer"),
404                    glx::RENDER_MODE_REQUEST => RequestInfo::KnownExt("Glx::RenderMode"),
405                    glx::FINISH_REQUEST => RequestInfo::KnownExt("Glx::Finish"),
406                    glx::PIXEL_STOREF_REQUEST => RequestInfo::KnownExt("Glx::PixelStoref"),
407                    glx::PIXEL_STOREI_REQUEST => RequestInfo::KnownExt("Glx::PixelStorei"),
408                    glx::READ_PIXELS_REQUEST => RequestInfo::KnownExt("Glx::ReadPixels"),
409                    glx::GET_BOOLEANV_REQUEST => RequestInfo::KnownExt("Glx::GetBooleanv"),
410                    glx::GET_CLIP_PLANE_REQUEST => RequestInfo::KnownExt("Glx::GetClipPlane"),
411                    glx::GET_DOUBLEV_REQUEST => RequestInfo::KnownExt("Glx::GetDoublev"),
412                    glx::GET_ERROR_REQUEST => RequestInfo::KnownExt("Glx::GetError"),
413                    glx::GET_FLOATV_REQUEST => RequestInfo::KnownExt("Glx::GetFloatv"),
414                    glx::GET_INTEGERV_REQUEST => RequestInfo::KnownExt("Glx::GetIntegerv"),
415                    glx::GET_LIGHTFV_REQUEST => RequestInfo::KnownExt("Glx::GetLightfv"),
416                    glx::GET_LIGHTIV_REQUEST => RequestInfo::KnownExt("Glx::GetLightiv"),
417                    glx::GET_MAPDV_REQUEST => RequestInfo::KnownExt("Glx::GetMapdv"),
418                    glx::GET_MAPFV_REQUEST => RequestInfo::KnownExt("Glx::GetMapfv"),
419                    glx::GET_MAPIV_REQUEST => RequestInfo::KnownExt("Glx::GetMapiv"),
420                    glx::GET_MATERIALFV_REQUEST => RequestInfo::KnownExt("Glx::GetMaterialfv"),
421                    glx::GET_MATERIALIV_REQUEST => RequestInfo::KnownExt("Glx::GetMaterialiv"),
422                    glx::GET_PIXEL_MAPFV_REQUEST => RequestInfo::KnownExt("Glx::GetPixelMapfv"),
423                    glx::GET_PIXEL_MAPUIV_REQUEST => RequestInfo::KnownExt("Glx::GetPixelMapuiv"),
424                    glx::GET_PIXEL_MAPUSV_REQUEST => RequestInfo::KnownExt("Glx::GetPixelMapusv"),
425                    glx::GET_POLYGON_STIPPLE_REQUEST => RequestInfo::KnownExt("Glx::GetPolygonStipple"),
426                    glx::GET_STRING_REQUEST => RequestInfo::KnownExt("Glx::GetString"),
427                    glx::GET_TEX_ENVFV_REQUEST => RequestInfo::KnownExt("Glx::GetTexEnvfv"),
428                    glx::GET_TEX_ENVIV_REQUEST => RequestInfo::KnownExt("Glx::GetTexEnviv"),
429                    glx::GET_TEX_GENDV_REQUEST => RequestInfo::KnownExt("Glx::GetTexGendv"),
430                    glx::GET_TEX_GENFV_REQUEST => RequestInfo::KnownExt("Glx::GetTexGenfv"),
431                    glx::GET_TEX_GENIV_REQUEST => RequestInfo::KnownExt("Glx::GetTexGeniv"),
432                    glx::GET_TEX_IMAGE_REQUEST => RequestInfo::KnownExt("Glx::GetTexImage"),
433                    glx::GET_TEX_PARAMETERFV_REQUEST => RequestInfo::KnownExt("Glx::GetTexParameterfv"),
434                    glx::GET_TEX_PARAMETERIV_REQUEST => RequestInfo::KnownExt("Glx::GetTexParameteriv"),
435                    glx::GET_TEX_LEVEL_PARAMETERFV_REQUEST => RequestInfo::KnownExt("Glx::GetTexLevelParameterfv"),
436                    glx::GET_TEX_LEVEL_PARAMETERIV_REQUEST => RequestInfo::KnownExt("Glx::GetTexLevelParameteriv"),
437                    glx::IS_ENABLED_REQUEST => RequestInfo::KnownExt("Glx::IsEnabled"),
438                    glx::IS_LIST_REQUEST => RequestInfo::KnownExt("Glx::IsList"),
439                    glx::FLUSH_REQUEST => RequestInfo::KnownExt("Glx::Flush"),
440                    glx::ARE_TEXTURES_RESIDENT_REQUEST => RequestInfo::KnownExt("Glx::AreTexturesResident"),
441                    glx::DELETE_TEXTURES_REQUEST => RequestInfo::KnownExt("Glx::DeleteTextures"),
442                    glx::GEN_TEXTURES_REQUEST => RequestInfo::KnownExt("Glx::GenTextures"),
443                    glx::IS_TEXTURE_REQUEST => RequestInfo::KnownExt("Glx::IsTexture"),
444                    glx::GET_COLOR_TABLE_REQUEST => RequestInfo::KnownExt("Glx::GetColorTable"),
445                    glx::GET_COLOR_TABLE_PARAMETERFV_REQUEST => RequestInfo::KnownExt("Glx::GetColorTableParameterfv"),
446                    glx::GET_COLOR_TABLE_PARAMETERIV_REQUEST => RequestInfo::KnownExt("Glx::GetColorTableParameteriv"),
447                    glx::GET_CONVOLUTION_FILTER_REQUEST => RequestInfo::KnownExt("Glx::GetConvolutionFilter"),
448                    glx::GET_CONVOLUTION_PARAMETERFV_REQUEST => RequestInfo::KnownExt("Glx::GetConvolutionParameterfv"),
449                    glx::GET_CONVOLUTION_PARAMETERIV_REQUEST => RequestInfo::KnownExt("Glx::GetConvolutionParameteriv"),
450                    glx::GET_SEPARABLE_FILTER_REQUEST => RequestInfo::KnownExt("Glx::GetSeparableFilter"),
451                    glx::GET_HISTOGRAM_REQUEST => RequestInfo::KnownExt("Glx::GetHistogram"),
452                    glx::GET_HISTOGRAM_PARAMETERFV_REQUEST => RequestInfo::KnownExt("Glx::GetHistogramParameterfv"),
453                    glx::GET_HISTOGRAM_PARAMETERIV_REQUEST => RequestInfo::KnownExt("Glx::GetHistogramParameteriv"),
454                    glx::GET_MINMAX_REQUEST => RequestInfo::KnownExt("Glx::GetMinmax"),
455                    glx::GET_MINMAX_PARAMETERFV_REQUEST => RequestInfo::KnownExt("Glx::GetMinmaxParameterfv"),
456                    glx::GET_MINMAX_PARAMETERIV_REQUEST => RequestInfo::KnownExt("Glx::GetMinmaxParameteriv"),
457                    glx::GET_COMPRESSED_TEX_IMAGE_ARB_REQUEST => RequestInfo::KnownExt("Glx::GetCompressedTexImageARB"),
458                    glx::DELETE_QUERIES_ARB_REQUEST => RequestInfo::KnownExt("Glx::DeleteQueriesARB"),
459                    glx::GEN_QUERIES_ARB_REQUEST => RequestInfo::KnownExt("Glx::GenQueriesARB"),
460                    glx::IS_QUERY_ARB_REQUEST => RequestInfo::KnownExt("Glx::IsQueryARB"),
461                    glx::GET_QUERYIV_ARB_REQUEST => RequestInfo::KnownExt("Glx::GetQueryivARB"),
462                    glx::GET_QUERY_OBJECTIV_ARB_REQUEST => RequestInfo::KnownExt("Glx::GetQueryObjectivARB"),
463                    glx::GET_QUERY_OBJECTUIV_ARB_REQUEST => RequestInfo::KnownExt("Glx::GetQueryObjectuivARB"),
464                    _ => RequestInfo::UnknownRequest(Some("Glx"), minor_opcode),
465                }
466            }
467            #[cfg(feature = "present")]
468            present::X11_EXTENSION_NAME => {
469                match minor_opcode {
470                    present::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Present::QueryVersion"),
471                    present::PIXMAP_REQUEST => RequestInfo::KnownExt("Present::Pixmap"),
472                    present::NOTIFY_MSC_REQUEST => RequestInfo::KnownExt("Present::NotifyMSC"),
473                    present::SELECT_INPUT_REQUEST => RequestInfo::KnownExt("Present::SelectInput"),
474                    present::QUERY_CAPABILITIES_REQUEST => RequestInfo::KnownExt("Present::QueryCapabilities"),
475                    present::PIXMAP_SYNCED_REQUEST => RequestInfo::KnownExt("Present::PixmapSynced"),
476                    _ => RequestInfo::UnknownRequest(Some("Present"), minor_opcode),
477                }
478            }
479            #[cfg(feature = "randr")]
480            randr::X11_EXTENSION_NAME => {
481                match minor_opcode {
482                    randr::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("RandR::QueryVersion"),
483                    randr::SET_SCREEN_CONFIG_REQUEST => RequestInfo::KnownExt("RandR::SetScreenConfig"),
484                    randr::SELECT_INPUT_REQUEST => RequestInfo::KnownExt("RandR::SelectInput"),
485                    randr::GET_SCREEN_INFO_REQUEST => RequestInfo::KnownExt("RandR::GetScreenInfo"),
486                    randr::GET_SCREEN_SIZE_RANGE_REQUEST => RequestInfo::KnownExt("RandR::GetScreenSizeRange"),
487                    randr::SET_SCREEN_SIZE_REQUEST => RequestInfo::KnownExt("RandR::SetScreenSize"),
488                    randr::GET_SCREEN_RESOURCES_REQUEST => RequestInfo::KnownExt("RandR::GetScreenResources"),
489                    randr::GET_OUTPUT_INFO_REQUEST => RequestInfo::KnownExt("RandR::GetOutputInfo"),
490                    randr::LIST_OUTPUT_PROPERTIES_REQUEST => RequestInfo::KnownExt("RandR::ListOutputProperties"),
491                    randr::QUERY_OUTPUT_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::QueryOutputProperty"),
492                    randr::CONFIGURE_OUTPUT_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::ConfigureOutputProperty"),
493                    randr::CHANGE_OUTPUT_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::ChangeOutputProperty"),
494                    randr::DELETE_OUTPUT_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::DeleteOutputProperty"),
495                    randr::GET_OUTPUT_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::GetOutputProperty"),
496                    randr::CREATE_MODE_REQUEST => RequestInfo::KnownExt("RandR::CreateMode"),
497                    randr::DESTROY_MODE_REQUEST => RequestInfo::KnownExt("RandR::DestroyMode"),
498                    randr::ADD_OUTPUT_MODE_REQUEST => RequestInfo::KnownExt("RandR::AddOutputMode"),
499                    randr::DELETE_OUTPUT_MODE_REQUEST => RequestInfo::KnownExt("RandR::DeleteOutputMode"),
500                    randr::GET_CRTC_INFO_REQUEST => RequestInfo::KnownExt("RandR::GetCrtcInfo"),
501                    randr::SET_CRTC_CONFIG_REQUEST => RequestInfo::KnownExt("RandR::SetCrtcConfig"),
502                    randr::GET_CRTC_GAMMA_SIZE_REQUEST => RequestInfo::KnownExt("RandR::GetCrtcGammaSize"),
503                    randr::GET_CRTC_GAMMA_REQUEST => RequestInfo::KnownExt("RandR::GetCrtcGamma"),
504                    randr::SET_CRTC_GAMMA_REQUEST => RequestInfo::KnownExt("RandR::SetCrtcGamma"),
505                    randr::GET_SCREEN_RESOURCES_CURRENT_REQUEST => RequestInfo::KnownExt("RandR::GetScreenResourcesCurrent"),
506                    randr::SET_CRTC_TRANSFORM_REQUEST => RequestInfo::KnownExt("RandR::SetCrtcTransform"),
507                    randr::GET_CRTC_TRANSFORM_REQUEST => RequestInfo::KnownExt("RandR::GetCrtcTransform"),
508                    randr::GET_PANNING_REQUEST => RequestInfo::KnownExt("RandR::GetPanning"),
509                    randr::SET_PANNING_REQUEST => RequestInfo::KnownExt("RandR::SetPanning"),
510                    randr::SET_OUTPUT_PRIMARY_REQUEST => RequestInfo::KnownExt("RandR::SetOutputPrimary"),
511                    randr::GET_OUTPUT_PRIMARY_REQUEST => RequestInfo::KnownExt("RandR::GetOutputPrimary"),
512                    randr::GET_PROVIDERS_REQUEST => RequestInfo::KnownExt("RandR::GetProviders"),
513                    randr::GET_PROVIDER_INFO_REQUEST => RequestInfo::KnownExt("RandR::GetProviderInfo"),
514                    randr::SET_PROVIDER_OFFLOAD_SINK_REQUEST => RequestInfo::KnownExt("RandR::SetProviderOffloadSink"),
515                    randr::SET_PROVIDER_OUTPUT_SOURCE_REQUEST => RequestInfo::KnownExt("RandR::SetProviderOutputSource"),
516                    randr::LIST_PROVIDER_PROPERTIES_REQUEST => RequestInfo::KnownExt("RandR::ListProviderProperties"),
517                    randr::QUERY_PROVIDER_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::QueryProviderProperty"),
518                    randr::CONFIGURE_PROVIDER_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::ConfigureProviderProperty"),
519                    randr::CHANGE_PROVIDER_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::ChangeProviderProperty"),
520                    randr::DELETE_PROVIDER_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::DeleteProviderProperty"),
521                    randr::GET_PROVIDER_PROPERTY_REQUEST => RequestInfo::KnownExt("RandR::GetProviderProperty"),
522                    randr::GET_MONITORS_REQUEST => RequestInfo::KnownExt("RandR::GetMonitors"),
523                    randr::SET_MONITOR_REQUEST => RequestInfo::KnownExt("RandR::SetMonitor"),
524                    randr::DELETE_MONITOR_REQUEST => RequestInfo::KnownExt("RandR::DeleteMonitor"),
525                    randr::CREATE_LEASE_REQUEST => RequestInfo::KnownExt("RandR::CreateLease"),
526                    randr::FREE_LEASE_REQUEST => RequestInfo::KnownExt("RandR::FreeLease"),
527                    _ => RequestInfo::UnknownRequest(Some("RandR"), minor_opcode),
528                }
529            }
530            #[cfg(feature = "record")]
531            record::X11_EXTENSION_NAME => {
532                match minor_opcode {
533                    record::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Record::QueryVersion"),
534                    record::CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("Record::CreateContext"),
535                    record::REGISTER_CLIENTS_REQUEST => RequestInfo::KnownExt("Record::RegisterClients"),
536                    record::UNREGISTER_CLIENTS_REQUEST => RequestInfo::KnownExt("Record::UnregisterClients"),
537                    record::GET_CONTEXT_REQUEST => RequestInfo::KnownExt("Record::GetContext"),
538                    record::ENABLE_CONTEXT_REQUEST => RequestInfo::KnownExt("Record::EnableContext"),
539                    record::DISABLE_CONTEXT_REQUEST => RequestInfo::KnownExt("Record::DisableContext"),
540                    record::FREE_CONTEXT_REQUEST => RequestInfo::KnownExt("Record::FreeContext"),
541                    _ => RequestInfo::UnknownRequest(Some("Record"), minor_opcode),
542                }
543            }
544            #[cfg(feature = "render")]
545            render::X11_EXTENSION_NAME => {
546                match minor_opcode {
547                    render::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Render::QueryVersion"),
548                    render::QUERY_PICT_FORMATS_REQUEST => RequestInfo::KnownExt("Render::QueryPictFormats"),
549                    render::QUERY_PICT_INDEX_VALUES_REQUEST => RequestInfo::KnownExt("Render::QueryPictIndexValues"),
550                    render::CREATE_PICTURE_REQUEST => RequestInfo::KnownExt("Render::CreatePicture"),
551                    render::CHANGE_PICTURE_REQUEST => RequestInfo::KnownExt("Render::ChangePicture"),
552                    render::SET_PICTURE_CLIP_RECTANGLES_REQUEST => RequestInfo::KnownExt("Render::SetPictureClipRectangles"),
553                    render::FREE_PICTURE_REQUEST => RequestInfo::KnownExt("Render::FreePicture"),
554                    render::COMPOSITE_REQUEST => RequestInfo::KnownExt("Render::Composite"),
555                    render::TRAPEZOIDS_REQUEST => RequestInfo::KnownExt("Render::Trapezoids"),
556                    render::TRIANGLES_REQUEST => RequestInfo::KnownExt("Render::Triangles"),
557                    render::TRI_STRIP_REQUEST => RequestInfo::KnownExt("Render::TriStrip"),
558                    render::TRI_FAN_REQUEST => RequestInfo::KnownExt("Render::TriFan"),
559                    render::CREATE_GLYPH_SET_REQUEST => RequestInfo::KnownExt("Render::CreateGlyphSet"),
560                    render::REFERENCE_GLYPH_SET_REQUEST => RequestInfo::KnownExt("Render::ReferenceGlyphSet"),
561                    render::FREE_GLYPH_SET_REQUEST => RequestInfo::KnownExt("Render::FreeGlyphSet"),
562                    render::ADD_GLYPHS_REQUEST => RequestInfo::KnownExt("Render::AddGlyphs"),
563                    render::FREE_GLYPHS_REQUEST => RequestInfo::KnownExt("Render::FreeGlyphs"),
564                    render::COMPOSITE_GLYPHS8_REQUEST => RequestInfo::KnownExt("Render::CompositeGlyphs8"),
565                    render::COMPOSITE_GLYPHS16_REQUEST => RequestInfo::KnownExt("Render::CompositeGlyphs16"),
566                    render::COMPOSITE_GLYPHS32_REQUEST => RequestInfo::KnownExt("Render::CompositeGlyphs32"),
567                    render::FILL_RECTANGLES_REQUEST => RequestInfo::KnownExt("Render::FillRectangles"),
568                    render::CREATE_CURSOR_REQUEST => RequestInfo::KnownExt("Render::CreateCursor"),
569                    render::SET_PICTURE_TRANSFORM_REQUEST => RequestInfo::KnownExt("Render::SetPictureTransform"),
570                    render::QUERY_FILTERS_REQUEST => RequestInfo::KnownExt("Render::QueryFilters"),
571                    render::SET_PICTURE_FILTER_REQUEST => RequestInfo::KnownExt("Render::SetPictureFilter"),
572                    render::CREATE_ANIM_CURSOR_REQUEST => RequestInfo::KnownExt("Render::CreateAnimCursor"),
573                    render::ADD_TRAPS_REQUEST => RequestInfo::KnownExt("Render::AddTraps"),
574                    render::CREATE_SOLID_FILL_REQUEST => RequestInfo::KnownExt("Render::CreateSolidFill"),
575                    render::CREATE_LINEAR_GRADIENT_REQUEST => RequestInfo::KnownExt("Render::CreateLinearGradient"),
576                    render::CREATE_RADIAL_GRADIENT_REQUEST => RequestInfo::KnownExt("Render::CreateRadialGradient"),
577                    render::CREATE_CONICAL_GRADIENT_REQUEST => RequestInfo::KnownExt("Render::CreateConicalGradient"),
578                    _ => RequestInfo::UnknownRequest(Some("Render"), minor_opcode),
579                }
580            }
581            #[cfg(feature = "res")]
582            res::X11_EXTENSION_NAME => {
583                match minor_opcode {
584                    res::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Res::QueryVersion"),
585                    res::QUERY_CLIENTS_REQUEST => RequestInfo::KnownExt("Res::QueryClients"),
586                    res::QUERY_CLIENT_RESOURCES_REQUEST => RequestInfo::KnownExt("Res::QueryClientResources"),
587                    res::QUERY_CLIENT_PIXMAP_BYTES_REQUEST => RequestInfo::KnownExt("Res::QueryClientPixmapBytes"),
588                    res::QUERY_CLIENT_IDS_REQUEST => RequestInfo::KnownExt("Res::QueryClientIds"),
589                    res::QUERY_RESOURCE_BYTES_REQUEST => RequestInfo::KnownExt("Res::QueryResourceBytes"),
590                    _ => RequestInfo::UnknownRequest(Some("Res"), minor_opcode),
591                }
592            }
593            #[cfg(feature = "screensaver")]
594            screensaver::X11_EXTENSION_NAME => {
595                match minor_opcode {
596                    screensaver::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("ScreenSaver::QueryVersion"),
597                    screensaver::QUERY_INFO_REQUEST => RequestInfo::KnownExt("ScreenSaver::QueryInfo"),
598                    screensaver::SELECT_INPUT_REQUEST => RequestInfo::KnownExt("ScreenSaver::SelectInput"),
599                    screensaver::SET_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("ScreenSaver::SetAttributes"),
600                    screensaver::UNSET_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("ScreenSaver::UnsetAttributes"),
601                    screensaver::SUSPEND_REQUEST => RequestInfo::KnownExt("ScreenSaver::Suspend"),
602                    _ => RequestInfo::UnknownRequest(Some("ScreenSaver"), minor_opcode),
603                }
604            }
605            #[cfg(feature = "shape")]
606            shape::X11_EXTENSION_NAME => {
607                match minor_opcode {
608                    shape::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Shape::QueryVersion"),
609                    shape::RECTANGLES_REQUEST => RequestInfo::KnownExt("Shape::Rectangles"),
610                    shape::MASK_REQUEST => RequestInfo::KnownExt("Shape::Mask"),
611                    shape::COMBINE_REQUEST => RequestInfo::KnownExt("Shape::Combine"),
612                    shape::OFFSET_REQUEST => RequestInfo::KnownExt("Shape::Offset"),
613                    shape::QUERY_EXTENTS_REQUEST => RequestInfo::KnownExt("Shape::QueryExtents"),
614                    shape::SELECT_INPUT_REQUEST => RequestInfo::KnownExt("Shape::SelectInput"),
615                    shape::INPUT_SELECTED_REQUEST => RequestInfo::KnownExt("Shape::InputSelected"),
616                    shape::GET_RECTANGLES_REQUEST => RequestInfo::KnownExt("Shape::GetRectangles"),
617                    _ => RequestInfo::UnknownRequest(Some("Shape"), minor_opcode),
618                }
619            }
620            #[cfg(feature = "shm")]
621            shm::X11_EXTENSION_NAME => {
622                match minor_opcode {
623                    shm::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Shm::QueryVersion"),
624                    shm::ATTACH_REQUEST => RequestInfo::KnownExt("Shm::Attach"),
625                    shm::DETACH_REQUEST => RequestInfo::KnownExt("Shm::Detach"),
626                    shm::PUT_IMAGE_REQUEST => RequestInfo::KnownExt("Shm::PutImage"),
627                    shm::GET_IMAGE_REQUEST => RequestInfo::KnownExt("Shm::GetImage"),
628                    shm::CREATE_PIXMAP_REQUEST => RequestInfo::KnownExt("Shm::CreatePixmap"),
629                    shm::ATTACH_FD_REQUEST => RequestInfo::KnownExt("Shm::AttachFd"),
630                    shm::CREATE_SEGMENT_REQUEST => RequestInfo::KnownExt("Shm::CreateSegment"),
631                    _ => RequestInfo::UnknownRequest(Some("Shm"), minor_opcode),
632                }
633            }
634            #[cfg(feature = "sync")]
635            sync::X11_EXTENSION_NAME => {
636                match minor_opcode {
637                    sync::INITIALIZE_REQUEST => RequestInfo::KnownExt("Sync::Initialize"),
638                    sync::LIST_SYSTEM_COUNTERS_REQUEST => RequestInfo::KnownExt("Sync::ListSystemCounters"),
639                    sync::CREATE_COUNTER_REQUEST => RequestInfo::KnownExt("Sync::CreateCounter"),
640                    sync::DESTROY_COUNTER_REQUEST => RequestInfo::KnownExt("Sync::DestroyCounter"),
641                    sync::QUERY_COUNTER_REQUEST => RequestInfo::KnownExt("Sync::QueryCounter"),
642                    sync::AWAIT_REQUEST => RequestInfo::KnownExt("Sync::Await"),
643                    sync::CHANGE_COUNTER_REQUEST => RequestInfo::KnownExt("Sync::ChangeCounter"),
644                    sync::SET_COUNTER_REQUEST => RequestInfo::KnownExt("Sync::SetCounter"),
645                    sync::CREATE_ALARM_REQUEST => RequestInfo::KnownExt("Sync::CreateAlarm"),
646                    sync::CHANGE_ALARM_REQUEST => RequestInfo::KnownExt("Sync::ChangeAlarm"),
647                    sync::DESTROY_ALARM_REQUEST => RequestInfo::KnownExt("Sync::DestroyAlarm"),
648                    sync::QUERY_ALARM_REQUEST => RequestInfo::KnownExt("Sync::QueryAlarm"),
649                    sync::SET_PRIORITY_REQUEST => RequestInfo::KnownExt("Sync::SetPriority"),
650                    sync::GET_PRIORITY_REQUEST => RequestInfo::KnownExt("Sync::GetPriority"),
651                    sync::CREATE_FENCE_REQUEST => RequestInfo::KnownExt("Sync::CreateFence"),
652                    sync::TRIGGER_FENCE_REQUEST => RequestInfo::KnownExt("Sync::TriggerFence"),
653                    sync::RESET_FENCE_REQUEST => RequestInfo::KnownExt("Sync::ResetFence"),
654                    sync::DESTROY_FENCE_REQUEST => RequestInfo::KnownExt("Sync::DestroyFence"),
655                    sync::QUERY_FENCE_REQUEST => RequestInfo::KnownExt("Sync::QueryFence"),
656                    sync::AWAIT_FENCE_REQUEST => RequestInfo::KnownExt("Sync::AwaitFence"),
657                    _ => RequestInfo::UnknownRequest(Some("Sync"), minor_opcode),
658                }
659            }
660            xc_misc::X11_EXTENSION_NAME => {
661                match minor_opcode {
662                    xc_misc::GET_VERSION_REQUEST => RequestInfo::KnownExt("XCMisc::GetVersion"),
663                    xc_misc::GET_XID_RANGE_REQUEST => RequestInfo::KnownExt("XCMisc::GetXIDRange"),
664                    xc_misc::GET_XID_LIST_REQUEST => RequestInfo::KnownExt("XCMisc::GetXIDList"),
665                    _ => RequestInfo::UnknownRequest(Some("XCMisc"), minor_opcode),
666                }
667            }
668            #[cfg(feature = "xevie")]
669            xevie::X11_EXTENSION_NAME => {
670                match minor_opcode {
671                    xevie::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Xevie::QueryVersion"),
672                    xevie::START_REQUEST => RequestInfo::KnownExt("Xevie::Start"),
673                    xevie::END_REQUEST => RequestInfo::KnownExt("Xevie::End"),
674                    xevie::SEND_REQUEST => RequestInfo::KnownExt("Xevie::Send"),
675                    xevie::SELECT_INPUT_REQUEST => RequestInfo::KnownExt("Xevie::SelectInput"),
676                    _ => RequestInfo::UnknownRequest(Some("Xevie"), minor_opcode),
677                }
678            }
679            #[cfg(feature = "xf86dri")]
680            xf86dri::X11_EXTENSION_NAME => {
681                match minor_opcode {
682                    xf86dri::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("XF86Dri::QueryVersion"),
683                    xf86dri::QUERY_DIRECT_RENDERING_CAPABLE_REQUEST => RequestInfo::KnownExt("XF86Dri::QueryDirectRenderingCapable"),
684                    xf86dri::OPEN_CONNECTION_REQUEST => RequestInfo::KnownExt("XF86Dri::OpenConnection"),
685                    xf86dri::CLOSE_CONNECTION_REQUEST => RequestInfo::KnownExt("XF86Dri::CloseConnection"),
686                    xf86dri::GET_CLIENT_DRIVER_NAME_REQUEST => RequestInfo::KnownExt("XF86Dri::GetClientDriverName"),
687                    xf86dri::CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("XF86Dri::CreateContext"),
688                    xf86dri::DESTROY_CONTEXT_REQUEST => RequestInfo::KnownExt("XF86Dri::DestroyContext"),
689                    xf86dri::CREATE_DRAWABLE_REQUEST => RequestInfo::KnownExt("XF86Dri::CreateDrawable"),
690                    xf86dri::DESTROY_DRAWABLE_REQUEST => RequestInfo::KnownExt("XF86Dri::DestroyDrawable"),
691                    xf86dri::GET_DRAWABLE_INFO_REQUEST => RequestInfo::KnownExt("XF86Dri::GetDrawableInfo"),
692                    xf86dri::GET_DEVICE_INFO_REQUEST => RequestInfo::KnownExt("XF86Dri::GetDeviceInfo"),
693                    xf86dri::AUTH_CONNECTION_REQUEST => RequestInfo::KnownExt("XF86Dri::AuthConnection"),
694                    _ => RequestInfo::UnknownRequest(Some("XF86Dri"), minor_opcode),
695                }
696            }
697            #[cfg(feature = "xf86vidmode")]
698            xf86vidmode::X11_EXTENSION_NAME => {
699                match minor_opcode {
700                    xf86vidmode::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("XF86VidMode::QueryVersion"),
701                    xf86vidmode::GET_MODE_LINE_REQUEST => RequestInfo::KnownExt("XF86VidMode::GetModeLine"),
702                    xf86vidmode::MOD_MODE_LINE_REQUEST => RequestInfo::KnownExt("XF86VidMode::ModModeLine"),
703                    xf86vidmode::SWITCH_MODE_REQUEST => RequestInfo::KnownExt("XF86VidMode::SwitchMode"),
704                    xf86vidmode::GET_MONITOR_REQUEST => RequestInfo::KnownExt("XF86VidMode::GetMonitor"),
705                    xf86vidmode::LOCK_MODE_SWITCH_REQUEST => RequestInfo::KnownExt("XF86VidMode::LockModeSwitch"),
706                    xf86vidmode::GET_ALL_MODE_LINES_REQUEST => RequestInfo::KnownExt("XF86VidMode::GetAllModeLines"),
707                    xf86vidmode::ADD_MODE_LINE_REQUEST => RequestInfo::KnownExt("XF86VidMode::AddModeLine"),
708                    xf86vidmode::DELETE_MODE_LINE_REQUEST => RequestInfo::KnownExt("XF86VidMode::DeleteModeLine"),
709                    xf86vidmode::VALIDATE_MODE_LINE_REQUEST => RequestInfo::KnownExt("XF86VidMode::ValidateModeLine"),
710                    xf86vidmode::SWITCH_TO_MODE_REQUEST => RequestInfo::KnownExt("XF86VidMode::SwitchToMode"),
711                    xf86vidmode::GET_VIEW_PORT_REQUEST => RequestInfo::KnownExt("XF86VidMode::GetViewPort"),
712                    xf86vidmode::SET_VIEW_PORT_REQUEST => RequestInfo::KnownExt("XF86VidMode::SetViewPort"),
713                    xf86vidmode::GET_DOT_CLOCKS_REQUEST => RequestInfo::KnownExt("XF86VidMode::GetDotClocks"),
714                    xf86vidmode::SET_CLIENT_VERSION_REQUEST => RequestInfo::KnownExt("XF86VidMode::SetClientVersion"),
715                    xf86vidmode::SET_GAMMA_REQUEST => RequestInfo::KnownExt("XF86VidMode::SetGamma"),
716                    xf86vidmode::GET_GAMMA_REQUEST => RequestInfo::KnownExt("XF86VidMode::GetGamma"),
717                    xf86vidmode::GET_GAMMA_RAMP_REQUEST => RequestInfo::KnownExt("XF86VidMode::GetGammaRamp"),
718                    xf86vidmode::SET_GAMMA_RAMP_REQUEST => RequestInfo::KnownExt("XF86VidMode::SetGammaRamp"),
719                    xf86vidmode::GET_GAMMA_RAMP_SIZE_REQUEST => RequestInfo::KnownExt("XF86VidMode::GetGammaRampSize"),
720                    xf86vidmode::GET_PERMISSIONS_REQUEST => RequestInfo::KnownExt("XF86VidMode::GetPermissions"),
721                    _ => RequestInfo::UnknownRequest(Some("XF86VidMode"), minor_opcode),
722                }
723            }
724            #[cfg(feature = "xfixes")]
725            xfixes::X11_EXTENSION_NAME => {
726                match minor_opcode {
727                    xfixes::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("XFixes::QueryVersion"),
728                    xfixes::CHANGE_SAVE_SET_REQUEST => RequestInfo::KnownExt("XFixes::ChangeSaveSet"),
729                    xfixes::SELECT_SELECTION_INPUT_REQUEST => RequestInfo::KnownExt("XFixes::SelectSelectionInput"),
730                    xfixes::SELECT_CURSOR_INPUT_REQUEST => RequestInfo::KnownExt("XFixes::SelectCursorInput"),
731                    xfixes::GET_CURSOR_IMAGE_REQUEST => RequestInfo::KnownExt("XFixes::GetCursorImage"),
732                    xfixes::CREATE_REGION_REQUEST => RequestInfo::KnownExt("XFixes::CreateRegion"),
733                    xfixes::CREATE_REGION_FROM_BITMAP_REQUEST => RequestInfo::KnownExt("XFixes::CreateRegionFromBitmap"),
734                    xfixes::CREATE_REGION_FROM_WINDOW_REQUEST => RequestInfo::KnownExt("XFixes::CreateRegionFromWindow"),
735                    xfixes::CREATE_REGION_FROM_GC_REQUEST => RequestInfo::KnownExt("XFixes::CreateRegionFromGC"),
736                    xfixes::CREATE_REGION_FROM_PICTURE_REQUEST => RequestInfo::KnownExt("XFixes::CreateRegionFromPicture"),
737                    xfixes::DESTROY_REGION_REQUEST => RequestInfo::KnownExt("XFixes::DestroyRegion"),
738                    xfixes::SET_REGION_REQUEST => RequestInfo::KnownExt("XFixes::SetRegion"),
739                    xfixes::COPY_REGION_REQUEST => RequestInfo::KnownExt("XFixes::CopyRegion"),
740                    xfixes::UNION_REGION_REQUEST => RequestInfo::KnownExt("XFixes::UnionRegion"),
741                    xfixes::INTERSECT_REGION_REQUEST => RequestInfo::KnownExt("XFixes::IntersectRegion"),
742                    xfixes::SUBTRACT_REGION_REQUEST => RequestInfo::KnownExt("XFixes::SubtractRegion"),
743                    xfixes::INVERT_REGION_REQUEST => RequestInfo::KnownExt("XFixes::InvertRegion"),
744                    xfixes::TRANSLATE_REGION_REQUEST => RequestInfo::KnownExt("XFixes::TranslateRegion"),
745                    xfixes::REGION_EXTENTS_REQUEST => RequestInfo::KnownExt("XFixes::RegionExtents"),
746                    xfixes::FETCH_REGION_REQUEST => RequestInfo::KnownExt("XFixes::FetchRegion"),
747                    xfixes::SET_GC_CLIP_REGION_REQUEST => RequestInfo::KnownExt("XFixes::SetGCClipRegion"),
748                    xfixes::SET_WINDOW_SHAPE_REGION_REQUEST => RequestInfo::KnownExt("XFixes::SetWindowShapeRegion"),
749                    xfixes::SET_PICTURE_CLIP_REGION_REQUEST => RequestInfo::KnownExt("XFixes::SetPictureClipRegion"),
750                    xfixes::SET_CURSOR_NAME_REQUEST => RequestInfo::KnownExt("XFixes::SetCursorName"),
751                    xfixes::GET_CURSOR_NAME_REQUEST => RequestInfo::KnownExt("XFixes::GetCursorName"),
752                    xfixes::GET_CURSOR_IMAGE_AND_NAME_REQUEST => RequestInfo::KnownExt("XFixes::GetCursorImageAndName"),
753                    xfixes::CHANGE_CURSOR_REQUEST => RequestInfo::KnownExt("XFixes::ChangeCursor"),
754                    xfixes::CHANGE_CURSOR_BY_NAME_REQUEST => RequestInfo::KnownExt("XFixes::ChangeCursorByName"),
755                    xfixes::EXPAND_REGION_REQUEST => RequestInfo::KnownExt("XFixes::ExpandRegion"),
756                    xfixes::HIDE_CURSOR_REQUEST => RequestInfo::KnownExt("XFixes::HideCursor"),
757                    xfixes::SHOW_CURSOR_REQUEST => RequestInfo::KnownExt("XFixes::ShowCursor"),
758                    xfixes::CREATE_POINTER_BARRIER_REQUEST => RequestInfo::KnownExt("XFixes::CreatePointerBarrier"),
759                    xfixes::DELETE_POINTER_BARRIER_REQUEST => RequestInfo::KnownExt("XFixes::DeletePointerBarrier"),
760                    xfixes::SET_CLIENT_DISCONNECT_MODE_REQUEST => RequestInfo::KnownExt("XFixes::SetClientDisconnectMode"),
761                    xfixes::GET_CLIENT_DISCONNECT_MODE_REQUEST => RequestInfo::KnownExt("XFixes::GetClientDisconnectMode"),
762                    _ => RequestInfo::UnknownRequest(Some("XFixes"), minor_opcode),
763                }
764            }
765            #[cfg(feature = "xinerama")]
766            xinerama::X11_EXTENSION_NAME => {
767                match minor_opcode {
768                    xinerama::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Xinerama::QueryVersion"),
769                    xinerama::GET_STATE_REQUEST => RequestInfo::KnownExt("Xinerama::GetState"),
770                    xinerama::GET_SCREEN_COUNT_REQUEST => RequestInfo::KnownExt("Xinerama::GetScreenCount"),
771                    xinerama::GET_SCREEN_SIZE_REQUEST => RequestInfo::KnownExt("Xinerama::GetScreenSize"),
772                    xinerama::IS_ACTIVE_REQUEST => RequestInfo::KnownExt("Xinerama::IsActive"),
773                    xinerama::QUERY_SCREENS_REQUEST => RequestInfo::KnownExt("Xinerama::QueryScreens"),
774                    _ => RequestInfo::UnknownRequest(Some("Xinerama"), minor_opcode),
775                }
776            }
777            #[cfg(feature = "xinput")]
778            xinput::X11_EXTENSION_NAME => {
779                match minor_opcode {
780                    xinput::GET_EXTENSION_VERSION_REQUEST => RequestInfo::KnownExt("Input::GetExtensionVersion"),
781                    xinput::LIST_INPUT_DEVICES_REQUEST => RequestInfo::KnownExt("Input::ListInputDevices"),
782                    xinput::OPEN_DEVICE_REQUEST => RequestInfo::KnownExt("Input::OpenDevice"),
783                    xinput::CLOSE_DEVICE_REQUEST => RequestInfo::KnownExt("Input::CloseDevice"),
784                    xinput::SET_DEVICE_MODE_REQUEST => RequestInfo::KnownExt("Input::SetDeviceMode"),
785                    xinput::SELECT_EXTENSION_EVENT_REQUEST => RequestInfo::KnownExt("Input::SelectExtensionEvent"),
786                    xinput::GET_SELECTED_EXTENSION_EVENTS_REQUEST => RequestInfo::KnownExt("Input::GetSelectedExtensionEvents"),
787                    xinput::CHANGE_DEVICE_DONT_PROPAGATE_LIST_REQUEST => RequestInfo::KnownExt("Input::ChangeDeviceDontPropagateList"),
788                    xinput::GET_DEVICE_DONT_PROPAGATE_LIST_REQUEST => RequestInfo::KnownExt("Input::GetDeviceDontPropagateList"),
789                    xinput::GET_DEVICE_MOTION_EVENTS_REQUEST => RequestInfo::KnownExt("Input::GetDeviceMotionEvents"),
790                    xinput::CHANGE_KEYBOARD_DEVICE_REQUEST => RequestInfo::KnownExt("Input::ChangeKeyboardDevice"),
791                    xinput::CHANGE_POINTER_DEVICE_REQUEST => RequestInfo::KnownExt("Input::ChangePointerDevice"),
792                    xinput::GRAB_DEVICE_REQUEST => RequestInfo::KnownExt("Input::GrabDevice"),
793                    xinput::UNGRAB_DEVICE_REQUEST => RequestInfo::KnownExt("Input::UngrabDevice"),
794                    xinput::GRAB_DEVICE_KEY_REQUEST => RequestInfo::KnownExt("Input::GrabDeviceKey"),
795                    xinput::UNGRAB_DEVICE_KEY_REQUEST => RequestInfo::KnownExt("Input::UngrabDeviceKey"),
796                    xinput::GRAB_DEVICE_BUTTON_REQUEST => RequestInfo::KnownExt("Input::GrabDeviceButton"),
797                    xinput::UNGRAB_DEVICE_BUTTON_REQUEST => RequestInfo::KnownExt("Input::UngrabDeviceButton"),
798                    xinput::ALLOW_DEVICE_EVENTS_REQUEST => RequestInfo::KnownExt("Input::AllowDeviceEvents"),
799                    xinput::GET_DEVICE_FOCUS_REQUEST => RequestInfo::KnownExt("Input::GetDeviceFocus"),
800                    xinput::SET_DEVICE_FOCUS_REQUEST => RequestInfo::KnownExt("Input::SetDeviceFocus"),
801                    xinput::GET_FEEDBACK_CONTROL_REQUEST => RequestInfo::KnownExt("Input::GetFeedbackControl"),
802                    xinput::CHANGE_FEEDBACK_CONTROL_REQUEST => RequestInfo::KnownExt("Input::ChangeFeedbackControl"),
803                    xinput::GET_DEVICE_KEY_MAPPING_REQUEST => RequestInfo::KnownExt("Input::GetDeviceKeyMapping"),
804                    xinput::CHANGE_DEVICE_KEY_MAPPING_REQUEST => RequestInfo::KnownExt("Input::ChangeDeviceKeyMapping"),
805                    xinput::GET_DEVICE_MODIFIER_MAPPING_REQUEST => RequestInfo::KnownExt("Input::GetDeviceModifierMapping"),
806                    xinput::SET_DEVICE_MODIFIER_MAPPING_REQUEST => RequestInfo::KnownExt("Input::SetDeviceModifierMapping"),
807                    xinput::GET_DEVICE_BUTTON_MAPPING_REQUEST => RequestInfo::KnownExt("Input::GetDeviceButtonMapping"),
808                    xinput::SET_DEVICE_BUTTON_MAPPING_REQUEST => RequestInfo::KnownExt("Input::SetDeviceButtonMapping"),
809                    xinput::QUERY_DEVICE_STATE_REQUEST => RequestInfo::KnownExt("Input::QueryDeviceState"),
810                    xinput::DEVICE_BELL_REQUEST => RequestInfo::KnownExt("Input::DeviceBell"),
811                    xinput::SET_DEVICE_VALUATORS_REQUEST => RequestInfo::KnownExt("Input::SetDeviceValuators"),
812                    xinput::GET_DEVICE_CONTROL_REQUEST => RequestInfo::KnownExt("Input::GetDeviceControl"),
813                    xinput::CHANGE_DEVICE_CONTROL_REQUEST => RequestInfo::KnownExt("Input::ChangeDeviceControl"),
814                    xinput::LIST_DEVICE_PROPERTIES_REQUEST => RequestInfo::KnownExt("Input::ListDeviceProperties"),
815                    xinput::CHANGE_DEVICE_PROPERTY_REQUEST => RequestInfo::KnownExt("Input::ChangeDeviceProperty"),
816                    xinput::DELETE_DEVICE_PROPERTY_REQUEST => RequestInfo::KnownExt("Input::DeleteDeviceProperty"),
817                    xinput::GET_DEVICE_PROPERTY_REQUEST => RequestInfo::KnownExt("Input::GetDeviceProperty"),
818                    xinput::XI_QUERY_POINTER_REQUEST => RequestInfo::KnownExt("Input::XIQueryPointer"),
819                    xinput::XI_WARP_POINTER_REQUEST => RequestInfo::KnownExt("Input::XIWarpPointer"),
820                    xinput::XI_CHANGE_CURSOR_REQUEST => RequestInfo::KnownExt("Input::XIChangeCursor"),
821                    xinput::XI_CHANGE_HIERARCHY_REQUEST => RequestInfo::KnownExt("Input::XIChangeHierarchy"),
822                    xinput::XI_SET_CLIENT_POINTER_REQUEST => RequestInfo::KnownExt("Input::XISetClientPointer"),
823                    xinput::XI_GET_CLIENT_POINTER_REQUEST => RequestInfo::KnownExt("Input::XIGetClientPointer"),
824                    xinput::XI_SELECT_EVENTS_REQUEST => RequestInfo::KnownExt("Input::XISelectEvents"),
825                    xinput::XI_QUERY_VERSION_REQUEST => RequestInfo::KnownExt("Input::XIQueryVersion"),
826                    xinput::XI_QUERY_DEVICE_REQUEST => RequestInfo::KnownExt("Input::XIQueryDevice"),
827                    xinput::XI_SET_FOCUS_REQUEST => RequestInfo::KnownExt("Input::XISetFocus"),
828                    xinput::XI_GET_FOCUS_REQUEST => RequestInfo::KnownExt("Input::XIGetFocus"),
829                    xinput::XI_GRAB_DEVICE_REQUEST => RequestInfo::KnownExt("Input::XIGrabDevice"),
830                    xinput::XI_UNGRAB_DEVICE_REQUEST => RequestInfo::KnownExt("Input::XIUngrabDevice"),
831                    xinput::XI_ALLOW_EVENTS_REQUEST => RequestInfo::KnownExt("Input::XIAllowEvents"),
832                    xinput::XI_PASSIVE_GRAB_DEVICE_REQUEST => RequestInfo::KnownExt("Input::XIPassiveGrabDevice"),
833                    xinput::XI_PASSIVE_UNGRAB_DEVICE_REQUEST => RequestInfo::KnownExt("Input::XIPassiveUngrabDevice"),
834                    xinput::XI_LIST_PROPERTIES_REQUEST => RequestInfo::KnownExt("Input::XIListProperties"),
835                    xinput::XI_CHANGE_PROPERTY_REQUEST => RequestInfo::KnownExt("Input::XIChangeProperty"),
836                    xinput::XI_DELETE_PROPERTY_REQUEST => RequestInfo::KnownExt("Input::XIDeleteProperty"),
837                    xinput::XI_GET_PROPERTY_REQUEST => RequestInfo::KnownExt("Input::XIGetProperty"),
838                    xinput::XI_GET_SELECTED_EVENTS_REQUEST => RequestInfo::KnownExt("Input::XIGetSelectedEvents"),
839                    xinput::XI_BARRIER_RELEASE_POINTER_REQUEST => RequestInfo::KnownExt("Input::XIBarrierReleasePointer"),
840                    xinput::SEND_EXTENSION_EVENT_REQUEST => RequestInfo::KnownExt("Input::SendExtensionEvent"),
841                    _ => RequestInfo::UnknownRequest(Some("Input"), minor_opcode),
842                }
843            }
844            #[cfg(feature = "xkb")]
845            xkb::X11_EXTENSION_NAME => {
846                match minor_opcode {
847                    xkb::USE_EXTENSION_REQUEST => RequestInfo::KnownExt("xkb::UseExtension"),
848                    xkb::SELECT_EVENTS_REQUEST => RequestInfo::KnownExt("xkb::SelectEvents"),
849                    xkb::BELL_REQUEST => RequestInfo::KnownExt("xkb::Bell"),
850                    xkb::GET_STATE_REQUEST => RequestInfo::KnownExt("xkb::GetState"),
851                    xkb::LATCH_LOCK_STATE_REQUEST => RequestInfo::KnownExt("xkb::LatchLockState"),
852                    xkb::GET_CONTROLS_REQUEST => RequestInfo::KnownExt("xkb::GetControls"),
853                    xkb::SET_CONTROLS_REQUEST => RequestInfo::KnownExt("xkb::SetControls"),
854                    xkb::GET_MAP_REQUEST => RequestInfo::KnownExt("xkb::GetMap"),
855                    xkb::SET_MAP_REQUEST => RequestInfo::KnownExt("xkb::SetMap"),
856                    xkb::GET_COMPAT_MAP_REQUEST => RequestInfo::KnownExt("xkb::GetCompatMap"),
857                    xkb::SET_COMPAT_MAP_REQUEST => RequestInfo::KnownExt("xkb::SetCompatMap"),
858                    xkb::GET_INDICATOR_STATE_REQUEST => RequestInfo::KnownExt("xkb::GetIndicatorState"),
859                    xkb::GET_INDICATOR_MAP_REQUEST => RequestInfo::KnownExt("xkb::GetIndicatorMap"),
860                    xkb::SET_INDICATOR_MAP_REQUEST => RequestInfo::KnownExt("xkb::SetIndicatorMap"),
861                    xkb::GET_NAMED_INDICATOR_REQUEST => RequestInfo::KnownExt("xkb::GetNamedIndicator"),
862                    xkb::SET_NAMED_INDICATOR_REQUEST => RequestInfo::KnownExt("xkb::SetNamedIndicator"),
863                    xkb::GET_NAMES_REQUEST => RequestInfo::KnownExt("xkb::GetNames"),
864                    xkb::SET_NAMES_REQUEST => RequestInfo::KnownExt("xkb::SetNames"),
865                    xkb::PER_CLIENT_FLAGS_REQUEST => RequestInfo::KnownExt("xkb::PerClientFlags"),
866                    xkb::LIST_COMPONENTS_REQUEST => RequestInfo::KnownExt("xkb::ListComponents"),
867                    xkb::GET_KBD_BY_NAME_REQUEST => RequestInfo::KnownExt("xkb::GetKbdByName"),
868                    xkb::GET_DEVICE_INFO_REQUEST => RequestInfo::KnownExt("xkb::GetDeviceInfo"),
869                    xkb::SET_DEVICE_INFO_REQUEST => RequestInfo::KnownExt("xkb::SetDeviceInfo"),
870                    xkb::SET_DEBUGGING_FLAGS_REQUEST => RequestInfo::KnownExt("xkb::SetDebuggingFlags"),
871                    _ => RequestInfo::UnknownRequest(Some("xkb"), minor_opcode),
872                }
873            }
874            #[cfg(feature = "xprint")]
875            xprint::X11_EXTENSION_NAME => {
876                match minor_opcode {
877                    xprint::PRINT_QUERY_VERSION_REQUEST => RequestInfo::KnownExt("XPrint::PrintQueryVersion"),
878                    xprint::PRINT_GET_PRINTER_LIST_REQUEST => RequestInfo::KnownExt("XPrint::PrintGetPrinterList"),
879                    xprint::PRINT_REHASH_PRINTER_LIST_REQUEST => RequestInfo::KnownExt("XPrint::PrintRehashPrinterList"),
880                    xprint::CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("XPrint::CreateContext"),
881                    xprint::PRINT_SET_CONTEXT_REQUEST => RequestInfo::KnownExt("XPrint::PrintSetContext"),
882                    xprint::PRINT_GET_CONTEXT_REQUEST => RequestInfo::KnownExt("XPrint::PrintGetContext"),
883                    xprint::PRINT_DESTROY_CONTEXT_REQUEST => RequestInfo::KnownExt("XPrint::PrintDestroyContext"),
884                    xprint::PRINT_GET_SCREEN_OF_CONTEXT_REQUEST => RequestInfo::KnownExt("XPrint::PrintGetScreenOfContext"),
885                    xprint::PRINT_START_JOB_REQUEST => RequestInfo::KnownExt("XPrint::PrintStartJob"),
886                    xprint::PRINT_END_JOB_REQUEST => RequestInfo::KnownExt("XPrint::PrintEndJob"),
887                    xprint::PRINT_START_DOC_REQUEST => RequestInfo::KnownExt("XPrint::PrintStartDoc"),
888                    xprint::PRINT_END_DOC_REQUEST => RequestInfo::KnownExt("XPrint::PrintEndDoc"),
889                    xprint::PRINT_PUT_DOCUMENT_DATA_REQUEST => RequestInfo::KnownExt("XPrint::PrintPutDocumentData"),
890                    xprint::PRINT_GET_DOCUMENT_DATA_REQUEST => RequestInfo::KnownExt("XPrint::PrintGetDocumentData"),
891                    xprint::PRINT_START_PAGE_REQUEST => RequestInfo::KnownExt("XPrint::PrintStartPage"),
892                    xprint::PRINT_END_PAGE_REQUEST => RequestInfo::KnownExt("XPrint::PrintEndPage"),
893                    xprint::PRINT_SELECT_INPUT_REQUEST => RequestInfo::KnownExt("XPrint::PrintSelectInput"),
894                    xprint::PRINT_INPUT_SELECTED_REQUEST => RequestInfo::KnownExt("XPrint::PrintInputSelected"),
895                    xprint::PRINT_GET_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("XPrint::PrintGetAttributes"),
896                    xprint::PRINT_GET_ONE_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("XPrint::PrintGetOneAttributes"),
897                    xprint::PRINT_SET_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("XPrint::PrintSetAttributes"),
898                    xprint::PRINT_GET_PAGE_DIMENSIONS_REQUEST => RequestInfo::KnownExt("XPrint::PrintGetPageDimensions"),
899                    xprint::PRINT_QUERY_SCREENS_REQUEST => RequestInfo::KnownExt("XPrint::PrintQueryScreens"),
900                    xprint::PRINT_SET_IMAGE_RESOLUTION_REQUEST => RequestInfo::KnownExt("XPrint::PrintSetImageResolution"),
901                    xprint::PRINT_GET_IMAGE_RESOLUTION_REQUEST => RequestInfo::KnownExt("XPrint::PrintGetImageResolution"),
902                    _ => RequestInfo::UnknownRequest(Some("XPrint"), minor_opcode),
903                }
904            }
905            #[cfg(feature = "xselinux")]
906            xselinux::X11_EXTENSION_NAME => {
907                match minor_opcode {
908                    xselinux::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("SELinux::QueryVersion"),
909                    xselinux::SET_DEVICE_CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::SetDeviceCreateContext"),
910                    xselinux::GET_DEVICE_CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetDeviceCreateContext"),
911                    xselinux::SET_DEVICE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::SetDeviceContext"),
912                    xselinux::GET_DEVICE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetDeviceContext"),
913                    xselinux::SET_WINDOW_CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::SetWindowCreateContext"),
914                    xselinux::GET_WINDOW_CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetWindowCreateContext"),
915                    xselinux::GET_WINDOW_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetWindowContext"),
916                    xselinux::SET_PROPERTY_CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::SetPropertyCreateContext"),
917                    xselinux::GET_PROPERTY_CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetPropertyCreateContext"),
918                    xselinux::SET_PROPERTY_USE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::SetPropertyUseContext"),
919                    xselinux::GET_PROPERTY_USE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetPropertyUseContext"),
920                    xselinux::GET_PROPERTY_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetPropertyContext"),
921                    xselinux::GET_PROPERTY_DATA_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetPropertyDataContext"),
922                    xselinux::LIST_PROPERTIES_REQUEST => RequestInfo::KnownExt("SELinux::ListProperties"),
923                    xselinux::SET_SELECTION_CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::SetSelectionCreateContext"),
924                    xselinux::GET_SELECTION_CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetSelectionCreateContext"),
925                    xselinux::SET_SELECTION_USE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::SetSelectionUseContext"),
926                    xselinux::GET_SELECTION_USE_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetSelectionUseContext"),
927                    xselinux::GET_SELECTION_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetSelectionContext"),
928                    xselinux::GET_SELECTION_DATA_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetSelectionDataContext"),
929                    xselinux::LIST_SELECTIONS_REQUEST => RequestInfo::KnownExt("SELinux::ListSelections"),
930                    xselinux::GET_CLIENT_CONTEXT_REQUEST => RequestInfo::KnownExt("SELinux::GetClientContext"),
931                    _ => RequestInfo::UnknownRequest(Some("SELinux"), minor_opcode),
932                }
933            }
934            #[cfg(feature = "xtest")]
935            xtest::X11_EXTENSION_NAME => {
936                match minor_opcode {
937                    xtest::GET_VERSION_REQUEST => RequestInfo::KnownExt("Test::GetVersion"),
938                    xtest::COMPARE_CURSOR_REQUEST => RequestInfo::KnownExt("Test::CompareCursor"),
939                    xtest::FAKE_INPUT_REQUEST => RequestInfo::KnownExt("Test::FakeInput"),
940                    xtest::GRAB_CONTROL_REQUEST => RequestInfo::KnownExt("Test::GrabControl"),
941                    _ => RequestInfo::UnknownRequest(Some("Test"), minor_opcode),
942                }
943            }
944            #[cfg(feature = "xv")]
945            xv::X11_EXTENSION_NAME => {
946                match minor_opcode {
947                    xv::QUERY_EXTENSION_REQUEST => RequestInfo::KnownExt("Xv::QueryExtension"),
948                    xv::QUERY_ADAPTORS_REQUEST => RequestInfo::KnownExt("Xv::QueryAdaptors"),
949                    xv::QUERY_ENCODINGS_REQUEST => RequestInfo::KnownExt("Xv::QueryEncodings"),
950                    xv::GRAB_PORT_REQUEST => RequestInfo::KnownExt("Xv::GrabPort"),
951                    xv::UNGRAB_PORT_REQUEST => RequestInfo::KnownExt("Xv::UngrabPort"),
952                    xv::PUT_VIDEO_REQUEST => RequestInfo::KnownExt("Xv::PutVideo"),
953                    xv::PUT_STILL_REQUEST => RequestInfo::KnownExt("Xv::PutStill"),
954                    xv::GET_VIDEO_REQUEST => RequestInfo::KnownExt("Xv::GetVideo"),
955                    xv::GET_STILL_REQUEST => RequestInfo::KnownExt("Xv::GetStill"),
956                    xv::STOP_VIDEO_REQUEST => RequestInfo::KnownExt("Xv::StopVideo"),
957                    xv::SELECT_VIDEO_NOTIFY_REQUEST => RequestInfo::KnownExt("Xv::SelectVideoNotify"),
958                    xv::SELECT_PORT_NOTIFY_REQUEST => RequestInfo::KnownExt("Xv::SelectPortNotify"),
959                    xv::QUERY_BEST_SIZE_REQUEST => RequestInfo::KnownExt("Xv::QueryBestSize"),
960                    xv::SET_PORT_ATTRIBUTE_REQUEST => RequestInfo::KnownExt("Xv::SetPortAttribute"),
961                    xv::GET_PORT_ATTRIBUTE_REQUEST => RequestInfo::KnownExt("Xv::GetPortAttribute"),
962                    xv::QUERY_PORT_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("Xv::QueryPortAttributes"),
963                    xv::LIST_IMAGE_FORMATS_REQUEST => RequestInfo::KnownExt("Xv::ListImageFormats"),
964                    xv::QUERY_IMAGE_ATTRIBUTES_REQUEST => RequestInfo::KnownExt("Xv::QueryImageAttributes"),
965                    xv::PUT_IMAGE_REQUEST => RequestInfo::KnownExt("Xv::PutImage"),
966                    xv::SHM_PUT_IMAGE_REQUEST => RequestInfo::KnownExt("Xv::ShmPutImage"),
967                    _ => RequestInfo::UnknownRequest(Some("Xv"), minor_opcode),
968                }
969            }
970            #[cfg(feature = "xvmc")]
971            xvmc::X11_EXTENSION_NAME => {
972                match minor_opcode {
973                    xvmc::QUERY_VERSION_REQUEST => RequestInfo::KnownExt("XvMC::QueryVersion"),
974                    xvmc::LIST_SURFACE_TYPES_REQUEST => RequestInfo::KnownExt("XvMC::ListSurfaceTypes"),
975                    xvmc::CREATE_CONTEXT_REQUEST => RequestInfo::KnownExt("XvMC::CreateContext"),
976                    xvmc::DESTROY_CONTEXT_REQUEST => RequestInfo::KnownExt("XvMC::DestroyContext"),
977                    xvmc::CREATE_SURFACE_REQUEST => RequestInfo::KnownExt("XvMC::CreateSurface"),
978                    xvmc::DESTROY_SURFACE_REQUEST => RequestInfo::KnownExt("XvMC::DestroySurface"),
979                    xvmc::CREATE_SUBPICTURE_REQUEST => RequestInfo::KnownExt("XvMC::CreateSubpicture"),
980                    xvmc::DESTROY_SUBPICTURE_REQUEST => RequestInfo::KnownExt("XvMC::DestroySubpicture"),
981                    xvmc::LIST_SUBPICTURE_TYPES_REQUEST => RequestInfo::KnownExt("XvMC::ListSubpictureTypes"),
982                    _ => RequestInfo::UnknownRequest(Some("XvMC"), minor_opcode),
983                }
984            }
985            _ => RequestInfo::UnknownExtension(major_opcode, minor_opcode),
986        };
987        (Some(ext_name), info)
988    }
989}
990
991/// Get the name of a request based on its major and minor code.
992///
993/// The major and minor opcode are the first and second byte of a request.
994/// Core requests do not have a minor opcode. For these, the minor opcode is ignored by this function.
995pub fn get_request_name(
996    ext_info_provider: &dyn ExtInfoProvider,
997    major_opcode: u8,
998    minor_opcode: u8,
999) -> Cow<'static, str> {
1000    let (ext_name, info) = get_request_name_internal(ext_info_provider, major_opcode, minor_opcode);
1001    match info {
1002        RequestInfo::Xproto(request) => request.into(),
1003        RequestInfo::KnownExt(ext_and_request) => ext_and_request.into(),
1004        RequestInfo::UnknownRequest(None, opcode) => alloc::format!("xproto::opcode {}", opcode).into(),
1005        RequestInfo::UnknownRequest(Some(ext), opcode) => alloc::format!("{}::opcode {}", ext, opcode).into(),
1006        RequestInfo::UnknownExtension(major_opcode, minor_opcode) => match ext_name {
1007            None => alloc::format!("ext {}::opcode {}", major_opcode, minor_opcode).into(),
1008            Some(ext_name) => alloc::format!("ext {}::opcode {}", ext_name, minor_opcode).into(),
1009        }
1010    }
1011}
1012
1013/// Enumeration of all possible X11 requests.
1014#[derive(Debug)]
1015#[allow(clippy::large_enum_variant)]
1016#[non_exhaustive]
1017pub enum Request<'input> {
1018    Unknown(RequestHeader, Cow<'input, [u8]>),
1019    CreateWindow(xproto::CreateWindowRequest<'input>),
1020    ChangeWindowAttributes(xproto::ChangeWindowAttributesRequest<'input>),
1021    GetWindowAttributes(xproto::GetWindowAttributesRequest),
1022    DestroyWindow(xproto::DestroyWindowRequest),
1023    DestroySubwindows(xproto::DestroySubwindowsRequest),
1024    ChangeSaveSet(xproto::ChangeSaveSetRequest),
1025    ReparentWindow(xproto::ReparentWindowRequest),
1026    MapWindow(xproto::MapWindowRequest),
1027    MapSubwindows(xproto::MapSubwindowsRequest),
1028    UnmapWindow(xproto::UnmapWindowRequest),
1029    UnmapSubwindows(xproto::UnmapSubwindowsRequest),
1030    ConfigureWindow(xproto::ConfigureWindowRequest<'input>),
1031    CirculateWindow(xproto::CirculateWindowRequest),
1032    GetGeometry(xproto::GetGeometryRequest),
1033    QueryTree(xproto::QueryTreeRequest),
1034    InternAtom(xproto::InternAtomRequest<'input>),
1035    GetAtomName(xproto::GetAtomNameRequest),
1036    ChangeProperty(xproto::ChangePropertyRequest<'input>),
1037    DeleteProperty(xproto::DeletePropertyRequest),
1038    GetProperty(xproto::GetPropertyRequest),
1039    ListProperties(xproto::ListPropertiesRequest),
1040    SetSelectionOwner(xproto::SetSelectionOwnerRequest),
1041    GetSelectionOwner(xproto::GetSelectionOwnerRequest),
1042    ConvertSelection(xproto::ConvertSelectionRequest),
1043    SendEvent(xproto::SendEventRequest<'input>),
1044    GrabPointer(xproto::GrabPointerRequest),
1045    UngrabPointer(xproto::UngrabPointerRequest),
1046    GrabButton(xproto::GrabButtonRequest),
1047    UngrabButton(xproto::UngrabButtonRequest),
1048    ChangeActivePointerGrab(xproto::ChangeActivePointerGrabRequest),
1049    GrabKeyboard(xproto::GrabKeyboardRequest),
1050    UngrabKeyboard(xproto::UngrabKeyboardRequest),
1051    GrabKey(xproto::GrabKeyRequest),
1052    UngrabKey(xproto::UngrabKeyRequest),
1053    AllowEvents(xproto::AllowEventsRequest),
1054    GrabServer(xproto::GrabServerRequest),
1055    UngrabServer(xproto::UngrabServerRequest),
1056    QueryPointer(xproto::QueryPointerRequest),
1057    GetMotionEvents(xproto::GetMotionEventsRequest),
1058    TranslateCoordinates(xproto::TranslateCoordinatesRequest),
1059    WarpPointer(xproto::WarpPointerRequest),
1060    SetInputFocus(xproto::SetInputFocusRequest),
1061    GetInputFocus(xproto::GetInputFocusRequest),
1062    QueryKeymap(xproto::QueryKeymapRequest),
1063    OpenFont(xproto::OpenFontRequest<'input>),
1064    CloseFont(xproto::CloseFontRequest),
1065    QueryFont(xproto::QueryFontRequest),
1066    QueryTextExtents(xproto::QueryTextExtentsRequest<'input>),
1067    ListFonts(xproto::ListFontsRequest<'input>),
1068    ListFontsWithInfo(xproto::ListFontsWithInfoRequest<'input>),
1069    SetFontPath(xproto::SetFontPathRequest<'input>),
1070    GetFontPath(xproto::GetFontPathRequest),
1071    CreatePixmap(xproto::CreatePixmapRequest),
1072    FreePixmap(xproto::FreePixmapRequest),
1073    CreateGC(xproto::CreateGCRequest<'input>),
1074    ChangeGC(xproto::ChangeGCRequest<'input>),
1075    CopyGC(xproto::CopyGCRequest),
1076    SetDashes(xproto::SetDashesRequest<'input>),
1077    SetClipRectangles(xproto::SetClipRectanglesRequest<'input>),
1078    FreeGC(xproto::FreeGCRequest),
1079    ClearArea(xproto::ClearAreaRequest),
1080    CopyArea(xproto::CopyAreaRequest),
1081    CopyPlane(xproto::CopyPlaneRequest),
1082    PolyPoint(xproto::PolyPointRequest<'input>),
1083    PolyLine(xproto::PolyLineRequest<'input>),
1084    PolySegment(xproto::PolySegmentRequest<'input>),
1085    PolyRectangle(xproto::PolyRectangleRequest<'input>),
1086    PolyArc(xproto::PolyArcRequest<'input>),
1087    FillPoly(xproto::FillPolyRequest<'input>),
1088    PolyFillRectangle(xproto::PolyFillRectangleRequest<'input>),
1089    PolyFillArc(xproto::PolyFillArcRequest<'input>),
1090    PutImage(xproto::PutImageRequest<'input>),
1091    GetImage(xproto::GetImageRequest),
1092    PolyText8(xproto::PolyText8Request<'input>),
1093    PolyText16(xproto::PolyText16Request<'input>),
1094    ImageText8(xproto::ImageText8Request<'input>),
1095    ImageText16(xproto::ImageText16Request<'input>),
1096    CreateColormap(xproto::CreateColormapRequest),
1097    FreeColormap(xproto::FreeColormapRequest),
1098    CopyColormapAndFree(xproto::CopyColormapAndFreeRequest),
1099    InstallColormap(xproto::InstallColormapRequest),
1100    UninstallColormap(xproto::UninstallColormapRequest),
1101    ListInstalledColormaps(xproto::ListInstalledColormapsRequest),
1102    AllocColor(xproto::AllocColorRequest),
1103    AllocNamedColor(xproto::AllocNamedColorRequest<'input>),
1104    AllocColorCells(xproto::AllocColorCellsRequest),
1105    AllocColorPlanes(xproto::AllocColorPlanesRequest),
1106    FreeColors(xproto::FreeColorsRequest<'input>),
1107    StoreColors(xproto::StoreColorsRequest<'input>),
1108    StoreNamedColor(xproto::StoreNamedColorRequest<'input>),
1109    QueryColors(xproto::QueryColorsRequest<'input>),
1110    LookupColor(xproto::LookupColorRequest<'input>),
1111    CreateCursor(xproto::CreateCursorRequest),
1112    CreateGlyphCursor(xproto::CreateGlyphCursorRequest),
1113    FreeCursor(xproto::FreeCursorRequest),
1114    RecolorCursor(xproto::RecolorCursorRequest),
1115    QueryBestSize(xproto::QueryBestSizeRequest),
1116    QueryExtension(xproto::QueryExtensionRequest<'input>),
1117    ListExtensions(xproto::ListExtensionsRequest),
1118    ChangeKeyboardMapping(xproto::ChangeKeyboardMappingRequest<'input>),
1119    GetKeyboardMapping(xproto::GetKeyboardMappingRequest),
1120    ChangeKeyboardControl(xproto::ChangeKeyboardControlRequest<'input>),
1121    GetKeyboardControl(xproto::GetKeyboardControlRequest),
1122    Bell(xproto::BellRequest),
1123    ChangePointerControl(xproto::ChangePointerControlRequest),
1124    GetPointerControl(xproto::GetPointerControlRequest),
1125    SetScreenSaver(xproto::SetScreenSaverRequest),
1126    GetScreenSaver(xproto::GetScreenSaverRequest),
1127    ChangeHosts(xproto::ChangeHostsRequest<'input>),
1128    ListHosts(xproto::ListHostsRequest),
1129    SetAccessControl(xproto::SetAccessControlRequest),
1130    SetCloseDownMode(xproto::SetCloseDownModeRequest),
1131    KillClient(xproto::KillClientRequest),
1132    RotateProperties(xproto::RotatePropertiesRequest<'input>),
1133    ForceScreenSaver(xproto::ForceScreenSaverRequest),
1134    SetPointerMapping(xproto::SetPointerMappingRequest<'input>),
1135    GetPointerMapping(xproto::GetPointerMappingRequest),
1136    SetModifierMapping(xproto::SetModifierMappingRequest<'input>),
1137    GetModifierMapping(xproto::GetModifierMappingRequest),
1138    NoOperation(xproto::NoOperationRequest),
1139    BigreqEnable(bigreq::EnableRequest),
1140    #[cfg(feature = "composite")]
1141    CompositeQueryVersion(composite::QueryVersionRequest),
1142    #[cfg(feature = "composite")]
1143    CompositeRedirectWindow(composite::RedirectWindowRequest),
1144    #[cfg(feature = "composite")]
1145    CompositeRedirectSubwindows(composite::RedirectSubwindowsRequest),
1146    #[cfg(feature = "composite")]
1147    CompositeUnredirectWindow(composite::UnredirectWindowRequest),
1148    #[cfg(feature = "composite")]
1149    CompositeUnredirectSubwindows(composite::UnredirectSubwindowsRequest),
1150    #[cfg(feature = "composite")]
1151    CompositeCreateRegionFromBorderClip(composite::CreateRegionFromBorderClipRequest),
1152    #[cfg(feature = "composite")]
1153    CompositeNameWindowPixmap(composite::NameWindowPixmapRequest),
1154    #[cfg(feature = "composite")]
1155    CompositeGetOverlayWindow(composite::GetOverlayWindowRequest),
1156    #[cfg(feature = "composite")]
1157    CompositeReleaseOverlayWindow(composite::ReleaseOverlayWindowRequest),
1158    #[cfg(feature = "damage")]
1159    DamageQueryVersion(damage::QueryVersionRequest),
1160    #[cfg(feature = "damage")]
1161    DamageCreate(damage::CreateRequest),
1162    #[cfg(feature = "damage")]
1163    DamageDestroy(damage::DestroyRequest),
1164    #[cfg(feature = "damage")]
1165    DamageSubtract(damage::SubtractRequest),
1166    #[cfg(feature = "damage")]
1167    DamageAdd(damage::AddRequest),
1168    #[cfg(feature = "dbe")]
1169    DbeQueryVersion(dbe::QueryVersionRequest),
1170    #[cfg(feature = "dbe")]
1171    DbeAllocateBackBuffer(dbe::AllocateBackBufferRequest),
1172    #[cfg(feature = "dbe")]
1173    DbeDeallocateBackBuffer(dbe::DeallocateBackBufferRequest),
1174    #[cfg(feature = "dbe")]
1175    DbeSwapBuffers(dbe::SwapBuffersRequest<'input>),
1176    #[cfg(feature = "dbe")]
1177    DbeBeginIdiom(dbe::BeginIdiomRequest),
1178    #[cfg(feature = "dbe")]
1179    DbeEndIdiom(dbe::EndIdiomRequest),
1180    #[cfg(feature = "dbe")]
1181    DbeGetVisualInfo(dbe::GetVisualInfoRequest<'input>),
1182    #[cfg(feature = "dbe")]
1183    DbeGetBackBufferAttributes(dbe::GetBackBufferAttributesRequest),
1184    #[cfg(feature = "dpms")]
1185    DpmsGetVersion(dpms::GetVersionRequest),
1186    #[cfg(feature = "dpms")]
1187    DpmsCapable(dpms::CapableRequest),
1188    #[cfg(feature = "dpms")]
1189    DpmsGetTimeouts(dpms::GetTimeoutsRequest),
1190    #[cfg(feature = "dpms")]
1191    DpmsSetTimeouts(dpms::SetTimeoutsRequest),
1192    #[cfg(feature = "dpms")]
1193    DpmsEnable(dpms::EnableRequest),
1194    #[cfg(feature = "dpms")]
1195    DpmsDisable(dpms::DisableRequest),
1196    #[cfg(feature = "dpms")]
1197    DpmsForceLevel(dpms::ForceLevelRequest),
1198    #[cfg(feature = "dpms")]
1199    DpmsInfo(dpms::InfoRequest),
1200    #[cfg(feature = "dpms")]
1201    DpmsSelectInput(dpms::SelectInputRequest),
1202    #[cfg(feature = "dri2")]
1203    Dri2QueryVersion(dri2::QueryVersionRequest),
1204    #[cfg(feature = "dri2")]
1205    Dri2Connect(dri2::ConnectRequest),
1206    #[cfg(feature = "dri2")]
1207    Dri2Authenticate(dri2::AuthenticateRequest),
1208    #[cfg(feature = "dri2")]
1209    Dri2CreateDrawable(dri2::CreateDrawableRequest),
1210    #[cfg(feature = "dri2")]
1211    Dri2DestroyDrawable(dri2::DestroyDrawableRequest),
1212    #[cfg(feature = "dri2")]
1213    Dri2GetBuffers(dri2::GetBuffersRequest<'input>),
1214    #[cfg(feature = "dri2")]
1215    Dri2CopyRegion(dri2::CopyRegionRequest),
1216    #[cfg(feature = "dri2")]
1217    Dri2GetBuffersWithFormat(dri2::GetBuffersWithFormatRequest<'input>),
1218    #[cfg(feature = "dri2")]
1219    Dri2SwapBuffers(dri2::SwapBuffersRequest),
1220    #[cfg(feature = "dri2")]
1221    Dri2GetMSC(dri2::GetMSCRequest),
1222    #[cfg(feature = "dri2")]
1223    Dri2WaitMSC(dri2::WaitMSCRequest),
1224    #[cfg(feature = "dri2")]
1225    Dri2WaitSBC(dri2::WaitSBCRequest),
1226    #[cfg(feature = "dri2")]
1227    Dri2SwapInterval(dri2::SwapIntervalRequest),
1228    #[cfg(feature = "dri2")]
1229    Dri2GetParam(dri2::GetParamRequest),
1230    #[cfg(feature = "dri3")]
1231    Dri3QueryVersion(dri3::QueryVersionRequest),
1232    #[cfg(feature = "dri3")]
1233    Dri3Open(dri3::OpenRequest),
1234    #[cfg(feature = "dri3")]
1235    Dri3PixmapFromBuffer(dri3::PixmapFromBufferRequest),
1236    #[cfg(feature = "dri3")]
1237    Dri3BufferFromPixmap(dri3::BufferFromPixmapRequest),
1238    #[cfg(feature = "dri3")]
1239    Dri3FenceFromFD(dri3::FenceFromFDRequest),
1240    #[cfg(feature = "dri3")]
1241    Dri3FDFromFence(dri3::FDFromFenceRequest),
1242    #[cfg(feature = "dri3")]
1243    Dri3GetSupportedModifiers(dri3::GetSupportedModifiersRequest),
1244    #[cfg(feature = "dri3")]
1245    Dri3PixmapFromBuffers(dri3::PixmapFromBuffersRequest),
1246    #[cfg(feature = "dri3")]
1247    Dri3BuffersFromPixmap(dri3::BuffersFromPixmapRequest),
1248    #[cfg(feature = "dri3")]
1249    Dri3SetDRMDeviceInUse(dri3::SetDRMDeviceInUseRequest),
1250    #[cfg(feature = "dri3")]
1251    Dri3ImportSyncobj(dri3::ImportSyncobjRequest),
1252    #[cfg(feature = "dri3")]
1253    Dri3FreeSyncobj(dri3::FreeSyncobjRequest),
1254    GeQueryVersion(ge::QueryVersionRequest),
1255    #[cfg(feature = "glx")]
1256    GlxRender(glx::RenderRequest<'input>),
1257    #[cfg(feature = "glx")]
1258    GlxRenderLarge(glx::RenderLargeRequest<'input>),
1259    #[cfg(feature = "glx")]
1260    GlxCreateContext(glx::CreateContextRequest),
1261    #[cfg(feature = "glx")]
1262    GlxDestroyContext(glx::DestroyContextRequest),
1263    #[cfg(feature = "glx")]
1264    GlxMakeCurrent(glx::MakeCurrentRequest),
1265    #[cfg(feature = "glx")]
1266    GlxIsDirect(glx::IsDirectRequest),
1267    #[cfg(feature = "glx")]
1268    GlxQueryVersion(glx::QueryVersionRequest),
1269    #[cfg(feature = "glx")]
1270    GlxWaitGL(glx::WaitGLRequest),
1271    #[cfg(feature = "glx")]
1272    GlxWaitX(glx::WaitXRequest),
1273    #[cfg(feature = "glx")]
1274    GlxCopyContext(glx::CopyContextRequest),
1275    #[cfg(feature = "glx")]
1276    GlxSwapBuffers(glx::SwapBuffersRequest),
1277    #[cfg(feature = "glx")]
1278    GlxUseXFont(glx::UseXFontRequest),
1279    #[cfg(feature = "glx")]
1280    GlxCreateGLXPixmap(glx::CreateGLXPixmapRequest),
1281    #[cfg(feature = "glx")]
1282    GlxGetVisualConfigs(glx::GetVisualConfigsRequest),
1283    #[cfg(feature = "glx")]
1284    GlxDestroyGLXPixmap(glx::DestroyGLXPixmapRequest),
1285    #[cfg(feature = "glx")]
1286    GlxVendorPrivate(glx::VendorPrivateRequest<'input>),
1287    #[cfg(feature = "glx")]
1288    GlxVendorPrivateWithReply(glx::VendorPrivateWithReplyRequest<'input>),
1289    #[cfg(feature = "glx")]
1290    GlxQueryExtensionsString(glx::QueryExtensionsStringRequest),
1291    #[cfg(feature = "glx")]
1292    GlxQueryServerString(glx::QueryServerStringRequest),
1293    #[cfg(feature = "glx")]
1294    GlxClientInfo(glx::ClientInfoRequest<'input>),
1295    #[cfg(feature = "glx")]
1296    GlxGetFBConfigs(glx::GetFBConfigsRequest),
1297    #[cfg(feature = "glx")]
1298    GlxCreatePixmap(glx::CreatePixmapRequest<'input>),
1299    #[cfg(feature = "glx")]
1300    GlxDestroyPixmap(glx::DestroyPixmapRequest),
1301    #[cfg(feature = "glx")]
1302    GlxCreateNewContext(glx::CreateNewContextRequest),
1303    #[cfg(feature = "glx")]
1304    GlxQueryContext(glx::QueryContextRequest),
1305    #[cfg(feature = "glx")]
1306    GlxMakeContextCurrent(glx::MakeContextCurrentRequest),
1307    #[cfg(feature = "glx")]
1308    GlxCreatePbuffer(glx::CreatePbufferRequest<'input>),
1309    #[cfg(feature = "glx")]
1310    GlxDestroyPbuffer(glx::DestroyPbufferRequest),
1311    #[cfg(feature = "glx")]
1312    GlxGetDrawableAttributes(glx::GetDrawableAttributesRequest),
1313    #[cfg(feature = "glx")]
1314    GlxChangeDrawableAttributes(glx::ChangeDrawableAttributesRequest<'input>),
1315    #[cfg(feature = "glx")]
1316    GlxCreateWindow(glx::CreateWindowRequest<'input>),
1317    #[cfg(feature = "glx")]
1318    GlxDeleteWindow(glx::DeleteWindowRequest),
1319    #[cfg(feature = "glx")]
1320    GlxSetClientInfoARB(glx::SetClientInfoARBRequest<'input>),
1321    #[cfg(feature = "glx")]
1322    GlxCreateContextAttribsARB(glx::CreateContextAttribsARBRequest<'input>),
1323    #[cfg(feature = "glx")]
1324    GlxSetClientInfo2ARB(glx::SetClientInfo2ARBRequest<'input>),
1325    #[cfg(feature = "glx")]
1326    GlxNewList(glx::NewListRequest),
1327    #[cfg(feature = "glx")]
1328    GlxEndList(glx::EndListRequest),
1329    #[cfg(feature = "glx")]
1330    GlxDeleteLists(glx::DeleteListsRequest),
1331    #[cfg(feature = "glx")]
1332    GlxGenLists(glx::GenListsRequest),
1333    #[cfg(feature = "glx")]
1334    GlxFeedbackBuffer(glx::FeedbackBufferRequest),
1335    #[cfg(feature = "glx")]
1336    GlxSelectBuffer(glx::SelectBufferRequest),
1337    #[cfg(feature = "glx")]
1338    GlxRenderMode(glx::RenderModeRequest),
1339    #[cfg(feature = "glx")]
1340    GlxFinish(glx::FinishRequest),
1341    #[cfg(feature = "glx")]
1342    GlxPixelStoref(glx::PixelStorefRequest),
1343    #[cfg(feature = "glx")]
1344    GlxPixelStorei(glx::PixelStoreiRequest),
1345    #[cfg(feature = "glx")]
1346    GlxReadPixels(glx::ReadPixelsRequest),
1347    #[cfg(feature = "glx")]
1348    GlxGetBooleanv(glx::GetBooleanvRequest),
1349    #[cfg(feature = "glx")]
1350    GlxGetClipPlane(glx::GetClipPlaneRequest),
1351    #[cfg(feature = "glx")]
1352    GlxGetDoublev(glx::GetDoublevRequest),
1353    #[cfg(feature = "glx")]
1354    GlxGetError(glx::GetErrorRequest),
1355    #[cfg(feature = "glx")]
1356    GlxGetFloatv(glx::GetFloatvRequest),
1357    #[cfg(feature = "glx")]
1358    GlxGetIntegerv(glx::GetIntegervRequest),
1359    #[cfg(feature = "glx")]
1360    GlxGetLightfv(glx::GetLightfvRequest),
1361    #[cfg(feature = "glx")]
1362    GlxGetLightiv(glx::GetLightivRequest),
1363    #[cfg(feature = "glx")]
1364    GlxGetMapdv(glx::GetMapdvRequest),
1365    #[cfg(feature = "glx")]
1366    GlxGetMapfv(glx::GetMapfvRequest),
1367    #[cfg(feature = "glx")]
1368    GlxGetMapiv(glx::GetMapivRequest),
1369    #[cfg(feature = "glx")]
1370    GlxGetMaterialfv(glx::GetMaterialfvRequest),
1371    #[cfg(feature = "glx")]
1372    GlxGetMaterialiv(glx::GetMaterialivRequest),
1373    #[cfg(feature = "glx")]
1374    GlxGetPixelMapfv(glx::GetPixelMapfvRequest),
1375    #[cfg(feature = "glx")]
1376    GlxGetPixelMapuiv(glx::GetPixelMapuivRequest),
1377    #[cfg(feature = "glx")]
1378    GlxGetPixelMapusv(glx::GetPixelMapusvRequest),
1379    #[cfg(feature = "glx")]
1380    GlxGetPolygonStipple(glx::GetPolygonStippleRequest),
1381    #[cfg(feature = "glx")]
1382    GlxGetString(glx::GetStringRequest),
1383    #[cfg(feature = "glx")]
1384    GlxGetTexEnvfv(glx::GetTexEnvfvRequest),
1385    #[cfg(feature = "glx")]
1386    GlxGetTexEnviv(glx::GetTexEnvivRequest),
1387    #[cfg(feature = "glx")]
1388    GlxGetTexGendv(glx::GetTexGendvRequest),
1389    #[cfg(feature = "glx")]
1390    GlxGetTexGenfv(glx::GetTexGenfvRequest),
1391    #[cfg(feature = "glx")]
1392    GlxGetTexGeniv(glx::GetTexGenivRequest),
1393    #[cfg(feature = "glx")]
1394    GlxGetTexImage(glx::GetTexImageRequest),
1395    #[cfg(feature = "glx")]
1396    GlxGetTexParameterfv(glx::GetTexParameterfvRequest),
1397    #[cfg(feature = "glx")]
1398    GlxGetTexParameteriv(glx::GetTexParameterivRequest),
1399    #[cfg(feature = "glx")]
1400    GlxGetTexLevelParameterfv(glx::GetTexLevelParameterfvRequest),
1401    #[cfg(feature = "glx")]
1402    GlxGetTexLevelParameteriv(glx::GetTexLevelParameterivRequest),
1403    #[cfg(feature = "glx")]
1404    GlxIsEnabled(glx::IsEnabledRequest),
1405    #[cfg(feature = "glx")]
1406    GlxIsList(glx::IsListRequest),
1407    #[cfg(feature = "glx")]
1408    GlxFlush(glx::FlushRequest),
1409    #[cfg(feature = "glx")]
1410    GlxAreTexturesResident(glx::AreTexturesResidentRequest<'input>),
1411    #[cfg(feature = "glx")]
1412    GlxDeleteTextures(glx::DeleteTexturesRequest<'input>),
1413    #[cfg(feature = "glx")]
1414    GlxGenTextures(glx::GenTexturesRequest),
1415    #[cfg(feature = "glx")]
1416    GlxIsTexture(glx::IsTextureRequest),
1417    #[cfg(feature = "glx")]
1418    GlxGetColorTable(glx::GetColorTableRequest),
1419    #[cfg(feature = "glx")]
1420    GlxGetColorTableParameterfv(glx::GetColorTableParameterfvRequest),
1421    #[cfg(feature = "glx")]
1422    GlxGetColorTableParameteriv(glx::GetColorTableParameterivRequest),
1423    #[cfg(feature = "glx")]
1424    GlxGetConvolutionFilter(glx::GetConvolutionFilterRequest),
1425    #[cfg(feature = "glx")]
1426    GlxGetConvolutionParameterfv(glx::GetConvolutionParameterfvRequest),
1427    #[cfg(feature = "glx")]
1428    GlxGetConvolutionParameteriv(glx::GetConvolutionParameterivRequest),
1429    #[cfg(feature = "glx")]
1430    GlxGetSeparableFilter(glx::GetSeparableFilterRequest),
1431    #[cfg(feature = "glx")]
1432    GlxGetHistogram(glx::GetHistogramRequest),
1433    #[cfg(feature = "glx")]
1434    GlxGetHistogramParameterfv(glx::GetHistogramParameterfvRequest),
1435    #[cfg(feature = "glx")]
1436    GlxGetHistogramParameteriv(glx::GetHistogramParameterivRequest),
1437    #[cfg(feature = "glx")]
1438    GlxGetMinmax(glx::GetMinmaxRequest),
1439    #[cfg(feature = "glx")]
1440    GlxGetMinmaxParameterfv(glx::GetMinmaxParameterfvRequest),
1441    #[cfg(feature = "glx")]
1442    GlxGetMinmaxParameteriv(glx::GetMinmaxParameterivRequest),
1443    #[cfg(feature = "glx")]
1444    GlxGetCompressedTexImageARB(glx::GetCompressedTexImageARBRequest),
1445    #[cfg(feature = "glx")]
1446    GlxDeleteQueriesARB(glx::DeleteQueriesARBRequest<'input>),
1447    #[cfg(feature = "glx")]
1448    GlxGenQueriesARB(glx::GenQueriesARBRequest),
1449    #[cfg(feature = "glx")]
1450    GlxIsQueryARB(glx::IsQueryARBRequest),
1451    #[cfg(feature = "glx")]
1452    GlxGetQueryivARB(glx::GetQueryivARBRequest),
1453    #[cfg(feature = "glx")]
1454    GlxGetQueryObjectivARB(glx::GetQueryObjectivARBRequest),
1455    #[cfg(feature = "glx")]
1456    GlxGetQueryObjectuivARB(glx::GetQueryObjectuivARBRequest),
1457    #[cfg(feature = "present")]
1458    PresentQueryVersion(present::QueryVersionRequest),
1459    #[cfg(feature = "present")]
1460    PresentPixmap(present::PixmapRequest<'input>),
1461    #[cfg(feature = "present")]
1462    PresentNotifyMSC(present::NotifyMSCRequest),
1463    #[cfg(feature = "present")]
1464    PresentSelectInput(present::SelectInputRequest),
1465    #[cfg(feature = "present")]
1466    PresentQueryCapabilities(present::QueryCapabilitiesRequest),
1467    #[cfg(feature = "present")]
1468    PresentPixmapSynced(present::PixmapSyncedRequest<'input>),
1469    #[cfg(feature = "randr")]
1470    RandrQueryVersion(randr::QueryVersionRequest),
1471    #[cfg(feature = "randr")]
1472    RandrSetScreenConfig(randr::SetScreenConfigRequest),
1473    #[cfg(feature = "randr")]
1474    RandrSelectInput(randr::SelectInputRequest),
1475    #[cfg(feature = "randr")]
1476    RandrGetScreenInfo(randr::GetScreenInfoRequest),
1477    #[cfg(feature = "randr")]
1478    RandrGetScreenSizeRange(randr::GetScreenSizeRangeRequest),
1479    #[cfg(feature = "randr")]
1480    RandrSetScreenSize(randr::SetScreenSizeRequest),
1481    #[cfg(feature = "randr")]
1482    RandrGetScreenResources(randr::GetScreenResourcesRequest),
1483    #[cfg(feature = "randr")]
1484    RandrGetOutputInfo(randr::GetOutputInfoRequest),
1485    #[cfg(feature = "randr")]
1486    RandrListOutputProperties(randr::ListOutputPropertiesRequest),
1487    #[cfg(feature = "randr")]
1488    RandrQueryOutputProperty(randr::QueryOutputPropertyRequest),
1489    #[cfg(feature = "randr")]
1490    RandrConfigureOutputProperty(randr::ConfigureOutputPropertyRequest<'input>),
1491    #[cfg(feature = "randr")]
1492    RandrChangeOutputProperty(randr::ChangeOutputPropertyRequest<'input>),
1493    #[cfg(feature = "randr")]
1494    RandrDeleteOutputProperty(randr::DeleteOutputPropertyRequest),
1495    #[cfg(feature = "randr")]
1496    RandrGetOutputProperty(randr::GetOutputPropertyRequest),
1497    #[cfg(feature = "randr")]
1498    RandrCreateMode(randr::CreateModeRequest<'input>),
1499    #[cfg(feature = "randr")]
1500    RandrDestroyMode(randr::DestroyModeRequest),
1501    #[cfg(feature = "randr")]
1502    RandrAddOutputMode(randr::AddOutputModeRequest),
1503    #[cfg(feature = "randr")]
1504    RandrDeleteOutputMode(randr::DeleteOutputModeRequest),
1505    #[cfg(feature = "randr")]
1506    RandrGetCrtcInfo(randr::GetCrtcInfoRequest),
1507    #[cfg(feature = "randr")]
1508    RandrSetCrtcConfig(randr::SetCrtcConfigRequest<'input>),
1509    #[cfg(feature = "randr")]
1510    RandrGetCrtcGammaSize(randr::GetCrtcGammaSizeRequest),
1511    #[cfg(feature = "randr")]
1512    RandrGetCrtcGamma(randr::GetCrtcGammaRequest),
1513    #[cfg(feature = "randr")]
1514    RandrSetCrtcGamma(randr::SetCrtcGammaRequest<'input>),
1515    #[cfg(feature = "randr")]
1516    RandrGetScreenResourcesCurrent(randr::GetScreenResourcesCurrentRequest),
1517    #[cfg(feature = "randr")]
1518    RandrSetCrtcTransform(randr::SetCrtcTransformRequest<'input>),
1519    #[cfg(feature = "randr")]
1520    RandrGetCrtcTransform(randr::GetCrtcTransformRequest),
1521    #[cfg(feature = "randr")]
1522    RandrGetPanning(randr::GetPanningRequest),
1523    #[cfg(feature = "randr")]
1524    RandrSetPanning(randr::SetPanningRequest),
1525    #[cfg(feature = "randr")]
1526    RandrSetOutputPrimary(randr::SetOutputPrimaryRequest),
1527    #[cfg(feature = "randr")]
1528    RandrGetOutputPrimary(randr::GetOutputPrimaryRequest),
1529    #[cfg(feature = "randr")]
1530    RandrGetProviders(randr::GetProvidersRequest),
1531    #[cfg(feature = "randr")]
1532    RandrGetProviderInfo(randr::GetProviderInfoRequest),
1533    #[cfg(feature = "randr")]
1534    RandrSetProviderOffloadSink(randr::SetProviderOffloadSinkRequest),
1535    #[cfg(feature = "randr")]
1536    RandrSetProviderOutputSource(randr::SetProviderOutputSourceRequest),
1537    #[cfg(feature = "randr")]
1538    RandrListProviderProperties(randr::ListProviderPropertiesRequest),
1539    #[cfg(feature = "randr")]
1540    RandrQueryProviderProperty(randr::QueryProviderPropertyRequest),
1541    #[cfg(feature = "randr")]
1542    RandrConfigureProviderProperty(randr::ConfigureProviderPropertyRequest<'input>),
1543    #[cfg(feature = "randr")]
1544    RandrChangeProviderProperty(randr::ChangeProviderPropertyRequest<'input>),
1545    #[cfg(feature = "randr")]
1546    RandrDeleteProviderProperty(randr::DeleteProviderPropertyRequest),
1547    #[cfg(feature = "randr")]
1548    RandrGetProviderProperty(randr::GetProviderPropertyRequest),
1549    #[cfg(feature = "randr")]
1550    RandrGetMonitors(randr::GetMonitorsRequest),
1551    #[cfg(feature = "randr")]
1552    RandrSetMonitor(randr::SetMonitorRequest),
1553    #[cfg(feature = "randr")]
1554    RandrDeleteMonitor(randr::DeleteMonitorRequest),
1555    #[cfg(feature = "randr")]
1556    RandrCreateLease(randr::CreateLeaseRequest<'input>),
1557    #[cfg(feature = "randr")]
1558    RandrFreeLease(randr::FreeLeaseRequest),
1559    #[cfg(feature = "record")]
1560    RecordQueryVersion(record::QueryVersionRequest),
1561    #[cfg(feature = "record")]
1562    RecordCreateContext(record::CreateContextRequest<'input>),
1563    #[cfg(feature = "record")]
1564    RecordRegisterClients(record::RegisterClientsRequest<'input>),
1565    #[cfg(feature = "record")]
1566    RecordUnregisterClients(record::UnregisterClientsRequest<'input>),
1567    #[cfg(feature = "record")]
1568    RecordGetContext(record::GetContextRequest),
1569    #[cfg(feature = "record")]
1570    RecordEnableContext(record::EnableContextRequest),
1571    #[cfg(feature = "record")]
1572    RecordDisableContext(record::DisableContextRequest),
1573    #[cfg(feature = "record")]
1574    RecordFreeContext(record::FreeContextRequest),
1575    #[cfg(feature = "render")]
1576    RenderQueryVersion(render::QueryVersionRequest),
1577    #[cfg(feature = "render")]
1578    RenderQueryPictFormats(render::QueryPictFormatsRequest),
1579    #[cfg(feature = "render")]
1580    RenderQueryPictIndexValues(render::QueryPictIndexValuesRequest),
1581    #[cfg(feature = "render")]
1582    RenderCreatePicture(render::CreatePictureRequest<'input>),
1583    #[cfg(feature = "render")]
1584    RenderChangePicture(render::ChangePictureRequest<'input>),
1585    #[cfg(feature = "render")]
1586    RenderSetPictureClipRectangles(render::SetPictureClipRectanglesRequest<'input>),
1587    #[cfg(feature = "render")]
1588    RenderFreePicture(render::FreePictureRequest),
1589    #[cfg(feature = "render")]
1590    RenderComposite(render::CompositeRequest),
1591    #[cfg(feature = "render")]
1592    RenderTrapezoids(render::TrapezoidsRequest<'input>),
1593    #[cfg(feature = "render")]
1594    RenderTriangles(render::TrianglesRequest<'input>),
1595    #[cfg(feature = "render")]
1596    RenderTriStrip(render::TriStripRequest<'input>),
1597    #[cfg(feature = "render")]
1598    RenderTriFan(render::TriFanRequest<'input>),
1599    #[cfg(feature = "render")]
1600    RenderCreateGlyphSet(render::CreateGlyphSetRequest),
1601    #[cfg(feature = "render")]
1602    RenderReferenceGlyphSet(render::ReferenceGlyphSetRequest),
1603    #[cfg(feature = "render")]
1604    RenderFreeGlyphSet(render::FreeGlyphSetRequest),
1605    #[cfg(feature = "render")]
1606    RenderAddGlyphs(render::AddGlyphsRequest<'input>),
1607    #[cfg(feature = "render")]
1608    RenderFreeGlyphs(render::FreeGlyphsRequest<'input>),
1609    #[cfg(feature = "render")]
1610    RenderCompositeGlyphs8(render::CompositeGlyphs8Request<'input>),
1611    #[cfg(feature = "render")]
1612    RenderCompositeGlyphs16(render::CompositeGlyphs16Request<'input>),
1613    #[cfg(feature = "render")]
1614    RenderCompositeGlyphs32(render::CompositeGlyphs32Request<'input>),
1615    #[cfg(feature = "render")]
1616    RenderFillRectangles(render::FillRectanglesRequest<'input>),
1617    #[cfg(feature = "render")]
1618    RenderCreateCursor(render::CreateCursorRequest),
1619    #[cfg(feature = "render")]
1620    RenderSetPictureTransform(render::SetPictureTransformRequest),
1621    #[cfg(feature = "render")]
1622    RenderQueryFilters(render::QueryFiltersRequest),
1623    #[cfg(feature = "render")]
1624    RenderSetPictureFilter(render::SetPictureFilterRequest<'input>),
1625    #[cfg(feature = "render")]
1626    RenderCreateAnimCursor(render::CreateAnimCursorRequest<'input>),
1627    #[cfg(feature = "render")]
1628    RenderAddTraps(render::AddTrapsRequest<'input>),
1629    #[cfg(feature = "render")]
1630    RenderCreateSolidFill(render::CreateSolidFillRequest),
1631    #[cfg(feature = "render")]
1632    RenderCreateLinearGradient(render::CreateLinearGradientRequest<'input>),
1633    #[cfg(feature = "render")]
1634    RenderCreateRadialGradient(render::CreateRadialGradientRequest<'input>),
1635    #[cfg(feature = "render")]
1636    RenderCreateConicalGradient(render::CreateConicalGradientRequest<'input>),
1637    #[cfg(feature = "res")]
1638    ResQueryVersion(res::QueryVersionRequest),
1639    #[cfg(feature = "res")]
1640    ResQueryClients(res::QueryClientsRequest),
1641    #[cfg(feature = "res")]
1642    ResQueryClientResources(res::QueryClientResourcesRequest),
1643    #[cfg(feature = "res")]
1644    ResQueryClientPixmapBytes(res::QueryClientPixmapBytesRequest),
1645    #[cfg(feature = "res")]
1646    ResQueryClientIds(res::QueryClientIdsRequest<'input>),
1647    #[cfg(feature = "res")]
1648    ResQueryResourceBytes(res::QueryResourceBytesRequest<'input>),
1649    #[cfg(feature = "screensaver")]
1650    ScreensaverQueryVersion(screensaver::QueryVersionRequest),
1651    #[cfg(feature = "screensaver")]
1652    ScreensaverQueryInfo(screensaver::QueryInfoRequest),
1653    #[cfg(feature = "screensaver")]
1654    ScreensaverSelectInput(screensaver::SelectInputRequest),
1655    #[cfg(feature = "screensaver")]
1656    ScreensaverSetAttributes(screensaver::SetAttributesRequest<'input>),
1657    #[cfg(feature = "screensaver")]
1658    ScreensaverUnsetAttributes(screensaver::UnsetAttributesRequest),
1659    #[cfg(feature = "screensaver")]
1660    ScreensaverSuspend(screensaver::SuspendRequest),
1661    #[cfg(feature = "shape")]
1662    ShapeQueryVersion(shape::QueryVersionRequest),
1663    #[cfg(feature = "shape")]
1664    ShapeRectangles(shape::RectanglesRequest<'input>),
1665    #[cfg(feature = "shape")]
1666    ShapeMask(shape::MaskRequest),
1667    #[cfg(feature = "shape")]
1668    ShapeCombine(shape::CombineRequest),
1669    #[cfg(feature = "shape")]
1670    ShapeOffset(shape::OffsetRequest),
1671    #[cfg(feature = "shape")]
1672    ShapeQueryExtents(shape::QueryExtentsRequest),
1673    #[cfg(feature = "shape")]
1674    ShapeSelectInput(shape::SelectInputRequest),
1675    #[cfg(feature = "shape")]
1676    ShapeInputSelected(shape::InputSelectedRequest),
1677    #[cfg(feature = "shape")]
1678    ShapeGetRectangles(shape::GetRectanglesRequest),
1679    #[cfg(feature = "shm")]
1680    ShmQueryVersion(shm::QueryVersionRequest),
1681    #[cfg(feature = "shm")]
1682    ShmAttach(shm::AttachRequest),
1683    #[cfg(feature = "shm")]
1684    ShmDetach(shm::DetachRequest),
1685    #[cfg(feature = "shm")]
1686    ShmPutImage(shm::PutImageRequest),
1687    #[cfg(feature = "shm")]
1688    ShmGetImage(shm::GetImageRequest),
1689    #[cfg(feature = "shm")]
1690    ShmCreatePixmap(shm::CreatePixmapRequest),
1691    #[cfg(feature = "shm")]
1692    ShmAttachFd(shm::AttachFdRequest),
1693    #[cfg(feature = "shm")]
1694    ShmCreateSegment(shm::CreateSegmentRequest),
1695    #[cfg(feature = "sync")]
1696    SyncInitialize(sync::InitializeRequest),
1697    #[cfg(feature = "sync")]
1698    SyncListSystemCounters(sync::ListSystemCountersRequest),
1699    #[cfg(feature = "sync")]
1700    SyncCreateCounter(sync::CreateCounterRequest),
1701    #[cfg(feature = "sync")]
1702    SyncDestroyCounter(sync::DestroyCounterRequest),
1703    #[cfg(feature = "sync")]
1704    SyncQueryCounter(sync::QueryCounterRequest),
1705    #[cfg(feature = "sync")]
1706    SyncAwait(sync::AwaitRequest<'input>),
1707    #[cfg(feature = "sync")]
1708    SyncChangeCounter(sync::ChangeCounterRequest),
1709    #[cfg(feature = "sync")]
1710    SyncSetCounter(sync::SetCounterRequest),
1711    #[cfg(feature = "sync")]
1712    SyncCreateAlarm(sync::CreateAlarmRequest<'input>),
1713    #[cfg(feature = "sync")]
1714    SyncChangeAlarm(sync::ChangeAlarmRequest<'input>),
1715    #[cfg(feature = "sync")]
1716    SyncDestroyAlarm(sync::DestroyAlarmRequest),
1717    #[cfg(feature = "sync")]
1718    SyncQueryAlarm(sync::QueryAlarmRequest),
1719    #[cfg(feature = "sync")]
1720    SyncSetPriority(sync::SetPriorityRequest),
1721    #[cfg(feature = "sync")]
1722    SyncGetPriority(sync::GetPriorityRequest),
1723    #[cfg(feature = "sync")]
1724    SyncCreateFence(sync::CreateFenceRequest),
1725    #[cfg(feature = "sync")]
1726    SyncTriggerFence(sync::TriggerFenceRequest),
1727    #[cfg(feature = "sync")]
1728    SyncResetFence(sync::ResetFenceRequest),
1729    #[cfg(feature = "sync")]
1730    SyncDestroyFence(sync::DestroyFenceRequest),
1731    #[cfg(feature = "sync")]
1732    SyncQueryFence(sync::QueryFenceRequest),
1733    #[cfg(feature = "sync")]
1734    SyncAwaitFence(sync::AwaitFenceRequest<'input>),
1735    XcMiscGetVersion(xc_misc::GetVersionRequest),
1736    XcMiscGetXIDRange(xc_misc::GetXIDRangeRequest),
1737    XcMiscGetXIDList(xc_misc::GetXIDListRequest),
1738    #[cfg(feature = "xevie")]
1739    XevieQueryVersion(xevie::QueryVersionRequest),
1740    #[cfg(feature = "xevie")]
1741    XevieStart(xevie::StartRequest),
1742    #[cfg(feature = "xevie")]
1743    XevieEnd(xevie::EndRequest),
1744    #[cfg(feature = "xevie")]
1745    XevieSend(xevie::SendRequest),
1746    #[cfg(feature = "xevie")]
1747    XevieSelectInput(xevie::SelectInputRequest),
1748    #[cfg(feature = "xf86dri")]
1749    Xf86driQueryVersion(xf86dri::QueryVersionRequest),
1750    #[cfg(feature = "xf86dri")]
1751    Xf86driQueryDirectRenderingCapable(xf86dri::QueryDirectRenderingCapableRequest),
1752    #[cfg(feature = "xf86dri")]
1753    Xf86driOpenConnection(xf86dri::OpenConnectionRequest),
1754    #[cfg(feature = "xf86dri")]
1755    Xf86driCloseConnection(xf86dri::CloseConnectionRequest),
1756    #[cfg(feature = "xf86dri")]
1757    Xf86driGetClientDriverName(xf86dri::GetClientDriverNameRequest),
1758    #[cfg(feature = "xf86dri")]
1759    Xf86driCreateContext(xf86dri::CreateContextRequest),
1760    #[cfg(feature = "xf86dri")]
1761    Xf86driDestroyContext(xf86dri::DestroyContextRequest),
1762    #[cfg(feature = "xf86dri")]
1763    Xf86driCreateDrawable(xf86dri::CreateDrawableRequest),
1764    #[cfg(feature = "xf86dri")]
1765    Xf86driDestroyDrawable(xf86dri::DestroyDrawableRequest),
1766    #[cfg(feature = "xf86dri")]
1767    Xf86driGetDrawableInfo(xf86dri::GetDrawableInfoRequest),
1768    #[cfg(feature = "xf86dri")]
1769    Xf86driGetDeviceInfo(xf86dri::GetDeviceInfoRequest),
1770    #[cfg(feature = "xf86dri")]
1771    Xf86driAuthConnection(xf86dri::AuthConnectionRequest),
1772    #[cfg(feature = "xf86vidmode")]
1773    Xf86vidmodeQueryVersion(xf86vidmode::QueryVersionRequest),
1774    #[cfg(feature = "xf86vidmode")]
1775    Xf86vidmodeGetModeLine(xf86vidmode::GetModeLineRequest),
1776    #[cfg(feature = "xf86vidmode")]
1777    Xf86vidmodeModModeLine(xf86vidmode::ModModeLineRequest<'input>),
1778    #[cfg(feature = "xf86vidmode")]
1779    Xf86vidmodeSwitchMode(xf86vidmode::SwitchModeRequest),
1780    #[cfg(feature = "xf86vidmode")]
1781    Xf86vidmodeGetMonitor(xf86vidmode::GetMonitorRequest),
1782    #[cfg(feature = "xf86vidmode")]
1783    Xf86vidmodeLockModeSwitch(xf86vidmode::LockModeSwitchRequest),
1784    #[cfg(feature = "xf86vidmode")]
1785    Xf86vidmodeGetAllModeLines(xf86vidmode::GetAllModeLinesRequest),
1786    #[cfg(feature = "xf86vidmode")]
1787    Xf86vidmodeAddModeLine(xf86vidmode::AddModeLineRequest<'input>),
1788    #[cfg(feature = "xf86vidmode")]
1789    Xf86vidmodeDeleteModeLine(xf86vidmode::DeleteModeLineRequest<'input>),
1790    #[cfg(feature = "xf86vidmode")]
1791    Xf86vidmodeValidateModeLine(xf86vidmode::ValidateModeLineRequest<'input>),
1792    #[cfg(feature = "xf86vidmode")]
1793    Xf86vidmodeSwitchToMode(xf86vidmode::SwitchToModeRequest<'input>),
1794    #[cfg(feature = "xf86vidmode")]
1795    Xf86vidmodeGetViewPort(xf86vidmode::GetViewPortRequest),
1796    #[cfg(feature = "xf86vidmode")]
1797    Xf86vidmodeSetViewPort(xf86vidmode::SetViewPortRequest),
1798    #[cfg(feature = "xf86vidmode")]
1799    Xf86vidmodeGetDotClocks(xf86vidmode::GetDotClocksRequest),
1800    #[cfg(feature = "xf86vidmode")]
1801    Xf86vidmodeSetClientVersion(xf86vidmode::SetClientVersionRequest),
1802    #[cfg(feature = "xf86vidmode")]
1803    Xf86vidmodeSetGamma(xf86vidmode::SetGammaRequest),
1804    #[cfg(feature = "xf86vidmode")]
1805    Xf86vidmodeGetGamma(xf86vidmode::GetGammaRequest),
1806    #[cfg(feature = "xf86vidmode")]
1807    Xf86vidmodeGetGammaRamp(xf86vidmode::GetGammaRampRequest),
1808    #[cfg(feature = "xf86vidmode")]
1809    Xf86vidmodeSetGammaRamp(xf86vidmode::SetGammaRampRequest<'input>),
1810    #[cfg(feature = "xf86vidmode")]
1811    Xf86vidmodeGetGammaRampSize(xf86vidmode::GetGammaRampSizeRequest),
1812    #[cfg(feature = "xf86vidmode")]
1813    Xf86vidmodeGetPermissions(xf86vidmode::GetPermissionsRequest),
1814    #[cfg(feature = "xfixes")]
1815    XfixesQueryVersion(xfixes::QueryVersionRequest),
1816    #[cfg(feature = "xfixes")]
1817    XfixesChangeSaveSet(xfixes::ChangeSaveSetRequest),
1818    #[cfg(feature = "xfixes")]
1819    XfixesSelectSelectionInput(xfixes::SelectSelectionInputRequest),
1820    #[cfg(feature = "xfixes")]
1821    XfixesSelectCursorInput(xfixes::SelectCursorInputRequest),
1822    #[cfg(feature = "xfixes")]
1823    XfixesGetCursorImage(xfixes::GetCursorImageRequest),
1824    #[cfg(feature = "xfixes")]
1825    XfixesCreateRegion(xfixes::CreateRegionRequest<'input>),
1826    #[cfg(feature = "xfixes")]
1827    XfixesCreateRegionFromBitmap(xfixes::CreateRegionFromBitmapRequest),
1828    #[cfg(feature = "xfixes")]
1829    XfixesCreateRegionFromWindow(xfixes::CreateRegionFromWindowRequest),
1830    #[cfg(feature = "xfixes")]
1831    XfixesCreateRegionFromGC(xfixes::CreateRegionFromGCRequest),
1832    #[cfg(feature = "xfixes")]
1833    XfixesCreateRegionFromPicture(xfixes::CreateRegionFromPictureRequest),
1834    #[cfg(feature = "xfixes")]
1835    XfixesDestroyRegion(xfixes::DestroyRegionRequest),
1836    #[cfg(feature = "xfixes")]
1837    XfixesSetRegion(xfixes::SetRegionRequest<'input>),
1838    #[cfg(feature = "xfixes")]
1839    XfixesCopyRegion(xfixes::CopyRegionRequest),
1840    #[cfg(feature = "xfixes")]
1841    XfixesUnionRegion(xfixes::UnionRegionRequest),
1842    #[cfg(feature = "xfixes")]
1843    XfixesIntersectRegion(xfixes::IntersectRegionRequest),
1844    #[cfg(feature = "xfixes")]
1845    XfixesSubtractRegion(xfixes::SubtractRegionRequest),
1846    #[cfg(feature = "xfixes")]
1847    XfixesInvertRegion(xfixes::InvertRegionRequest),
1848    #[cfg(feature = "xfixes")]
1849    XfixesTranslateRegion(xfixes::TranslateRegionRequest),
1850    #[cfg(feature = "xfixes")]
1851    XfixesRegionExtents(xfixes::RegionExtentsRequest),
1852    #[cfg(feature = "xfixes")]
1853    XfixesFetchRegion(xfixes::FetchRegionRequest),
1854    #[cfg(feature = "xfixes")]
1855    XfixesSetGCClipRegion(xfixes::SetGCClipRegionRequest),
1856    #[cfg(feature = "xfixes")]
1857    XfixesSetWindowShapeRegion(xfixes::SetWindowShapeRegionRequest),
1858    #[cfg(feature = "xfixes")]
1859    XfixesSetPictureClipRegion(xfixes::SetPictureClipRegionRequest),
1860    #[cfg(feature = "xfixes")]
1861    XfixesSetCursorName(xfixes::SetCursorNameRequest<'input>),
1862    #[cfg(feature = "xfixes")]
1863    XfixesGetCursorName(xfixes::GetCursorNameRequest),
1864    #[cfg(feature = "xfixes")]
1865    XfixesGetCursorImageAndName(xfixes::GetCursorImageAndNameRequest),
1866    #[cfg(feature = "xfixes")]
1867    XfixesChangeCursor(xfixes::ChangeCursorRequest),
1868    #[cfg(feature = "xfixes")]
1869    XfixesChangeCursorByName(xfixes::ChangeCursorByNameRequest<'input>),
1870    #[cfg(feature = "xfixes")]
1871    XfixesExpandRegion(xfixes::ExpandRegionRequest),
1872    #[cfg(feature = "xfixes")]
1873    XfixesHideCursor(xfixes::HideCursorRequest),
1874    #[cfg(feature = "xfixes")]
1875    XfixesShowCursor(xfixes::ShowCursorRequest),
1876    #[cfg(feature = "xfixes")]
1877    XfixesCreatePointerBarrier(xfixes::CreatePointerBarrierRequest<'input>),
1878    #[cfg(feature = "xfixes")]
1879    XfixesDeletePointerBarrier(xfixes::DeletePointerBarrierRequest),
1880    #[cfg(feature = "xfixes")]
1881    XfixesSetClientDisconnectMode(xfixes::SetClientDisconnectModeRequest),
1882    #[cfg(feature = "xfixes")]
1883    XfixesGetClientDisconnectMode(xfixes::GetClientDisconnectModeRequest),
1884    #[cfg(feature = "xinerama")]
1885    XineramaQueryVersion(xinerama::QueryVersionRequest),
1886    #[cfg(feature = "xinerama")]
1887    XineramaGetState(xinerama::GetStateRequest),
1888    #[cfg(feature = "xinerama")]
1889    XineramaGetScreenCount(xinerama::GetScreenCountRequest),
1890    #[cfg(feature = "xinerama")]
1891    XineramaGetScreenSize(xinerama::GetScreenSizeRequest),
1892    #[cfg(feature = "xinerama")]
1893    XineramaIsActive(xinerama::IsActiveRequest),
1894    #[cfg(feature = "xinerama")]
1895    XineramaQueryScreens(xinerama::QueryScreensRequest),
1896    #[cfg(feature = "xinput")]
1897    XinputGetExtensionVersion(xinput::GetExtensionVersionRequest<'input>),
1898    #[cfg(feature = "xinput")]
1899    XinputListInputDevices(xinput::ListInputDevicesRequest),
1900    #[cfg(feature = "xinput")]
1901    XinputOpenDevice(xinput::OpenDeviceRequest),
1902    #[cfg(feature = "xinput")]
1903    XinputCloseDevice(xinput::CloseDeviceRequest),
1904    #[cfg(feature = "xinput")]
1905    XinputSetDeviceMode(xinput::SetDeviceModeRequest),
1906    #[cfg(feature = "xinput")]
1907    XinputSelectExtensionEvent(xinput::SelectExtensionEventRequest<'input>),
1908    #[cfg(feature = "xinput")]
1909    XinputGetSelectedExtensionEvents(xinput::GetSelectedExtensionEventsRequest),
1910    #[cfg(feature = "xinput")]
1911    XinputChangeDeviceDontPropagateList(xinput::ChangeDeviceDontPropagateListRequest<'input>),
1912    #[cfg(feature = "xinput")]
1913    XinputGetDeviceDontPropagateList(xinput::GetDeviceDontPropagateListRequest),
1914    #[cfg(feature = "xinput")]
1915    XinputGetDeviceMotionEvents(xinput::GetDeviceMotionEventsRequest),
1916    #[cfg(feature = "xinput")]
1917    XinputChangeKeyboardDevice(xinput::ChangeKeyboardDeviceRequest),
1918    #[cfg(feature = "xinput")]
1919    XinputChangePointerDevice(xinput::ChangePointerDeviceRequest),
1920    #[cfg(feature = "xinput")]
1921    XinputGrabDevice(xinput::GrabDeviceRequest<'input>),
1922    #[cfg(feature = "xinput")]
1923    XinputUngrabDevice(xinput::UngrabDeviceRequest),
1924    #[cfg(feature = "xinput")]
1925    XinputGrabDeviceKey(xinput::GrabDeviceKeyRequest<'input>),
1926    #[cfg(feature = "xinput")]
1927    XinputUngrabDeviceKey(xinput::UngrabDeviceKeyRequest),
1928    #[cfg(feature = "xinput")]
1929    XinputGrabDeviceButton(xinput::GrabDeviceButtonRequest<'input>),
1930    #[cfg(feature = "xinput")]
1931    XinputUngrabDeviceButton(xinput::UngrabDeviceButtonRequest),
1932    #[cfg(feature = "xinput")]
1933    XinputAllowDeviceEvents(xinput::AllowDeviceEventsRequest),
1934    #[cfg(feature = "xinput")]
1935    XinputGetDeviceFocus(xinput::GetDeviceFocusRequest),
1936    #[cfg(feature = "xinput")]
1937    XinputSetDeviceFocus(xinput::SetDeviceFocusRequest),
1938    #[cfg(feature = "xinput")]
1939    XinputGetFeedbackControl(xinput::GetFeedbackControlRequest),
1940    #[cfg(feature = "xinput")]
1941    XinputChangeFeedbackControl(xinput::ChangeFeedbackControlRequest),
1942    #[cfg(feature = "xinput")]
1943    XinputGetDeviceKeyMapping(xinput::GetDeviceKeyMappingRequest),
1944    #[cfg(feature = "xinput")]
1945    XinputChangeDeviceKeyMapping(xinput::ChangeDeviceKeyMappingRequest<'input>),
1946    #[cfg(feature = "xinput")]
1947    XinputGetDeviceModifierMapping(xinput::GetDeviceModifierMappingRequest),
1948    #[cfg(feature = "xinput")]
1949    XinputSetDeviceModifierMapping(xinput::SetDeviceModifierMappingRequest<'input>),
1950    #[cfg(feature = "xinput")]
1951    XinputGetDeviceButtonMapping(xinput::GetDeviceButtonMappingRequest),
1952    #[cfg(feature = "xinput")]
1953    XinputSetDeviceButtonMapping(xinput::SetDeviceButtonMappingRequest<'input>),
1954    #[cfg(feature = "xinput")]
1955    XinputQueryDeviceState(xinput::QueryDeviceStateRequest),
1956    #[cfg(feature = "xinput")]
1957    XinputDeviceBell(xinput::DeviceBellRequest),
1958    #[cfg(feature = "xinput")]
1959    XinputSetDeviceValuators(xinput::SetDeviceValuatorsRequest<'input>),
1960    #[cfg(feature = "xinput")]
1961    XinputGetDeviceControl(xinput::GetDeviceControlRequest),
1962    #[cfg(feature = "xinput")]
1963    XinputChangeDeviceControl(xinput::ChangeDeviceControlRequest),
1964    #[cfg(feature = "xinput")]
1965    XinputListDeviceProperties(xinput::ListDevicePropertiesRequest),
1966    #[cfg(feature = "xinput")]
1967    XinputChangeDeviceProperty(xinput::ChangeDevicePropertyRequest<'input>),
1968    #[cfg(feature = "xinput")]
1969    XinputDeleteDeviceProperty(xinput::DeleteDevicePropertyRequest),
1970    #[cfg(feature = "xinput")]
1971    XinputGetDeviceProperty(xinput::GetDevicePropertyRequest),
1972    #[cfg(feature = "xinput")]
1973    XinputXIQueryPointer(xinput::XIQueryPointerRequest),
1974    #[cfg(feature = "xinput")]
1975    XinputXIWarpPointer(xinput::XIWarpPointerRequest),
1976    #[cfg(feature = "xinput")]
1977    XinputXIChangeCursor(xinput::XIChangeCursorRequest),
1978    #[cfg(feature = "xinput")]
1979    XinputXIChangeHierarchy(xinput::XIChangeHierarchyRequest<'input>),
1980    #[cfg(feature = "xinput")]
1981    XinputXISetClientPointer(xinput::XISetClientPointerRequest),
1982    #[cfg(feature = "xinput")]
1983    XinputXIGetClientPointer(xinput::XIGetClientPointerRequest),
1984    #[cfg(feature = "xinput")]
1985    XinputXISelectEvents(xinput::XISelectEventsRequest<'input>),
1986    #[cfg(feature = "xinput")]
1987    XinputXIQueryVersion(xinput::XIQueryVersionRequest),
1988    #[cfg(feature = "xinput")]
1989    XinputXIQueryDevice(xinput::XIQueryDeviceRequest),
1990    #[cfg(feature = "xinput")]
1991    XinputXISetFocus(xinput::XISetFocusRequest),
1992    #[cfg(feature = "xinput")]
1993    XinputXIGetFocus(xinput::XIGetFocusRequest),
1994    #[cfg(feature = "xinput")]
1995    XinputXIGrabDevice(xinput::XIGrabDeviceRequest<'input>),
1996    #[cfg(feature = "xinput")]
1997    XinputXIUngrabDevice(xinput::XIUngrabDeviceRequest),
1998    #[cfg(feature = "xinput")]
1999    XinputXIAllowEvents(xinput::XIAllowEventsRequest),
2000    #[cfg(feature = "xinput")]
2001    XinputXIPassiveGrabDevice(xinput::XIPassiveGrabDeviceRequest<'input>),
2002    #[cfg(feature = "xinput")]
2003    XinputXIPassiveUngrabDevice(xinput::XIPassiveUngrabDeviceRequest<'input>),
2004    #[cfg(feature = "xinput")]
2005    XinputXIListProperties(xinput::XIListPropertiesRequest),
2006    #[cfg(feature = "xinput")]
2007    XinputXIChangeProperty(xinput::XIChangePropertyRequest<'input>),
2008    #[cfg(feature = "xinput")]
2009    XinputXIDeleteProperty(xinput::XIDeletePropertyRequest),
2010    #[cfg(feature = "xinput")]
2011    XinputXIGetProperty(xinput::XIGetPropertyRequest),
2012    #[cfg(feature = "xinput")]
2013    XinputXIGetSelectedEvents(xinput::XIGetSelectedEventsRequest),
2014    #[cfg(feature = "xinput")]
2015    XinputXIBarrierReleasePointer(xinput::XIBarrierReleasePointerRequest<'input>),
2016    #[cfg(feature = "xinput")]
2017    XinputSendExtensionEvent(xinput::SendExtensionEventRequest<'input>),
2018    #[cfg(feature = "xkb")]
2019    XkbUseExtension(xkb::UseExtensionRequest),
2020    #[cfg(feature = "xkb")]
2021    XkbSelectEvents(xkb::SelectEventsRequest<'input>),
2022    #[cfg(feature = "xkb")]
2023    XkbBell(xkb::BellRequest),
2024    #[cfg(feature = "xkb")]
2025    XkbGetState(xkb::GetStateRequest),
2026    #[cfg(feature = "xkb")]
2027    XkbLatchLockState(xkb::LatchLockStateRequest),
2028    #[cfg(feature = "xkb")]
2029    XkbGetControls(xkb::GetControlsRequest),
2030    #[cfg(feature = "xkb")]
2031    XkbSetControls(xkb::SetControlsRequest<'input>),
2032    #[cfg(feature = "xkb")]
2033    XkbGetMap(xkb::GetMapRequest),
2034    #[cfg(feature = "xkb")]
2035    XkbSetMap(xkb::SetMapRequest<'input>),
2036    #[cfg(feature = "xkb")]
2037    XkbGetCompatMap(xkb::GetCompatMapRequest),
2038    #[cfg(feature = "xkb")]
2039    XkbSetCompatMap(xkb::SetCompatMapRequest<'input>),
2040    #[cfg(feature = "xkb")]
2041    XkbGetIndicatorState(xkb::GetIndicatorStateRequest),
2042    #[cfg(feature = "xkb")]
2043    XkbGetIndicatorMap(xkb::GetIndicatorMapRequest),
2044    #[cfg(feature = "xkb")]
2045    XkbSetIndicatorMap(xkb::SetIndicatorMapRequest<'input>),
2046    #[cfg(feature = "xkb")]
2047    XkbGetNamedIndicator(xkb::GetNamedIndicatorRequest),
2048    #[cfg(feature = "xkb")]
2049    XkbSetNamedIndicator(xkb::SetNamedIndicatorRequest),
2050    #[cfg(feature = "xkb")]
2051    XkbGetNames(xkb::GetNamesRequest),
2052    #[cfg(feature = "xkb")]
2053    XkbSetNames(xkb::SetNamesRequest<'input>),
2054    #[cfg(feature = "xkb")]
2055    XkbPerClientFlags(xkb::PerClientFlagsRequest),
2056    #[cfg(feature = "xkb")]
2057    XkbListComponents(xkb::ListComponentsRequest),
2058    #[cfg(feature = "xkb")]
2059    XkbGetKbdByName(xkb::GetKbdByNameRequest),
2060    #[cfg(feature = "xkb")]
2061    XkbGetDeviceInfo(xkb::GetDeviceInfoRequest),
2062    #[cfg(feature = "xkb")]
2063    XkbSetDeviceInfo(xkb::SetDeviceInfoRequest<'input>),
2064    #[cfg(feature = "xkb")]
2065    XkbSetDebuggingFlags(xkb::SetDebuggingFlagsRequest<'input>),
2066    #[cfg(feature = "xprint")]
2067    XprintPrintQueryVersion(xprint::PrintQueryVersionRequest),
2068    #[cfg(feature = "xprint")]
2069    XprintPrintGetPrinterList(xprint::PrintGetPrinterListRequest<'input>),
2070    #[cfg(feature = "xprint")]
2071    XprintPrintRehashPrinterList(xprint::PrintRehashPrinterListRequest),
2072    #[cfg(feature = "xprint")]
2073    XprintCreateContext(xprint::CreateContextRequest<'input>),
2074    #[cfg(feature = "xprint")]
2075    XprintPrintSetContext(xprint::PrintSetContextRequest),
2076    #[cfg(feature = "xprint")]
2077    XprintPrintGetContext(xprint::PrintGetContextRequest),
2078    #[cfg(feature = "xprint")]
2079    XprintPrintDestroyContext(xprint::PrintDestroyContextRequest),
2080    #[cfg(feature = "xprint")]
2081    XprintPrintGetScreenOfContext(xprint::PrintGetScreenOfContextRequest),
2082    #[cfg(feature = "xprint")]
2083    XprintPrintStartJob(xprint::PrintStartJobRequest),
2084    #[cfg(feature = "xprint")]
2085    XprintPrintEndJob(xprint::PrintEndJobRequest),
2086    #[cfg(feature = "xprint")]
2087    XprintPrintStartDoc(xprint::PrintStartDocRequest),
2088    #[cfg(feature = "xprint")]
2089    XprintPrintEndDoc(xprint::PrintEndDocRequest),
2090    #[cfg(feature = "xprint")]
2091    XprintPrintPutDocumentData(xprint::PrintPutDocumentDataRequest<'input>),
2092    #[cfg(feature = "xprint")]
2093    XprintPrintGetDocumentData(xprint::PrintGetDocumentDataRequest),
2094    #[cfg(feature = "xprint")]
2095    XprintPrintStartPage(xprint::PrintStartPageRequest),
2096    #[cfg(feature = "xprint")]
2097    XprintPrintEndPage(xprint::PrintEndPageRequest),
2098    #[cfg(feature = "xprint")]
2099    XprintPrintSelectInput(xprint::PrintSelectInputRequest),
2100    #[cfg(feature = "xprint")]
2101    XprintPrintInputSelected(xprint::PrintInputSelectedRequest),
2102    #[cfg(feature = "xprint")]
2103    XprintPrintGetAttributes(xprint::PrintGetAttributesRequest),
2104    #[cfg(feature = "xprint")]
2105    XprintPrintGetOneAttributes(xprint::PrintGetOneAttributesRequest<'input>),
2106    #[cfg(feature = "xprint")]
2107    XprintPrintSetAttributes(xprint::PrintSetAttributesRequest<'input>),
2108    #[cfg(feature = "xprint")]
2109    XprintPrintGetPageDimensions(xprint::PrintGetPageDimensionsRequest),
2110    #[cfg(feature = "xprint")]
2111    XprintPrintQueryScreens(xprint::PrintQueryScreensRequest),
2112    #[cfg(feature = "xprint")]
2113    XprintPrintSetImageResolution(xprint::PrintSetImageResolutionRequest),
2114    #[cfg(feature = "xprint")]
2115    XprintPrintGetImageResolution(xprint::PrintGetImageResolutionRequest),
2116    #[cfg(feature = "xselinux")]
2117    XselinuxQueryVersion(xselinux::QueryVersionRequest),
2118    #[cfg(feature = "xselinux")]
2119    XselinuxSetDeviceCreateContext(xselinux::SetDeviceCreateContextRequest<'input>),
2120    #[cfg(feature = "xselinux")]
2121    XselinuxGetDeviceCreateContext(xselinux::GetDeviceCreateContextRequest),
2122    #[cfg(feature = "xselinux")]
2123    XselinuxSetDeviceContext(xselinux::SetDeviceContextRequest<'input>),
2124    #[cfg(feature = "xselinux")]
2125    XselinuxGetDeviceContext(xselinux::GetDeviceContextRequest),
2126    #[cfg(feature = "xselinux")]
2127    XselinuxSetWindowCreateContext(xselinux::SetWindowCreateContextRequest<'input>),
2128    #[cfg(feature = "xselinux")]
2129    XselinuxGetWindowCreateContext(xselinux::GetWindowCreateContextRequest),
2130    #[cfg(feature = "xselinux")]
2131    XselinuxGetWindowContext(xselinux::GetWindowContextRequest),
2132    #[cfg(feature = "xselinux")]
2133    XselinuxSetPropertyCreateContext(xselinux::SetPropertyCreateContextRequest<'input>),
2134    #[cfg(feature = "xselinux")]
2135    XselinuxGetPropertyCreateContext(xselinux::GetPropertyCreateContextRequest),
2136    #[cfg(feature = "xselinux")]
2137    XselinuxSetPropertyUseContext(xselinux::SetPropertyUseContextRequest<'input>),
2138    #[cfg(feature = "xselinux")]
2139    XselinuxGetPropertyUseContext(xselinux::GetPropertyUseContextRequest),
2140    #[cfg(feature = "xselinux")]
2141    XselinuxGetPropertyContext(xselinux::GetPropertyContextRequest),
2142    #[cfg(feature = "xselinux")]
2143    XselinuxGetPropertyDataContext(xselinux::GetPropertyDataContextRequest),
2144    #[cfg(feature = "xselinux")]
2145    XselinuxListProperties(xselinux::ListPropertiesRequest),
2146    #[cfg(feature = "xselinux")]
2147    XselinuxSetSelectionCreateContext(xselinux::SetSelectionCreateContextRequest<'input>),
2148    #[cfg(feature = "xselinux")]
2149    XselinuxGetSelectionCreateContext(xselinux::GetSelectionCreateContextRequest),
2150    #[cfg(feature = "xselinux")]
2151    XselinuxSetSelectionUseContext(xselinux::SetSelectionUseContextRequest<'input>),
2152    #[cfg(feature = "xselinux")]
2153    XselinuxGetSelectionUseContext(xselinux::GetSelectionUseContextRequest),
2154    #[cfg(feature = "xselinux")]
2155    XselinuxGetSelectionContext(xselinux::GetSelectionContextRequest),
2156    #[cfg(feature = "xselinux")]
2157    XselinuxGetSelectionDataContext(xselinux::GetSelectionDataContextRequest),
2158    #[cfg(feature = "xselinux")]
2159    XselinuxListSelections(xselinux::ListSelectionsRequest),
2160    #[cfg(feature = "xselinux")]
2161    XselinuxGetClientContext(xselinux::GetClientContextRequest),
2162    #[cfg(feature = "xtest")]
2163    XtestGetVersion(xtest::GetVersionRequest),
2164    #[cfg(feature = "xtest")]
2165    XtestCompareCursor(xtest::CompareCursorRequest),
2166    #[cfg(feature = "xtest")]
2167    XtestFakeInput(xtest::FakeInputRequest),
2168    #[cfg(feature = "xtest")]
2169    XtestGrabControl(xtest::GrabControlRequest),
2170    #[cfg(feature = "xv")]
2171    XvQueryExtension(xv::QueryExtensionRequest),
2172    #[cfg(feature = "xv")]
2173    XvQueryAdaptors(xv::QueryAdaptorsRequest),
2174    #[cfg(feature = "xv")]
2175    XvQueryEncodings(xv::QueryEncodingsRequest),
2176    #[cfg(feature = "xv")]
2177    XvGrabPort(xv::GrabPortRequest),
2178    #[cfg(feature = "xv")]
2179    XvUngrabPort(xv::UngrabPortRequest),
2180    #[cfg(feature = "xv")]
2181    XvPutVideo(xv::PutVideoRequest),
2182    #[cfg(feature = "xv")]
2183    XvPutStill(xv::PutStillRequest),
2184    #[cfg(feature = "xv")]
2185    XvGetVideo(xv::GetVideoRequest),
2186    #[cfg(feature = "xv")]
2187    XvGetStill(xv::GetStillRequest),
2188    #[cfg(feature = "xv")]
2189    XvStopVideo(xv::StopVideoRequest),
2190    #[cfg(feature = "xv")]
2191    XvSelectVideoNotify(xv::SelectVideoNotifyRequest),
2192    #[cfg(feature = "xv")]
2193    XvSelectPortNotify(xv::SelectPortNotifyRequest),
2194    #[cfg(feature = "xv")]
2195    XvQueryBestSize(xv::QueryBestSizeRequest),
2196    #[cfg(feature = "xv")]
2197    XvSetPortAttribute(xv::SetPortAttributeRequest),
2198    #[cfg(feature = "xv")]
2199    XvGetPortAttribute(xv::GetPortAttributeRequest),
2200    #[cfg(feature = "xv")]
2201    XvQueryPortAttributes(xv::QueryPortAttributesRequest),
2202    #[cfg(feature = "xv")]
2203    XvListImageFormats(xv::ListImageFormatsRequest),
2204    #[cfg(feature = "xv")]
2205    XvQueryImageAttributes(xv::QueryImageAttributesRequest),
2206    #[cfg(feature = "xv")]
2207    XvPutImage(xv::PutImageRequest<'input>),
2208    #[cfg(feature = "xv")]
2209    XvShmPutImage(xv::ShmPutImageRequest),
2210    #[cfg(feature = "xvmc")]
2211    XvmcQueryVersion(xvmc::QueryVersionRequest),
2212    #[cfg(feature = "xvmc")]
2213    XvmcListSurfaceTypes(xvmc::ListSurfaceTypesRequest),
2214    #[cfg(feature = "xvmc")]
2215    XvmcCreateContext(xvmc::CreateContextRequest),
2216    #[cfg(feature = "xvmc")]
2217    XvmcDestroyContext(xvmc::DestroyContextRequest),
2218    #[cfg(feature = "xvmc")]
2219    XvmcCreateSurface(xvmc::CreateSurfaceRequest),
2220    #[cfg(feature = "xvmc")]
2221    XvmcDestroySurface(xvmc::DestroySurfaceRequest),
2222    #[cfg(feature = "xvmc")]
2223    XvmcCreateSubpicture(xvmc::CreateSubpictureRequest),
2224    #[cfg(feature = "xvmc")]
2225    XvmcDestroySubpicture(xvmc::DestroySubpictureRequest),
2226    #[cfg(feature = "xvmc")]
2227    XvmcListSubpictureTypes(xvmc::ListSubpictureTypesRequest),
2228}
2229
2230impl<'input> Request<'input> {
2231    // Parse a X11 request into a concrete type
2232    #[allow(clippy::cognitive_complexity, clippy::single_match)]
2233    #[cfg(feature = "request-parsing")]
2234    pub fn parse(
2235        header: RequestHeader,
2236        body: &'input [u8],
2237        // Might not be used if none of the extensions that use FD passing is enabled
2238        #[allow(unused_variables, clippy::ptr_arg)]
2239        fds: &mut Vec<RawFdContainer>,
2240        ext_info_provider: &dyn ExtInfoProvider,
2241    ) -> Result<Self, ParseError> {
2242        let remaining = body;
2243        // Check if this is a core protocol request.
2244        match header.major_opcode {
2245            xproto::CREATE_WINDOW_REQUEST => return Ok(Request::CreateWindow(xproto::CreateWindowRequest::try_parse_request(header, remaining)?)),
2246            xproto::CHANGE_WINDOW_ATTRIBUTES_REQUEST => return Ok(Request::ChangeWindowAttributes(xproto::ChangeWindowAttributesRequest::try_parse_request(header, remaining)?)),
2247            xproto::GET_WINDOW_ATTRIBUTES_REQUEST => return Ok(Request::GetWindowAttributes(xproto::GetWindowAttributesRequest::try_parse_request(header, remaining)?)),
2248            xproto::DESTROY_WINDOW_REQUEST => return Ok(Request::DestroyWindow(xproto::DestroyWindowRequest::try_parse_request(header, remaining)?)),
2249            xproto::DESTROY_SUBWINDOWS_REQUEST => return Ok(Request::DestroySubwindows(xproto::DestroySubwindowsRequest::try_parse_request(header, remaining)?)),
2250            xproto::CHANGE_SAVE_SET_REQUEST => return Ok(Request::ChangeSaveSet(xproto::ChangeSaveSetRequest::try_parse_request(header, remaining)?)),
2251            xproto::REPARENT_WINDOW_REQUEST => return Ok(Request::ReparentWindow(xproto::ReparentWindowRequest::try_parse_request(header, remaining)?)),
2252            xproto::MAP_WINDOW_REQUEST => return Ok(Request::MapWindow(xproto::MapWindowRequest::try_parse_request(header, remaining)?)),
2253            xproto::MAP_SUBWINDOWS_REQUEST => return Ok(Request::MapSubwindows(xproto::MapSubwindowsRequest::try_parse_request(header, remaining)?)),
2254            xproto::UNMAP_WINDOW_REQUEST => return Ok(Request::UnmapWindow(xproto::UnmapWindowRequest::try_parse_request(header, remaining)?)),
2255            xproto::UNMAP_SUBWINDOWS_REQUEST => return Ok(Request::UnmapSubwindows(xproto::UnmapSubwindowsRequest::try_parse_request(header, remaining)?)),
2256            xproto::CONFIGURE_WINDOW_REQUEST => return Ok(Request::ConfigureWindow(xproto::ConfigureWindowRequest::try_parse_request(header, remaining)?)),
2257            xproto::CIRCULATE_WINDOW_REQUEST => return Ok(Request::CirculateWindow(xproto::CirculateWindowRequest::try_parse_request(header, remaining)?)),
2258            xproto::GET_GEOMETRY_REQUEST => return Ok(Request::GetGeometry(xproto::GetGeometryRequest::try_parse_request(header, remaining)?)),
2259            xproto::QUERY_TREE_REQUEST => return Ok(Request::QueryTree(xproto::QueryTreeRequest::try_parse_request(header, remaining)?)),
2260            xproto::INTERN_ATOM_REQUEST => return Ok(Request::InternAtom(xproto::InternAtomRequest::try_parse_request(header, remaining)?)),
2261            xproto::GET_ATOM_NAME_REQUEST => return Ok(Request::GetAtomName(xproto::GetAtomNameRequest::try_parse_request(header, remaining)?)),
2262            xproto::CHANGE_PROPERTY_REQUEST => return Ok(Request::ChangeProperty(xproto::ChangePropertyRequest::try_parse_request(header, remaining)?)),
2263            xproto::DELETE_PROPERTY_REQUEST => return Ok(Request::DeleteProperty(xproto::DeletePropertyRequest::try_parse_request(header, remaining)?)),
2264            xproto::GET_PROPERTY_REQUEST => return Ok(Request::GetProperty(xproto::GetPropertyRequest::try_parse_request(header, remaining)?)),
2265            xproto::LIST_PROPERTIES_REQUEST => return Ok(Request::ListProperties(xproto::ListPropertiesRequest::try_parse_request(header, remaining)?)),
2266            xproto::SET_SELECTION_OWNER_REQUEST => return Ok(Request::SetSelectionOwner(xproto::SetSelectionOwnerRequest::try_parse_request(header, remaining)?)),
2267            xproto::GET_SELECTION_OWNER_REQUEST => return Ok(Request::GetSelectionOwner(xproto::GetSelectionOwnerRequest::try_parse_request(header, remaining)?)),
2268            xproto::CONVERT_SELECTION_REQUEST => return Ok(Request::ConvertSelection(xproto::ConvertSelectionRequest::try_parse_request(header, remaining)?)),
2269            xproto::SEND_EVENT_REQUEST => return Ok(Request::SendEvent(xproto::SendEventRequest::try_parse_request(header, remaining)?)),
2270            xproto::GRAB_POINTER_REQUEST => return Ok(Request::GrabPointer(xproto::GrabPointerRequest::try_parse_request(header, remaining)?)),
2271            xproto::UNGRAB_POINTER_REQUEST => return Ok(Request::UngrabPointer(xproto::UngrabPointerRequest::try_parse_request(header, remaining)?)),
2272            xproto::GRAB_BUTTON_REQUEST => return Ok(Request::GrabButton(xproto::GrabButtonRequest::try_parse_request(header, remaining)?)),
2273            xproto::UNGRAB_BUTTON_REQUEST => return Ok(Request::UngrabButton(xproto::UngrabButtonRequest::try_parse_request(header, remaining)?)),
2274            xproto::CHANGE_ACTIVE_POINTER_GRAB_REQUEST => return Ok(Request::ChangeActivePointerGrab(xproto::ChangeActivePointerGrabRequest::try_parse_request(header, remaining)?)),
2275            xproto::GRAB_KEYBOARD_REQUEST => return Ok(Request::GrabKeyboard(xproto::GrabKeyboardRequest::try_parse_request(header, remaining)?)),
2276            xproto::UNGRAB_KEYBOARD_REQUEST => return Ok(Request::UngrabKeyboard(xproto::UngrabKeyboardRequest::try_parse_request(header, remaining)?)),
2277            xproto::GRAB_KEY_REQUEST => return Ok(Request::GrabKey(xproto::GrabKeyRequest::try_parse_request(header, remaining)?)),
2278            xproto::UNGRAB_KEY_REQUEST => return Ok(Request::UngrabKey(xproto::UngrabKeyRequest::try_parse_request(header, remaining)?)),
2279            xproto::ALLOW_EVENTS_REQUEST => return Ok(Request::AllowEvents(xproto::AllowEventsRequest::try_parse_request(header, remaining)?)),
2280            xproto::GRAB_SERVER_REQUEST => return Ok(Request::GrabServer(xproto::GrabServerRequest::try_parse_request(header, remaining)?)),
2281            xproto::UNGRAB_SERVER_REQUEST => return Ok(Request::UngrabServer(xproto::UngrabServerRequest::try_parse_request(header, remaining)?)),
2282            xproto::QUERY_POINTER_REQUEST => return Ok(Request::QueryPointer(xproto::QueryPointerRequest::try_parse_request(header, remaining)?)),
2283            xproto::GET_MOTION_EVENTS_REQUEST => return Ok(Request::GetMotionEvents(xproto::GetMotionEventsRequest::try_parse_request(header, remaining)?)),
2284            xproto::TRANSLATE_COORDINATES_REQUEST => return Ok(Request::TranslateCoordinates(xproto::TranslateCoordinatesRequest::try_parse_request(header, remaining)?)),
2285            xproto::WARP_POINTER_REQUEST => return Ok(Request::WarpPointer(xproto::WarpPointerRequest::try_parse_request(header, remaining)?)),
2286            xproto::SET_INPUT_FOCUS_REQUEST => return Ok(Request::SetInputFocus(xproto::SetInputFocusRequest::try_parse_request(header, remaining)?)),
2287            xproto::GET_INPUT_FOCUS_REQUEST => return Ok(Request::GetInputFocus(xproto::GetInputFocusRequest::try_parse_request(header, remaining)?)),
2288            xproto::QUERY_KEYMAP_REQUEST => return Ok(Request::QueryKeymap(xproto::QueryKeymapRequest::try_parse_request(header, remaining)?)),
2289            xproto::OPEN_FONT_REQUEST => return Ok(Request::OpenFont(xproto::OpenFontRequest::try_parse_request(header, remaining)?)),
2290            xproto::CLOSE_FONT_REQUEST => return Ok(Request::CloseFont(xproto::CloseFontRequest::try_parse_request(header, remaining)?)),
2291            xproto::QUERY_FONT_REQUEST => return Ok(Request::QueryFont(xproto::QueryFontRequest::try_parse_request(header, remaining)?)),
2292            xproto::QUERY_TEXT_EXTENTS_REQUEST => return Ok(Request::QueryTextExtents(xproto::QueryTextExtentsRequest::try_parse_request(header, remaining)?)),
2293            xproto::LIST_FONTS_REQUEST => return Ok(Request::ListFonts(xproto::ListFontsRequest::try_parse_request(header, remaining)?)),
2294            xproto::LIST_FONTS_WITH_INFO_REQUEST => return Ok(Request::ListFontsWithInfo(xproto::ListFontsWithInfoRequest::try_parse_request(header, remaining)?)),
2295            xproto::SET_FONT_PATH_REQUEST => return Ok(Request::SetFontPath(xproto::SetFontPathRequest::try_parse_request(header, remaining)?)),
2296            xproto::GET_FONT_PATH_REQUEST => return Ok(Request::GetFontPath(xproto::GetFontPathRequest::try_parse_request(header, remaining)?)),
2297            xproto::CREATE_PIXMAP_REQUEST => return Ok(Request::CreatePixmap(xproto::CreatePixmapRequest::try_parse_request(header, remaining)?)),
2298            xproto::FREE_PIXMAP_REQUEST => return Ok(Request::FreePixmap(xproto::FreePixmapRequest::try_parse_request(header, remaining)?)),
2299            xproto::CREATE_GC_REQUEST => return Ok(Request::CreateGC(xproto::CreateGCRequest::try_parse_request(header, remaining)?)),
2300            xproto::CHANGE_GC_REQUEST => return Ok(Request::ChangeGC(xproto::ChangeGCRequest::try_parse_request(header, remaining)?)),
2301            xproto::COPY_GC_REQUEST => return Ok(Request::CopyGC(xproto::CopyGCRequest::try_parse_request(header, remaining)?)),
2302            xproto::SET_DASHES_REQUEST => return Ok(Request::SetDashes(xproto::SetDashesRequest::try_parse_request(header, remaining)?)),
2303            xproto::SET_CLIP_RECTANGLES_REQUEST => return Ok(Request::SetClipRectangles(xproto::SetClipRectanglesRequest::try_parse_request(header, remaining)?)),
2304            xproto::FREE_GC_REQUEST => return Ok(Request::FreeGC(xproto::FreeGCRequest::try_parse_request(header, remaining)?)),
2305            xproto::CLEAR_AREA_REQUEST => return Ok(Request::ClearArea(xproto::ClearAreaRequest::try_parse_request(header, remaining)?)),
2306            xproto::COPY_AREA_REQUEST => return Ok(Request::CopyArea(xproto::CopyAreaRequest::try_parse_request(header, remaining)?)),
2307            xproto::COPY_PLANE_REQUEST => return Ok(Request::CopyPlane(xproto::CopyPlaneRequest::try_parse_request(header, remaining)?)),
2308            xproto::POLY_POINT_REQUEST => return Ok(Request::PolyPoint(xproto::PolyPointRequest::try_parse_request(header, remaining)?)),
2309            xproto::POLY_LINE_REQUEST => return Ok(Request::PolyLine(xproto::PolyLineRequest::try_parse_request(header, remaining)?)),
2310            xproto::POLY_SEGMENT_REQUEST => return Ok(Request::PolySegment(xproto::PolySegmentRequest::try_parse_request(header, remaining)?)),
2311            xproto::POLY_RECTANGLE_REQUEST => return Ok(Request::PolyRectangle(xproto::PolyRectangleRequest::try_parse_request(header, remaining)?)),
2312            xproto::POLY_ARC_REQUEST => return Ok(Request::PolyArc(xproto::PolyArcRequest::try_parse_request(header, remaining)?)),
2313            xproto::FILL_POLY_REQUEST => return Ok(Request::FillPoly(xproto::FillPolyRequest::try_parse_request(header, remaining)?)),
2314            xproto::POLY_FILL_RECTANGLE_REQUEST => return Ok(Request::PolyFillRectangle(xproto::PolyFillRectangleRequest::try_parse_request(header, remaining)?)),
2315            xproto::POLY_FILL_ARC_REQUEST => return Ok(Request::PolyFillArc(xproto::PolyFillArcRequest::try_parse_request(header, remaining)?)),
2316            xproto::PUT_IMAGE_REQUEST => return Ok(Request::PutImage(xproto::PutImageRequest::try_parse_request(header, remaining)?)),
2317            xproto::GET_IMAGE_REQUEST => return Ok(Request::GetImage(xproto::GetImageRequest::try_parse_request(header, remaining)?)),
2318            xproto::POLY_TEXT8_REQUEST => return Ok(Request::PolyText8(xproto::PolyText8Request::try_parse_request(header, remaining)?)),
2319            xproto::POLY_TEXT16_REQUEST => return Ok(Request::PolyText16(xproto::PolyText16Request::try_parse_request(header, remaining)?)),
2320            xproto::IMAGE_TEXT8_REQUEST => return Ok(Request::ImageText8(xproto::ImageText8Request::try_parse_request(header, remaining)?)),
2321            xproto::IMAGE_TEXT16_REQUEST => return Ok(Request::ImageText16(xproto::ImageText16Request::try_parse_request(header, remaining)?)),
2322            xproto::CREATE_COLORMAP_REQUEST => return Ok(Request::CreateColormap(xproto::CreateColormapRequest::try_parse_request(header, remaining)?)),
2323            xproto::FREE_COLORMAP_REQUEST => return Ok(Request::FreeColormap(xproto::FreeColormapRequest::try_parse_request(header, remaining)?)),
2324            xproto::COPY_COLORMAP_AND_FREE_REQUEST => return Ok(Request::CopyColormapAndFree(xproto::CopyColormapAndFreeRequest::try_parse_request(header, remaining)?)),
2325            xproto::INSTALL_COLORMAP_REQUEST => return Ok(Request::InstallColormap(xproto::InstallColormapRequest::try_parse_request(header, remaining)?)),
2326            xproto::UNINSTALL_COLORMAP_REQUEST => return Ok(Request::UninstallColormap(xproto::UninstallColormapRequest::try_parse_request(header, remaining)?)),
2327            xproto::LIST_INSTALLED_COLORMAPS_REQUEST => return Ok(Request::ListInstalledColormaps(xproto::ListInstalledColormapsRequest::try_parse_request(header, remaining)?)),
2328            xproto::ALLOC_COLOR_REQUEST => return Ok(Request::AllocColor(xproto::AllocColorRequest::try_parse_request(header, remaining)?)),
2329            xproto::ALLOC_NAMED_COLOR_REQUEST => return Ok(Request::AllocNamedColor(xproto::AllocNamedColorRequest::try_parse_request(header, remaining)?)),
2330            xproto::ALLOC_COLOR_CELLS_REQUEST => return Ok(Request::AllocColorCells(xproto::AllocColorCellsRequest::try_parse_request(header, remaining)?)),
2331            xproto::ALLOC_COLOR_PLANES_REQUEST => return Ok(Request::AllocColorPlanes(xproto::AllocColorPlanesRequest::try_parse_request(header, remaining)?)),
2332            xproto::FREE_COLORS_REQUEST => return Ok(Request::FreeColors(xproto::FreeColorsRequest::try_parse_request(header, remaining)?)),
2333            xproto::STORE_COLORS_REQUEST => return Ok(Request::StoreColors(xproto::StoreColorsRequest::try_parse_request(header, remaining)?)),
2334            xproto::STORE_NAMED_COLOR_REQUEST => return Ok(Request::StoreNamedColor(xproto::StoreNamedColorRequest::try_parse_request(header, remaining)?)),
2335            xproto::QUERY_COLORS_REQUEST => return Ok(Request::QueryColors(xproto::QueryColorsRequest::try_parse_request(header, remaining)?)),
2336            xproto::LOOKUP_COLOR_REQUEST => return Ok(Request::LookupColor(xproto::LookupColorRequest::try_parse_request(header, remaining)?)),
2337            xproto::CREATE_CURSOR_REQUEST => return Ok(Request::CreateCursor(xproto::CreateCursorRequest::try_parse_request(header, remaining)?)),
2338            xproto::CREATE_GLYPH_CURSOR_REQUEST => return Ok(Request::CreateGlyphCursor(xproto::CreateGlyphCursorRequest::try_parse_request(header, remaining)?)),
2339            xproto::FREE_CURSOR_REQUEST => return Ok(Request::FreeCursor(xproto::FreeCursorRequest::try_parse_request(header, remaining)?)),
2340            xproto::RECOLOR_CURSOR_REQUEST => return Ok(Request::RecolorCursor(xproto::RecolorCursorRequest::try_parse_request(header, remaining)?)),
2341            xproto::QUERY_BEST_SIZE_REQUEST => return Ok(Request::QueryBestSize(xproto::QueryBestSizeRequest::try_parse_request(header, remaining)?)),
2342            xproto::QUERY_EXTENSION_REQUEST => return Ok(Request::QueryExtension(xproto::QueryExtensionRequest::try_parse_request(header, remaining)?)),
2343            xproto::LIST_EXTENSIONS_REQUEST => return Ok(Request::ListExtensions(xproto::ListExtensionsRequest::try_parse_request(header, remaining)?)),
2344            xproto::CHANGE_KEYBOARD_MAPPING_REQUEST => return Ok(Request::ChangeKeyboardMapping(xproto::ChangeKeyboardMappingRequest::try_parse_request(header, remaining)?)),
2345            xproto::GET_KEYBOARD_MAPPING_REQUEST => return Ok(Request::GetKeyboardMapping(xproto::GetKeyboardMappingRequest::try_parse_request(header, remaining)?)),
2346            xproto::CHANGE_KEYBOARD_CONTROL_REQUEST => return Ok(Request::ChangeKeyboardControl(xproto::ChangeKeyboardControlRequest::try_parse_request(header, remaining)?)),
2347            xproto::GET_KEYBOARD_CONTROL_REQUEST => return Ok(Request::GetKeyboardControl(xproto::GetKeyboardControlRequest::try_parse_request(header, remaining)?)),
2348            xproto::BELL_REQUEST => return Ok(Request::Bell(xproto::BellRequest::try_parse_request(header, remaining)?)),
2349            xproto::CHANGE_POINTER_CONTROL_REQUEST => return Ok(Request::ChangePointerControl(xproto::ChangePointerControlRequest::try_parse_request(header, remaining)?)),
2350            xproto::GET_POINTER_CONTROL_REQUEST => return Ok(Request::GetPointerControl(xproto::GetPointerControlRequest::try_parse_request(header, remaining)?)),
2351            xproto::SET_SCREEN_SAVER_REQUEST => return Ok(Request::SetScreenSaver(xproto::SetScreenSaverRequest::try_parse_request(header, remaining)?)),
2352            xproto::GET_SCREEN_SAVER_REQUEST => return Ok(Request::GetScreenSaver(xproto::GetScreenSaverRequest::try_parse_request(header, remaining)?)),
2353            xproto::CHANGE_HOSTS_REQUEST => return Ok(Request::ChangeHosts(xproto::ChangeHostsRequest::try_parse_request(header, remaining)?)),
2354            xproto::LIST_HOSTS_REQUEST => return Ok(Request::ListHosts(xproto::ListHostsRequest::try_parse_request(header, remaining)?)),
2355            xproto::SET_ACCESS_CONTROL_REQUEST => return Ok(Request::SetAccessControl(xproto::SetAccessControlRequest::try_parse_request(header, remaining)?)),
2356            xproto::SET_CLOSE_DOWN_MODE_REQUEST => return Ok(Request::SetCloseDownMode(xproto::SetCloseDownModeRequest::try_parse_request(header, remaining)?)),
2357            xproto::KILL_CLIENT_REQUEST => return Ok(Request::KillClient(xproto::KillClientRequest::try_parse_request(header, remaining)?)),
2358            xproto::ROTATE_PROPERTIES_REQUEST => return Ok(Request::RotateProperties(xproto::RotatePropertiesRequest::try_parse_request(header, remaining)?)),
2359            xproto::FORCE_SCREEN_SAVER_REQUEST => return Ok(Request::ForceScreenSaver(xproto::ForceScreenSaverRequest::try_parse_request(header, remaining)?)),
2360            xproto::SET_POINTER_MAPPING_REQUEST => return Ok(Request::SetPointerMapping(xproto::SetPointerMappingRequest::try_parse_request(header, remaining)?)),
2361            xproto::GET_POINTER_MAPPING_REQUEST => return Ok(Request::GetPointerMapping(xproto::GetPointerMappingRequest::try_parse_request(header, remaining)?)),
2362            xproto::SET_MODIFIER_MAPPING_REQUEST => return Ok(Request::SetModifierMapping(xproto::SetModifierMappingRequest::try_parse_request(header, remaining)?)),
2363            xproto::GET_MODIFIER_MAPPING_REQUEST => return Ok(Request::GetModifierMapping(xproto::GetModifierMappingRequest::try_parse_request(header, remaining)?)),
2364            xproto::NO_OPERATION_REQUEST => return Ok(Request::NoOperation(xproto::NoOperationRequest::try_parse_request(header, remaining)?)),
2365            _ => (),
2366        }
2367        // Find the extension that this request could belong to
2368        let ext_info = ext_info_provider.get_from_major_opcode(header.major_opcode);
2369        match ext_info {
2370            Some((bigreq::X11_EXTENSION_NAME, _)) => {
2371                match header.minor_opcode {
2372                    bigreq::ENABLE_REQUEST => return Ok(Request::BigreqEnable(bigreq::EnableRequest::try_parse_request(header, remaining)?)),
2373                    _ => (),
2374                }
2375            }
2376            #[cfg(feature = "composite")]
2377            Some((composite::X11_EXTENSION_NAME, _)) => {
2378                match header.minor_opcode {
2379                    composite::QUERY_VERSION_REQUEST => return Ok(Request::CompositeQueryVersion(composite::QueryVersionRequest::try_parse_request(header, remaining)?)),
2380                    composite::REDIRECT_WINDOW_REQUEST => return Ok(Request::CompositeRedirectWindow(composite::RedirectWindowRequest::try_parse_request(header, remaining)?)),
2381                    composite::REDIRECT_SUBWINDOWS_REQUEST => return Ok(Request::CompositeRedirectSubwindows(composite::RedirectSubwindowsRequest::try_parse_request(header, remaining)?)),
2382                    composite::UNREDIRECT_WINDOW_REQUEST => return Ok(Request::CompositeUnredirectWindow(composite::UnredirectWindowRequest::try_parse_request(header, remaining)?)),
2383                    composite::UNREDIRECT_SUBWINDOWS_REQUEST => return Ok(Request::CompositeUnredirectSubwindows(composite::UnredirectSubwindowsRequest::try_parse_request(header, remaining)?)),
2384                    composite::CREATE_REGION_FROM_BORDER_CLIP_REQUEST => return Ok(Request::CompositeCreateRegionFromBorderClip(composite::CreateRegionFromBorderClipRequest::try_parse_request(header, remaining)?)),
2385                    composite::NAME_WINDOW_PIXMAP_REQUEST => return Ok(Request::CompositeNameWindowPixmap(composite::NameWindowPixmapRequest::try_parse_request(header, remaining)?)),
2386                    composite::GET_OVERLAY_WINDOW_REQUEST => return Ok(Request::CompositeGetOverlayWindow(composite::GetOverlayWindowRequest::try_parse_request(header, remaining)?)),
2387                    composite::RELEASE_OVERLAY_WINDOW_REQUEST => return Ok(Request::CompositeReleaseOverlayWindow(composite::ReleaseOverlayWindowRequest::try_parse_request(header, remaining)?)),
2388                    _ => (),
2389                }
2390            }
2391            #[cfg(feature = "damage")]
2392            Some((damage::X11_EXTENSION_NAME, _)) => {
2393                match header.minor_opcode {
2394                    damage::QUERY_VERSION_REQUEST => return Ok(Request::DamageQueryVersion(damage::QueryVersionRequest::try_parse_request(header, remaining)?)),
2395                    damage::CREATE_REQUEST => return Ok(Request::DamageCreate(damage::CreateRequest::try_parse_request(header, remaining)?)),
2396                    damage::DESTROY_REQUEST => return Ok(Request::DamageDestroy(damage::DestroyRequest::try_parse_request(header, remaining)?)),
2397                    damage::SUBTRACT_REQUEST => return Ok(Request::DamageSubtract(damage::SubtractRequest::try_parse_request(header, remaining)?)),
2398                    damage::ADD_REQUEST => return Ok(Request::DamageAdd(damage::AddRequest::try_parse_request(header, remaining)?)),
2399                    _ => (),
2400                }
2401            }
2402            #[cfg(feature = "dbe")]
2403            Some((dbe::X11_EXTENSION_NAME, _)) => {
2404                match header.minor_opcode {
2405                    dbe::QUERY_VERSION_REQUEST => return Ok(Request::DbeQueryVersion(dbe::QueryVersionRequest::try_parse_request(header, remaining)?)),
2406                    dbe::ALLOCATE_BACK_BUFFER_REQUEST => return Ok(Request::DbeAllocateBackBuffer(dbe::AllocateBackBufferRequest::try_parse_request(header, remaining)?)),
2407                    dbe::DEALLOCATE_BACK_BUFFER_REQUEST => return Ok(Request::DbeDeallocateBackBuffer(dbe::DeallocateBackBufferRequest::try_parse_request(header, remaining)?)),
2408                    dbe::SWAP_BUFFERS_REQUEST => return Ok(Request::DbeSwapBuffers(dbe::SwapBuffersRequest::try_parse_request(header, remaining)?)),
2409                    dbe::BEGIN_IDIOM_REQUEST => return Ok(Request::DbeBeginIdiom(dbe::BeginIdiomRequest::try_parse_request(header, remaining)?)),
2410                    dbe::END_IDIOM_REQUEST => return Ok(Request::DbeEndIdiom(dbe::EndIdiomRequest::try_parse_request(header, remaining)?)),
2411                    dbe::GET_VISUAL_INFO_REQUEST => return Ok(Request::DbeGetVisualInfo(dbe::GetVisualInfoRequest::try_parse_request(header, remaining)?)),
2412                    dbe::GET_BACK_BUFFER_ATTRIBUTES_REQUEST => return Ok(Request::DbeGetBackBufferAttributes(dbe::GetBackBufferAttributesRequest::try_parse_request(header, remaining)?)),
2413                    _ => (),
2414                }
2415            }
2416            #[cfg(feature = "dpms")]
2417            Some((dpms::X11_EXTENSION_NAME, _)) => {
2418                match header.minor_opcode {
2419                    dpms::GET_VERSION_REQUEST => return Ok(Request::DpmsGetVersion(dpms::GetVersionRequest::try_parse_request(header, remaining)?)),
2420                    dpms::CAPABLE_REQUEST => return Ok(Request::DpmsCapable(dpms::CapableRequest::try_parse_request(header, remaining)?)),
2421                    dpms::GET_TIMEOUTS_REQUEST => return Ok(Request::DpmsGetTimeouts(dpms::GetTimeoutsRequest::try_parse_request(header, remaining)?)),
2422                    dpms::SET_TIMEOUTS_REQUEST => return Ok(Request::DpmsSetTimeouts(dpms::SetTimeoutsRequest::try_parse_request(header, remaining)?)),
2423                    dpms::ENABLE_REQUEST => return Ok(Request::DpmsEnable(dpms::EnableRequest::try_parse_request(header, remaining)?)),
2424                    dpms::DISABLE_REQUEST => return Ok(Request::DpmsDisable(dpms::DisableRequest::try_parse_request(header, remaining)?)),
2425                    dpms::FORCE_LEVEL_REQUEST => return Ok(Request::DpmsForceLevel(dpms::ForceLevelRequest::try_parse_request(header, remaining)?)),
2426                    dpms::INFO_REQUEST => return Ok(Request::DpmsInfo(dpms::InfoRequest::try_parse_request(header, remaining)?)),
2427                    dpms::SELECT_INPUT_REQUEST => return Ok(Request::DpmsSelectInput(dpms::SelectInputRequest::try_parse_request(header, remaining)?)),
2428                    _ => (),
2429                }
2430            }
2431            #[cfg(feature = "dri2")]
2432            Some((dri2::X11_EXTENSION_NAME, _)) => {
2433                match header.minor_opcode {
2434                    dri2::QUERY_VERSION_REQUEST => return Ok(Request::Dri2QueryVersion(dri2::QueryVersionRequest::try_parse_request(header, remaining)?)),
2435                    dri2::CONNECT_REQUEST => return Ok(Request::Dri2Connect(dri2::ConnectRequest::try_parse_request(header, remaining)?)),
2436                    dri2::AUTHENTICATE_REQUEST => return Ok(Request::Dri2Authenticate(dri2::AuthenticateRequest::try_parse_request(header, remaining)?)),
2437                    dri2::CREATE_DRAWABLE_REQUEST => return Ok(Request::Dri2CreateDrawable(dri2::CreateDrawableRequest::try_parse_request(header, remaining)?)),
2438                    dri2::DESTROY_DRAWABLE_REQUEST => return Ok(Request::Dri2DestroyDrawable(dri2::DestroyDrawableRequest::try_parse_request(header, remaining)?)),
2439                    dri2::GET_BUFFERS_REQUEST => return Ok(Request::Dri2GetBuffers(dri2::GetBuffersRequest::try_parse_request(header, remaining)?)),
2440                    dri2::COPY_REGION_REQUEST => return Ok(Request::Dri2CopyRegion(dri2::CopyRegionRequest::try_parse_request(header, remaining)?)),
2441                    dri2::GET_BUFFERS_WITH_FORMAT_REQUEST => return Ok(Request::Dri2GetBuffersWithFormat(dri2::GetBuffersWithFormatRequest::try_parse_request(header, remaining)?)),
2442                    dri2::SWAP_BUFFERS_REQUEST => return Ok(Request::Dri2SwapBuffers(dri2::SwapBuffersRequest::try_parse_request(header, remaining)?)),
2443                    dri2::GET_MSC_REQUEST => return Ok(Request::Dri2GetMSC(dri2::GetMSCRequest::try_parse_request(header, remaining)?)),
2444                    dri2::WAIT_MSC_REQUEST => return Ok(Request::Dri2WaitMSC(dri2::WaitMSCRequest::try_parse_request(header, remaining)?)),
2445                    dri2::WAIT_SBC_REQUEST => return Ok(Request::Dri2WaitSBC(dri2::WaitSBCRequest::try_parse_request(header, remaining)?)),
2446                    dri2::SWAP_INTERVAL_REQUEST => return Ok(Request::Dri2SwapInterval(dri2::SwapIntervalRequest::try_parse_request(header, remaining)?)),
2447                    dri2::GET_PARAM_REQUEST => return Ok(Request::Dri2GetParam(dri2::GetParamRequest::try_parse_request(header, remaining)?)),
2448                    _ => (),
2449                }
2450            }
2451            #[cfg(feature = "dri3")]
2452            Some((dri3::X11_EXTENSION_NAME, _)) => {
2453                match header.minor_opcode {
2454                    dri3::QUERY_VERSION_REQUEST => return Ok(Request::Dri3QueryVersion(dri3::QueryVersionRequest::try_parse_request(header, remaining)?)),
2455                    dri3::OPEN_REQUEST => return Ok(Request::Dri3Open(dri3::OpenRequest::try_parse_request(header, remaining)?)),
2456                    dri3::PIXMAP_FROM_BUFFER_REQUEST => return Ok(Request::Dri3PixmapFromBuffer(dri3::PixmapFromBufferRequest::try_parse_request_fd(header, remaining, fds)?)),
2457                    dri3::BUFFER_FROM_PIXMAP_REQUEST => return Ok(Request::Dri3BufferFromPixmap(dri3::BufferFromPixmapRequest::try_parse_request(header, remaining)?)),
2458                    dri3::FENCE_FROM_FD_REQUEST => return Ok(Request::Dri3FenceFromFD(dri3::FenceFromFDRequest::try_parse_request_fd(header, remaining, fds)?)),
2459                    dri3::FD_FROM_FENCE_REQUEST => return Ok(Request::Dri3FDFromFence(dri3::FDFromFenceRequest::try_parse_request(header, remaining)?)),
2460                    dri3::GET_SUPPORTED_MODIFIERS_REQUEST => return Ok(Request::Dri3GetSupportedModifiers(dri3::GetSupportedModifiersRequest::try_parse_request(header, remaining)?)),
2461                    dri3::PIXMAP_FROM_BUFFERS_REQUEST => return Ok(Request::Dri3PixmapFromBuffers(dri3::PixmapFromBuffersRequest::try_parse_request_fd(header, remaining, fds)?)),
2462                    dri3::BUFFERS_FROM_PIXMAP_REQUEST => return Ok(Request::Dri3BuffersFromPixmap(dri3::BuffersFromPixmapRequest::try_parse_request(header, remaining)?)),
2463                    dri3::SET_DRM_DEVICE_IN_USE_REQUEST => return Ok(Request::Dri3SetDRMDeviceInUse(dri3::SetDRMDeviceInUseRequest::try_parse_request(header, remaining)?)),
2464                    dri3::IMPORT_SYNCOBJ_REQUEST => return Ok(Request::Dri3ImportSyncobj(dri3::ImportSyncobjRequest::try_parse_request_fd(header, remaining, fds)?)),
2465                    dri3::FREE_SYNCOBJ_REQUEST => return Ok(Request::Dri3FreeSyncobj(dri3::FreeSyncobjRequest::try_parse_request(header, remaining)?)),
2466                    _ => (),
2467                }
2468            }
2469            Some((ge::X11_EXTENSION_NAME, _)) => {
2470                match header.minor_opcode {
2471                    ge::QUERY_VERSION_REQUEST => return Ok(Request::GeQueryVersion(ge::QueryVersionRequest::try_parse_request(header, remaining)?)),
2472                    _ => (),
2473                }
2474            }
2475            #[cfg(feature = "glx")]
2476            Some((glx::X11_EXTENSION_NAME, _)) => {
2477                match header.minor_opcode {
2478                    glx::RENDER_REQUEST => return Ok(Request::GlxRender(glx::RenderRequest::try_parse_request(header, remaining)?)),
2479                    glx::RENDER_LARGE_REQUEST => return Ok(Request::GlxRenderLarge(glx::RenderLargeRequest::try_parse_request(header, remaining)?)),
2480                    glx::CREATE_CONTEXT_REQUEST => return Ok(Request::GlxCreateContext(glx::CreateContextRequest::try_parse_request(header, remaining)?)),
2481                    glx::DESTROY_CONTEXT_REQUEST => return Ok(Request::GlxDestroyContext(glx::DestroyContextRequest::try_parse_request(header, remaining)?)),
2482                    glx::MAKE_CURRENT_REQUEST => return Ok(Request::GlxMakeCurrent(glx::MakeCurrentRequest::try_parse_request(header, remaining)?)),
2483                    glx::IS_DIRECT_REQUEST => return Ok(Request::GlxIsDirect(glx::IsDirectRequest::try_parse_request(header, remaining)?)),
2484                    glx::QUERY_VERSION_REQUEST => return Ok(Request::GlxQueryVersion(glx::QueryVersionRequest::try_parse_request(header, remaining)?)),
2485                    glx::WAIT_GL_REQUEST => return Ok(Request::GlxWaitGL(glx::WaitGLRequest::try_parse_request(header, remaining)?)),
2486                    glx::WAIT_X_REQUEST => return Ok(Request::GlxWaitX(glx::WaitXRequest::try_parse_request(header, remaining)?)),
2487                    glx::COPY_CONTEXT_REQUEST => return Ok(Request::GlxCopyContext(glx::CopyContextRequest::try_parse_request(header, remaining)?)),
2488                    glx::SWAP_BUFFERS_REQUEST => return Ok(Request::GlxSwapBuffers(glx::SwapBuffersRequest::try_parse_request(header, remaining)?)),
2489                    glx::USE_X_FONT_REQUEST => return Ok(Request::GlxUseXFont(glx::UseXFontRequest::try_parse_request(header, remaining)?)),
2490                    glx::CREATE_GLX_PIXMAP_REQUEST => return Ok(Request::GlxCreateGLXPixmap(glx::CreateGLXPixmapRequest::try_parse_request(header, remaining)?)),
2491                    glx::GET_VISUAL_CONFIGS_REQUEST => return Ok(Request::GlxGetVisualConfigs(glx::GetVisualConfigsRequest::try_parse_request(header, remaining)?)),
2492                    glx::DESTROY_GLX_PIXMAP_REQUEST => return Ok(Request::GlxDestroyGLXPixmap(glx::DestroyGLXPixmapRequest::try_parse_request(header, remaining)?)),
2493                    glx::VENDOR_PRIVATE_REQUEST => return Ok(Request::GlxVendorPrivate(glx::VendorPrivateRequest::try_parse_request(header, remaining)?)),
2494                    glx::VENDOR_PRIVATE_WITH_REPLY_REQUEST => return Ok(Request::GlxVendorPrivateWithReply(glx::VendorPrivateWithReplyRequest::try_parse_request(header, remaining)?)),
2495                    glx::QUERY_EXTENSIONS_STRING_REQUEST => return Ok(Request::GlxQueryExtensionsString(glx::QueryExtensionsStringRequest::try_parse_request(header, remaining)?)),
2496                    glx::QUERY_SERVER_STRING_REQUEST => return Ok(Request::GlxQueryServerString(glx::QueryServerStringRequest::try_parse_request(header, remaining)?)),
2497                    glx::CLIENT_INFO_REQUEST => return Ok(Request::GlxClientInfo(glx::ClientInfoRequest::try_parse_request(header, remaining)?)),
2498                    glx::GET_FB_CONFIGS_REQUEST => return Ok(Request::GlxGetFBConfigs(glx::GetFBConfigsRequest::try_parse_request(header, remaining)?)),
2499                    glx::CREATE_PIXMAP_REQUEST => return Ok(Request::GlxCreatePixmap(glx::CreatePixmapRequest::try_parse_request(header, remaining)?)),
2500                    glx::DESTROY_PIXMAP_REQUEST => return Ok(Request::GlxDestroyPixmap(glx::DestroyPixmapRequest::try_parse_request(header, remaining)?)),
2501                    glx::CREATE_NEW_CONTEXT_REQUEST => return Ok(Request::GlxCreateNewContext(glx::CreateNewContextRequest::try_parse_request(header, remaining)?)),
2502                    glx::QUERY_CONTEXT_REQUEST => return Ok(Request::GlxQueryContext(glx::QueryContextRequest::try_parse_request(header, remaining)?)),
2503                    glx::MAKE_CONTEXT_CURRENT_REQUEST => return Ok(Request::GlxMakeContextCurrent(glx::MakeContextCurrentRequest::try_parse_request(header, remaining)?)),
2504                    glx::CREATE_PBUFFER_REQUEST => return Ok(Request::GlxCreatePbuffer(glx::CreatePbufferRequest::try_parse_request(header, remaining)?)),
2505                    glx::DESTROY_PBUFFER_REQUEST => return Ok(Request::GlxDestroyPbuffer(glx::DestroyPbufferRequest::try_parse_request(header, remaining)?)),
2506                    glx::GET_DRAWABLE_ATTRIBUTES_REQUEST => return Ok(Request::GlxGetDrawableAttributes(glx::GetDrawableAttributesRequest::try_parse_request(header, remaining)?)),
2507                    glx::CHANGE_DRAWABLE_ATTRIBUTES_REQUEST => return Ok(Request::GlxChangeDrawableAttributes(glx::ChangeDrawableAttributesRequest::try_parse_request(header, remaining)?)),
2508                    glx::CREATE_WINDOW_REQUEST => return Ok(Request::GlxCreateWindow(glx::CreateWindowRequest::try_parse_request(header, remaining)?)),
2509                    glx::DELETE_WINDOW_REQUEST => return Ok(Request::GlxDeleteWindow(glx::DeleteWindowRequest::try_parse_request(header, remaining)?)),
2510                    glx::SET_CLIENT_INFO_ARB_REQUEST => return Ok(Request::GlxSetClientInfoARB(glx::SetClientInfoARBRequest::try_parse_request(header, remaining)?)),
2511                    glx::CREATE_CONTEXT_ATTRIBS_ARB_REQUEST => return Ok(Request::GlxCreateContextAttribsARB(glx::CreateContextAttribsARBRequest::try_parse_request(header, remaining)?)),
2512                    glx::SET_CLIENT_INFO2_ARB_REQUEST => return Ok(Request::GlxSetClientInfo2ARB(glx::SetClientInfo2ARBRequest::try_parse_request(header, remaining)?)),
2513                    glx::NEW_LIST_REQUEST => return Ok(Request::GlxNewList(glx::NewListRequest::try_parse_request(header, remaining)?)),
2514                    glx::END_LIST_REQUEST => return Ok(Request::GlxEndList(glx::EndListRequest::try_parse_request(header, remaining)?)),
2515                    glx::DELETE_LISTS_REQUEST => return Ok(Request::GlxDeleteLists(glx::DeleteListsRequest::try_parse_request(header, remaining)?)),
2516                    glx::GEN_LISTS_REQUEST => return Ok(Request::GlxGenLists(glx::GenListsRequest::try_parse_request(header, remaining)?)),
2517                    glx::FEEDBACK_BUFFER_REQUEST => return Ok(Request::GlxFeedbackBuffer(glx::FeedbackBufferRequest::try_parse_request(header, remaining)?)),
2518                    glx::SELECT_BUFFER_REQUEST => return Ok(Request::GlxSelectBuffer(glx::SelectBufferRequest::try_parse_request(header, remaining)?)),
2519                    glx::RENDER_MODE_REQUEST => return Ok(Request::GlxRenderMode(glx::RenderModeRequest::try_parse_request(header, remaining)?)),
2520                    glx::FINISH_REQUEST => return Ok(Request::GlxFinish(glx::FinishRequest::try_parse_request(header, remaining)?)),
2521                    glx::PIXEL_STOREF_REQUEST => return Ok(Request::GlxPixelStoref(glx::PixelStorefRequest::try_parse_request(header, remaining)?)),
2522                    glx::PIXEL_STOREI_REQUEST => return Ok(Request::GlxPixelStorei(glx::PixelStoreiRequest::try_parse_request(header, remaining)?)),
2523                    glx::READ_PIXELS_REQUEST => return Ok(Request::GlxReadPixels(glx::ReadPixelsRequest::try_parse_request(header, remaining)?)),
2524                    glx::GET_BOOLEANV_REQUEST => return Ok(Request::GlxGetBooleanv(glx::GetBooleanvRequest::try_parse_request(header, remaining)?)),
2525                    glx::GET_CLIP_PLANE_REQUEST => return Ok(Request::GlxGetClipPlane(glx::GetClipPlaneRequest::try_parse_request(header, remaining)?)),
2526                    glx::GET_DOUBLEV_REQUEST => return Ok(Request::GlxGetDoublev(glx::GetDoublevRequest::try_parse_request(header, remaining)?)),
2527                    glx::GET_ERROR_REQUEST => return Ok(Request::GlxGetError(glx::GetErrorRequest::try_parse_request(header, remaining)?)),
2528                    glx::GET_FLOATV_REQUEST => return Ok(Request::GlxGetFloatv(glx::GetFloatvRequest::try_parse_request(header, remaining)?)),
2529                    glx::GET_INTEGERV_REQUEST => return Ok(Request::GlxGetIntegerv(glx::GetIntegervRequest::try_parse_request(header, remaining)?)),
2530                    glx::GET_LIGHTFV_REQUEST => return Ok(Request::GlxGetLightfv(glx::GetLightfvRequest::try_parse_request(header, remaining)?)),
2531                    glx::GET_LIGHTIV_REQUEST => return Ok(Request::GlxGetLightiv(glx::GetLightivRequest::try_parse_request(header, remaining)?)),
2532                    glx::GET_MAPDV_REQUEST => return Ok(Request::GlxGetMapdv(glx::GetMapdvRequest::try_parse_request(header, remaining)?)),
2533                    glx::GET_MAPFV_REQUEST => return Ok(Request::GlxGetMapfv(glx::GetMapfvRequest::try_parse_request(header, remaining)?)),
2534                    glx::GET_MAPIV_REQUEST => return Ok(Request::GlxGetMapiv(glx::GetMapivRequest::try_parse_request(header, remaining)?)),
2535                    glx::GET_MATERIALFV_REQUEST => return Ok(Request::GlxGetMaterialfv(glx::GetMaterialfvRequest::try_parse_request(header, remaining)?)),
2536                    glx::GET_MATERIALIV_REQUEST => return Ok(Request::GlxGetMaterialiv(glx::GetMaterialivRequest::try_parse_request(header, remaining)?)),
2537                    glx::GET_PIXEL_MAPFV_REQUEST => return Ok(Request::GlxGetPixelMapfv(glx::GetPixelMapfvRequest::try_parse_request(header, remaining)?)),
2538                    glx::GET_PIXEL_MAPUIV_REQUEST => return Ok(Request::GlxGetPixelMapuiv(glx::GetPixelMapuivRequest::try_parse_request(header, remaining)?)),
2539                    glx::GET_PIXEL_MAPUSV_REQUEST => return Ok(Request::GlxGetPixelMapusv(glx::GetPixelMapusvRequest::try_parse_request(header, remaining)?)),
2540                    glx::GET_POLYGON_STIPPLE_REQUEST => return Ok(Request::GlxGetPolygonStipple(glx::GetPolygonStippleRequest::try_parse_request(header, remaining)?)),
2541                    glx::GET_STRING_REQUEST => return Ok(Request::GlxGetString(glx::GetStringRequest::try_parse_request(header, remaining)?)),
2542                    glx::GET_TEX_ENVFV_REQUEST => return Ok(Request::GlxGetTexEnvfv(glx::GetTexEnvfvRequest::try_parse_request(header, remaining)?)),
2543                    glx::GET_TEX_ENVIV_REQUEST => return Ok(Request::GlxGetTexEnviv(glx::GetTexEnvivRequest::try_parse_request(header, remaining)?)),
2544                    glx::GET_TEX_GENDV_REQUEST => return Ok(Request::GlxGetTexGendv(glx::GetTexGendvRequest::try_parse_request(header, remaining)?)),
2545                    glx::GET_TEX_GENFV_REQUEST => return Ok(Request::GlxGetTexGenfv(glx::GetTexGenfvRequest::try_parse_request(header, remaining)?)),
2546                    glx::GET_TEX_GENIV_REQUEST => return Ok(Request::GlxGetTexGeniv(glx::GetTexGenivRequest::try_parse_request(header, remaining)?)),
2547                    glx::GET_TEX_IMAGE_REQUEST => return Ok(Request::GlxGetTexImage(glx::GetTexImageRequest::try_parse_request(header, remaining)?)),
2548                    glx::GET_TEX_PARAMETERFV_REQUEST => return Ok(Request::GlxGetTexParameterfv(glx::GetTexParameterfvRequest::try_parse_request(header, remaining)?)),
2549                    glx::GET_TEX_PARAMETERIV_REQUEST => return Ok(Request::GlxGetTexParameteriv(glx::GetTexParameterivRequest::try_parse_request(header, remaining)?)),
2550                    glx::GET_TEX_LEVEL_PARAMETERFV_REQUEST => return Ok(Request::GlxGetTexLevelParameterfv(glx::GetTexLevelParameterfvRequest::try_parse_request(header, remaining)?)),
2551                    glx::GET_TEX_LEVEL_PARAMETERIV_REQUEST => return Ok(Request::GlxGetTexLevelParameteriv(glx::GetTexLevelParameterivRequest::try_parse_request(header, remaining)?)),
2552                    glx::IS_ENABLED_REQUEST => return Ok(Request::GlxIsEnabled(glx::IsEnabledRequest::try_parse_request(header, remaining)?)),
2553                    glx::IS_LIST_REQUEST => return Ok(Request::GlxIsList(glx::IsListRequest::try_parse_request(header, remaining)?)),
2554                    glx::FLUSH_REQUEST => return Ok(Request::GlxFlush(glx::FlushRequest::try_parse_request(header, remaining)?)),
2555                    glx::ARE_TEXTURES_RESIDENT_REQUEST => return Ok(Request::GlxAreTexturesResident(glx::AreTexturesResidentRequest::try_parse_request(header, remaining)?)),
2556                    glx::DELETE_TEXTURES_REQUEST => return Ok(Request::GlxDeleteTextures(glx::DeleteTexturesRequest::try_parse_request(header, remaining)?)),
2557                    glx::GEN_TEXTURES_REQUEST => return Ok(Request::GlxGenTextures(glx::GenTexturesRequest::try_parse_request(header, remaining)?)),
2558                    glx::IS_TEXTURE_REQUEST => return Ok(Request::GlxIsTexture(glx::IsTextureRequest::try_parse_request(header, remaining)?)),
2559                    glx::GET_COLOR_TABLE_REQUEST => return Ok(Request::GlxGetColorTable(glx::GetColorTableRequest::try_parse_request(header, remaining)?)),
2560                    glx::GET_COLOR_TABLE_PARAMETERFV_REQUEST => return Ok(Request::GlxGetColorTableParameterfv(glx::GetColorTableParameterfvRequest::try_parse_request(header, remaining)?)),
2561                    glx::GET_COLOR_TABLE_PARAMETERIV_REQUEST => return Ok(Request::GlxGetColorTableParameteriv(glx::GetColorTableParameterivRequest::try_parse_request(header, remaining)?)),
2562                    glx::GET_CONVOLUTION_FILTER_REQUEST => return Ok(Request::GlxGetConvolutionFilter(glx::GetConvolutionFilterRequest::try_parse_request(header, remaining)?)),
2563                    glx::GET_CONVOLUTION_PARAMETERFV_REQUEST => return Ok(Request::GlxGetConvolutionParameterfv(glx::GetConvolutionParameterfvRequest::try_parse_request(header, remaining)?)),
2564                    glx::GET_CONVOLUTION_PARAMETERIV_REQUEST => return Ok(Request::GlxGetConvolutionParameteriv(glx::GetConvolutionParameterivRequest::try_parse_request(header, remaining)?)),
2565                    glx::GET_SEPARABLE_FILTER_REQUEST => return Ok(Request::GlxGetSeparableFilter(glx::GetSeparableFilterRequest::try_parse_request(header, remaining)?)),
2566                    glx::GET_HISTOGRAM_REQUEST => return Ok(Request::GlxGetHistogram(glx::GetHistogramRequest::try_parse_request(header, remaining)?)),
2567                    glx::GET_HISTOGRAM_PARAMETERFV_REQUEST => return Ok(Request::GlxGetHistogramParameterfv(glx::GetHistogramParameterfvRequest::try_parse_request(header, remaining)?)),
2568                    glx::GET_HISTOGRAM_PARAMETERIV_REQUEST => return Ok(Request::GlxGetHistogramParameteriv(glx::GetHistogramParameterivRequest::try_parse_request(header, remaining)?)),
2569                    glx::GET_MINMAX_REQUEST => return Ok(Request::GlxGetMinmax(glx::GetMinmaxRequest::try_parse_request(header, remaining)?)),
2570                    glx::GET_MINMAX_PARAMETERFV_REQUEST => return Ok(Request::GlxGetMinmaxParameterfv(glx::GetMinmaxParameterfvRequest::try_parse_request(header, remaining)?)),
2571                    glx::GET_MINMAX_PARAMETERIV_REQUEST => return Ok(Request::GlxGetMinmaxParameteriv(glx::GetMinmaxParameterivRequest::try_parse_request(header, remaining)?)),
2572                    glx::GET_COMPRESSED_TEX_IMAGE_ARB_REQUEST => return Ok(Request::GlxGetCompressedTexImageARB(glx::GetCompressedTexImageARBRequest::try_parse_request(header, remaining)?)),
2573                    glx::DELETE_QUERIES_ARB_REQUEST => return Ok(Request::GlxDeleteQueriesARB(glx::DeleteQueriesARBRequest::try_parse_request(header, remaining)?)),
2574                    glx::GEN_QUERIES_ARB_REQUEST => return Ok(Request::GlxGenQueriesARB(glx::GenQueriesARBRequest::try_parse_request(header, remaining)?)),
2575                    glx::IS_QUERY_ARB_REQUEST => return Ok(Request::GlxIsQueryARB(glx::IsQueryARBRequest::try_parse_request(header, remaining)?)),
2576                    glx::GET_QUERYIV_ARB_REQUEST => return Ok(Request::GlxGetQueryivARB(glx::GetQueryivARBRequest::try_parse_request(header, remaining)?)),
2577                    glx::GET_QUERY_OBJECTIV_ARB_REQUEST => return Ok(Request::GlxGetQueryObjectivARB(glx::GetQueryObjectivARBRequest::try_parse_request(header, remaining)?)),
2578                    glx::GET_QUERY_OBJECTUIV_ARB_REQUEST => return Ok(Request::GlxGetQueryObjectuivARB(glx::GetQueryObjectuivARBRequest::try_parse_request(header, remaining)?)),
2579                    _ => (),
2580                }
2581            }
2582            #[cfg(feature = "present")]
2583            Some((present::X11_EXTENSION_NAME, _)) => {
2584                match header.minor_opcode {
2585                    present::QUERY_VERSION_REQUEST => return Ok(Request::PresentQueryVersion(present::QueryVersionRequest::try_parse_request(header, remaining)?)),
2586                    present::PIXMAP_REQUEST => return Ok(Request::PresentPixmap(present::PixmapRequest::try_parse_request(header, remaining)?)),
2587                    present::NOTIFY_MSC_REQUEST => return Ok(Request::PresentNotifyMSC(present::NotifyMSCRequest::try_parse_request(header, remaining)?)),
2588                    present::SELECT_INPUT_REQUEST => return Ok(Request::PresentSelectInput(present::SelectInputRequest::try_parse_request(header, remaining)?)),
2589                    present::QUERY_CAPABILITIES_REQUEST => return Ok(Request::PresentQueryCapabilities(present::QueryCapabilitiesRequest::try_parse_request(header, remaining)?)),
2590                    present::PIXMAP_SYNCED_REQUEST => return Ok(Request::PresentPixmapSynced(present::PixmapSyncedRequest::try_parse_request(header, remaining)?)),
2591                    _ => (),
2592                }
2593            }
2594            #[cfg(feature = "randr")]
2595            Some((randr::X11_EXTENSION_NAME, _)) => {
2596                match header.minor_opcode {
2597                    randr::QUERY_VERSION_REQUEST => return Ok(Request::RandrQueryVersion(randr::QueryVersionRequest::try_parse_request(header, remaining)?)),
2598                    randr::SET_SCREEN_CONFIG_REQUEST => return Ok(Request::RandrSetScreenConfig(randr::SetScreenConfigRequest::try_parse_request(header, remaining)?)),
2599                    randr::SELECT_INPUT_REQUEST => return Ok(Request::RandrSelectInput(randr::SelectInputRequest::try_parse_request(header, remaining)?)),
2600                    randr::GET_SCREEN_INFO_REQUEST => return Ok(Request::RandrGetScreenInfo(randr::GetScreenInfoRequest::try_parse_request(header, remaining)?)),
2601                    randr::GET_SCREEN_SIZE_RANGE_REQUEST => return Ok(Request::RandrGetScreenSizeRange(randr::GetScreenSizeRangeRequest::try_parse_request(header, remaining)?)),
2602                    randr::SET_SCREEN_SIZE_REQUEST => return Ok(Request::RandrSetScreenSize(randr::SetScreenSizeRequest::try_parse_request(header, remaining)?)),
2603                    randr::GET_SCREEN_RESOURCES_REQUEST => return Ok(Request::RandrGetScreenResources(randr::GetScreenResourcesRequest::try_parse_request(header, remaining)?)),
2604                    randr::GET_OUTPUT_INFO_REQUEST => return Ok(Request::RandrGetOutputInfo(randr::GetOutputInfoRequest::try_parse_request(header, remaining)?)),
2605                    randr::LIST_OUTPUT_PROPERTIES_REQUEST => return Ok(Request::RandrListOutputProperties(randr::ListOutputPropertiesRequest::try_parse_request(header, remaining)?)),
2606                    randr::QUERY_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrQueryOutputProperty(randr::QueryOutputPropertyRequest::try_parse_request(header, remaining)?)),
2607                    randr::CONFIGURE_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrConfigureOutputProperty(randr::ConfigureOutputPropertyRequest::try_parse_request(header, remaining)?)),
2608                    randr::CHANGE_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrChangeOutputProperty(randr::ChangeOutputPropertyRequest::try_parse_request(header, remaining)?)),
2609                    randr::DELETE_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrDeleteOutputProperty(randr::DeleteOutputPropertyRequest::try_parse_request(header, remaining)?)),
2610                    randr::GET_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrGetOutputProperty(randr::GetOutputPropertyRequest::try_parse_request(header, remaining)?)),
2611                    randr::CREATE_MODE_REQUEST => return Ok(Request::RandrCreateMode(randr::CreateModeRequest::try_parse_request(header, remaining)?)),
2612                    randr::DESTROY_MODE_REQUEST => return Ok(Request::RandrDestroyMode(randr::DestroyModeRequest::try_parse_request(header, remaining)?)),
2613                    randr::ADD_OUTPUT_MODE_REQUEST => return Ok(Request::RandrAddOutputMode(randr::AddOutputModeRequest::try_parse_request(header, remaining)?)),
2614                    randr::DELETE_OUTPUT_MODE_REQUEST => return Ok(Request::RandrDeleteOutputMode(randr::DeleteOutputModeRequest::try_parse_request(header, remaining)?)),
2615                    randr::GET_CRTC_INFO_REQUEST => return Ok(Request::RandrGetCrtcInfo(randr::GetCrtcInfoRequest::try_parse_request(header, remaining)?)),
2616                    randr::SET_CRTC_CONFIG_REQUEST => return Ok(Request::RandrSetCrtcConfig(randr::SetCrtcConfigRequest::try_parse_request(header, remaining)?)),
2617                    randr::GET_CRTC_GAMMA_SIZE_REQUEST => return Ok(Request::RandrGetCrtcGammaSize(randr::GetCrtcGammaSizeRequest::try_parse_request(header, remaining)?)),
2618                    randr::GET_CRTC_GAMMA_REQUEST => return Ok(Request::RandrGetCrtcGamma(randr::GetCrtcGammaRequest::try_parse_request(header, remaining)?)),
2619                    randr::SET_CRTC_GAMMA_REQUEST => return Ok(Request::RandrSetCrtcGamma(randr::SetCrtcGammaRequest::try_parse_request(header, remaining)?)),
2620                    randr::GET_SCREEN_RESOURCES_CURRENT_REQUEST => return Ok(Request::RandrGetScreenResourcesCurrent(randr::GetScreenResourcesCurrentRequest::try_parse_request(header, remaining)?)),
2621                    randr::SET_CRTC_TRANSFORM_REQUEST => return Ok(Request::RandrSetCrtcTransform(randr::SetCrtcTransformRequest::try_parse_request(header, remaining)?)),
2622                    randr::GET_CRTC_TRANSFORM_REQUEST => return Ok(Request::RandrGetCrtcTransform(randr::GetCrtcTransformRequest::try_parse_request(header, remaining)?)),
2623                    randr::GET_PANNING_REQUEST => return Ok(Request::RandrGetPanning(randr::GetPanningRequest::try_parse_request(header, remaining)?)),
2624                    randr::SET_PANNING_REQUEST => return Ok(Request::RandrSetPanning(randr::SetPanningRequest::try_parse_request(header, remaining)?)),
2625                    randr::SET_OUTPUT_PRIMARY_REQUEST => return Ok(Request::RandrSetOutputPrimary(randr::SetOutputPrimaryRequest::try_parse_request(header, remaining)?)),
2626                    randr::GET_OUTPUT_PRIMARY_REQUEST => return Ok(Request::RandrGetOutputPrimary(randr::GetOutputPrimaryRequest::try_parse_request(header, remaining)?)),
2627                    randr::GET_PROVIDERS_REQUEST => return Ok(Request::RandrGetProviders(randr::GetProvidersRequest::try_parse_request(header, remaining)?)),
2628                    randr::GET_PROVIDER_INFO_REQUEST => return Ok(Request::RandrGetProviderInfo(randr::GetProviderInfoRequest::try_parse_request(header, remaining)?)),
2629                    randr::SET_PROVIDER_OFFLOAD_SINK_REQUEST => return Ok(Request::RandrSetProviderOffloadSink(randr::SetProviderOffloadSinkRequest::try_parse_request(header, remaining)?)),
2630                    randr::SET_PROVIDER_OUTPUT_SOURCE_REQUEST => return Ok(Request::RandrSetProviderOutputSource(randr::SetProviderOutputSourceRequest::try_parse_request(header, remaining)?)),
2631                    randr::LIST_PROVIDER_PROPERTIES_REQUEST => return Ok(Request::RandrListProviderProperties(randr::ListProviderPropertiesRequest::try_parse_request(header, remaining)?)),
2632                    randr::QUERY_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrQueryProviderProperty(randr::QueryProviderPropertyRequest::try_parse_request(header, remaining)?)),
2633                    randr::CONFIGURE_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrConfigureProviderProperty(randr::ConfigureProviderPropertyRequest::try_parse_request(header, remaining)?)),
2634                    randr::CHANGE_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrChangeProviderProperty(randr::ChangeProviderPropertyRequest::try_parse_request(header, remaining)?)),
2635                    randr::DELETE_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrDeleteProviderProperty(randr::DeleteProviderPropertyRequest::try_parse_request(header, remaining)?)),
2636                    randr::GET_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrGetProviderProperty(randr::GetProviderPropertyRequest::try_parse_request(header, remaining)?)),
2637                    randr::GET_MONITORS_REQUEST => return Ok(Request::RandrGetMonitors(randr::GetMonitorsRequest::try_parse_request(header, remaining)?)),
2638                    randr::SET_MONITOR_REQUEST => return Ok(Request::RandrSetMonitor(randr::SetMonitorRequest::try_parse_request(header, remaining)?)),
2639                    randr::DELETE_MONITOR_REQUEST => return Ok(Request::RandrDeleteMonitor(randr::DeleteMonitorRequest::try_parse_request(header, remaining)?)),
2640                    randr::CREATE_LEASE_REQUEST => return Ok(Request::RandrCreateLease(randr::CreateLeaseRequest::try_parse_request(header, remaining)?)),
2641                    randr::FREE_LEASE_REQUEST => return Ok(Request::RandrFreeLease(randr::FreeLeaseRequest::try_parse_request(header, remaining)?)),
2642                    _ => (),
2643                }
2644            }
2645            #[cfg(feature = "record")]
2646            Some((record::X11_EXTENSION_NAME, _)) => {
2647                match header.minor_opcode {
2648                    record::QUERY_VERSION_REQUEST => return Ok(Request::RecordQueryVersion(record::QueryVersionRequest::try_parse_request(header, remaining)?)),
2649                    record::CREATE_CONTEXT_REQUEST => return Ok(Request::RecordCreateContext(record::CreateContextRequest::try_parse_request(header, remaining)?)),
2650                    record::REGISTER_CLIENTS_REQUEST => return Ok(Request::RecordRegisterClients(record::RegisterClientsRequest::try_parse_request(header, remaining)?)),
2651                    record::UNREGISTER_CLIENTS_REQUEST => return Ok(Request::RecordUnregisterClients(record::UnregisterClientsRequest::try_parse_request(header, remaining)?)),
2652                    record::GET_CONTEXT_REQUEST => return Ok(Request::RecordGetContext(record::GetContextRequest::try_parse_request(header, remaining)?)),
2653                    record::ENABLE_CONTEXT_REQUEST => return Ok(Request::RecordEnableContext(record::EnableContextRequest::try_parse_request(header, remaining)?)),
2654                    record::DISABLE_CONTEXT_REQUEST => return Ok(Request::RecordDisableContext(record::DisableContextRequest::try_parse_request(header, remaining)?)),
2655                    record::FREE_CONTEXT_REQUEST => return Ok(Request::RecordFreeContext(record::FreeContextRequest::try_parse_request(header, remaining)?)),
2656                    _ => (),
2657                }
2658            }
2659            #[cfg(feature = "render")]
2660            Some((render::X11_EXTENSION_NAME, _)) => {
2661                match header.minor_opcode {
2662                    render::QUERY_VERSION_REQUEST => return Ok(Request::RenderQueryVersion(render::QueryVersionRequest::try_parse_request(header, remaining)?)),
2663                    render::QUERY_PICT_FORMATS_REQUEST => return Ok(Request::RenderQueryPictFormats(render::QueryPictFormatsRequest::try_parse_request(header, remaining)?)),
2664                    render::QUERY_PICT_INDEX_VALUES_REQUEST => return Ok(Request::RenderQueryPictIndexValues(render::QueryPictIndexValuesRequest::try_parse_request(header, remaining)?)),
2665                    render::CREATE_PICTURE_REQUEST => return Ok(Request::RenderCreatePicture(render::CreatePictureRequest::try_parse_request(header, remaining)?)),
2666                    render::CHANGE_PICTURE_REQUEST => return Ok(Request::RenderChangePicture(render::ChangePictureRequest::try_parse_request(header, remaining)?)),
2667                    render::SET_PICTURE_CLIP_RECTANGLES_REQUEST => return Ok(Request::RenderSetPictureClipRectangles(render::SetPictureClipRectanglesRequest::try_parse_request(header, remaining)?)),
2668                    render::FREE_PICTURE_REQUEST => return Ok(Request::RenderFreePicture(render::FreePictureRequest::try_parse_request(header, remaining)?)),
2669                    render::COMPOSITE_REQUEST => return Ok(Request::RenderComposite(render::CompositeRequest::try_parse_request(header, remaining)?)),
2670                    render::TRAPEZOIDS_REQUEST => return Ok(Request::RenderTrapezoids(render::TrapezoidsRequest::try_parse_request(header, remaining)?)),
2671                    render::TRIANGLES_REQUEST => return Ok(Request::RenderTriangles(render::TrianglesRequest::try_parse_request(header, remaining)?)),
2672                    render::TRI_STRIP_REQUEST => return Ok(Request::RenderTriStrip(render::TriStripRequest::try_parse_request(header, remaining)?)),
2673                    render::TRI_FAN_REQUEST => return Ok(Request::RenderTriFan(render::TriFanRequest::try_parse_request(header, remaining)?)),
2674                    render::CREATE_GLYPH_SET_REQUEST => return Ok(Request::RenderCreateGlyphSet(render::CreateGlyphSetRequest::try_parse_request(header, remaining)?)),
2675                    render::REFERENCE_GLYPH_SET_REQUEST => return Ok(Request::RenderReferenceGlyphSet(render::ReferenceGlyphSetRequest::try_parse_request(header, remaining)?)),
2676                    render::FREE_GLYPH_SET_REQUEST => return Ok(Request::RenderFreeGlyphSet(render::FreeGlyphSetRequest::try_parse_request(header, remaining)?)),
2677                    render::ADD_GLYPHS_REQUEST => return Ok(Request::RenderAddGlyphs(render::AddGlyphsRequest::try_parse_request(header, remaining)?)),
2678                    render::FREE_GLYPHS_REQUEST => return Ok(Request::RenderFreeGlyphs(render::FreeGlyphsRequest::try_parse_request(header, remaining)?)),
2679                    render::COMPOSITE_GLYPHS8_REQUEST => return Ok(Request::RenderCompositeGlyphs8(render::CompositeGlyphs8Request::try_parse_request(header, remaining)?)),
2680                    render::COMPOSITE_GLYPHS16_REQUEST => return Ok(Request::RenderCompositeGlyphs16(render::CompositeGlyphs16Request::try_parse_request(header, remaining)?)),
2681                    render::COMPOSITE_GLYPHS32_REQUEST => return Ok(Request::RenderCompositeGlyphs32(render::CompositeGlyphs32Request::try_parse_request(header, remaining)?)),
2682                    render::FILL_RECTANGLES_REQUEST => return Ok(Request::RenderFillRectangles(render::FillRectanglesRequest::try_parse_request(header, remaining)?)),
2683                    render::CREATE_CURSOR_REQUEST => return Ok(Request::RenderCreateCursor(render::CreateCursorRequest::try_parse_request(header, remaining)?)),
2684                    render::SET_PICTURE_TRANSFORM_REQUEST => return Ok(Request::RenderSetPictureTransform(render::SetPictureTransformRequest::try_parse_request(header, remaining)?)),
2685                    render::QUERY_FILTERS_REQUEST => return Ok(Request::RenderQueryFilters(render::QueryFiltersRequest::try_parse_request(header, remaining)?)),
2686                    render::SET_PICTURE_FILTER_REQUEST => return Ok(Request::RenderSetPictureFilter(render::SetPictureFilterRequest::try_parse_request(header, remaining)?)),
2687                    render::CREATE_ANIM_CURSOR_REQUEST => return Ok(Request::RenderCreateAnimCursor(render::CreateAnimCursorRequest::try_parse_request(header, remaining)?)),
2688                    render::ADD_TRAPS_REQUEST => return Ok(Request::RenderAddTraps(render::AddTrapsRequest::try_parse_request(header, remaining)?)),
2689                    render::CREATE_SOLID_FILL_REQUEST => return Ok(Request::RenderCreateSolidFill(render::CreateSolidFillRequest::try_parse_request(header, remaining)?)),
2690                    render::CREATE_LINEAR_GRADIENT_REQUEST => return Ok(Request::RenderCreateLinearGradient(render::CreateLinearGradientRequest::try_parse_request(header, remaining)?)),
2691                    render::CREATE_RADIAL_GRADIENT_REQUEST => return Ok(Request::RenderCreateRadialGradient(render::CreateRadialGradientRequest::try_parse_request(header, remaining)?)),
2692                    render::CREATE_CONICAL_GRADIENT_REQUEST => return Ok(Request::RenderCreateConicalGradient(render::CreateConicalGradientRequest::try_parse_request(header, remaining)?)),
2693                    _ => (),
2694                }
2695            }
2696            #[cfg(feature = "res")]
2697            Some((res::X11_EXTENSION_NAME, _)) => {
2698                match header.minor_opcode {
2699                    res::QUERY_VERSION_REQUEST => return Ok(Request::ResQueryVersion(res::QueryVersionRequest::try_parse_request(header, remaining)?)),
2700                    res::QUERY_CLIENTS_REQUEST => return Ok(Request::ResQueryClients(res::QueryClientsRequest::try_parse_request(header, remaining)?)),
2701                    res::QUERY_CLIENT_RESOURCES_REQUEST => return Ok(Request::ResQueryClientResources(res::QueryClientResourcesRequest::try_parse_request(header, remaining)?)),
2702                    res::QUERY_CLIENT_PIXMAP_BYTES_REQUEST => return Ok(Request::ResQueryClientPixmapBytes(res::QueryClientPixmapBytesRequest::try_parse_request(header, remaining)?)),
2703                    res::QUERY_CLIENT_IDS_REQUEST => return Ok(Request::ResQueryClientIds(res::QueryClientIdsRequest::try_parse_request(header, remaining)?)),
2704                    res::QUERY_RESOURCE_BYTES_REQUEST => return Ok(Request::ResQueryResourceBytes(res::QueryResourceBytesRequest::try_parse_request(header, remaining)?)),
2705                    _ => (),
2706                }
2707            }
2708            #[cfg(feature = "screensaver")]
2709            Some((screensaver::X11_EXTENSION_NAME, _)) => {
2710                match header.minor_opcode {
2711                    screensaver::QUERY_VERSION_REQUEST => return Ok(Request::ScreensaverQueryVersion(screensaver::QueryVersionRequest::try_parse_request(header, remaining)?)),
2712                    screensaver::QUERY_INFO_REQUEST => return Ok(Request::ScreensaverQueryInfo(screensaver::QueryInfoRequest::try_parse_request(header, remaining)?)),
2713                    screensaver::SELECT_INPUT_REQUEST => return Ok(Request::ScreensaverSelectInput(screensaver::SelectInputRequest::try_parse_request(header, remaining)?)),
2714                    screensaver::SET_ATTRIBUTES_REQUEST => return Ok(Request::ScreensaverSetAttributes(screensaver::SetAttributesRequest::try_parse_request(header, remaining)?)),
2715                    screensaver::UNSET_ATTRIBUTES_REQUEST => return Ok(Request::ScreensaverUnsetAttributes(screensaver::UnsetAttributesRequest::try_parse_request(header, remaining)?)),
2716                    screensaver::SUSPEND_REQUEST => return Ok(Request::ScreensaverSuspend(screensaver::SuspendRequest::try_parse_request(header, remaining)?)),
2717                    _ => (),
2718                }
2719            }
2720            #[cfg(feature = "shape")]
2721            Some((shape::X11_EXTENSION_NAME, _)) => {
2722                match header.minor_opcode {
2723                    shape::QUERY_VERSION_REQUEST => return Ok(Request::ShapeQueryVersion(shape::QueryVersionRequest::try_parse_request(header, remaining)?)),
2724                    shape::RECTANGLES_REQUEST => return Ok(Request::ShapeRectangles(shape::RectanglesRequest::try_parse_request(header, remaining)?)),
2725                    shape::MASK_REQUEST => return Ok(Request::ShapeMask(shape::MaskRequest::try_parse_request(header, remaining)?)),
2726                    shape::COMBINE_REQUEST => return Ok(Request::ShapeCombine(shape::CombineRequest::try_parse_request(header, remaining)?)),
2727                    shape::OFFSET_REQUEST => return Ok(Request::ShapeOffset(shape::OffsetRequest::try_parse_request(header, remaining)?)),
2728                    shape::QUERY_EXTENTS_REQUEST => return Ok(Request::ShapeQueryExtents(shape::QueryExtentsRequest::try_parse_request(header, remaining)?)),
2729                    shape::SELECT_INPUT_REQUEST => return Ok(Request::ShapeSelectInput(shape::SelectInputRequest::try_parse_request(header, remaining)?)),
2730                    shape::INPUT_SELECTED_REQUEST => return Ok(Request::ShapeInputSelected(shape::InputSelectedRequest::try_parse_request(header, remaining)?)),
2731                    shape::GET_RECTANGLES_REQUEST => return Ok(Request::ShapeGetRectangles(shape::GetRectanglesRequest::try_parse_request(header, remaining)?)),
2732                    _ => (),
2733                }
2734            }
2735            #[cfg(feature = "shm")]
2736            Some((shm::X11_EXTENSION_NAME, _)) => {
2737                match header.minor_opcode {
2738                    shm::QUERY_VERSION_REQUEST => return Ok(Request::ShmQueryVersion(shm::QueryVersionRequest::try_parse_request(header, remaining)?)),
2739                    shm::ATTACH_REQUEST => return Ok(Request::ShmAttach(shm::AttachRequest::try_parse_request(header, remaining)?)),
2740                    shm::DETACH_REQUEST => return Ok(Request::ShmDetach(shm::DetachRequest::try_parse_request(header, remaining)?)),
2741                    shm::PUT_IMAGE_REQUEST => return Ok(Request::ShmPutImage(shm::PutImageRequest::try_parse_request(header, remaining)?)),
2742                    shm::GET_IMAGE_REQUEST => return Ok(Request::ShmGetImage(shm::GetImageRequest::try_parse_request(header, remaining)?)),
2743                    shm::CREATE_PIXMAP_REQUEST => return Ok(Request::ShmCreatePixmap(shm::CreatePixmapRequest::try_parse_request(header, remaining)?)),
2744                    shm::ATTACH_FD_REQUEST => return Ok(Request::ShmAttachFd(shm::AttachFdRequest::try_parse_request_fd(header, remaining, fds)?)),
2745                    shm::CREATE_SEGMENT_REQUEST => return Ok(Request::ShmCreateSegment(shm::CreateSegmentRequest::try_parse_request(header, remaining)?)),
2746                    _ => (),
2747                }
2748            }
2749            #[cfg(feature = "sync")]
2750            Some((sync::X11_EXTENSION_NAME, _)) => {
2751                match header.minor_opcode {
2752                    sync::INITIALIZE_REQUEST => return Ok(Request::SyncInitialize(sync::InitializeRequest::try_parse_request(header, remaining)?)),
2753                    sync::LIST_SYSTEM_COUNTERS_REQUEST => return Ok(Request::SyncListSystemCounters(sync::ListSystemCountersRequest::try_parse_request(header, remaining)?)),
2754                    sync::CREATE_COUNTER_REQUEST => return Ok(Request::SyncCreateCounter(sync::CreateCounterRequest::try_parse_request(header, remaining)?)),
2755                    sync::DESTROY_COUNTER_REQUEST => return Ok(Request::SyncDestroyCounter(sync::DestroyCounterRequest::try_parse_request(header, remaining)?)),
2756                    sync::QUERY_COUNTER_REQUEST => return Ok(Request::SyncQueryCounter(sync::QueryCounterRequest::try_parse_request(header, remaining)?)),
2757                    sync::AWAIT_REQUEST => return Ok(Request::SyncAwait(sync::AwaitRequest::try_parse_request(header, remaining)?)),
2758                    sync::CHANGE_COUNTER_REQUEST => return Ok(Request::SyncChangeCounter(sync::ChangeCounterRequest::try_parse_request(header, remaining)?)),
2759                    sync::SET_COUNTER_REQUEST => return Ok(Request::SyncSetCounter(sync::SetCounterRequest::try_parse_request(header, remaining)?)),
2760                    sync::CREATE_ALARM_REQUEST => return Ok(Request::SyncCreateAlarm(sync::CreateAlarmRequest::try_parse_request(header, remaining)?)),
2761                    sync::CHANGE_ALARM_REQUEST => return Ok(Request::SyncChangeAlarm(sync::ChangeAlarmRequest::try_parse_request(header, remaining)?)),
2762                    sync::DESTROY_ALARM_REQUEST => return Ok(Request::SyncDestroyAlarm(sync::DestroyAlarmRequest::try_parse_request(header, remaining)?)),
2763                    sync::QUERY_ALARM_REQUEST => return Ok(Request::SyncQueryAlarm(sync::QueryAlarmRequest::try_parse_request(header, remaining)?)),
2764                    sync::SET_PRIORITY_REQUEST => return Ok(Request::SyncSetPriority(sync::SetPriorityRequest::try_parse_request(header, remaining)?)),
2765                    sync::GET_PRIORITY_REQUEST => return Ok(Request::SyncGetPriority(sync::GetPriorityRequest::try_parse_request(header, remaining)?)),
2766                    sync::CREATE_FENCE_REQUEST => return Ok(Request::SyncCreateFence(sync::CreateFenceRequest::try_parse_request(header, remaining)?)),
2767                    sync::TRIGGER_FENCE_REQUEST => return Ok(Request::SyncTriggerFence(sync::TriggerFenceRequest::try_parse_request(header, remaining)?)),
2768                    sync::RESET_FENCE_REQUEST => return Ok(Request::SyncResetFence(sync::ResetFenceRequest::try_parse_request(header, remaining)?)),
2769                    sync::DESTROY_FENCE_REQUEST => return Ok(Request::SyncDestroyFence(sync::DestroyFenceRequest::try_parse_request(header, remaining)?)),
2770                    sync::QUERY_FENCE_REQUEST => return Ok(Request::SyncQueryFence(sync::QueryFenceRequest::try_parse_request(header, remaining)?)),
2771                    sync::AWAIT_FENCE_REQUEST => return Ok(Request::SyncAwaitFence(sync::AwaitFenceRequest::try_parse_request(header, remaining)?)),
2772                    _ => (),
2773                }
2774            }
2775            Some((xc_misc::X11_EXTENSION_NAME, _)) => {
2776                match header.minor_opcode {
2777                    xc_misc::GET_VERSION_REQUEST => return Ok(Request::XcMiscGetVersion(xc_misc::GetVersionRequest::try_parse_request(header, remaining)?)),
2778                    xc_misc::GET_XID_RANGE_REQUEST => return Ok(Request::XcMiscGetXIDRange(xc_misc::GetXIDRangeRequest::try_parse_request(header, remaining)?)),
2779                    xc_misc::GET_XID_LIST_REQUEST => return Ok(Request::XcMiscGetXIDList(xc_misc::GetXIDListRequest::try_parse_request(header, remaining)?)),
2780                    _ => (),
2781                }
2782            }
2783            #[cfg(feature = "xevie")]
2784            Some((xevie::X11_EXTENSION_NAME, _)) => {
2785                match header.minor_opcode {
2786                    xevie::QUERY_VERSION_REQUEST => return Ok(Request::XevieQueryVersion(xevie::QueryVersionRequest::try_parse_request(header, remaining)?)),
2787                    xevie::START_REQUEST => return Ok(Request::XevieStart(xevie::StartRequest::try_parse_request(header, remaining)?)),
2788                    xevie::END_REQUEST => return Ok(Request::XevieEnd(xevie::EndRequest::try_parse_request(header, remaining)?)),
2789                    xevie::SEND_REQUEST => return Ok(Request::XevieSend(xevie::SendRequest::try_parse_request(header, remaining)?)),
2790                    xevie::SELECT_INPUT_REQUEST => return Ok(Request::XevieSelectInput(xevie::SelectInputRequest::try_parse_request(header, remaining)?)),
2791                    _ => (),
2792                }
2793            }
2794            #[cfg(feature = "xf86dri")]
2795            Some((xf86dri::X11_EXTENSION_NAME, _)) => {
2796                match header.minor_opcode {
2797                    xf86dri::QUERY_VERSION_REQUEST => return Ok(Request::Xf86driQueryVersion(xf86dri::QueryVersionRequest::try_parse_request(header, remaining)?)),
2798                    xf86dri::QUERY_DIRECT_RENDERING_CAPABLE_REQUEST => return Ok(Request::Xf86driQueryDirectRenderingCapable(xf86dri::QueryDirectRenderingCapableRequest::try_parse_request(header, remaining)?)),
2799                    xf86dri::OPEN_CONNECTION_REQUEST => return Ok(Request::Xf86driOpenConnection(xf86dri::OpenConnectionRequest::try_parse_request(header, remaining)?)),
2800                    xf86dri::CLOSE_CONNECTION_REQUEST => return Ok(Request::Xf86driCloseConnection(xf86dri::CloseConnectionRequest::try_parse_request(header, remaining)?)),
2801                    xf86dri::GET_CLIENT_DRIVER_NAME_REQUEST => return Ok(Request::Xf86driGetClientDriverName(xf86dri::GetClientDriverNameRequest::try_parse_request(header, remaining)?)),
2802                    xf86dri::CREATE_CONTEXT_REQUEST => return Ok(Request::Xf86driCreateContext(xf86dri::CreateContextRequest::try_parse_request(header, remaining)?)),
2803                    xf86dri::DESTROY_CONTEXT_REQUEST => return Ok(Request::Xf86driDestroyContext(xf86dri::DestroyContextRequest::try_parse_request(header, remaining)?)),
2804                    xf86dri::CREATE_DRAWABLE_REQUEST => return Ok(Request::Xf86driCreateDrawable(xf86dri::CreateDrawableRequest::try_parse_request(header, remaining)?)),
2805                    xf86dri::DESTROY_DRAWABLE_REQUEST => return Ok(Request::Xf86driDestroyDrawable(xf86dri::DestroyDrawableRequest::try_parse_request(header, remaining)?)),
2806                    xf86dri::GET_DRAWABLE_INFO_REQUEST => return Ok(Request::Xf86driGetDrawableInfo(xf86dri::GetDrawableInfoRequest::try_parse_request(header, remaining)?)),
2807                    xf86dri::GET_DEVICE_INFO_REQUEST => return Ok(Request::Xf86driGetDeviceInfo(xf86dri::GetDeviceInfoRequest::try_parse_request(header, remaining)?)),
2808                    xf86dri::AUTH_CONNECTION_REQUEST => return Ok(Request::Xf86driAuthConnection(xf86dri::AuthConnectionRequest::try_parse_request(header, remaining)?)),
2809                    _ => (),
2810                }
2811            }
2812            #[cfg(feature = "xf86vidmode")]
2813            Some((xf86vidmode::X11_EXTENSION_NAME, _)) => {
2814                match header.minor_opcode {
2815                    xf86vidmode::QUERY_VERSION_REQUEST => return Ok(Request::Xf86vidmodeQueryVersion(xf86vidmode::QueryVersionRequest::try_parse_request(header, remaining)?)),
2816                    xf86vidmode::GET_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeGetModeLine(xf86vidmode::GetModeLineRequest::try_parse_request(header, remaining)?)),
2817                    xf86vidmode::MOD_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeModModeLine(xf86vidmode::ModModeLineRequest::try_parse_request(header, remaining)?)),
2818                    xf86vidmode::SWITCH_MODE_REQUEST => return Ok(Request::Xf86vidmodeSwitchMode(xf86vidmode::SwitchModeRequest::try_parse_request(header, remaining)?)),
2819                    xf86vidmode::GET_MONITOR_REQUEST => return Ok(Request::Xf86vidmodeGetMonitor(xf86vidmode::GetMonitorRequest::try_parse_request(header, remaining)?)),
2820                    xf86vidmode::LOCK_MODE_SWITCH_REQUEST => return Ok(Request::Xf86vidmodeLockModeSwitch(xf86vidmode::LockModeSwitchRequest::try_parse_request(header, remaining)?)),
2821                    xf86vidmode::GET_ALL_MODE_LINES_REQUEST => return Ok(Request::Xf86vidmodeGetAllModeLines(xf86vidmode::GetAllModeLinesRequest::try_parse_request(header, remaining)?)),
2822                    xf86vidmode::ADD_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeAddModeLine(xf86vidmode::AddModeLineRequest::try_parse_request(header, remaining)?)),
2823                    xf86vidmode::DELETE_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeDeleteModeLine(xf86vidmode::DeleteModeLineRequest::try_parse_request(header, remaining)?)),
2824                    xf86vidmode::VALIDATE_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeValidateModeLine(xf86vidmode::ValidateModeLineRequest::try_parse_request(header, remaining)?)),
2825                    xf86vidmode::SWITCH_TO_MODE_REQUEST => return Ok(Request::Xf86vidmodeSwitchToMode(xf86vidmode::SwitchToModeRequest::try_parse_request(header, remaining)?)),
2826                    xf86vidmode::GET_VIEW_PORT_REQUEST => return Ok(Request::Xf86vidmodeGetViewPort(xf86vidmode::GetViewPortRequest::try_parse_request(header, remaining)?)),
2827                    xf86vidmode::SET_VIEW_PORT_REQUEST => return Ok(Request::Xf86vidmodeSetViewPort(xf86vidmode::SetViewPortRequest::try_parse_request(header, remaining)?)),
2828                    xf86vidmode::GET_DOT_CLOCKS_REQUEST => return Ok(Request::Xf86vidmodeGetDotClocks(xf86vidmode::GetDotClocksRequest::try_parse_request(header, remaining)?)),
2829                    xf86vidmode::SET_CLIENT_VERSION_REQUEST => return Ok(Request::Xf86vidmodeSetClientVersion(xf86vidmode::SetClientVersionRequest::try_parse_request(header, remaining)?)),
2830                    xf86vidmode::SET_GAMMA_REQUEST => return Ok(Request::Xf86vidmodeSetGamma(xf86vidmode::SetGammaRequest::try_parse_request(header, remaining)?)),
2831                    xf86vidmode::GET_GAMMA_REQUEST => return Ok(Request::Xf86vidmodeGetGamma(xf86vidmode::GetGammaRequest::try_parse_request(header, remaining)?)),
2832                    xf86vidmode::GET_GAMMA_RAMP_REQUEST => return Ok(Request::Xf86vidmodeGetGammaRamp(xf86vidmode::GetGammaRampRequest::try_parse_request(header, remaining)?)),
2833                    xf86vidmode::SET_GAMMA_RAMP_REQUEST => return Ok(Request::Xf86vidmodeSetGammaRamp(xf86vidmode::SetGammaRampRequest::try_parse_request(header, remaining)?)),
2834                    xf86vidmode::GET_GAMMA_RAMP_SIZE_REQUEST => return Ok(Request::Xf86vidmodeGetGammaRampSize(xf86vidmode::GetGammaRampSizeRequest::try_parse_request(header, remaining)?)),
2835                    xf86vidmode::GET_PERMISSIONS_REQUEST => return Ok(Request::Xf86vidmodeGetPermissions(xf86vidmode::GetPermissionsRequest::try_parse_request(header, remaining)?)),
2836                    _ => (),
2837                }
2838            }
2839            #[cfg(feature = "xfixes")]
2840            Some((xfixes::X11_EXTENSION_NAME, _)) => {
2841                match header.minor_opcode {
2842                    xfixes::QUERY_VERSION_REQUEST => return Ok(Request::XfixesQueryVersion(xfixes::QueryVersionRequest::try_parse_request(header, remaining)?)),
2843                    xfixes::CHANGE_SAVE_SET_REQUEST => return Ok(Request::XfixesChangeSaveSet(xfixes::ChangeSaveSetRequest::try_parse_request(header, remaining)?)),
2844                    xfixes::SELECT_SELECTION_INPUT_REQUEST => return Ok(Request::XfixesSelectSelectionInput(xfixes::SelectSelectionInputRequest::try_parse_request(header, remaining)?)),
2845                    xfixes::SELECT_CURSOR_INPUT_REQUEST => return Ok(Request::XfixesSelectCursorInput(xfixes::SelectCursorInputRequest::try_parse_request(header, remaining)?)),
2846                    xfixes::GET_CURSOR_IMAGE_REQUEST => return Ok(Request::XfixesGetCursorImage(xfixes::GetCursorImageRequest::try_parse_request(header, remaining)?)),
2847                    xfixes::CREATE_REGION_REQUEST => return Ok(Request::XfixesCreateRegion(xfixes::CreateRegionRequest::try_parse_request(header, remaining)?)),
2848                    xfixes::CREATE_REGION_FROM_BITMAP_REQUEST => return Ok(Request::XfixesCreateRegionFromBitmap(xfixes::CreateRegionFromBitmapRequest::try_parse_request(header, remaining)?)),
2849                    xfixes::CREATE_REGION_FROM_WINDOW_REQUEST => return Ok(Request::XfixesCreateRegionFromWindow(xfixes::CreateRegionFromWindowRequest::try_parse_request(header, remaining)?)),
2850                    xfixes::CREATE_REGION_FROM_GC_REQUEST => return Ok(Request::XfixesCreateRegionFromGC(xfixes::CreateRegionFromGCRequest::try_parse_request(header, remaining)?)),
2851                    xfixes::CREATE_REGION_FROM_PICTURE_REQUEST => return Ok(Request::XfixesCreateRegionFromPicture(xfixes::CreateRegionFromPictureRequest::try_parse_request(header, remaining)?)),
2852                    xfixes::DESTROY_REGION_REQUEST => return Ok(Request::XfixesDestroyRegion(xfixes::DestroyRegionRequest::try_parse_request(header, remaining)?)),
2853                    xfixes::SET_REGION_REQUEST => return Ok(Request::XfixesSetRegion(xfixes::SetRegionRequest::try_parse_request(header, remaining)?)),
2854                    xfixes::COPY_REGION_REQUEST => return Ok(Request::XfixesCopyRegion(xfixes::CopyRegionRequest::try_parse_request(header, remaining)?)),
2855                    xfixes::UNION_REGION_REQUEST => return Ok(Request::XfixesUnionRegion(xfixes::UnionRegionRequest::try_parse_request(header, remaining)?)),
2856                    xfixes::INTERSECT_REGION_REQUEST => return Ok(Request::XfixesIntersectRegion(xfixes::IntersectRegionRequest::try_parse_request(header, remaining)?)),
2857                    xfixes::SUBTRACT_REGION_REQUEST => return Ok(Request::XfixesSubtractRegion(xfixes::SubtractRegionRequest::try_parse_request(header, remaining)?)),
2858                    xfixes::INVERT_REGION_REQUEST => return Ok(Request::XfixesInvertRegion(xfixes::InvertRegionRequest::try_parse_request(header, remaining)?)),
2859                    xfixes::TRANSLATE_REGION_REQUEST => return Ok(Request::XfixesTranslateRegion(xfixes::TranslateRegionRequest::try_parse_request(header, remaining)?)),
2860                    xfixes::REGION_EXTENTS_REQUEST => return Ok(Request::XfixesRegionExtents(xfixes::RegionExtentsRequest::try_parse_request(header, remaining)?)),
2861                    xfixes::FETCH_REGION_REQUEST => return Ok(Request::XfixesFetchRegion(xfixes::FetchRegionRequest::try_parse_request(header, remaining)?)),
2862                    xfixes::SET_GC_CLIP_REGION_REQUEST => return Ok(Request::XfixesSetGCClipRegion(xfixes::SetGCClipRegionRequest::try_parse_request(header, remaining)?)),
2863                    xfixes::SET_WINDOW_SHAPE_REGION_REQUEST => return Ok(Request::XfixesSetWindowShapeRegion(xfixes::SetWindowShapeRegionRequest::try_parse_request(header, remaining)?)),
2864                    xfixes::SET_PICTURE_CLIP_REGION_REQUEST => return Ok(Request::XfixesSetPictureClipRegion(xfixes::SetPictureClipRegionRequest::try_parse_request(header, remaining)?)),
2865                    xfixes::SET_CURSOR_NAME_REQUEST => return Ok(Request::XfixesSetCursorName(xfixes::SetCursorNameRequest::try_parse_request(header, remaining)?)),
2866                    xfixes::GET_CURSOR_NAME_REQUEST => return Ok(Request::XfixesGetCursorName(xfixes::GetCursorNameRequest::try_parse_request(header, remaining)?)),
2867                    xfixes::GET_CURSOR_IMAGE_AND_NAME_REQUEST => return Ok(Request::XfixesGetCursorImageAndName(xfixes::GetCursorImageAndNameRequest::try_parse_request(header, remaining)?)),
2868                    xfixes::CHANGE_CURSOR_REQUEST => return Ok(Request::XfixesChangeCursor(xfixes::ChangeCursorRequest::try_parse_request(header, remaining)?)),
2869                    xfixes::CHANGE_CURSOR_BY_NAME_REQUEST => return Ok(Request::XfixesChangeCursorByName(xfixes::ChangeCursorByNameRequest::try_parse_request(header, remaining)?)),
2870                    xfixes::EXPAND_REGION_REQUEST => return Ok(Request::XfixesExpandRegion(xfixes::ExpandRegionRequest::try_parse_request(header, remaining)?)),
2871                    xfixes::HIDE_CURSOR_REQUEST => return Ok(Request::XfixesHideCursor(xfixes::HideCursorRequest::try_parse_request(header, remaining)?)),
2872                    xfixes::SHOW_CURSOR_REQUEST => return Ok(Request::XfixesShowCursor(xfixes::ShowCursorRequest::try_parse_request(header, remaining)?)),
2873                    xfixes::CREATE_POINTER_BARRIER_REQUEST => return Ok(Request::XfixesCreatePointerBarrier(xfixes::CreatePointerBarrierRequest::try_parse_request(header, remaining)?)),
2874                    xfixes::DELETE_POINTER_BARRIER_REQUEST => return Ok(Request::XfixesDeletePointerBarrier(xfixes::DeletePointerBarrierRequest::try_parse_request(header, remaining)?)),
2875                    xfixes::SET_CLIENT_DISCONNECT_MODE_REQUEST => return Ok(Request::XfixesSetClientDisconnectMode(xfixes::SetClientDisconnectModeRequest::try_parse_request(header, remaining)?)),
2876                    xfixes::GET_CLIENT_DISCONNECT_MODE_REQUEST => return Ok(Request::XfixesGetClientDisconnectMode(xfixes::GetClientDisconnectModeRequest::try_parse_request(header, remaining)?)),
2877                    _ => (),
2878                }
2879            }
2880            #[cfg(feature = "xinerama")]
2881            Some((xinerama::X11_EXTENSION_NAME, _)) => {
2882                match header.minor_opcode {
2883                    xinerama::QUERY_VERSION_REQUEST => return Ok(Request::XineramaQueryVersion(xinerama::QueryVersionRequest::try_parse_request(header, remaining)?)),
2884                    xinerama::GET_STATE_REQUEST => return Ok(Request::XineramaGetState(xinerama::GetStateRequest::try_parse_request(header, remaining)?)),
2885                    xinerama::GET_SCREEN_COUNT_REQUEST => return Ok(Request::XineramaGetScreenCount(xinerama::GetScreenCountRequest::try_parse_request(header, remaining)?)),
2886                    xinerama::GET_SCREEN_SIZE_REQUEST => return Ok(Request::XineramaGetScreenSize(xinerama::GetScreenSizeRequest::try_parse_request(header, remaining)?)),
2887                    xinerama::IS_ACTIVE_REQUEST => return Ok(Request::XineramaIsActive(xinerama::IsActiveRequest::try_parse_request(header, remaining)?)),
2888                    xinerama::QUERY_SCREENS_REQUEST => return Ok(Request::XineramaQueryScreens(xinerama::QueryScreensRequest::try_parse_request(header, remaining)?)),
2889                    _ => (),
2890                }
2891            }
2892            #[cfg(feature = "xinput")]
2893            Some((xinput::X11_EXTENSION_NAME, _)) => {
2894                match header.minor_opcode {
2895                    xinput::GET_EXTENSION_VERSION_REQUEST => return Ok(Request::XinputGetExtensionVersion(xinput::GetExtensionVersionRequest::try_parse_request(header, remaining)?)),
2896                    xinput::LIST_INPUT_DEVICES_REQUEST => return Ok(Request::XinputListInputDevices(xinput::ListInputDevicesRequest::try_parse_request(header, remaining)?)),
2897                    xinput::OPEN_DEVICE_REQUEST => return Ok(Request::XinputOpenDevice(xinput::OpenDeviceRequest::try_parse_request(header, remaining)?)),
2898                    xinput::CLOSE_DEVICE_REQUEST => return Ok(Request::XinputCloseDevice(xinput::CloseDeviceRequest::try_parse_request(header, remaining)?)),
2899                    xinput::SET_DEVICE_MODE_REQUEST => return Ok(Request::XinputSetDeviceMode(xinput::SetDeviceModeRequest::try_parse_request(header, remaining)?)),
2900                    xinput::SELECT_EXTENSION_EVENT_REQUEST => return Ok(Request::XinputSelectExtensionEvent(xinput::SelectExtensionEventRequest::try_parse_request(header, remaining)?)),
2901                    xinput::GET_SELECTED_EXTENSION_EVENTS_REQUEST => return Ok(Request::XinputGetSelectedExtensionEvents(xinput::GetSelectedExtensionEventsRequest::try_parse_request(header, remaining)?)),
2902                    xinput::CHANGE_DEVICE_DONT_PROPAGATE_LIST_REQUEST => return Ok(Request::XinputChangeDeviceDontPropagateList(xinput::ChangeDeviceDontPropagateListRequest::try_parse_request(header, remaining)?)),
2903                    xinput::GET_DEVICE_DONT_PROPAGATE_LIST_REQUEST => return Ok(Request::XinputGetDeviceDontPropagateList(xinput::GetDeviceDontPropagateListRequest::try_parse_request(header, remaining)?)),
2904                    xinput::GET_DEVICE_MOTION_EVENTS_REQUEST => return Ok(Request::XinputGetDeviceMotionEvents(xinput::GetDeviceMotionEventsRequest::try_parse_request(header, remaining)?)),
2905                    xinput::CHANGE_KEYBOARD_DEVICE_REQUEST => return Ok(Request::XinputChangeKeyboardDevice(xinput::ChangeKeyboardDeviceRequest::try_parse_request(header, remaining)?)),
2906                    xinput::CHANGE_POINTER_DEVICE_REQUEST => return Ok(Request::XinputChangePointerDevice(xinput::ChangePointerDeviceRequest::try_parse_request(header, remaining)?)),
2907                    xinput::GRAB_DEVICE_REQUEST => return Ok(Request::XinputGrabDevice(xinput::GrabDeviceRequest::try_parse_request(header, remaining)?)),
2908                    xinput::UNGRAB_DEVICE_REQUEST => return Ok(Request::XinputUngrabDevice(xinput::UngrabDeviceRequest::try_parse_request(header, remaining)?)),
2909                    xinput::GRAB_DEVICE_KEY_REQUEST => return Ok(Request::XinputGrabDeviceKey(xinput::GrabDeviceKeyRequest::try_parse_request(header, remaining)?)),
2910                    xinput::UNGRAB_DEVICE_KEY_REQUEST => return Ok(Request::XinputUngrabDeviceKey(xinput::UngrabDeviceKeyRequest::try_parse_request(header, remaining)?)),
2911                    xinput::GRAB_DEVICE_BUTTON_REQUEST => return Ok(Request::XinputGrabDeviceButton(xinput::GrabDeviceButtonRequest::try_parse_request(header, remaining)?)),
2912                    xinput::UNGRAB_DEVICE_BUTTON_REQUEST => return Ok(Request::XinputUngrabDeviceButton(xinput::UngrabDeviceButtonRequest::try_parse_request(header, remaining)?)),
2913                    xinput::ALLOW_DEVICE_EVENTS_REQUEST => return Ok(Request::XinputAllowDeviceEvents(xinput::AllowDeviceEventsRequest::try_parse_request(header, remaining)?)),
2914                    xinput::GET_DEVICE_FOCUS_REQUEST => return Ok(Request::XinputGetDeviceFocus(xinput::GetDeviceFocusRequest::try_parse_request(header, remaining)?)),
2915                    xinput::SET_DEVICE_FOCUS_REQUEST => return Ok(Request::XinputSetDeviceFocus(xinput::SetDeviceFocusRequest::try_parse_request(header, remaining)?)),
2916                    xinput::GET_FEEDBACK_CONTROL_REQUEST => return Ok(Request::XinputGetFeedbackControl(xinput::GetFeedbackControlRequest::try_parse_request(header, remaining)?)),
2917                    xinput::CHANGE_FEEDBACK_CONTROL_REQUEST => return Ok(Request::XinputChangeFeedbackControl(xinput::ChangeFeedbackControlRequest::try_parse_request(header, remaining)?)),
2918                    xinput::GET_DEVICE_KEY_MAPPING_REQUEST => return Ok(Request::XinputGetDeviceKeyMapping(xinput::GetDeviceKeyMappingRequest::try_parse_request(header, remaining)?)),
2919                    xinput::CHANGE_DEVICE_KEY_MAPPING_REQUEST => return Ok(Request::XinputChangeDeviceKeyMapping(xinput::ChangeDeviceKeyMappingRequest::try_parse_request(header, remaining)?)),
2920                    xinput::GET_DEVICE_MODIFIER_MAPPING_REQUEST => return Ok(Request::XinputGetDeviceModifierMapping(xinput::GetDeviceModifierMappingRequest::try_parse_request(header, remaining)?)),
2921                    xinput::SET_DEVICE_MODIFIER_MAPPING_REQUEST => return Ok(Request::XinputSetDeviceModifierMapping(xinput::SetDeviceModifierMappingRequest::try_parse_request(header, remaining)?)),
2922                    xinput::GET_DEVICE_BUTTON_MAPPING_REQUEST => return Ok(Request::XinputGetDeviceButtonMapping(xinput::GetDeviceButtonMappingRequest::try_parse_request(header, remaining)?)),
2923                    xinput::SET_DEVICE_BUTTON_MAPPING_REQUEST => return Ok(Request::XinputSetDeviceButtonMapping(xinput::SetDeviceButtonMappingRequest::try_parse_request(header, remaining)?)),
2924                    xinput::QUERY_DEVICE_STATE_REQUEST => return Ok(Request::XinputQueryDeviceState(xinput::QueryDeviceStateRequest::try_parse_request(header, remaining)?)),
2925                    xinput::DEVICE_BELL_REQUEST => return Ok(Request::XinputDeviceBell(xinput::DeviceBellRequest::try_parse_request(header, remaining)?)),
2926                    xinput::SET_DEVICE_VALUATORS_REQUEST => return Ok(Request::XinputSetDeviceValuators(xinput::SetDeviceValuatorsRequest::try_parse_request(header, remaining)?)),
2927                    xinput::GET_DEVICE_CONTROL_REQUEST => return Ok(Request::XinputGetDeviceControl(xinput::GetDeviceControlRequest::try_parse_request(header, remaining)?)),
2928                    xinput::CHANGE_DEVICE_CONTROL_REQUEST => return Ok(Request::XinputChangeDeviceControl(xinput::ChangeDeviceControlRequest::try_parse_request(header, remaining)?)),
2929                    xinput::LIST_DEVICE_PROPERTIES_REQUEST => return Ok(Request::XinputListDeviceProperties(xinput::ListDevicePropertiesRequest::try_parse_request(header, remaining)?)),
2930                    xinput::CHANGE_DEVICE_PROPERTY_REQUEST => return Ok(Request::XinputChangeDeviceProperty(xinput::ChangeDevicePropertyRequest::try_parse_request(header, remaining)?)),
2931                    xinput::DELETE_DEVICE_PROPERTY_REQUEST => return Ok(Request::XinputDeleteDeviceProperty(xinput::DeleteDevicePropertyRequest::try_parse_request(header, remaining)?)),
2932                    xinput::GET_DEVICE_PROPERTY_REQUEST => return Ok(Request::XinputGetDeviceProperty(xinput::GetDevicePropertyRequest::try_parse_request(header, remaining)?)),
2933                    xinput::XI_QUERY_POINTER_REQUEST => return Ok(Request::XinputXIQueryPointer(xinput::XIQueryPointerRequest::try_parse_request(header, remaining)?)),
2934                    xinput::XI_WARP_POINTER_REQUEST => return Ok(Request::XinputXIWarpPointer(xinput::XIWarpPointerRequest::try_parse_request(header, remaining)?)),
2935                    xinput::XI_CHANGE_CURSOR_REQUEST => return Ok(Request::XinputXIChangeCursor(xinput::XIChangeCursorRequest::try_parse_request(header, remaining)?)),
2936                    xinput::XI_CHANGE_HIERARCHY_REQUEST => return Ok(Request::XinputXIChangeHierarchy(xinput::XIChangeHierarchyRequest::try_parse_request(header, remaining)?)),
2937                    xinput::XI_SET_CLIENT_POINTER_REQUEST => return Ok(Request::XinputXISetClientPointer(xinput::XISetClientPointerRequest::try_parse_request(header, remaining)?)),
2938                    xinput::XI_GET_CLIENT_POINTER_REQUEST => return Ok(Request::XinputXIGetClientPointer(xinput::XIGetClientPointerRequest::try_parse_request(header, remaining)?)),
2939                    xinput::XI_SELECT_EVENTS_REQUEST => return Ok(Request::XinputXISelectEvents(xinput::XISelectEventsRequest::try_parse_request(header, remaining)?)),
2940                    xinput::XI_QUERY_VERSION_REQUEST => return Ok(Request::XinputXIQueryVersion(xinput::XIQueryVersionRequest::try_parse_request(header, remaining)?)),
2941                    xinput::XI_QUERY_DEVICE_REQUEST => return Ok(Request::XinputXIQueryDevice(xinput::XIQueryDeviceRequest::try_parse_request(header, remaining)?)),
2942                    xinput::XI_SET_FOCUS_REQUEST => return Ok(Request::XinputXISetFocus(xinput::XISetFocusRequest::try_parse_request(header, remaining)?)),
2943                    xinput::XI_GET_FOCUS_REQUEST => return Ok(Request::XinputXIGetFocus(xinput::XIGetFocusRequest::try_parse_request(header, remaining)?)),
2944                    xinput::XI_GRAB_DEVICE_REQUEST => return Ok(Request::XinputXIGrabDevice(xinput::XIGrabDeviceRequest::try_parse_request(header, remaining)?)),
2945                    xinput::XI_UNGRAB_DEVICE_REQUEST => return Ok(Request::XinputXIUngrabDevice(xinput::XIUngrabDeviceRequest::try_parse_request(header, remaining)?)),
2946                    xinput::XI_ALLOW_EVENTS_REQUEST => return Ok(Request::XinputXIAllowEvents(xinput::XIAllowEventsRequest::try_parse_request(header, remaining)?)),
2947                    xinput::XI_PASSIVE_GRAB_DEVICE_REQUEST => return Ok(Request::XinputXIPassiveGrabDevice(xinput::XIPassiveGrabDeviceRequest::try_parse_request(header, remaining)?)),
2948                    xinput::XI_PASSIVE_UNGRAB_DEVICE_REQUEST => return Ok(Request::XinputXIPassiveUngrabDevice(xinput::XIPassiveUngrabDeviceRequest::try_parse_request(header, remaining)?)),
2949                    xinput::XI_LIST_PROPERTIES_REQUEST => return Ok(Request::XinputXIListProperties(xinput::XIListPropertiesRequest::try_parse_request(header, remaining)?)),
2950                    xinput::XI_CHANGE_PROPERTY_REQUEST => return Ok(Request::XinputXIChangeProperty(xinput::XIChangePropertyRequest::try_parse_request(header, remaining)?)),
2951                    xinput::XI_DELETE_PROPERTY_REQUEST => return Ok(Request::XinputXIDeleteProperty(xinput::XIDeletePropertyRequest::try_parse_request(header, remaining)?)),
2952                    xinput::XI_GET_PROPERTY_REQUEST => return Ok(Request::XinputXIGetProperty(xinput::XIGetPropertyRequest::try_parse_request(header, remaining)?)),
2953                    xinput::XI_GET_SELECTED_EVENTS_REQUEST => return Ok(Request::XinputXIGetSelectedEvents(xinput::XIGetSelectedEventsRequest::try_parse_request(header, remaining)?)),
2954                    xinput::XI_BARRIER_RELEASE_POINTER_REQUEST => return Ok(Request::XinputXIBarrierReleasePointer(xinput::XIBarrierReleasePointerRequest::try_parse_request(header, remaining)?)),
2955                    xinput::SEND_EXTENSION_EVENT_REQUEST => return Ok(Request::XinputSendExtensionEvent(xinput::SendExtensionEventRequest::try_parse_request(header, remaining)?)),
2956                    _ => (),
2957                }
2958            }
2959            #[cfg(feature = "xkb")]
2960            Some((xkb::X11_EXTENSION_NAME, _)) => {
2961                match header.minor_opcode {
2962                    xkb::USE_EXTENSION_REQUEST => return Ok(Request::XkbUseExtension(xkb::UseExtensionRequest::try_parse_request(header, remaining)?)),
2963                    xkb::SELECT_EVENTS_REQUEST => return Ok(Request::XkbSelectEvents(xkb::SelectEventsRequest::try_parse_request(header, remaining)?)),
2964                    xkb::BELL_REQUEST => return Ok(Request::XkbBell(xkb::BellRequest::try_parse_request(header, remaining)?)),
2965                    xkb::GET_STATE_REQUEST => return Ok(Request::XkbGetState(xkb::GetStateRequest::try_parse_request(header, remaining)?)),
2966                    xkb::LATCH_LOCK_STATE_REQUEST => return Ok(Request::XkbLatchLockState(xkb::LatchLockStateRequest::try_parse_request(header, remaining)?)),
2967                    xkb::GET_CONTROLS_REQUEST => return Ok(Request::XkbGetControls(xkb::GetControlsRequest::try_parse_request(header, remaining)?)),
2968                    xkb::SET_CONTROLS_REQUEST => return Ok(Request::XkbSetControls(xkb::SetControlsRequest::try_parse_request(header, remaining)?)),
2969                    xkb::GET_MAP_REQUEST => return Ok(Request::XkbGetMap(xkb::GetMapRequest::try_parse_request(header, remaining)?)),
2970                    xkb::SET_MAP_REQUEST => return Ok(Request::XkbSetMap(xkb::SetMapRequest::try_parse_request(header, remaining)?)),
2971                    xkb::GET_COMPAT_MAP_REQUEST => return Ok(Request::XkbGetCompatMap(xkb::GetCompatMapRequest::try_parse_request(header, remaining)?)),
2972                    xkb::SET_COMPAT_MAP_REQUEST => return Ok(Request::XkbSetCompatMap(xkb::SetCompatMapRequest::try_parse_request(header, remaining)?)),
2973                    xkb::GET_INDICATOR_STATE_REQUEST => return Ok(Request::XkbGetIndicatorState(xkb::GetIndicatorStateRequest::try_parse_request(header, remaining)?)),
2974                    xkb::GET_INDICATOR_MAP_REQUEST => return Ok(Request::XkbGetIndicatorMap(xkb::GetIndicatorMapRequest::try_parse_request(header, remaining)?)),
2975                    xkb::SET_INDICATOR_MAP_REQUEST => return Ok(Request::XkbSetIndicatorMap(xkb::SetIndicatorMapRequest::try_parse_request(header, remaining)?)),
2976                    xkb::GET_NAMED_INDICATOR_REQUEST => return Ok(Request::XkbGetNamedIndicator(xkb::GetNamedIndicatorRequest::try_parse_request(header, remaining)?)),
2977                    xkb::SET_NAMED_INDICATOR_REQUEST => return Ok(Request::XkbSetNamedIndicator(xkb::SetNamedIndicatorRequest::try_parse_request(header, remaining)?)),
2978                    xkb::GET_NAMES_REQUEST => return Ok(Request::XkbGetNames(xkb::GetNamesRequest::try_parse_request(header, remaining)?)),
2979                    xkb::SET_NAMES_REQUEST => return Ok(Request::XkbSetNames(xkb::SetNamesRequest::try_parse_request(header, remaining)?)),
2980                    xkb::PER_CLIENT_FLAGS_REQUEST => return Ok(Request::XkbPerClientFlags(xkb::PerClientFlagsRequest::try_parse_request(header, remaining)?)),
2981                    xkb::LIST_COMPONENTS_REQUEST => return Ok(Request::XkbListComponents(xkb::ListComponentsRequest::try_parse_request(header, remaining)?)),
2982                    xkb::GET_KBD_BY_NAME_REQUEST => return Ok(Request::XkbGetKbdByName(xkb::GetKbdByNameRequest::try_parse_request(header, remaining)?)),
2983                    xkb::GET_DEVICE_INFO_REQUEST => return Ok(Request::XkbGetDeviceInfo(xkb::GetDeviceInfoRequest::try_parse_request(header, remaining)?)),
2984                    xkb::SET_DEVICE_INFO_REQUEST => return Ok(Request::XkbSetDeviceInfo(xkb::SetDeviceInfoRequest::try_parse_request(header, remaining)?)),
2985                    xkb::SET_DEBUGGING_FLAGS_REQUEST => return Ok(Request::XkbSetDebuggingFlags(xkb::SetDebuggingFlagsRequest::try_parse_request(header, remaining)?)),
2986                    _ => (),
2987                }
2988            }
2989            #[cfg(feature = "xprint")]
2990            Some((xprint::X11_EXTENSION_NAME, _)) => {
2991                match header.minor_opcode {
2992                    xprint::PRINT_QUERY_VERSION_REQUEST => return Ok(Request::XprintPrintQueryVersion(xprint::PrintQueryVersionRequest::try_parse_request(header, remaining)?)),
2993                    xprint::PRINT_GET_PRINTER_LIST_REQUEST => return Ok(Request::XprintPrintGetPrinterList(xprint::PrintGetPrinterListRequest::try_parse_request(header, remaining)?)),
2994                    xprint::PRINT_REHASH_PRINTER_LIST_REQUEST => return Ok(Request::XprintPrintRehashPrinterList(xprint::PrintRehashPrinterListRequest::try_parse_request(header, remaining)?)),
2995                    xprint::CREATE_CONTEXT_REQUEST => return Ok(Request::XprintCreateContext(xprint::CreateContextRequest::try_parse_request(header, remaining)?)),
2996                    xprint::PRINT_SET_CONTEXT_REQUEST => return Ok(Request::XprintPrintSetContext(xprint::PrintSetContextRequest::try_parse_request(header, remaining)?)),
2997                    xprint::PRINT_GET_CONTEXT_REQUEST => return Ok(Request::XprintPrintGetContext(xprint::PrintGetContextRequest::try_parse_request(header, remaining)?)),
2998                    xprint::PRINT_DESTROY_CONTEXT_REQUEST => return Ok(Request::XprintPrintDestroyContext(xprint::PrintDestroyContextRequest::try_parse_request(header, remaining)?)),
2999                    xprint::PRINT_GET_SCREEN_OF_CONTEXT_REQUEST => return Ok(Request::XprintPrintGetScreenOfContext(xprint::PrintGetScreenOfContextRequest::try_parse_request(header, remaining)?)),
3000                    xprint::PRINT_START_JOB_REQUEST => return Ok(Request::XprintPrintStartJob(xprint::PrintStartJobRequest::try_parse_request(header, remaining)?)),
3001                    xprint::PRINT_END_JOB_REQUEST => return Ok(Request::XprintPrintEndJob(xprint::PrintEndJobRequest::try_parse_request(header, remaining)?)),
3002                    xprint::PRINT_START_DOC_REQUEST => return Ok(Request::XprintPrintStartDoc(xprint::PrintStartDocRequest::try_parse_request(header, remaining)?)),
3003                    xprint::PRINT_END_DOC_REQUEST => return Ok(Request::XprintPrintEndDoc(xprint::PrintEndDocRequest::try_parse_request(header, remaining)?)),
3004                    xprint::PRINT_PUT_DOCUMENT_DATA_REQUEST => return Ok(Request::XprintPrintPutDocumentData(xprint::PrintPutDocumentDataRequest::try_parse_request(header, remaining)?)),
3005                    xprint::PRINT_GET_DOCUMENT_DATA_REQUEST => return Ok(Request::XprintPrintGetDocumentData(xprint::PrintGetDocumentDataRequest::try_parse_request(header, remaining)?)),
3006                    xprint::PRINT_START_PAGE_REQUEST => return Ok(Request::XprintPrintStartPage(xprint::PrintStartPageRequest::try_parse_request(header, remaining)?)),
3007                    xprint::PRINT_END_PAGE_REQUEST => return Ok(Request::XprintPrintEndPage(xprint::PrintEndPageRequest::try_parse_request(header, remaining)?)),
3008                    xprint::PRINT_SELECT_INPUT_REQUEST => return Ok(Request::XprintPrintSelectInput(xprint::PrintSelectInputRequest::try_parse_request(header, remaining)?)),
3009                    xprint::PRINT_INPUT_SELECTED_REQUEST => return Ok(Request::XprintPrintInputSelected(xprint::PrintInputSelectedRequest::try_parse_request(header, remaining)?)),
3010                    xprint::PRINT_GET_ATTRIBUTES_REQUEST => return Ok(Request::XprintPrintGetAttributes(xprint::PrintGetAttributesRequest::try_parse_request(header, remaining)?)),
3011                    xprint::PRINT_GET_ONE_ATTRIBUTES_REQUEST => return Ok(Request::XprintPrintGetOneAttributes(xprint::PrintGetOneAttributesRequest::try_parse_request(header, remaining)?)),
3012                    xprint::PRINT_SET_ATTRIBUTES_REQUEST => return Ok(Request::XprintPrintSetAttributes(xprint::PrintSetAttributesRequest::try_parse_request(header, remaining)?)),
3013                    xprint::PRINT_GET_PAGE_DIMENSIONS_REQUEST => return Ok(Request::XprintPrintGetPageDimensions(xprint::PrintGetPageDimensionsRequest::try_parse_request(header, remaining)?)),
3014                    xprint::PRINT_QUERY_SCREENS_REQUEST => return Ok(Request::XprintPrintQueryScreens(xprint::PrintQueryScreensRequest::try_parse_request(header, remaining)?)),
3015                    xprint::PRINT_SET_IMAGE_RESOLUTION_REQUEST => return Ok(Request::XprintPrintSetImageResolution(xprint::PrintSetImageResolutionRequest::try_parse_request(header, remaining)?)),
3016                    xprint::PRINT_GET_IMAGE_RESOLUTION_REQUEST => return Ok(Request::XprintPrintGetImageResolution(xprint::PrintGetImageResolutionRequest::try_parse_request(header, remaining)?)),
3017                    _ => (),
3018                }
3019            }
3020            #[cfg(feature = "xselinux")]
3021            Some((xselinux::X11_EXTENSION_NAME, _)) => {
3022                match header.minor_opcode {
3023                    xselinux::QUERY_VERSION_REQUEST => return Ok(Request::XselinuxQueryVersion(xselinux::QueryVersionRequest::try_parse_request(header, remaining)?)),
3024                    xselinux::SET_DEVICE_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetDeviceCreateContext(xselinux::SetDeviceCreateContextRequest::try_parse_request(header, remaining)?)),
3025                    xselinux::GET_DEVICE_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetDeviceCreateContext(xselinux::GetDeviceCreateContextRequest::try_parse_request(header, remaining)?)),
3026                    xselinux::SET_DEVICE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetDeviceContext(xselinux::SetDeviceContextRequest::try_parse_request(header, remaining)?)),
3027                    xselinux::GET_DEVICE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetDeviceContext(xselinux::GetDeviceContextRequest::try_parse_request(header, remaining)?)),
3028                    xselinux::SET_WINDOW_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetWindowCreateContext(xselinux::SetWindowCreateContextRequest::try_parse_request(header, remaining)?)),
3029                    xselinux::GET_WINDOW_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetWindowCreateContext(xselinux::GetWindowCreateContextRequest::try_parse_request(header, remaining)?)),
3030                    xselinux::GET_WINDOW_CONTEXT_REQUEST => return Ok(Request::XselinuxGetWindowContext(xselinux::GetWindowContextRequest::try_parse_request(header, remaining)?)),
3031                    xselinux::SET_PROPERTY_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetPropertyCreateContext(xselinux::SetPropertyCreateContextRequest::try_parse_request(header, remaining)?)),
3032                    xselinux::GET_PROPERTY_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetPropertyCreateContext(xselinux::GetPropertyCreateContextRequest::try_parse_request(header, remaining)?)),
3033                    xselinux::SET_PROPERTY_USE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetPropertyUseContext(xselinux::SetPropertyUseContextRequest::try_parse_request(header, remaining)?)),
3034                    xselinux::GET_PROPERTY_USE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetPropertyUseContext(xselinux::GetPropertyUseContextRequest::try_parse_request(header, remaining)?)),
3035                    xselinux::GET_PROPERTY_CONTEXT_REQUEST => return Ok(Request::XselinuxGetPropertyContext(xselinux::GetPropertyContextRequest::try_parse_request(header, remaining)?)),
3036                    xselinux::GET_PROPERTY_DATA_CONTEXT_REQUEST => return Ok(Request::XselinuxGetPropertyDataContext(xselinux::GetPropertyDataContextRequest::try_parse_request(header, remaining)?)),
3037                    xselinux::LIST_PROPERTIES_REQUEST => return Ok(Request::XselinuxListProperties(xselinux::ListPropertiesRequest::try_parse_request(header, remaining)?)),
3038                    xselinux::SET_SELECTION_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetSelectionCreateContext(xselinux::SetSelectionCreateContextRequest::try_parse_request(header, remaining)?)),
3039                    xselinux::GET_SELECTION_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetSelectionCreateContext(xselinux::GetSelectionCreateContextRequest::try_parse_request(header, remaining)?)),
3040                    xselinux::SET_SELECTION_USE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetSelectionUseContext(xselinux::SetSelectionUseContextRequest::try_parse_request(header, remaining)?)),
3041                    xselinux::GET_SELECTION_USE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetSelectionUseContext(xselinux::GetSelectionUseContextRequest::try_parse_request(header, remaining)?)),
3042                    xselinux::GET_SELECTION_CONTEXT_REQUEST => return Ok(Request::XselinuxGetSelectionContext(xselinux::GetSelectionContextRequest::try_parse_request(header, remaining)?)),
3043                    xselinux::GET_SELECTION_DATA_CONTEXT_REQUEST => return Ok(Request::XselinuxGetSelectionDataContext(xselinux::GetSelectionDataContextRequest::try_parse_request(header, remaining)?)),
3044                    xselinux::LIST_SELECTIONS_REQUEST => return Ok(Request::XselinuxListSelections(xselinux::ListSelectionsRequest::try_parse_request(header, remaining)?)),
3045                    xselinux::GET_CLIENT_CONTEXT_REQUEST => return Ok(Request::XselinuxGetClientContext(xselinux::GetClientContextRequest::try_parse_request(header, remaining)?)),
3046                    _ => (),
3047                }
3048            }
3049            #[cfg(feature = "xtest")]
3050            Some((xtest::X11_EXTENSION_NAME, _)) => {
3051                match header.minor_opcode {
3052                    xtest::GET_VERSION_REQUEST => return Ok(Request::XtestGetVersion(xtest::GetVersionRequest::try_parse_request(header, remaining)?)),
3053                    xtest::COMPARE_CURSOR_REQUEST => return Ok(Request::XtestCompareCursor(xtest::CompareCursorRequest::try_parse_request(header, remaining)?)),
3054                    xtest::FAKE_INPUT_REQUEST => return Ok(Request::XtestFakeInput(xtest::FakeInputRequest::try_parse_request(header, remaining)?)),
3055                    xtest::GRAB_CONTROL_REQUEST => return Ok(Request::XtestGrabControl(xtest::GrabControlRequest::try_parse_request(header, remaining)?)),
3056                    _ => (),
3057                }
3058            }
3059            #[cfg(feature = "xv")]
3060            Some((xv::X11_EXTENSION_NAME, _)) => {
3061                match header.minor_opcode {
3062                    xv::QUERY_EXTENSION_REQUEST => return Ok(Request::XvQueryExtension(xv::QueryExtensionRequest::try_parse_request(header, remaining)?)),
3063                    xv::QUERY_ADAPTORS_REQUEST => return Ok(Request::XvQueryAdaptors(xv::QueryAdaptorsRequest::try_parse_request(header, remaining)?)),
3064                    xv::QUERY_ENCODINGS_REQUEST => return Ok(Request::XvQueryEncodings(xv::QueryEncodingsRequest::try_parse_request(header, remaining)?)),
3065                    xv::GRAB_PORT_REQUEST => return Ok(Request::XvGrabPort(xv::GrabPortRequest::try_parse_request(header, remaining)?)),
3066                    xv::UNGRAB_PORT_REQUEST => return Ok(Request::XvUngrabPort(xv::UngrabPortRequest::try_parse_request(header, remaining)?)),
3067                    xv::PUT_VIDEO_REQUEST => return Ok(Request::XvPutVideo(xv::PutVideoRequest::try_parse_request(header, remaining)?)),
3068                    xv::PUT_STILL_REQUEST => return Ok(Request::XvPutStill(xv::PutStillRequest::try_parse_request(header, remaining)?)),
3069                    xv::GET_VIDEO_REQUEST => return Ok(Request::XvGetVideo(xv::GetVideoRequest::try_parse_request(header, remaining)?)),
3070                    xv::GET_STILL_REQUEST => return Ok(Request::XvGetStill(xv::GetStillRequest::try_parse_request(header, remaining)?)),
3071                    xv::STOP_VIDEO_REQUEST => return Ok(Request::XvStopVideo(xv::StopVideoRequest::try_parse_request(header, remaining)?)),
3072                    xv::SELECT_VIDEO_NOTIFY_REQUEST => return Ok(Request::XvSelectVideoNotify(xv::SelectVideoNotifyRequest::try_parse_request(header, remaining)?)),
3073                    xv::SELECT_PORT_NOTIFY_REQUEST => return Ok(Request::XvSelectPortNotify(xv::SelectPortNotifyRequest::try_parse_request(header, remaining)?)),
3074                    xv::QUERY_BEST_SIZE_REQUEST => return Ok(Request::XvQueryBestSize(xv::QueryBestSizeRequest::try_parse_request(header, remaining)?)),
3075                    xv::SET_PORT_ATTRIBUTE_REQUEST => return Ok(Request::XvSetPortAttribute(xv::SetPortAttributeRequest::try_parse_request(header, remaining)?)),
3076                    xv::GET_PORT_ATTRIBUTE_REQUEST => return Ok(Request::XvGetPortAttribute(xv::GetPortAttributeRequest::try_parse_request(header, remaining)?)),
3077                    xv::QUERY_PORT_ATTRIBUTES_REQUEST => return Ok(Request::XvQueryPortAttributes(xv::QueryPortAttributesRequest::try_parse_request(header, remaining)?)),
3078                    xv::LIST_IMAGE_FORMATS_REQUEST => return Ok(Request::XvListImageFormats(xv::ListImageFormatsRequest::try_parse_request(header, remaining)?)),
3079                    xv::QUERY_IMAGE_ATTRIBUTES_REQUEST => return Ok(Request::XvQueryImageAttributes(xv::QueryImageAttributesRequest::try_parse_request(header, remaining)?)),
3080                    xv::PUT_IMAGE_REQUEST => return Ok(Request::XvPutImage(xv::PutImageRequest::try_parse_request(header, remaining)?)),
3081                    xv::SHM_PUT_IMAGE_REQUEST => return Ok(Request::XvShmPutImage(xv::ShmPutImageRequest::try_parse_request(header, remaining)?)),
3082                    _ => (),
3083                }
3084            }
3085            #[cfg(feature = "xvmc")]
3086            Some((xvmc::X11_EXTENSION_NAME, _)) => {
3087                match header.minor_opcode {
3088                    xvmc::QUERY_VERSION_REQUEST => return Ok(Request::XvmcQueryVersion(xvmc::QueryVersionRequest::try_parse_request(header, remaining)?)),
3089                    xvmc::LIST_SURFACE_TYPES_REQUEST => return Ok(Request::XvmcListSurfaceTypes(xvmc::ListSurfaceTypesRequest::try_parse_request(header, remaining)?)),
3090                    xvmc::CREATE_CONTEXT_REQUEST => return Ok(Request::XvmcCreateContext(xvmc::CreateContextRequest::try_parse_request(header, remaining)?)),
3091                    xvmc::DESTROY_CONTEXT_REQUEST => return Ok(Request::XvmcDestroyContext(xvmc::DestroyContextRequest::try_parse_request(header, remaining)?)),
3092                    xvmc::CREATE_SURFACE_REQUEST => return Ok(Request::XvmcCreateSurface(xvmc::CreateSurfaceRequest::try_parse_request(header, remaining)?)),
3093                    xvmc::DESTROY_SURFACE_REQUEST => return Ok(Request::XvmcDestroySurface(xvmc::DestroySurfaceRequest::try_parse_request(header, remaining)?)),
3094                    xvmc::CREATE_SUBPICTURE_REQUEST => return Ok(Request::XvmcCreateSubpicture(xvmc::CreateSubpictureRequest::try_parse_request(header, remaining)?)),
3095                    xvmc::DESTROY_SUBPICTURE_REQUEST => return Ok(Request::XvmcDestroySubpicture(xvmc::DestroySubpictureRequest::try_parse_request(header, remaining)?)),
3096                    xvmc::LIST_SUBPICTURE_TYPES_REQUEST => return Ok(Request::XvmcListSubpictureTypes(xvmc::ListSubpictureTypesRequest::try_parse_request(header, remaining)?)),
3097                    _ => (),
3098                }
3099            }
3100            _ => (),
3101        }
3102        Ok(Request::Unknown(header, Cow::Borrowed(remaining)))
3103    }
3104    /// Get the matching reply parser (if any) for this request.
3105    /// For `Request::Unknown`, `None` is also returned.
3106    pub fn reply_parser(&self) -> Option<ReplyParsingFunction> {
3107        match self {
3108            Request::Unknown(_, _) => None,
3109            Request::CreateWindow(_) => None,
3110            Request::ChangeWindowAttributes(_) => None,
3111            Request::GetWindowAttributes(_) => Some(parse_reply::<xproto::GetWindowAttributesRequest>),
3112            Request::DestroyWindow(_) => None,
3113            Request::DestroySubwindows(_) => None,
3114            Request::ChangeSaveSet(_) => None,
3115            Request::ReparentWindow(_) => None,
3116            Request::MapWindow(_) => None,
3117            Request::MapSubwindows(_) => None,
3118            Request::UnmapWindow(_) => None,
3119            Request::UnmapSubwindows(_) => None,
3120            Request::ConfigureWindow(_) => None,
3121            Request::CirculateWindow(_) => None,
3122            Request::GetGeometry(_) => Some(parse_reply::<xproto::GetGeometryRequest>),
3123            Request::QueryTree(_) => Some(parse_reply::<xproto::QueryTreeRequest>),
3124            Request::InternAtom(_) => Some(parse_reply::<xproto::InternAtomRequest<'_>>),
3125            Request::GetAtomName(_) => Some(parse_reply::<xproto::GetAtomNameRequest>),
3126            Request::ChangeProperty(_) => None,
3127            Request::DeleteProperty(_) => None,
3128            Request::GetProperty(_) => Some(parse_reply::<xproto::GetPropertyRequest>),
3129            Request::ListProperties(_) => Some(parse_reply::<xproto::ListPropertiesRequest>),
3130            Request::SetSelectionOwner(_) => None,
3131            Request::GetSelectionOwner(_) => Some(parse_reply::<xproto::GetSelectionOwnerRequest>),
3132            Request::ConvertSelection(_) => None,
3133            Request::SendEvent(_) => None,
3134            Request::GrabPointer(_) => Some(parse_reply::<xproto::GrabPointerRequest>),
3135            Request::UngrabPointer(_) => None,
3136            Request::GrabButton(_) => None,
3137            Request::UngrabButton(_) => None,
3138            Request::ChangeActivePointerGrab(_) => None,
3139            Request::GrabKeyboard(_) => Some(parse_reply::<xproto::GrabKeyboardRequest>),
3140            Request::UngrabKeyboard(_) => None,
3141            Request::GrabKey(_) => None,
3142            Request::UngrabKey(_) => None,
3143            Request::AllowEvents(_) => None,
3144            Request::GrabServer(_) => None,
3145            Request::UngrabServer(_) => None,
3146            Request::QueryPointer(_) => Some(parse_reply::<xproto::QueryPointerRequest>),
3147            Request::GetMotionEvents(_) => Some(parse_reply::<xproto::GetMotionEventsRequest>),
3148            Request::TranslateCoordinates(_) => Some(parse_reply::<xproto::TranslateCoordinatesRequest>),
3149            Request::WarpPointer(_) => None,
3150            Request::SetInputFocus(_) => None,
3151            Request::GetInputFocus(_) => Some(parse_reply::<xproto::GetInputFocusRequest>),
3152            Request::QueryKeymap(_) => Some(parse_reply::<xproto::QueryKeymapRequest>),
3153            Request::OpenFont(_) => None,
3154            Request::CloseFont(_) => None,
3155            Request::QueryFont(_) => Some(parse_reply::<xproto::QueryFontRequest>),
3156            Request::QueryTextExtents(_) => Some(parse_reply::<xproto::QueryTextExtentsRequest<'_>>),
3157            Request::ListFonts(_) => Some(parse_reply::<xproto::ListFontsRequest<'_>>),
3158            Request::ListFontsWithInfo(_) => Some(parse_reply::<xproto::ListFontsWithInfoRequest<'_>>),
3159            Request::SetFontPath(_) => None,
3160            Request::GetFontPath(_) => Some(parse_reply::<xproto::GetFontPathRequest>),
3161            Request::CreatePixmap(_) => None,
3162            Request::FreePixmap(_) => None,
3163            Request::CreateGC(_) => None,
3164            Request::ChangeGC(_) => None,
3165            Request::CopyGC(_) => None,
3166            Request::SetDashes(_) => None,
3167            Request::SetClipRectangles(_) => None,
3168            Request::FreeGC(_) => None,
3169            Request::ClearArea(_) => None,
3170            Request::CopyArea(_) => None,
3171            Request::CopyPlane(_) => None,
3172            Request::PolyPoint(_) => None,
3173            Request::PolyLine(_) => None,
3174            Request::PolySegment(_) => None,
3175            Request::PolyRectangle(_) => None,
3176            Request::PolyArc(_) => None,
3177            Request::FillPoly(_) => None,
3178            Request::PolyFillRectangle(_) => None,
3179            Request::PolyFillArc(_) => None,
3180            Request::PutImage(_) => None,
3181            Request::GetImage(_) => Some(parse_reply::<xproto::GetImageRequest>),
3182            Request::PolyText8(_) => None,
3183            Request::PolyText16(_) => None,
3184            Request::ImageText8(_) => None,
3185            Request::ImageText16(_) => None,
3186            Request::CreateColormap(_) => None,
3187            Request::FreeColormap(_) => None,
3188            Request::CopyColormapAndFree(_) => None,
3189            Request::InstallColormap(_) => None,
3190            Request::UninstallColormap(_) => None,
3191            Request::ListInstalledColormaps(_) => Some(parse_reply::<xproto::ListInstalledColormapsRequest>),
3192            Request::AllocColor(_) => Some(parse_reply::<xproto::AllocColorRequest>),
3193            Request::AllocNamedColor(_) => Some(parse_reply::<xproto::AllocNamedColorRequest<'_>>),
3194            Request::AllocColorCells(_) => Some(parse_reply::<xproto::AllocColorCellsRequest>),
3195            Request::AllocColorPlanes(_) => Some(parse_reply::<xproto::AllocColorPlanesRequest>),
3196            Request::FreeColors(_) => None,
3197            Request::StoreColors(_) => None,
3198            Request::StoreNamedColor(_) => None,
3199            Request::QueryColors(_) => Some(parse_reply::<xproto::QueryColorsRequest<'_>>),
3200            Request::LookupColor(_) => Some(parse_reply::<xproto::LookupColorRequest<'_>>),
3201            Request::CreateCursor(_) => None,
3202            Request::CreateGlyphCursor(_) => None,
3203            Request::FreeCursor(_) => None,
3204            Request::RecolorCursor(_) => None,
3205            Request::QueryBestSize(_) => Some(parse_reply::<xproto::QueryBestSizeRequest>),
3206            Request::QueryExtension(_) => Some(parse_reply::<xproto::QueryExtensionRequest<'_>>),
3207            Request::ListExtensions(_) => Some(parse_reply::<xproto::ListExtensionsRequest>),
3208            Request::ChangeKeyboardMapping(_) => None,
3209            Request::GetKeyboardMapping(_) => Some(parse_reply::<xproto::GetKeyboardMappingRequest>),
3210            Request::ChangeKeyboardControl(_) => None,
3211            Request::GetKeyboardControl(_) => Some(parse_reply::<xproto::GetKeyboardControlRequest>),
3212            Request::Bell(_) => None,
3213            Request::ChangePointerControl(_) => None,
3214            Request::GetPointerControl(_) => Some(parse_reply::<xproto::GetPointerControlRequest>),
3215            Request::SetScreenSaver(_) => None,
3216            Request::GetScreenSaver(_) => Some(parse_reply::<xproto::GetScreenSaverRequest>),
3217            Request::ChangeHosts(_) => None,
3218            Request::ListHosts(_) => Some(parse_reply::<xproto::ListHostsRequest>),
3219            Request::SetAccessControl(_) => None,
3220            Request::SetCloseDownMode(_) => None,
3221            Request::KillClient(_) => None,
3222            Request::RotateProperties(_) => None,
3223            Request::ForceScreenSaver(_) => None,
3224            Request::SetPointerMapping(_) => Some(parse_reply::<xproto::SetPointerMappingRequest<'_>>),
3225            Request::GetPointerMapping(_) => Some(parse_reply::<xproto::GetPointerMappingRequest>),
3226            Request::SetModifierMapping(_) => Some(parse_reply::<xproto::SetModifierMappingRequest<'_>>),
3227            Request::GetModifierMapping(_) => Some(parse_reply::<xproto::GetModifierMappingRequest>),
3228            Request::NoOperation(_) => None,
3229            Request::BigreqEnable(_) => Some(parse_reply::<bigreq::EnableRequest>),
3230            #[cfg(feature = "composite")]
3231            Request::CompositeQueryVersion(_) => Some(parse_reply::<composite::QueryVersionRequest>),
3232            #[cfg(feature = "composite")]
3233            Request::CompositeRedirectWindow(_) => None,
3234            #[cfg(feature = "composite")]
3235            Request::CompositeRedirectSubwindows(_) => None,
3236            #[cfg(feature = "composite")]
3237            Request::CompositeUnredirectWindow(_) => None,
3238            #[cfg(feature = "composite")]
3239            Request::CompositeUnredirectSubwindows(_) => None,
3240            #[cfg(feature = "composite")]
3241            Request::CompositeCreateRegionFromBorderClip(_) => None,
3242            #[cfg(feature = "composite")]
3243            Request::CompositeNameWindowPixmap(_) => None,
3244            #[cfg(feature = "composite")]
3245            Request::CompositeGetOverlayWindow(_) => Some(parse_reply::<composite::GetOverlayWindowRequest>),
3246            #[cfg(feature = "composite")]
3247            Request::CompositeReleaseOverlayWindow(_) => None,
3248            #[cfg(feature = "damage")]
3249            Request::DamageQueryVersion(_) => Some(parse_reply::<damage::QueryVersionRequest>),
3250            #[cfg(feature = "damage")]
3251            Request::DamageCreate(_) => None,
3252            #[cfg(feature = "damage")]
3253            Request::DamageDestroy(_) => None,
3254            #[cfg(feature = "damage")]
3255            Request::DamageSubtract(_) => None,
3256            #[cfg(feature = "damage")]
3257            Request::DamageAdd(_) => None,
3258            #[cfg(feature = "dbe")]
3259            Request::DbeQueryVersion(_) => Some(parse_reply::<dbe::QueryVersionRequest>),
3260            #[cfg(feature = "dbe")]
3261            Request::DbeAllocateBackBuffer(_) => None,
3262            #[cfg(feature = "dbe")]
3263            Request::DbeDeallocateBackBuffer(_) => None,
3264            #[cfg(feature = "dbe")]
3265            Request::DbeSwapBuffers(_) => None,
3266            #[cfg(feature = "dbe")]
3267            Request::DbeBeginIdiom(_) => None,
3268            #[cfg(feature = "dbe")]
3269            Request::DbeEndIdiom(_) => None,
3270            #[cfg(feature = "dbe")]
3271            Request::DbeGetVisualInfo(_) => Some(parse_reply::<dbe::GetVisualInfoRequest<'_>>),
3272            #[cfg(feature = "dbe")]
3273            Request::DbeGetBackBufferAttributes(_) => Some(parse_reply::<dbe::GetBackBufferAttributesRequest>),
3274            #[cfg(feature = "dpms")]
3275            Request::DpmsGetVersion(_) => Some(parse_reply::<dpms::GetVersionRequest>),
3276            #[cfg(feature = "dpms")]
3277            Request::DpmsCapable(_) => Some(parse_reply::<dpms::CapableRequest>),
3278            #[cfg(feature = "dpms")]
3279            Request::DpmsGetTimeouts(_) => Some(parse_reply::<dpms::GetTimeoutsRequest>),
3280            #[cfg(feature = "dpms")]
3281            Request::DpmsSetTimeouts(_) => None,
3282            #[cfg(feature = "dpms")]
3283            Request::DpmsEnable(_) => None,
3284            #[cfg(feature = "dpms")]
3285            Request::DpmsDisable(_) => None,
3286            #[cfg(feature = "dpms")]
3287            Request::DpmsForceLevel(_) => None,
3288            #[cfg(feature = "dpms")]
3289            Request::DpmsInfo(_) => Some(parse_reply::<dpms::InfoRequest>),
3290            #[cfg(feature = "dpms")]
3291            Request::DpmsSelectInput(_) => None,
3292            #[cfg(feature = "dri2")]
3293            Request::Dri2QueryVersion(_) => Some(parse_reply::<dri2::QueryVersionRequest>),
3294            #[cfg(feature = "dri2")]
3295            Request::Dri2Connect(_) => Some(parse_reply::<dri2::ConnectRequest>),
3296            #[cfg(feature = "dri2")]
3297            Request::Dri2Authenticate(_) => Some(parse_reply::<dri2::AuthenticateRequest>),
3298            #[cfg(feature = "dri2")]
3299            Request::Dri2CreateDrawable(_) => None,
3300            #[cfg(feature = "dri2")]
3301            Request::Dri2DestroyDrawable(_) => None,
3302            #[cfg(feature = "dri2")]
3303            Request::Dri2GetBuffers(_) => Some(parse_reply::<dri2::GetBuffersRequest<'_>>),
3304            #[cfg(feature = "dri2")]
3305            Request::Dri2CopyRegion(_) => Some(parse_reply::<dri2::CopyRegionRequest>),
3306            #[cfg(feature = "dri2")]
3307            Request::Dri2GetBuffersWithFormat(_) => Some(parse_reply::<dri2::GetBuffersWithFormatRequest<'_>>),
3308            #[cfg(feature = "dri2")]
3309            Request::Dri2SwapBuffers(_) => Some(parse_reply::<dri2::SwapBuffersRequest>),
3310            #[cfg(feature = "dri2")]
3311            Request::Dri2GetMSC(_) => Some(parse_reply::<dri2::GetMSCRequest>),
3312            #[cfg(feature = "dri2")]
3313            Request::Dri2WaitMSC(_) => Some(parse_reply::<dri2::WaitMSCRequest>),
3314            #[cfg(feature = "dri2")]
3315            Request::Dri2WaitSBC(_) => Some(parse_reply::<dri2::WaitSBCRequest>),
3316            #[cfg(feature = "dri2")]
3317            Request::Dri2SwapInterval(_) => None,
3318            #[cfg(feature = "dri2")]
3319            Request::Dri2GetParam(_) => Some(parse_reply::<dri2::GetParamRequest>),
3320            #[cfg(feature = "dri3")]
3321            Request::Dri3QueryVersion(_) => Some(parse_reply::<dri3::QueryVersionRequest>),
3322            #[cfg(feature = "dri3")]
3323            Request::Dri3Open(_) => Some(parse_reply_fds::<dri3::OpenRequest>),
3324            #[cfg(feature = "dri3")]
3325            Request::Dri3PixmapFromBuffer(_) => None,
3326            #[cfg(feature = "dri3")]
3327            Request::Dri3BufferFromPixmap(_) => Some(parse_reply_fds::<dri3::BufferFromPixmapRequest>),
3328            #[cfg(feature = "dri3")]
3329            Request::Dri3FenceFromFD(_) => None,
3330            #[cfg(feature = "dri3")]
3331            Request::Dri3FDFromFence(_) => Some(parse_reply_fds::<dri3::FDFromFenceRequest>),
3332            #[cfg(feature = "dri3")]
3333            Request::Dri3GetSupportedModifiers(_) => Some(parse_reply::<dri3::GetSupportedModifiersRequest>),
3334            #[cfg(feature = "dri3")]
3335            Request::Dri3PixmapFromBuffers(_) => None,
3336            #[cfg(feature = "dri3")]
3337            Request::Dri3BuffersFromPixmap(_) => Some(parse_reply_fds::<dri3::BuffersFromPixmapRequest>),
3338            #[cfg(feature = "dri3")]
3339            Request::Dri3SetDRMDeviceInUse(_) => None,
3340            #[cfg(feature = "dri3")]
3341            Request::Dri3ImportSyncobj(_) => None,
3342            #[cfg(feature = "dri3")]
3343            Request::Dri3FreeSyncobj(_) => None,
3344            Request::GeQueryVersion(_) => Some(parse_reply::<ge::QueryVersionRequest>),
3345            #[cfg(feature = "glx")]
3346            Request::GlxRender(_) => None,
3347            #[cfg(feature = "glx")]
3348            Request::GlxRenderLarge(_) => None,
3349            #[cfg(feature = "glx")]
3350            Request::GlxCreateContext(_) => None,
3351            #[cfg(feature = "glx")]
3352            Request::GlxDestroyContext(_) => None,
3353            #[cfg(feature = "glx")]
3354            Request::GlxMakeCurrent(_) => Some(parse_reply::<glx::MakeCurrentRequest>),
3355            #[cfg(feature = "glx")]
3356            Request::GlxIsDirect(_) => Some(parse_reply::<glx::IsDirectRequest>),
3357            #[cfg(feature = "glx")]
3358            Request::GlxQueryVersion(_) => Some(parse_reply::<glx::QueryVersionRequest>),
3359            #[cfg(feature = "glx")]
3360            Request::GlxWaitGL(_) => None,
3361            #[cfg(feature = "glx")]
3362            Request::GlxWaitX(_) => None,
3363            #[cfg(feature = "glx")]
3364            Request::GlxCopyContext(_) => None,
3365            #[cfg(feature = "glx")]
3366            Request::GlxSwapBuffers(_) => None,
3367            #[cfg(feature = "glx")]
3368            Request::GlxUseXFont(_) => None,
3369            #[cfg(feature = "glx")]
3370            Request::GlxCreateGLXPixmap(_) => None,
3371            #[cfg(feature = "glx")]
3372            Request::GlxGetVisualConfigs(_) => Some(parse_reply::<glx::GetVisualConfigsRequest>),
3373            #[cfg(feature = "glx")]
3374            Request::GlxDestroyGLXPixmap(_) => None,
3375            #[cfg(feature = "glx")]
3376            Request::GlxVendorPrivate(_) => None,
3377            #[cfg(feature = "glx")]
3378            Request::GlxVendorPrivateWithReply(_) => Some(parse_reply::<glx::VendorPrivateWithReplyRequest<'_>>),
3379            #[cfg(feature = "glx")]
3380            Request::GlxQueryExtensionsString(_) => Some(parse_reply::<glx::QueryExtensionsStringRequest>),
3381            #[cfg(feature = "glx")]
3382            Request::GlxQueryServerString(_) => Some(parse_reply::<glx::QueryServerStringRequest>),
3383            #[cfg(feature = "glx")]
3384            Request::GlxClientInfo(_) => None,
3385            #[cfg(feature = "glx")]
3386            Request::GlxGetFBConfigs(_) => Some(parse_reply::<glx::GetFBConfigsRequest>),
3387            #[cfg(feature = "glx")]
3388            Request::GlxCreatePixmap(_) => None,
3389            #[cfg(feature = "glx")]
3390            Request::GlxDestroyPixmap(_) => None,
3391            #[cfg(feature = "glx")]
3392            Request::GlxCreateNewContext(_) => None,
3393            #[cfg(feature = "glx")]
3394            Request::GlxQueryContext(_) => Some(parse_reply::<glx::QueryContextRequest>),
3395            #[cfg(feature = "glx")]
3396            Request::GlxMakeContextCurrent(_) => Some(parse_reply::<glx::MakeContextCurrentRequest>),
3397            #[cfg(feature = "glx")]
3398            Request::GlxCreatePbuffer(_) => None,
3399            #[cfg(feature = "glx")]
3400            Request::GlxDestroyPbuffer(_) => None,
3401            #[cfg(feature = "glx")]
3402            Request::GlxGetDrawableAttributes(_) => Some(parse_reply::<glx::GetDrawableAttributesRequest>),
3403            #[cfg(feature = "glx")]
3404            Request::GlxChangeDrawableAttributes(_) => None,
3405            #[cfg(feature = "glx")]
3406            Request::GlxCreateWindow(_) => None,
3407            #[cfg(feature = "glx")]
3408            Request::GlxDeleteWindow(_) => None,
3409            #[cfg(feature = "glx")]
3410            Request::GlxSetClientInfoARB(_) => None,
3411            #[cfg(feature = "glx")]
3412            Request::GlxCreateContextAttribsARB(_) => None,
3413            #[cfg(feature = "glx")]
3414            Request::GlxSetClientInfo2ARB(_) => None,
3415            #[cfg(feature = "glx")]
3416            Request::GlxNewList(_) => None,
3417            #[cfg(feature = "glx")]
3418            Request::GlxEndList(_) => None,
3419            #[cfg(feature = "glx")]
3420            Request::GlxDeleteLists(_) => None,
3421            #[cfg(feature = "glx")]
3422            Request::GlxGenLists(_) => Some(parse_reply::<glx::GenListsRequest>),
3423            #[cfg(feature = "glx")]
3424            Request::GlxFeedbackBuffer(_) => None,
3425            #[cfg(feature = "glx")]
3426            Request::GlxSelectBuffer(_) => None,
3427            #[cfg(feature = "glx")]
3428            Request::GlxRenderMode(_) => Some(parse_reply::<glx::RenderModeRequest>),
3429            #[cfg(feature = "glx")]
3430            Request::GlxFinish(_) => Some(parse_reply::<glx::FinishRequest>),
3431            #[cfg(feature = "glx")]
3432            Request::GlxPixelStoref(_) => None,
3433            #[cfg(feature = "glx")]
3434            Request::GlxPixelStorei(_) => None,
3435            #[cfg(feature = "glx")]
3436            Request::GlxReadPixels(_) => Some(parse_reply::<glx::ReadPixelsRequest>),
3437            #[cfg(feature = "glx")]
3438            Request::GlxGetBooleanv(_) => Some(parse_reply::<glx::GetBooleanvRequest>),
3439            #[cfg(feature = "glx")]
3440            Request::GlxGetClipPlane(_) => Some(parse_reply::<glx::GetClipPlaneRequest>),
3441            #[cfg(feature = "glx")]
3442            Request::GlxGetDoublev(_) => Some(parse_reply::<glx::GetDoublevRequest>),
3443            #[cfg(feature = "glx")]
3444            Request::GlxGetError(_) => Some(parse_reply::<glx::GetErrorRequest>),
3445            #[cfg(feature = "glx")]
3446            Request::GlxGetFloatv(_) => Some(parse_reply::<glx::GetFloatvRequest>),
3447            #[cfg(feature = "glx")]
3448            Request::GlxGetIntegerv(_) => Some(parse_reply::<glx::GetIntegervRequest>),
3449            #[cfg(feature = "glx")]
3450            Request::GlxGetLightfv(_) => Some(parse_reply::<glx::GetLightfvRequest>),
3451            #[cfg(feature = "glx")]
3452            Request::GlxGetLightiv(_) => Some(parse_reply::<glx::GetLightivRequest>),
3453            #[cfg(feature = "glx")]
3454            Request::GlxGetMapdv(_) => Some(parse_reply::<glx::GetMapdvRequest>),
3455            #[cfg(feature = "glx")]
3456            Request::GlxGetMapfv(_) => Some(parse_reply::<glx::GetMapfvRequest>),
3457            #[cfg(feature = "glx")]
3458            Request::GlxGetMapiv(_) => Some(parse_reply::<glx::GetMapivRequest>),
3459            #[cfg(feature = "glx")]
3460            Request::GlxGetMaterialfv(_) => Some(parse_reply::<glx::GetMaterialfvRequest>),
3461            #[cfg(feature = "glx")]
3462            Request::GlxGetMaterialiv(_) => Some(parse_reply::<glx::GetMaterialivRequest>),
3463            #[cfg(feature = "glx")]
3464            Request::GlxGetPixelMapfv(_) => Some(parse_reply::<glx::GetPixelMapfvRequest>),
3465            #[cfg(feature = "glx")]
3466            Request::GlxGetPixelMapuiv(_) => Some(parse_reply::<glx::GetPixelMapuivRequest>),
3467            #[cfg(feature = "glx")]
3468            Request::GlxGetPixelMapusv(_) => Some(parse_reply::<glx::GetPixelMapusvRequest>),
3469            #[cfg(feature = "glx")]
3470            Request::GlxGetPolygonStipple(_) => Some(parse_reply::<glx::GetPolygonStippleRequest>),
3471            #[cfg(feature = "glx")]
3472            Request::GlxGetString(_) => Some(parse_reply::<glx::GetStringRequest>),
3473            #[cfg(feature = "glx")]
3474            Request::GlxGetTexEnvfv(_) => Some(parse_reply::<glx::GetTexEnvfvRequest>),
3475            #[cfg(feature = "glx")]
3476            Request::GlxGetTexEnviv(_) => Some(parse_reply::<glx::GetTexEnvivRequest>),
3477            #[cfg(feature = "glx")]
3478            Request::GlxGetTexGendv(_) => Some(parse_reply::<glx::GetTexGendvRequest>),
3479            #[cfg(feature = "glx")]
3480            Request::GlxGetTexGenfv(_) => Some(parse_reply::<glx::GetTexGenfvRequest>),
3481            #[cfg(feature = "glx")]
3482            Request::GlxGetTexGeniv(_) => Some(parse_reply::<glx::GetTexGenivRequest>),
3483            #[cfg(feature = "glx")]
3484            Request::GlxGetTexImage(_) => Some(parse_reply::<glx::GetTexImageRequest>),
3485            #[cfg(feature = "glx")]
3486            Request::GlxGetTexParameterfv(_) => Some(parse_reply::<glx::GetTexParameterfvRequest>),
3487            #[cfg(feature = "glx")]
3488            Request::GlxGetTexParameteriv(_) => Some(parse_reply::<glx::GetTexParameterivRequest>),
3489            #[cfg(feature = "glx")]
3490            Request::GlxGetTexLevelParameterfv(_) => Some(parse_reply::<glx::GetTexLevelParameterfvRequest>),
3491            #[cfg(feature = "glx")]
3492            Request::GlxGetTexLevelParameteriv(_) => Some(parse_reply::<glx::GetTexLevelParameterivRequest>),
3493            #[cfg(feature = "glx")]
3494            Request::GlxIsEnabled(_) => Some(parse_reply::<glx::IsEnabledRequest>),
3495            #[cfg(feature = "glx")]
3496            Request::GlxIsList(_) => Some(parse_reply::<glx::IsListRequest>),
3497            #[cfg(feature = "glx")]
3498            Request::GlxFlush(_) => None,
3499            #[cfg(feature = "glx")]
3500            Request::GlxAreTexturesResident(_) => Some(parse_reply::<glx::AreTexturesResidentRequest<'_>>),
3501            #[cfg(feature = "glx")]
3502            Request::GlxDeleteTextures(_) => None,
3503            #[cfg(feature = "glx")]
3504            Request::GlxGenTextures(_) => Some(parse_reply::<glx::GenTexturesRequest>),
3505            #[cfg(feature = "glx")]
3506            Request::GlxIsTexture(_) => Some(parse_reply::<glx::IsTextureRequest>),
3507            #[cfg(feature = "glx")]
3508            Request::GlxGetColorTable(_) => Some(parse_reply::<glx::GetColorTableRequest>),
3509            #[cfg(feature = "glx")]
3510            Request::GlxGetColorTableParameterfv(_) => Some(parse_reply::<glx::GetColorTableParameterfvRequest>),
3511            #[cfg(feature = "glx")]
3512            Request::GlxGetColorTableParameteriv(_) => Some(parse_reply::<glx::GetColorTableParameterivRequest>),
3513            #[cfg(feature = "glx")]
3514            Request::GlxGetConvolutionFilter(_) => Some(parse_reply::<glx::GetConvolutionFilterRequest>),
3515            #[cfg(feature = "glx")]
3516            Request::GlxGetConvolutionParameterfv(_) => Some(parse_reply::<glx::GetConvolutionParameterfvRequest>),
3517            #[cfg(feature = "glx")]
3518            Request::GlxGetConvolutionParameteriv(_) => Some(parse_reply::<glx::GetConvolutionParameterivRequest>),
3519            #[cfg(feature = "glx")]
3520            Request::GlxGetSeparableFilter(_) => Some(parse_reply::<glx::GetSeparableFilterRequest>),
3521            #[cfg(feature = "glx")]
3522            Request::GlxGetHistogram(_) => Some(parse_reply::<glx::GetHistogramRequest>),
3523            #[cfg(feature = "glx")]
3524            Request::GlxGetHistogramParameterfv(_) => Some(parse_reply::<glx::GetHistogramParameterfvRequest>),
3525            #[cfg(feature = "glx")]
3526            Request::GlxGetHistogramParameteriv(_) => Some(parse_reply::<glx::GetHistogramParameterivRequest>),
3527            #[cfg(feature = "glx")]
3528            Request::GlxGetMinmax(_) => Some(parse_reply::<glx::GetMinmaxRequest>),
3529            #[cfg(feature = "glx")]
3530            Request::GlxGetMinmaxParameterfv(_) => Some(parse_reply::<glx::GetMinmaxParameterfvRequest>),
3531            #[cfg(feature = "glx")]
3532            Request::GlxGetMinmaxParameteriv(_) => Some(parse_reply::<glx::GetMinmaxParameterivRequest>),
3533            #[cfg(feature = "glx")]
3534            Request::GlxGetCompressedTexImageARB(_) => Some(parse_reply::<glx::GetCompressedTexImageARBRequest>),
3535            #[cfg(feature = "glx")]
3536            Request::GlxDeleteQueriesARB(_) => None,
3537            #[cfg(feature = "glx")]
3538            Request::GlxGenQueriesARB(_) => Some(parse_reply::<glx::GenQueriesARBRequest>),
3539            #[cfg(feature = "glx")]
3540            Request::GlxIsQueryARB(_) => Some(parse_reply::<glx::IsQueryARBRequest>),
3541            #[cfg(feature = "glx")]
3542            Request::GlxGetQueryivARB(_) => Some(parse_reply::<glx::GetQueryivARBRequest>),
3543            #[cfg(feature = "glx")]
3544            Request::GlxGetQueryObjectivARB(_) => Some(parse_reply::<glx::GetQueryObjectivARBRequest>),
3545            #[cfg(feature = "glx")]
3546            Request::GlxGetQueryObjectuivARB(_) => Some(parse_reply::<glx::GetQueryObjectuivARBRequest>),
3547            #[cfg(feature = "present")]
3548            Request::PresentQueryVersion(_) => Some(parse_reply::<present::QueryVersionRequest>),
3549            #[cfg(feature = "present")]
3550            Request::PresentPixmap(_) => None,
3551            #[cfg(feature = "present")]
3552            Request::PresentNotifyMSC(_) => None,
3553            #[cfg(feature = "present")]
3554            Request::PresentSelectInput(_) => None,
3555            #[cfg(feature = "present")]
3556            Request::PresentQueryCapabilities(_) => Some(parse_reply::<present::QueryCapabilitiesRequest>),
3557            #[cfg(feature = "present")]
3558            Request::PresentPixmapSynced(_) => None,
3559            #[cfg(feature = "randr")]
3560            Request::RandrQueryVersion(_) => Some(parse_reply::<randr::QueryVersionRequest>),
3561            #[cfg(feature = "randr")]
3562            Request::RandrSetScreenConfig(_) => Some(parse_reply::<randr::SetScreenConfigRequest>),
3563            #[cfg(feature = "randr")]
3564            Request::RandrSelectInput(_) => None,
3565            #[cfg(feature = "randr")]
3566            Request::RandrGetScreenInfo(_) => Some(parse_reply::<randr::GetScreenInfoRequest>),
3567            #[cfg(feature = "randr")]
3568            Request::RandrGetScreenSizeRange(_) => Some(parse_reply::<randr::GetScreenSizeRangeRequest>),
3569            #[cfg(feature = "randr")]
3570            Request::RandrSetScreenSize(_) => None,
3571            #[cfg(feature = "randr")]
3572            Request::RandrGetScreenResources(_) => Some(parse_reply::<randr::GetScreenResourcesRequest>),
3573            #[cfg(feature = "randr")]
3574            Request::RandrGetOutputInfo(_) => Some(parse_reply::<randr::GetOutputInfoRequest>),
3575            #[cfg(feature = "randr")]
3576            Request::RandrListOutputProperties(_) => Some(parse_reply::<randr::ListOutputPropertiesRequest>),
3577            #[cfg(feature = "randr")]
3578            Request::RandrQueryOutputProperty(_) => Some(parse_reply::<randr::QueryOutputPropertyRequest>),
3579            #[cfg(feature = "randr")]
3580            Request::RandrConfigureOutputProperty(_) => None,
3581            #[cfg(feature = "randr")]
3582            Request::RandrChangeOutputProperty(_) => None,
3583            #[cfg(feature = "randr")]
3584            Request::RandrDeleteOutputProperty(_) => None,
3585            #[cfg(feature = "randr")]
3586            Request::RandrGetOutputProperty(_) => Some(parse_reply::<randr::GetOutputPropertyRequest>),
3587            #[cfg(feature = "randr")]
3588            Request::RandrCreateMode(_) => Some(parse_reply::<randr::CreateModeRequest<'_>>),
3589            #[cfg(feature = "randr")]
3590            Request::RandrDestroyMode(_) => None,
3591            #[cfg(feature = "randr")]
3592            Request::RandrAddOutputMode(_) => None,
3593            #[cfg(feature = "randr")]
3594            Request::RandrDeleteOutputMode(_) => None,
3595            #[cfg(feature = "randr")]
3596            Request::RandrGetCrtcInfo(_) => Some(parse_reply::<randr::GetCrtcInfoRequest>),
3597            #[cfg(feature = "randr")]
3598            Request::RandrSetCrtcConfig(_) => Some(parse_reply::<randr::SetCrtcConfigRequest<'_>>),
3599            #[cfg(feature = "randr")]
3600            Request::RandrGetCrtcGammaSize(_) => Some(parse_reply::<randr::GetCrtcGammaSizeRequest>),
3601            #[cfg(feature = "randr")]
3602            Request::RandrGetCrtcGamma(_) => Some(parse_reply::<randr::GetCrtcGammaRequest>),
3603            #[cfg(feature = "randr")]
3604            Request::RandrSetCrtcGamma(_) => None,
3605            #[cfg(feature = "randr")]
3606            Request::RandrGetScreenResourcesCurrent(_) => Some(parse_reply::<randr::GetScreenResourcesCurrentRequest>),
3607            #[cfg(feature = "randr")]
3608            Request::RandrSetCrtcTransform(_) => None,
3609            #[cfg(feature = "randr")]
3610            Request::RandrGetCrtcTransform(_) => Some(parse_reply::<randr::GetCrtcTransformRequest>),
3611            #[cfg(feature = "randr")]
3612            Request::RandrGetPanning(_) => Some(parse_reply::<randr::GetPanningRequest>),
3613            #[cfg(feature = "randr")]
3614            Request::RandrSetPanning(_) => Some(parse_reply::<randr::SetPanningRequest>),
3615            #[cfg(feature = "randr")]
3616            Request::RandrSetOutputPrimary(_) => None,
3617            #[cfg(feature = "randr")]
3618            Request::RandrGetOutputPrimary(_) => Some(parse_reply::<randr::GetOutputPrimaryRequest>),
3619            #[cfg(feature = "randr")]
3620            Request::RandrGetProviders(_) => Some(parse_reply::<randr::GetProvidersRequest>),
3621            #[cfg(feature = "randr")]
3622            Request::RandrGetProviderInfo(_) => Some(parse_reply::<randr::GetProviderInfoRequest>),
3623            #[cfg(feature = "randr")]
3624            Request::RandrSetProviderOffloadSink(_) => None,
3625            #[cfg(feature = "randr")]
3626            Request::RandrSetProviderOutputSource(_) => None,
3627            #[cfg(feature = "randr")]
3628            Request::RandrListProviderProperties(_) => Some(parse_reply::<randr::ListProviderPropertiesRequest>),
3629            #[cfg(feature = "randr")]
3630            Request::RandrQueryProviderProperty(_) => Some(parse_reply::<randr::QueryProviderPropertyRequest>),
3631            #[cfg(feature = "randr")]
3632            Request::RandrConfigureProviderProperty(_) => None,
3633            #[cfg(feature = "randr")]
3634            Request::RandrChangeProviderProperty(_) => None,
3635            #[cfg(feature = "randr")]
3636            Request::RandrDeleteProviderProperty(_) => None,
3637            #[cfg(feature = "randr")]
3638            Request::RandrGetProviderProperty(_) => Some(parse_reply::<randr::GetProviderPropertyRequest>),
3639            #[cfg(feature = "randr")]
3640            Request::RandrGetMonitors(_) => Some(parse_reply::<randr::GetMonitorsRequest>),
3641            #[cfg(feature = "randr")]
3642            Request::RandrSetMonitor(_) => None,
3643            #[cfg(feature = "randr")]
3644            Request::RandrDeleteMonitor(_) => None,
3645            #[cfg(feature = "randr")]
3646            Request::RandrCreateLease(_) => Some(parse_reply_fds::<randr::CreateLeaseRequest<'_>>),
3647            #[cfg(feature = "randr")]
3648            Request::RandrFreeLease(_) => None,
3649            #[cfg(feature = "record")]
3650            Request::RecordQueryVersion(_) => Some(parse_reply::<record::QueryVersionRequest>),
3651            #[cfg(feature = "record")]
3652            Request::RecordCreateContext(_) => None,
3653            #[cfg(feature = "record")]
3654            Request::RecordRegisterClients(_) => None,
3655            #[cfg(feature = "record")]
3656            Request::RecordUnregisterClients(_) => None,
3657            #[cfg(feature = "record")]
3658            Request::RecordGetContext(_) => Some(parse_reply::<record::GetContextRequest>),
3659            #[cfg(feature = "record")]
3660            Request::RecordEnableContext(_) => Some(parse_reply::<record::EnableContextRequest>),
3661            #[cfg(feature = "record")]
3662            Request::RecordDisableContext(_) => None,
3663            #[cfg(feature = "record")]
3664            Request::RecordFreeContext(_) => None,
3665            #[cfg(feature = "render")]
3666            Request::RenderQueryVersion(_) => Some(parse_reply::<render::QueryVersionRequest>),
3667            #[cfg(feature = "render")]
3668            Request::RenderQueryPictFormats(_) => Some(parse_reply::<render::QueryPictFormatsRequest>),
3669            #[cfg(feature = "render")]
3670            Request::RenderQueryPictIndexValues(_) => Some(parse_reply::<render::QueryPictIndexValuesRequest>),
3671            #[cfg(feature = "render")]
3672            Request::RenderCreatePicture(_) => None,
3673            #[cfg(feature = "render")]
3674            Request::RenderChangePicture(_) => None,
3675            #[cfg(feature = "render")]
3676            Request::RenderSetPictureClipRectangles(_) => None,
3677            #[cfg(feature = "render")]
3678            Request::RenderFreePicture(_) => None,
3679            #[cfg(feature = "render")]
3680            Request::RenderComposite(_) => None,
3681            #[cfg(feature = "render")]
3682            Request::RenderTrapezoids(_) => None,
3683            #[cfg(feature = "render")]
3684            Request::RenderTriangles(_) => None,
3685            #[cfg(feature = "render")]
3686            Request::RenderTriStrip(_) => None,
3687            #[cfg(feature = "render")]
3688            Request::RenderTriFan(_) => None,
3689            #[cfg(feature = "render")]
3690            Request::RenderCreateGlyphSet(_) => None,
3691            #[cfg(feature = "render")]
3692            Request::RenderReferenceGlyphSet(_) => None,
3693            #[cfg(feature = "render")]
3694            Request::RenderFreeGlyphSet(_) => None,
3695            #[cfg(feature = "render")]
3696            Request::RenderAddGlyphs(_) => None,
3697            #[cfg(feature = "render")]
3698            Request::RenderFreeGlyphs(_) => None,
3699            #[cfg(feature = "render")]
3700            Request::RenderCompositeGlyphs8(_) => None,
3701            #[cfg(feature = "render")]
3702            Request::RenderCompositeGlyphs16(_) => None,
3703            #[cfg(feature = "render")]
3704            Request::RenderCompositeGlyphs32(_) => None,
3705            #[cfg(feature = "render")]
3706            Request::RenderFillRectangles(_) => None,
3707            #[cfg(feature = "render")]
3708            Request::RenderCreateCursor(_) => None,
3709            #[cfg(feature = "render")]
3710            Request::RenderSetPictureTransform(_) => None,
3711            #[cfg(feature = "render")]
3712            Request::RenderQueryFilters(_) => Some(parse_reply::<render::QueryFiltersRequest>),
3713            #[cfg(feature = "render")]
3714            Request::RenderSetPictureFilter(_) => None,
3715            #[cfg(feature = "render")]
3716            Request::RenderCreateAnimCursor(_) => None,
3717            #[cfg(feature = "render")]
3718            Request::RenderAddTraps(_) => None,
3719            #[cfg(feature = "render")]
3720            Request::RenderCreateSolidFill(_) => None,
3721            #[cfg(feature = "render")]
3722            Request::RenderCreateLinearGradient(_) => None,
3723            #[cfg(feature = "render")]
3724            Request::RenderCreateRadialGradient(_) => None,
3725            #[cfg(feature = "render")]
3726            Request::RenderCreateConicalGradient(_) => None,
3727            #[cfg(feature = "res")]
3728            Request::ResQueryVersion(_) => Some(parse_reply::<res::QueryVersionRequest>),
3729            #[cfg(feature = "res")]
3730            Request::ResQueryClients(_) => Some(parse_reply::<res::QueryClientsRequest>),
3731            #[cfg(feature = "res")]
3732            Request::ResQueryClientResources(_) => Some(parse_reply::<res::QueryClientResourcesRequest>),
3733            #[cfg(feature = "res")]
3734            Request::ResQueryClientPixmapBytes(_) => Some(parse_reply::<res::QueryClientPixmapBytesRequest>),
3735            #[cfg(feature = "res")]
3736            Request::ResQueryClientIds(_) => Some(parse_reply::<res::QueryClientIdsRequest<'_>>),
3737            #[cfg(feature = "res")]
3738            Request::ResQueryResourceBytes(_) => Some(parse_reply::<res::QueryResourceBytesRequest<'_>>),
3739            #[cfg(feature = "screensaver")]
3740            Request::ScreensaverQueryVersion(_) => Some(parse_reply::<screensaver::QueryVersionRequest>),
3741            #[cfg(feature = "screensaver")]
3742            Request::ScreensaverQueryInfo(_) => Some(parse_reply::<screensaver::QueryInfoRequest>),
3743            #[cfg(feature = "screensaver")]
3744            Request::ScreensaverSelectInput(_) => None,
3745            #[cfg(feature = "screensaver")]
3746            Request::ScreensaverSetAttributes(_) => None,
3747            #[cfg(feature = "screensaver")]
3748            Request::ScreensaverUnsetAttributes(_) => None,
3749            #[cfg(feature = "screensaver")]
3750            Request::ScreensaverSuspend(_) => None,
3751            #[cfg(feature = "shape")]
3752            Request::ShapeQueryVersion(_) => Some(parse_reply::<shape::QueryVersionRequest>),
3753            #[cfg(feature = "shape")]
3754            Request::ShapeRectangles(_) => None,
3755            #[cfg(feature = "shape")]
3756            Request::ShapeMask(_) => None,
3757            #[cfg(feature = "shape")]
3758            Request::ShapeCombine(_) => None,
3759            #[cfg(feature = "shape")]
3760            Request::ShapeOffset(_) => None,
3761            #[cfg(feature = "shape")]
3762            Request::ShapeQueryExtents(_) => Some(parse_reply::<shape::QueryExtentsRequest>),
3763            #[cfg(feature = "shape")]
3764            Request::ShapeSelectInput(_) => None,
3765            #[cfg(feature = "shape")]
3766            Request::ShapeInputSelected(_) => Some(parse_reply::<shape::InputSelectedRequest>),
3767            #[cfg(feature = "shape")]
3768            Request::ShapeGetRectangles(_) => Some(parse_reply::<shape::GetRectanglesRequest>),
3769            #[cfg(feature = "shm")]
3770            Request::ShmQueryVersion(_) => Some(parse_reply::<shm::QueryVersionRequest>),
3771            #[cfg(feature = "shm")]
3772            Request::ShmAttach(_) => None,
3773            #[cfg(feature = "shm")]
3774            Request::ShmDetach(_) => None,
3775            #[cfg(feature = "shm")]
3776            Request::ShmPutImage(_) => None,
3777            #[cfg(feature = "shm")]
3778            Request::ShmGetImage(_) => Some(parse_reply::<shm::GetImageRequest>),
3779            #[cfg(feature = "shm")]
3780            Request::ShmCreatePixmap(_) => None,
3781            #[cfg(feature = "shm")]
3782            Request::ShmAttachFd(_) => None,
3783            #[cfg(feature = "shm")]
3784            Request::ShmCreateSegment(_) => Some(parse_reply_fds::<shm::CreateSegmentRequest>),
3785            #[cfg(feature = "sync")]
3786            Request::SyncInitialize(_) => Some(parse_reply::<sync::InitializeRequest>),
3787            #[cfg(feature = "sync")]
3788            Request::SyncListSystemCounters(_) => Some(parse_reply::<sync::ListSystemCountersRequest>),
3789            #[cfg(feature = "sync")]
3790            Request::SyncCreateCounter(_) => None,
3791            #[cfg(feature = "sync")]
3792            Request::SyncDestroyCounter(_) => None,
3793            #[cfg(feature = "sync")]
3794            Request::SyncQueryCounter(_) => Some(parse_reply::<sync::QueryCounterRequest>),
3795            #[cfg(feature = "sync")]
3796            Request::SyncAwait(_) => None,
3797            #[cfg(feature = "sync")]
3798            Request::SyncChangeCounter(_) => None,
3799            #[cfg(feature = "sync")]
3800            Request::SyncSetCounter(_) => None,
3801            #[cfg(feature = "sync")]
3802            Request::SyncCreateAlarm(_) => None,
3803            #[cfg(feature = "sync")]
3804            Request::SyncChangeAlarm(_) => None,
3805            #[cfg(feature = "sync")]
3806            Request::SyncDestroyAlarm(_) => None,
3807            #[cfg(feature = "sync")]
3808            Request::SyncQueryAlarm(_) => Some(parse_reply::<sync::QueryAlarmRequest>),
3809            #[cfg(feature = "sync")]
3810            Request::SyncSetPriority(_) => None,
3811            #[cfg(feature = "sync")]
3812            Request::SyncGetPriority(_) => Some(parse_reply::<sync::GetPriorityRequest>),
3813            #[cfg(feature = "sync")]
3814            Request::SyncCreateFence(_) => None,
3815            #[cfg(feature = "sync")]
3816            Request::SyncTriggerFence(_) => None,
3817            #[cfg(feature = "sync")]
3818            Request::SyncResetFence(_) => None,
3819            #[cfg(feature = "sync")]
3820            Request::SyncDestroyFence(_) => None,
3821            #[cfg(feature = "sync")]
3822            Request::SyncQueryFence(_) => Some(parse_reply::<sync::QueryFenceRequest>),
3823            #[cfg(feature = "sync")]
3824            Request::SyncAwaitFence(_) => None,
3825            Request::XcMiscGetVersion(_) => Some(parse_reply::<xc_misc::GetVersionRequest>),
3826            Request::XcMiscGetXIDRange(_) => Some(parse_reply::<xc_misc::GetXIDRangeRequest>),
3827            Request::XcMiscGetXIDList(_) => Some(parse_reply::<xc_misc::GetXIDListRequest>),
3828            #[cfg(feature = "xevie")]
3829            Request::XevieQueryVersion(_) => Some(parse_reply::<xevie::QueryVersionRequest>),
3830            #[cfg(feature = "xevie")]
3831            Request::XevieStart(_) => Some(parse_reply::<xevie::StartRequest>),
3832            #[cfg(feature = "xevie")]
3833            Request::XevieEnd(_) => Some(parse_reply::<xevie::EndRequest>),
3834            #[cfg(feature = "xevie")]
3835            Request::XevieSend(_) => Some(parse_reply::<xevie::SendRequest>),
3836            #[cfg(feature = "xevie")]
3837            Request::XevieSelectInput(_) => Some(parse_reply::<xevie::SelectInputRequest>),
3838            #[cfg(feature = "xf86dri")]
3839            Request::Xf86driQueryVersion(_) => Some(parse_reply::<xf86dri::QueryVersionRequest>),
3840            #[cfg(feature = "xf86dri")]
3841            Request::Xf86driQueryDirectRenderingCapable(_) => Some(parse_reply::<xf86dri::QueryDirectRenderingCapableRequest>),
3842            #[cfg(feature = "xf86dri")]
3843            Request::Xf86driOpenConnection(_) => Some(parse_reply::<xf86dri::OpenConnectionRequest>),
3844            #[cfg(feature = "xf86dri")]
3845            Request::Xf86driCloseConnection(_) => None,
3846            #[cfg(feature = "xf86dri")]
3847            Request::Xf86driGetClientDriverName(_) => Some(parse_reply::<xf86dri::GetClientDriverNameRequest>),
3848            #[cfg(feature = "xf86dri")]
3849            Request::Xf86driCreateContext(_) => Some(parse_reply::<xf86dri::CreateContextRequest>),
3850            #[cfg(feature = "xf86dri")]
3851            Request::Xf86driDestroyContext(_) => None,
3852            #[cfg(feature = "xf86dri")]
3853            Request::Xf86driCreateDrawable(_) => Some(parse_reply::<xf86dri::CreateDrawableRequest>),
3854            #[cfg(feature = "xf86dri")]
3855            Request::Xf86driDestroyDrawable(_) => None,
3856            #[cfg(feature = "xf86dri")]
3857            Request::Xf86driGetDrawableInfo(_) => Some(parse_reply::<xf86dri::GetDrawableInfoRequest>),
3858            #[cfg(feature = "xf86dri")]
3859            Request::Xf86driGetDeviceInfo(_) => Some(parse_reply::<xf86dri::GetDeviceInfoRequest>),
3860            #[cfg(feature = "xf86dri")]
3861            Request::Xf86driAuthConnection(_) => Some(parse_reply::<xf86dri::AuthConnectionRequest>),
3862            #[cfg(feature = "xf86vidmode")]
3863            Request::Xf86vidmodeQueryVersion(_) => Some(parse_reply::<xf86vidmode::QueryVersionRequest>),
3864            #[cfg(feature = "xf86vidmode")]
3865            Request::Xf86vidmodeGetModeLine(_) => Some(parse_reply::<xf86vidmode::GetModeLineRequest>),
3866            #[cfg(feature = "xf86vidmode")]
3867            Request::Xf86vidmodeModModeLine(_) => None,
3868            #[cfg(feature = "xf86vidmode")]
3869            Request::Xf86vidmodeSwitchMode(_) => None,
3870            #[cfg(feature = "xf86vidmode")]
3871            Request::Xf86vidmodeGetMonitor(_) => Some(parse_reply::<xf86vidmode::GetMonitorRequest>),
3872            #[cfg(feature = "xf86vidmode")]
3873            Request::Xf86vidmodeLockModeSwitch(_) => None,
3874            #[cfg(feature = "xf86vidmode")]
3875            Request::Xf86vidmodeGetAllModeLines(_) => Some(parse_reply::<xf86vidmode::GetAllModeLinesRequest>),
3876            #[cfg(feature = "xf86vidmode")]
3877            Request::Xf86vidmodeAddModeLine(_) => None,
3878            #[cfg(feature = "xf86vidmode")]
3879            Request::Xf86vidmodeDeleteModeLine(_) => None,
3880            #[cfg(feature = "xf86vidmode")]
3881            Request::Xf86vidmodeValidateModeLine(_) => Some(parse_reply::<xf86vidmode::ValidateModeLineRequest<'_>>),
3882            #[cfg(feature = "xf86vidmode")]
3883            Request::Xf86vidmodeSwitchToMode(_) => None,
3884            #[cfg(feature = "xf86vidmode")]
3885            Request::Xf86vidmodeGetViewPort(_) => Some(parse_reply::<xf86vidmode::GetViewPortRequest>),
3886            #[cfg(feature = "xf86vidmode")]
3887            Request::Xf86vidmodeSetViewPort(_) => None,
3888            #[cfg(feature = "xf86vidmode")]
3889            Request::Xf86vidmodeGetDotClocks(_) => Some(parse_reply::<xf86vidmode::GetDotClocksRequest>),
3890            #[cfg(feature = "xf86vidmode")]
3891            Request::Xf86vidmodeSetClientVersion(_) => None,
3892            #[cfg(feature = "xf86vidmode")]
3893            Request::Xf86vidmodeSetGamma(_) => None,
3894            #[cfg(feature = "xf86vidmode")]
3895            Request::Xf86vidmodeGetGamma(_) => Some(parse_reply::<xf86vidmode::GetGammaRequest>),
3896            #[cfg(feature = "xf86vidmode")]
3897            Request::Xf86vidmodeGetGammaRamp(_) => Some(parse_reply::<xf86vidmode::GetGammaRampRequest>),
3898            #[cfg(feature = "xf86vidmode")]
3899            Request::Xf86vidmodeSetGammaRamp(_) => None,
3900            #[cfg(feature = "xf86vidmode")]
3901            Request::Xf86vidmodeGetGammaRampSize(_) => Some(parse_reply::<xf86vidmode::GetGammaRampSizeRequest>),
3902            #[cfg(feature = "xf86vidmode")]
3903            Request::Xf86vidmodeGetPermissions(_) => Some(parse_reply::<xf86vidmode::GetPermissionsRequest>),
3904            #[cfg(feature = "xfixes")]
3905            Request::XfixesQueryVersion(_) => Some(parse_reply::<xfixes::QueryVersionRequest>),
3906            #[cfg(feature = "xfixes")]
3907            Request::XfixesChangeSaveSet(_) => None,
3908            #[cfg(feature = "xfixes")]
3909            Request::XfixesSelectSelectionInput(_) => None,
3910            #[cfg(feature = "xfixes")]
3911            Request::XfixesSelectCursorInput(_) => None,
3912            #[cfg(feature = "xfixes")]
3913            Request::XfixesGetCursorImage(_) => Some(parse_reply::<xfixes::GetCursorImageRequest>),
3914            #[cfg(feature = "xfixes")]
3915            Request::XfixesCreateRegion(_) => None,
3916            #[cfg(feature = "xfixes")]
3917            Request::XfixesCreateRegionFromBitmap(_) => None,
3918            #[cfg(feature = "xfixes")]
3919            Request::XfixesCreateRegionFromWindow(_) => None,
3920            #[cfg(feature = "xfixes")]
3921            Request::XfixesCreateRegionFromGC(_) => None,
3922            #[cfg(feature = "xfixes")]
3923            Request::XfixesCreateRegionFromPicture(_) => None,
3924            #[cfg(feature = "xfixes")]
3925            Request::XfixesDestroyRegion(_) => None,
3926            #[cfg(feature = "xfixes")]
3927            Request::XfixesSetRegion(_) => None,
3928            #[cfg(feature = "xfixes")]
3929            Request::XfixesCopyRegion(_) => None,
3930            #[cfg(feature = "xfixes")]
3931            Request::XfixesUnionRegion(_) => None,
3932            #[cfg(feature = "xfixes")]
3933            Request::XfixesIntersectRegion(_) => None,
3934            #[cfg(feature = "xfixes")]
3935            Request::XfixesSubtractRegion(_) => None,
3936            #[cfg(feature = "xfixes")]
3937            Request::XfixesInvertRegion(_) => None,
3938            #[cfg(feature = "xfixes")]
3939            Request::XfixesTranslateRegion(_) => None,
3940            #[cfg(feature = "xfixes")]
3941            Request::XfixesRegionExtents(_) => None,
3942            #[cfg(feature = "xfixes")]
3943            Request::XfixesFetchRegion(_) => Some(parse_reply::<xfixes::FetchRegionRequest>),
3944            #[cfg(feature = "xfixes")]
3945            Request::XfixesSetGCClipRegion(_) => None,
3946            #[cfg(feature = "xfixes")]
3947            Request::XfixesSetWindowShapeRegion(_) => None,
3948            #[cfg(feature = "xfixes")]
3949            Request::XfixesSetPictureClipRegion(_) => None,
3950            #[cfg(feature = "xfixes")]
3951            Request::XfixesSetCursorName(_) => None,
3952            #[cfg(feature = "xfixes")]
3953            Request::XfixesGetCursorName(_) => Some(parse_reply::<xfixes::GetCursorNameRequest>),
3954            #[cfg(feature = "xfixes")]
3955            Request::XfixesGetCursorImageAndName(_) => Some(parse_reply::<xfixes::GetCursorImageAndNameRequest>),
3956            #[cfg(feature = "xfixes")]
3957            Request::XfixesChangeCursor(_) => None,
3958            #[cfg(feature = "xfixes")]
3959            Request::XfixesChangeCursorByName(_) => None,
3960            #[cfg(feature = "xfixes")]
3961            Request::XfixesExpandRegion(_) => None,
3962            #[cfg(feature = "xfixes")]
3963            Request::XfixesHideCursor(_) => None,
3964            #[cfg(feature = "xfixes")]
3965            Request::XfixesShowCursor(_) => None,
3966            #[cfg(feature = "xfixes")]
3967            Request::XfixesCreatePointerBarrier(_) => None,
3968            #[cfg(feature = "xfixes")]
3969            Request::XfixesDeletePointerBarrier(_) => None,
3970            #[cfg(feature = "xfixes")]
3971            Request::XfixesSetClientDisconnectMode(_) => None,
3972            #[cfg(feature = "xfixes")]
3973            Request::XfixesGetClientDisconnectMode(_) => Some(parse_reply::<xfixes::GetClientDisconnectModeRequest>),
3974            #[cfg(feature = "xinerama")]
3975            Request::XineramaQueryVersion(_) => Some(parse_reply::<xinerama::QueryVersionRequest>),
3976            #[cfg(feature = "xinerama")]
3977            Request::XineramaGetState(_) => Some(parse_reply::<xinerama::GetStateRequest>),
3978            #[cfg(feature = "xinerama")]
3979            Request::XineramaGetScreenCount(_) => Some(parse_reply::<xinerama::GetScreenCountRequest>),
3980            #[cfg(feature = "xinerama")]
3981            Request::XineramaGetScreenSize(_) => Some(parse_reply::<xinerama::GetScreenSizeRequest>),
3982            #[cfg(feature = "xinerama")]
3983            Request::XineramaIsActive(_) => Some(parse_reply::<xinerama::IsActiveRequest>),
3984            #[cfg(feature = "xinerama")]
3985            Request::XineramaQueryScreens(_) => Some(parse_reply::<xinerama::QueryScreensRequest>),
3986            #[cfg(feature = "xinput")]
3987            Request::XinputGetExtensionVersion(_) => Some(parse_reply::<xinput::GetExtensionVersionRequest<'_>>),
3988            #[cfg(feature = "xinput")]
3989            Request::XinputListInputDevices(_) => Some(parse_reply::<xinput::ListInputDevicesRequest>),
3990            #[cfg(feature = "xinput")]
3991            Request::XinputOpenDevice(_) => Some(parse_reply::<xinput::OpenDeviceRequest>),
3992            #[cfg(feature = "xinput")]
3993            Request::XinputCloseDevice(_) => None,
3994            #[cfg(feature = "xinput")]
3995            Request::XinputSetDeviceMode(_) => Some(parse_reply::<xinput::SetDeviceModeRequest>),
3996            #[cfg(feature = "xinput")]
3997            Request::XinputSelectExtensionEvent(_) => None,
3998            #[cfg(feature = "xinput")]
3999            Request::XinputGetSelectedExtensionEvents(_) => Some(parse_reply::<xinput::GetSelectedExtensionEventsRequest>),
4000            #[cfg(feature = "xinput")]
4001            Request::XinputChangeDeviceDontPropagateList(_) => None,
4002            #[cfg(feature = "xinput")]
4003            Request::XinputGetDeviceDontPropagateList(_) => Some(parse_reply::<xinput::GetDeviceDontPropagateListRequest>),
4004            #[cfg(feature = "xinput")]
4005            Request::XinputGetDeviceMotionEvents(_) => Some(parse_reply::<xinput::GetDeviceMotionEventsRequest>),
4006            #[cfg(feature = "xinput")]
4007            Request::XinputChangeKeyboardDevice(_) => Some(parse_reply::<xinput::ChangeKeyboardDeviceRequest>),
4008            #[cfg(feature = "xinput")]
4009            Request::XinputChangePointerDevice(_) => Some(parse_reply::<xinput::ChangePointerDeviceRequest>),
4010            #[cfg(feature = "xinput")]
4011            Request::XinputGrabDevice(_) => Some(parse_reply::<xinput::GrabDeviceRequest<'_>>),
4012            #[cfg(feature = "xinput")]
4013            Request::XinputUngrabDevice(_) => None,
4014            #[cfg(feature = "xinput")]
4015            Request::XinputGrabDeviceKey(_) => None,
4016            #[cfg(feature = "xinput")]
4017            Request::XinputUngrabDeviceKey(_) => None,
4018            #[cfg(feature = "xinput")]
4019            Request::XinputGrabDeviceButton(_) => None,
4020            #[cfg(feature = "xinput")]
4021            Request::XinputUngrabDeviceButton(_) => None,
4022            #[cfg(feature = "xinput")]
4023            Request::XinputAllowDeviceEvents(_) => None,
4024            #[cfg(feature = "xinput")]
4025            Request::XinputGetDeviceFocus(_) => Some(parse_reply::<xinput::GetDeviceFocusRequest>),
4026            #[cfg(feature = "xinput")]
4027            Request::XinputSetDeviceFocus(_) => None,
4028            #[cfg(feature = "xinput")]
4029            Request::XinputGetFeedbackControl(_) => Some(parse_reply::<xinput::GetFeedbackControlRequest>),
4030            #[cfg(feature = "xinput")]
4031            Request::XinputChangeFeedbackControl(_) => None,
4032            #[cfg(feature = "xinput")]
4033            Request::XinputGetDeviceKeyMapping(_) => Some(parse_reply::<xinput::GetDeviceKeyMappingRequest>),
4034            #[cfg(feature = "xinput")]
4035            Request::XinputChangeDeviceKeyMapping(_) => None,
4036            #[cfg(feature = "xinput")]
4037            Request::XinputGetDeviceModifierMapping(_) => Some(parse_reply::<xinput::GetDeviceModifierMappingRequest>),
4038            #[cfg(feature = "xinput")]
4039            Request::XinputSetDeviceModifierMapping(_) => Some(parse_reply::<xinput::SetDeviceModifierMappingRequest<'_>>),
4040            #[cfg(feature = "xinput")]
4041            Request::XinputGetDeviceButtonMapping(_) => Some(parse_reply::<xinput::GetDeviceButtonMappingRequest>),
4042            #[cfg(feature = "xinput")]
4043            Request::XinputSetDeviceButtonMapping(_) => Some(parse_reply::<xinput::SetDeviceButtonMappingRequest<'_>>),
4044            #[cfg(feature = "xinput")]
4045            Request::XinputQueryDeviceState(_) => Some(parse_reply::<xinput::QueryDeviceStateRequest>),
4046            #[cfg(feature = "xinput")]
4047            Request::XinputDeviceBell(_) => None,
4048            #[cfg(feature = "xinput")]
4049            Request::XinputSetDeviceValuators(_) => Some(parse_reply::<xinput::SetDeviceValuatorsRequest<'_>>),
4050            #[cfg(feature = "xinput")]
4051            Request::XinputGetDeviceControl(_) => Some(parse_reply::<xinput::GetDeviceControlRequest>),
4052            #[cfg(feature = "xinput")]
4053            Request::XinputChangeDeviceControl(_) => Some(parse_reply::<xinput::ChangeDeviceControlRequest>),
4054            #[cfg(feature = "xinput")]
4055            Request::XinputListDeviceProperties(_) => Some(parse_reply::<xinput::ListDevicePropertiesRequest>),
4056            #[cfg(feature = "xinput")]
4057            Request::XinputChangeDeviceProperty(_) => None,
4058            #[cfg(feature = "xinput")]
4059            Request::XinputDeleteDeviceProperty(_) => None,
4060            #[cfg(feature = "xinput")]
4061            Request::XinputGetDeviceProperty(_) => Some(parse_reply::<xinput::GetDevicePropertyRequest>),
4062            #[cfg(feature = "xinput")]
4063            Request::XinputXIQueryPointer(_) => Some(parse_reply::<xinput::XIQueryPointerRequest>),
4064            #[cfg(feature = "xinput")]
4065            Request::XinputXIWarpPointer(_) => None,
4066            #[cfg(feature = "xinput")]
4067            Request::XinputXIChangeCursor(_) => None,
4068            #[cfg(feature = "xinput")]
4069            Request::XinputXIChangeHierarchy(_) => None,
4070            #[cfg(feature = "xinput")]
4071            Request::XinputXISetClientPointer(_) => None,
4072            #[cfg(feature = "xinput")]
4073            Request::XinputXIGetClientPointer(_) => Some(parse_reply::<xinput::XIGetClientPointerRequest>),
4074            #[cfg(feature = "xinput")]
4075            Request::XinputXISelectEvents(_) => None,
4076            #[cfg(feature = "xinput")]
4077            Request::XinputXIQueryVersion(_) => Some(parse_reply::<xinput::XIQueryVersionRequest>),
4078            #[cfg(feature = "xinput")]
4079            Request::XinputXIQueryDevice(_) => Some(parse_reply::<xinput::XIQueryDeviceRequest>),
4080            #[cfg(feature = "xinput")]
4081            Request::XinputXISetFocus(_) => None,
4082            #[cfg(feature = "xinput")]
4083            Request::XinputXIGetFocus(_) => Some(parse_reply::<xinput::XIGetFocusRequest>),
4084            #[cfg(feature = "xinput")]
4085            Request::XinputXIGrabDevice(_) => Some(parse_reply::<xinput::XIGrabDeviceRequest<'_>>),
4086            #[cfg(feature = "xinput")]
4087            Request::XinputXIUngrabDevice(_) => None,
4088            #[cfg(feature = "xinput")]
4089            Request::XinputXIAllowEvents(_) => None,
4090            #[cfg(feature = "xinput")]
4091            Request::XinputXIPassiveGrabDevice(_) => Some(parse_reply::<xinput::XIPassiveGrabDeviceRequest<'_>>),
4092            #[cfg(feature = "xinput")]
4093            Request::XinputXIPassiveUngrabDevice(_) => None,
4094            #[cfg(feature = "xinput")]
4095            Request::XinputXIListProperties(_) => Some(parse_reply::<xinput::XIListPropertiesRequest>),
4096            #[cfg(feature = "xinput")]
4097            Request::XinputXIChangeProperty(_) => None,
4098            #[cfg(feature = "xinput")]
4099            Request::XinputXIDeleteProperty(_) => None,
4100            #[cfg(feature = "xinput")]
4101            Request::XinputXIGetProperty(_) => Some(parse_reply::<xinput::XIGetPropertyRequest>),
4102            #[cfg(feature = "xinput")]
4103            Request::XinputXIGetSelectedEvents(_) => Some(parse_reply::<xinput::XIGetSelectedEventsRequest>),
4104            #[cfg(feature = "xinput")]
4105            Request::XinputXIBarrierReleasePointer(_) => None,
4106            #[cfg(feature = "xinput")]
4107            Request::XinputSendExtensionEvent(_) => None,
4108            #[cfg(feature = "xkb")]
4109            Request::XkbUseExtension(_) => Some(parse_reply::<xkb::UseExtensionRequest>),
4110            #[cfg(feature = "xkb")]
4111            Request::XkbSelectEvents(_) => None,
4112            #[cfg(feature = "xkb")]
4113            Request::XkbBell(_) => None,
4114            #[cfg(feature = "xkb")]
4115            Request::XkbGetState(_) => Some(parse_reply::<xkb::GetStateRequest>),
4116            #[cfg(feature = "xkb")]
4117            Request::XkbLatchLockState(_) => None,
4118            #[cfg(feature = "xkb")]
4119            Request::XkbGetControls(_) => Some(parse_reply::<xkb::GetControlsRequest>),
4120            #[cfg(feature = "xkb")]
4121            Request::XkbSetControls(_) => None,
4122            #[cfg(feature = "xkb")]
4123            Request::XkbGetMap(_) => Some(parse_reply::<xkb::GetMapRequest>),
4124            #[cfg(feature = "xkb")]
4125            Request::XkbSetMap(_) => None,
4126            #[cfg(feature = "xkb")]
4127            Request::XkbGetCompatMap(_) => Some(parse_reply::<xkb::GetCompatMapRequest>),
4128            #[cfg(feature = "xkb")]
4129            Request::XkbSetCompatMap(_) => None,
4130            #[cfg(feature = "xkb")]
4131            Request::XkbGetIndicatorState(_) => Some(parse_reply::<xkb::GetIndicatorStateRequest>),
4132            #[cfg(feature = "xkb")]
4133            Request::XkbGetIndicatorMap(_) => Some(parse_reply::<xkb::GetIndicatorMapRequest>),
4134            #[cfg(feature = "xkb")]
4135            Request::XkbSetIndicatorMap(_) => None,
4136            #[cfg(feature = "xkb")]
4137            Request::XkbGetNamedIndicator(_) => Some(parse_reply::<xkb::GetNamedIndicatorRequest>),
4138            #[cfg(feature = "xkb")]
4139            Request::XkbSetNamedIndicator(_) => None,
4140            #[cfg(feature = "xkb")]
4141            Request::XkbGetNames(_) => Some(parse_reply::<xkb::GetNamesRequest>),
4142            #[cfg(feature = "xkb")]
4143            Request::XkbSetNames(_) => None,
4144            #[cfg(feature = "xkb")]
4145            Request::XkbPerClientFlags(_) => Some(parse_reply::<xkb::PerClientFlagsRequest>),
4146            #[cfg(feature = "xkb")]
4147            Request::XkbListComponents(_) => Some(parse_reply::<xkb::ListComponentsRequest>),
4148            #[cfg(feature = "xkb")]
4149            Request::XkbGetKbdByName(_) => Some(parse_reply::<xkb::GetKbdByNameRequest>),
4150            #[cfg(feature = "xkb")]
4151            Request::XkbGetDeviceInfo(_) => Some(parse_reply::<xkb::GetDeviceInfoRequest>),
4152            #[cfg(feature = "xkb")]
4153            Request::XkbSetDeviceInfo(_) => None,
4154            #[cfg(feature = "xkb")]
4155            Request::XkbSetDebuggingFlags(_) => Some(parse_reply::<xkb::SetDebuggingFlagsRequest<'_>>),
4156            #[cfg(feature = "xprint")]
4157            Request::XprintPrintQueryVersion(_) => Some(parse_reply::<xprint::PrintQueryVersionRequest>),
4158            #[cfg(feature = "xprint")]
4159            Request::XprintPrintGetPrinterList(_) => Some(parse_reply::<xprint::PrintGetPrinterListRequest<'_>>),
4160            #[cfg(feature = "xprint")]
4161            Request::XprintPrintRehashPrinterList(_) => None,
4162            #[cfg(feature = "xprint")]
4163            Request::XprintCreateContext(_) => None,
4164            #[cfg(feature = "xprint")]
4165            Request::XprintPrintSetContext(_) => None,
4166            #[cfg(feature = "xprint")]
4167            Request::XprintPrintGetContext(_) => Some(parse_reply::<xprint::PrintGetContextRequest>),
4168            #[cfg(feature = "xprint")]
4169            Request::XprintPrintDestroyContext(_) => None,
4170            #[cfg(feature = "xprint")]
4171            Request::XprintPrintGetScreenOfContext(_) => Some(parse_reply::<xprint::PrintGetScreenOfContextRequest>),
4172            #[cfg(feature = "xprint")]
4173            Request::XprintPrintStartJob(_) => None,
4174            #[cfg(feature = "xprint")]
4175            Request::XprintPrintEndJob(_) => None,
4176            #[cfg(feature = "xprint")]
4177            Request::XprintPrintStartDoc(_) => None,
4178            #[cfg(feature = "xprint")]
4179            Request::XprintPrintEndDoc(_) => None,
4180            #[cfg(feature = "xprint")]
4181            Request::XprintPrintPutDocumentData(_) => None,
4182            #[cfg(feature = "xprint")]
4183            Request::XprintPrintGetDocumentData(_) => Some(parse_reply::<xprint::PrintGetDocumentDataRequest>),
4184            #[cfg(feature = "xprint")]
4185            Request::XprintPrintStartPage(_) => None,
4186            #[cfg(feature = "xprint")]
4187            Request::XprintPrintEndPage(_) => None,
4188            #[cfg(feature = "xprint")]
4189            Request::XprintPrintSelectInput(_) => None,
4190            #[cfg(feature = "xprint")]
4191            Request::XprintPrintInputSelected(_) => Some(parse_reply::<xprint::PrintInputSelectedRequest>),
4192            #[cfg(feature = "xprint")]
4193            Request::XprintPrintGetAttributes(_) => Some(parse_reply::<xprint::PrintGetAttributesRequest>),
4194            #[cfg(feature = "xprint")]
4195            Request::XprintPrintGetOneAttributes(_) => Some(parse_reply::<xprint::PrintGetOneAttributesRequest<'_>>),
4196            #[cfg(feature = "xprint")]
4197            Request::XprintPrintSetAttributes(_) => None,
4198            #[cfg(feature = "xprint")]
4199            Request::XprintPrintGetPageDimensions(_) => Some(parse_reply::<xprint::PrintGetPageDimensionsRequest>),
4200            #[cfg(feature = "xprint")]
4201            Request::XprintPrintQueryScreens(_) => Some(parse_reply::<xprint::PrintQueryScreensRequest>),
4202            #[cfg(feature = "xprint")]
4203            Request::XprintPrintSetImageResolution(_) => Some(parse_reply::<xprint::PrintSetImageResolutionRequest>),
4204            #[cfg(feature = "xprint")]
4205            Request::XprintPrintGetImageResolution(_) => Some(parse_reply::<xprint::PrintGetImageResolutionRequest>),
4206            #[cfg(feature = "xselinux")]
4207            Request::XselinuxQueryVersion(_) => Some(parse_reply::<xselinux::QueryVersionRequest>),
4208            #[cfg(feature = "xselinux")]
4209            Request::XselinuxSetDeviceCreateContext(_) => None,
4210            #[cfg(feature = "xselinux")]
4211            Request::XselinuxGetDeviceCreateContext(_) => Some(parse_reply::<xselinux::GetDeviceCreateContextRequest>),
4212            #[cfg(feature = "xselinux")]
4213            Request::XselinuxSetDeviceContext(_) => None,
4214            #[cfg(feature = "xselinux")]
4215            Request::XselinuxGetDeviceContext(_) => Some(parse_reply::<xselinux::GetDeviceContextRequest>),
4216            #[cfg(feature = "xselinux")]
4217            Request::XselinuxSetWindowCreateContext(_) => None,
4218            #[cfg(feature = "xselinux")]
4219            Request::XselinuxGetWindowCreateContext(_) => Some(parse_reply::<xselinux::GetWindowCreateContextRequest>),
4220            #[cfg(feature = "xselinux")]
4221            Request::XselinuxGetWindowContext(_) => Some(parse_reply::<xselinux::GetWindowContextRequest>),
4222            #[cfg(feature = "xselinux")]
4223            Request::XselinuxSetPropertyCreateContext(_) => None,
4224            #[cfg(feature = "xselinux")]
4225            Request::XselinuxGetPropertyCreateContext(_) => Some(parse_reply::<xselinux::GetPropertyCreateContextRequest>),
4226            #[cfg(feature = "xselinux")]
4227            Request::XselinuxSetPropertyUseContext(_) => None,
4228            #[cfg(feature = "xselinux")]
4229            Request::XselinuxGetPropertyUseContext(_) => Some(parse_reply::<xselinux::GetPropertyUseContextRequest>),
4230            #[cfg(feature = "xselinux")]
4231            Request::XselinuxGetPropertyContext(_) => Some(parse_reply::<xselinux::GetPropertyContextRequest>),
4232            #[cfg(feature = "xselinux")]
4233            Request::XselinuxGetPropertyDataContext(_) => Some(parse_reply::<xselinux::GetPropertyDataContextRequest>),
4234            #[cfg(feature = "xselinux")]
4235            Request::XselinuxListProperties(_) => Some(parse_reply::<xselinux::ListPropertiesRequest>),
4236            #[cfg(feature = "xselinux")]
4237            Request::XselinuxSetSelectionCreateContext(_) => None,
4238            #[cfg(feature = "xselinux")]
4239            Request::XselinuxGetSelectionCreateContext(_) => Some(parse_reply::<xselinux::GetSelectionCreateContextRequest>),
4240            #[cfg(feature = "xselinux")]
4241            Request::XselinuxSetSelectionUseContext(_) => None,
4242            #[cfg(feature = "xselinux")]
4243            Request::XselinuxGetSelectionUseContext(_) => Some(parse_reply::<xselinux::GetSelectionUseContextRequest>),
4244            #[cfg(feature = "xselinux")]
4245            Request::XselinuxGetSelectionContext(_) => Some(parse_reply::<xselinux::GetSelectionContextRequest>),
4246            #[cfg(feature = "xselinux")]
4247            Request::XselinuxGetSelectionDataContext(_) => Some(parse_reply::<xselinux::GetSelectionDataContextRequest>),
4248            #[cfg(feature = "xselinux")]
4249            Request::XselinuxListSelections(_) => Some(parse_reply::<xselinux::ListSelectionsRequest>),
4250            #[cfg(feature = "xselinux")]
4251            Request::XselinuxGetClientContext(_) => Some(parse_reply::<xselinux::GetClientContextRequest>),
4252            #[cfg(feature = "xtest")]
4253            Request::XtestGetVersion(_) => Some(parse_reply::<xtest::GetVersionRequest>),
4254            #[cfg(feature = "xtest")]
4255            Request::XtestCompareCursor(_) => Some(parse_reply::<xtest::CompareCursorRequest>),
4256            #[cfg(feature = "xtest")]
4257            Request::XtestFakeInput(_) => None,
4258            #[cfg(feature = "xtest")]
4259            Request::XtestGrabControl(_) => None,
4260            #[cfg(feature = "xv")]
4261            Request::XvQueryExtension(_) => Some(parse_reply::<xv::QueryExtensionRequest>),
4262            #[cfg(feature = "xv")]
4263            Request::XvQueryAdaptors(_) => Some(parse_reply::<xv::QueryAdaptorsRequest>),
4264            #[cfg(feature = "xv")]
4265            Request::XvQueryEncodings(_) => Some(parse_reply::<xv::QueryEncodingsRequest>),
4266            #[cfg(feature = "xv")]
4267            Request::XvGrabPort(_) => Some(parse_reply::<xv::GrabPortRequest>),
4268            #[cfg(feature = "xv")]
4269            Request::XvUngrabPort(_) => None,
4270            #[cfg(feature = "xv")]
4271            Request::XvPutVideo(_) => None,
4272            #[cfg(feature = "xv")]
4273            Request::XvPutStill(_) => None,
4274            #[cfg(feature = "xv")]
4275            Request::XvGetVideo(_) => None,
4276            #[cfg(feature = "xv")]
4277            Request::XvGetStill(_) => None,
4278            #[cfg(feature = "xv")]
4279            Request::XvStopVideo(_) => None,
4280            #[cfg(feature = "xv")]
4281            Request::XvSelectVideoNotify(_) => None,
4282            #[cfg(feature = "xv")]
4283            Request::XvSelectPortNotify(_) => None,
4284            #[cfg(feature = "xv")]
4285            Request::XvQueryBestSize(_) => Some(parse_reply::<xv::QueryBestSizeRequest>),
4286            #[cfg(feature = "xv")]
4287            Request::XvSetPortAttribute(_) => None,
4288            #[cfg(feature = "xv")]
4289            Request::XvGetPortAttribute(_) => Some(parse_reply::<xv::GetPortAttributeRequest>),
4290            #[cfg(feature = "xv")]
4291            Request::XvQueryPortAttributes(_) => Some(parse_reply::<xv::QueryPortAttributesRequest>),
4292            #[cfg(feature = "xv")]
4293            Request::XvListImageFormats(_) => Some(parse_reply::<xv::ListImageFormatsRequest>),
4294            #[cfg(feature = "xv")]
4295            Request::XvQueryImageAttributes(_) => Some(parse_reply::<xv::QueryImageAttributesRequest>),
4296            #[cfg(feature = "xv")]
4297            Request::XvPutImage(_) => None,
4298            #[cfg(feature = "xv")]
4299            Request::XvShmPutImage(_) => None,
4300            #[cfg(feature = "xvmc")]
4301            Request::XvmcQueryVersion(_) => Some(parse_reply::<xvmc::QueryVersionRequest>),
4302            #[cfg(feature = "xvmc")]
4303            Request::XvmcListSurfaceTypes(_) => Some(parse_reply::<xvmc::ListSurfaceTypesRequest>),
4304            #[cfg(feature = "xvmc")]
4305            Request::XvmcCreateContext(_) => Some(parse_reply::<xvmc::CreateContextRequest>),
4306            #[cfg(feature = "xvmc")]
4307            Request::XvmcDestroyContext(_) => None,
4308            #[cfg(feature = "xvmc")]
4309            Request::XvmcCreateSurface(_) => Some(parse_reply::<xvmc::CreateSurfaceRequest>),
4310            #[cfg(feature = "xvmc")]
4311            Request::XvmcDestroySurface(_) => None,
4312            #[cfg(feature = "xvmc")]
4313            Request::XvmcCreateSubpicture(_) => Some(parse_reply::<xvmc::CreateSubpictureRequest>),
4314            #[cfg(feature = "xvmc")]
4315            Request::XvmcDestroySubpicture(_) => None,
4316            #[cfg(feature = "xvmc")]
4317            Request::XvmcListSubpictureTypes(_) => Some(parse_reply::<xvmc::ListSubpictureTypesRequest>),
4318        }
4319    }
4320    /// Convert this Request into an owned version with no borrows.
4321    pub fn into_owned(self) -> Request<'static> {
4322        match self {
4323            Request::Unknown(header, body) => Request::Unknown(header, Cow::Owned(body.into_owned())),
4324            Request::CreateWindow(req) => Request::CreateWindow(req.into_owned()),
4325            Request::ChangeWindowAttributes(req) => Request::ChangeWindowAttributes(req.into_owned()),
4326            Request::GetWindowAttributes(req) => Request::GetWindowAttributes(req),
4327            Request::DestroyWindow(req) => Request::DestroyWindow(req),
4328            Request::DestroySubwindows(req) => Request::DestroySubwindows(req),
4329            Request::ChangeSaveSet(req) => Request::ChangeSaveSet(req),
4330            Request::ReparentWindow(req) => Request::ReparentWindow(req),
4331            Request::MapWindow(req) => Request::MapWindow(req),
4332            Request::MapSubwindows(req) => Request::MapSubwindows(req),
4333            Request::UnmapWindow(req) => Request::UnmapWindow(req),
4334            Request::UnmapSubwindows(req) => Request::UnmapSubwindows(req),
4335            Request::ConfigureWindow(req) => Request::ConfigureWindow(req.into_owned()),
4336            Request::CirculateWindow(req) => Request::CirculateWindow(req),
4337            Request::GetGeometry(req) => Request::GetGeometry(req),
4338            Request::QueryTree(req) => Request::QueryTree(req),
4339            Request::InternAtom(req) => Request::InternAtom(req.into_owned()),
4340            Request::GetAtomName(req) => Request::GetAtomName(req),
4341            Request::ChangeProperty(req) => Request::ChangeProperty(req.into_owned()),
4342            Request::DeleteProperty(req) => Request::DeleteProperty(req),
4343            Request::GetProperty(req) => Request::GetProperty(req),
4344            Request::ListProperties(req) => Request::ListProperties(req),
4345            Request::SetSelectionOwner(req) => Request::SetSelectionOwner(req),
4346            Request::GetSelectionOwner(req) => Request::GetSelectionOwner(req),
4347            Request::ConvertSelection(req) => Request::ConvertSelection(req),
4348            Request::SendEvent(req) => Request::SendEvent(req.into_owned()),
4349            Request::GrabPointer(req) => Request::GrabPointer(req),
4350            Request::UngrabPointer(req) => Request::UngrabPointer(req),
4351            Request::GrabButton(req) => Request::GrabButton(req),
4352            Request::UngrabButton(req) => Request::UngrabButton(req),
4353            Request::ChangeActivePointerGrab(req) => Request::ChangeActivePointerGrab(req),
4354            Request::GrabKeyboard(req) => Request::GrabKeyboard(req),
4355            Request::UngrabKeyboard(req) => Request::UngrabKeyboard(req),
4356            Request::GrabKey(req) => Request::GrabKey(req),
4357            Request::UngrabKey(req) => Request::UngrabKey(req),
4358            Request::AllowEvents(req) => Request::AllowEvents(req),
4359            Request::GrabServer(req) => Request::GrabServer(req),
4360            Request::UngrabServer(req) => Request::UngrabServer(req),
4361            Request::QueryPointer(req) => Request::QueryPointer(req),
4362            Request::GetMotionEvents(req) => Request::GetMotionEvents(req),
4363            Request::TranslateCoordinates(req) => Request::TranslateCoordinates(req),
4364            Request::WarpPointer(req) => Request::WarpPointer(req),
4365            Request::SetInputFocus(req) => Request::SetInputFocus(req),
4366            Request::GetInputFocus(req) => Request::GetInputFocus(req),
4367            Request::QueryKeymap(req) => Request::QueryKeymap(req),
4368            Request::OpenFont(req) => Request::OpenFont(req.into_owned()),
4369            Request::CloseFont(req) => Request::CloseFont(req),
4370            Request::QueryFont(req) => Request::QueryFont(req),
4371            Request::QueryTextExtents(req) => Request::QueryTextExtents(req.into_owned()),
4372            Request::ListFonts(req) => Request::ListFonts(req.into_owned()),
4373            Request::ListFontsWithInfo(req) => Request::ListFontsWithInfo(req.into_owned()),
4374            Request::SetFontPath(req) => Request::SetFontPath(req.into_owned()),
4375            Request::GetFontPath(req) => Request::GetFontPath(req),
4376            Request::CreatePixmap(req) => Request::CreatePixmap(req),
4377            Request::FreePixmap(req) => Request::FreePixmap(req),
4378            Request::CreateGC(req) => Request::CreateGC(req.into_owned()),
4379            Request::ChangeGC(req) => Request::ChangeGC(req.into_owned()),
4380            Request::CopyGC(req) => Request::CopyGC(req),
4381            Request::SetDashes(req) => Request::SetDashes(req.into_owned()),
4382            Request::SetClipRectangles(req) => Request::SetClipRectangles(req.into_owned()),
4383            Request::FreeGC(req) => Request::FreeGC(req),
4384            Request::ClearArea(req) => Request::ClearArea(req),
4385            Request::CopyArea(req) => Request::CopyArea(req),
4386            Request::CopyPlane(req) => Request::CopyPlane(req),
4387            Request::PolyPoint(req) => Request::PolyPoint(req.into_owned()),
4388            Request::PolyLine(req) => Request::PolyLine(req.into_owned()),
4389            Request::PolySegment(req) => Request::PolySegment(req.into_owned()),
4390            Request::PolyRectangle(req) => Request::PolyRectangle(req.into_owned()),
4391            Request::PolyArc(req) => Request::PolyArc(req.into_owned()),
4392            Request::FillPoly(req) => Request::FillPoly(req.into_owned()),
4393            Request::PolyFillRectangle(req) => Request::PolyFillRectangle(req.into_owned()),
4394            Request::PolyFillArc(req) => Request::PolyFillArc(req.into_owned()),
4395            Request::PutImage(req) => Request::PutImage(req.into_owned()),
4396            Request::GetImage(req) => Request::GetImage(req),
4397            Request::PolyText8(req) => Request::PolyText8(req.into_owned()),
4398            Request::PolyText16(req) => Request::PolyText16(req.into_owned()),
4399            Request::ImageText8(req) => Request::ImageText8(req.into_owned()),
4400            Request::ImageText16(req) => Request::ImageText16(req.into_owned()),
4401            Request::CreateColormap(req) => Request::CreateColormap(req),
4402            Request::FreeColormap(req) => Request::FreeColormap(req),
4403            Request::CopyColormapAndFree(req) => Request::CopyColormapAndFree(req),
4404            Request::InstallColormap(req) => Request::InstallColormap(req),
4405            Request::UninstallColormap(req) => Request::UninstallColormap(req),
4406            Request::ListInstalledColormaps(req) => Request::ListInstalledColormaps(req),
4407            Request::AllocColor(req) => Request::AllocColor(req),
4408            Request::AllocNamedColor(req) => Request::AllocNamedColor(req.into_owned()),
4409            Request::AllocColorCells(req) => Request::AllocColorCells(req),
4410            Request::AllocColorPlanes(req) => Request::AllocColorPlanes(req),
4411            Request::FreeColors(req) => Request::FreeColors(req.into_owned()),
4412            Request::StoreColors(req) => Request::StoreColors(req.into_owned()),
4413            Request::StoreNamedColor(req) => Request::StoreNamedColor(req.into_owned()),
4414            Request::QueryColors(req) => Request::QueryColors(req.into_owned()),
4415            Request::LookupColor(req) => Request::LookupColor(req.into_owned()),
4416            Request::CreateCursor(req) => Request::CreateCursor(req),
4417            Request::CreateGlyphCursor(req) => Request::CreateGlyphCursor(req),
4418            Request::FreeCursor(req) => Request::FreeCursor(req),
4419            Request::RecolorCursor(req) => Request::RecolorCursor(req),
4420            Request::QueryBestSize(req) => Request::QueryBestSize(req),
4421            Request::QueryExtension(req) => Request::QueryExtension(req.into_owned()),
4422            Request::ListExtensions(req) => Request::ListExtensions(req),
4423            Request::ChangeKeyboardMapping(req) => Request::ChangeKeyboardMapping(req.into_owned()),
4424            Request::GetKeyboardMapping(req) => Request::GetKeyboardMapping(req),
4425            Request::ChangeKeyboardControl(req) => Request::ChangeKeyboardControl(req.into_owned()),
4426            Request::GetKeyboardControl(req) => Request::GetKeyboardControl(req),
4427            Request::Bell(req) => Request::Bell(req),
4428            Request::ChangePointerControl(req) => Request::ChangePointerControl(req),
4429            Request::GetPointerControl(req) => Request::GetPointerControl(req),
4430            Request::SetScreenSaver(req) => Request::SetScreenSaver(req),
4431            Request::GetScreenSaver(req) => Request::GetScreenSaver(req),
4432            Request::ChangeHosts(req) => Request::ChangeHosts(req.into_owned()),
4433            Request::ListHosts(req) => Request::ListHosts(req),
4434            Request::SetAccessControl(req) => Request::SetAccessControl(req),
4435            Request::SetCloseDownMode(req) => Request::SetCloseDownMode(req),
4436            Request::KillClient(req) => Request::KillClient(req),
4437            Request::RotateProperties(req) => Request::RotateProperties(req.into_owned()),
4438            Request::ForceScreenSaver(req) => Request::ForceScreenSaver(req),
4439            Request::SetPointerMapping(req) => Request::SetPointerMapping(req.into_owned()),
4440            Request::GetPointerMapping(req) => Request::GetPointerMapping(req),
4441            Request::SetModifierMapping(req) => Request::SetModifierMapping(req.into_owned()),
4442            Request::GetModifierMapping(req) => Request::GetModifierMapping(req),
4443            Request::NoOperation(req) => Request::NoOperation(req),
4444            Request::BigreqEnable(req) => Request::BigreqEnable(req),
4445            #[cfg(feature = "composite")]
4446            Request::CompositeQueryVersion(req) => Request::CompositeQueryVersion(req),
4447            #[cfg(feature = "composite")]
4448            Request::CompositeRedirectWindow(req) => Request::CompositeRedirectWindow(req),
4449            #[cfg(feature = "composite")]
4450            Request::CompositeRedirectSubwindows(req) => Request::CompositeRedirectSubwindows(req),
4451            #[cfg(feature = "composite")]
4452            Request::CompositeUnredirectWindow(req) => Request::CompositeUnredirectWindow(req),
4453            #[cfg(feature = "composite")]
4454            Request::CompositeUnredirectSubwindows(req) => Request::CompositeUnredirectSubwindows(req),
4455            #[cfg(feature = "composite")]
4456            Request::CompositeCreateRegionFromBorderClip(req) => Request::CompositeCreateRegionFromBorderClip(req),
4457            #[cfg(feature = "composite")]
4458            Request::CompositeNameWindowPixmap(req) => Request::CompositeNameWindowPixmap(req),
4459            #[cfg(feature = "composite")]
4460            Request::CompositeGetOverlayWindow(req) => Request::CompositeGetOverlayWindow(req),
4461            #[cfg(feature = "composite")]
4462            Request::CompositeReleaseOverlayWindow(req) => Request::CompositeReleaseOverlayWindow(req),
4463            #[cfg(feature = "damage")]
4464            Request::DamageQueryVersion(req) => Request::DamageQueryVersion(req),
4465            #[cfg(feature = "damage")]
4466            Request::DamageCreate(req) => Request::DamageCreate(req),
4467            #[cfg(feature = "damage")]
4468            Request::DamageDestroy(req) => Request::DamageDestroy(req),
4469            #[cfg(feature = "damage")]
4470            Request::DamageSubtract(req) => Request::DamageSubtract(req),
4471            #[cfg(feature = "damage")]
4472            Request::DamageAdd(req) => Request::DamageAdd(req),
4473            #[cfg(feature = "dbe")]
4474            Request::DbeQueryVersion(req) => Request::DbeQueryVersion(req),
4475            #[cfg(feature = "dbe")]
4476            Request::DbeAllocateBackBuffer(req) => Request::DbeAllocateBackBuffer(req),
4477            #[cfg(feature = "dbe")]
4478            Request::DbeDeallocateBackBuffer(req) => Request::DbeDeallocateBackBuffer(req),
4479            #[cfg(feature = "dbe")]
4480            Request::DbeSwapBuffers(req) => Request::DbeSwapBuffers(req.into_owned()),
4481            #[cfg(feature = "dbe")]
4482            Request::DbeBeginIdiom(req) => Request::DbeBeginIdiom(req),
4483            #[cfg(feature = "dbe")]
4484            Request::DbeEndIdiom(req) => Request::DbeEndIdiom(req),
4485            #[cfg(feature = "dbe")]
4486            Request::DbeGetVisualInfo(req) => Request::DbeGetVisualInfo(req.into_owned()),
4487            #[cfg(feature = "dbe")]
4488            Request::DbeGetBackBufferAttributes(req) => Request::DbeGetBackBufferAttributes(req),
4489            #[cfg(feature = "dpms")]
4490            Request::DpmsGetVersion(req) => Request::DpmsGetVersion(req),
4491            #[cfg(feature = "dpms")]
4492            Request::DpmsCapable(req) => Request::DpmsCapable(req),
4493            #[cfg(feature = "dpms")]
4494            Request::DpmsGetTimeouts(req) => Request::DpmsGetTimeouts(req),
4495            #[cfg(feature = "dpms")]
4496            Request::DpmsSetTimeouts(req) => Request::DpmsSetTimeouts(req),
4497            #[cfg(feature = "dpms")]
4498            Request::DpmsEnable(req) => Request::DpmsEnable(req),
4499            #[cfg(feature = "dpms")]
4500            Request::DpmsDisable(req) => Request::DpmsDisable(req),
4501            #[cfg(feature = "dpms")]
4502            Request::DpmsForceLevel(req) => Request::DpmsForceLevel(req),
4503            #[cfg(feature = "dpms")]
4504            Request::DpmsInfo(req) => Request::DpmsInfo(req),
4505            #[cfg(feature = "dpms")]
4506            Request::DpmsSelectInput(req) => Request::DpmsSelectInput(req),
4507            #[cfg(feature = "dri2")]
4508            Request::Dri2QueryVersion(req) => Request::Dri2QueryVersion(req),
4509            #[cfg(feature = "dri2")]
4510            Request::Dri2Connect(req) => Request::Dri2Connect(req),
4511            #[cfg(feature = "dri2")]
4512            Request::Dri2Authenticate(req) => Request::Dri2Authenticate(req),
4513            #[cfg(feature = "dri2")]
4514            Request::Dri2CreateDrawable(req) => Request::Dri2CreateDrawable(req),
4515            #[cfg(feature = "dri2")]
4516            Request::Dri2DestroyDrawable(req) => Request::Dri2DestroyDrawable(req),
4517            #[cfg(feature = "dri2")]
4518            Request::Dri2GetBuffers(req) => Request::Dri2GetBuffers(req.into_owned()),
4519            #[cfg(feature = "dri2")]
4520            Request::Dri2CopyRegion(req) => Request::Dri2CopyRegion(req),
4521            #[cfg(feature = "dri2")]
4522            Request::Dri2GetBuffersWithFormat(req) => Request::Dri2GetBuffersWithFormat(req.into_owned()),
4523            #[cfg(feature = "dri2")]
4524            Request::Dri2SwapBuffers(req) => Request::Dri2SwapBuffers(req),
4525            #[cfg(feature = "dri2")]
4526            Request::Dri2GetMSC(req) => Request::Dri2GetMSC(req),
4527            #[cfg(feature = "dri2")]
4528            Request::Dri2WaitMSC(req) => Request::Dri2WaitMSC(req),
4529            #[cfg(feature = "dri2")]
4530            Request::Dri2WaitSBC(req) => Request::Dri2WaitSBC(req),
4531            #[cfg(feature = "dri2")]
4532            Request::Dri2SwapInterval(req) => Request::Dri2SwapInterval(req),
4533            #[cfg(feature = "dri2")]
4534            Request::Dri2GetParam(req) => Request::Dri2GetParam(req),
4535            #[cfg(feature = "dri3")]
4536            Request::Dri3QueryVersion(req) => Request::Dri3QueryVersion(req),
4537            #[cfg(feature = "dri3")]
4538            Request::Dri3Open(req) => Request::Dri3Open(req),
4539            #[cfg(feature = "dri3")]
4540            Request::Dri3PixmapFromBuffer(req) => Request::Dri3PixmapFromBuffer(req),
4541            #[cfg(feature = "dri3")]
4542            Request::Dri3BufferFromPixmap(req) => Request::Dri3BufferFromPixmap(req),
4543            #[cfg(feature = "dri3")]
4544            Request::Dri3FenceFromFD(req) => Request::Dri3FenceFromFD(req),
4545            #[cfg(feature = "dri3")]
4546            Request::Dri3FDFromFence(req) => Request::Dri3FDFromFence(req),
4547            #[cfg(feature = "dri3")]
4548            Request::Dri3GetSupportedModifiers(req) => Request::Dri3GetSupportedModifiers(req),
4549            #[cfg(feature = "dri3")]
4550            Request::Dri3PixmapFromBuffers(req) => Request::Dri3PixmapFromBuffers(req),
4551            #[cfg(feature = "dri3")]
4552            Request::Dri3BuffersFromPixmap(req) => Request::Dri3BuffersFromPixmap(req),
4553            #[cfg(feature = "dri3")]
4554            Request::Dri3SetDRMDeviceInUse(req) => Request::Dri3SetDRMDeviceInUse(req),
4555            #[cfg(feature = "dri3")]
4556            Request::Dri3ImportSyncobj(req) => Request::Dri3ImportSyncobj(req),
4557            #[cfg(feature = "dri3")]
4558            Request::Dri3FreeSyncobj(req) => Request::Dri3FreeSyncobj(req),
4559            Request::GeQueryVersion(req) => Request::GeQueryVersion(req),
4560            #[cfg(feature = "glx")]
4561            Request::GlxRender(req) => Request::GlxRender(req.into_owned()),
4562            #[cfg(feature = "glx")]
4563            Request::GlxRenderLarge(req) => Request::GlxRenderLarge(req.into_owned()),
4564            #[cfg(feature = "glx")]
4565            Request::GlxCreateContext(req) => Request::GlxCreateContext(req),
4566            #[cfg(feature = "glx")]
4567            Request::GlxDestroyContext(req) => Request::GlxDestroyContext(req),
4568            #[cfg(feature = "glx")]
4569            Request::GlxMakeCurrent(req) => Request::GlxMakeCurrent(req),
4570            #[cfg(feature = "glx")]
4571            Request::GlxIsDirect(req) => Request::GlxIsDirect(req),
4572            #[cfg(feature = "glx")]
4573            Request::GlxQueryVersion(req) => Request::GlxQueryVersion(req),
4574            #[cfg(feature = "glx")]
4575            Request::GlxWaitGL(req) => Request::GlxWaitGL(req),
4576            #[cfg(feature = "glx")]
4577            Request::GlxWaitX(req) => Request::GlxWaitX(req),
4578            #[cfg(feature = "glx")]
4579            Request::GlxCopyContext(req) => Request::GlxCopyContext(req),
4580            #[cfg(feature = "glx")]
4581            Request::GlxSwapBuffers(req) => Request::GlxSwapBuffers(req),
4582            #[cfg(feature = "glx")]
4583            Request::GlxUseXFont(req) => Request::GlxUseXFont(req),
4584            #[cfg(feature = "glx")]
4585            Request::GlxCreateGLXPixmap(req) => Request::GlxCreateGLXPixmap(req),
4586            #[cfg(feature = "glx")]
4587            Request::GlxGetVisualConfigs(req) => Request::GlxGetVisualConfigs(req),
4588            #[cfg(feature = "glx")]
4589            Request::GlxDestroyGLXPixmap(req) => Request::GlxDestroyGLXPixmap(req),
4590            #[cfg(feature = "glx")]
4591            Request::GlxVendorPrivate(req) => Request::GlxVendorPrivate(req.into_owned()),
4592            #[cfg(feature = "glx")]
4593            Request::GlxVendorPrivateWithReply(req) => Request::GlxVendorPrivateWithReply(req.into_owned()),
4594            #[cfg(feature = "glx")]
4595            Request::GlxQueryExtensionsString(req) => Request::GlxQueryExtensionsString(req),
4596            #[cfg(feature = "glx")]
4597            Request::GlxQueryServerString(req) => Request::GlxQueryServerString(req),
4598            #[cfg(feature = "glx")]
4599            Request::GlxClientInfo(req) => Request::GlxClientInfo(req.into_owned()),
4600            #[cfg(feature = "glx")]
4601            Request::GlxGetFBConfigs(req) => Request::GlxGetFBConfigs(req),
4602            #[cfg(feature = "glx")]
4603            Request::GlxCreatePixmap(req) => Request::GlxCreatePixmap(req.into_owned()),
4604            #[cfg(feature = "glx")]
4605            Request::GlxDestroyPixmap(req) => Request::GlxDestroyPixmap(req),
4606            #[cfg(feature = "glx")]
4607            Request::GlxCreateNewContext(req) => Request::GlxCreateNewContext(req),
4608            #[cfg(feature = "glx")]
4609            Request::GlxQueryContext(req) => Request::GlxQueryContext(req),
4610            #[cfg(feature = "glx")]
4611            Request::GlxMakeContextCurrent(req) => Request::GlxMakeContextCurrent(req),
4612            #[cfg(feature = "glx")]
4613            Request::GlxCreatePbuffer(req) => Request::GlxCreatePbuffer(req.into_owned()),
4614            #[cfg(feature = "glx")]
4615            Request::GlxDestroyPbuffer(req) => Request::GlxDestroyPbuffer(req),
4616            #[cfg(feature = "glx")]
4617            Request::GlxGetDrawableAttributes(req) => Request::GlxGetDrawableAttributes(req),
4618            #[cfg(feature = "glx")]
4619            Request::GlxChangeDrawableAttributes(req) => Request::GlxChangeDrawableAttributes(req.into_owned()),
4620            #[cfg(feature = "glx")]
4621            Request::GlxCreateWindow(req) => Request::GlxCreateWindow(req.into_owned()),
4622            #[cfg(feature = "glx")]
4623            Request::GlxDeleteWindow(req) => Request::GlxDeleteWindow(req),
4624            #[cfg(feature = "glx")]
4625            Request::GlxSetClientInfoARB(req) => Request::GlxSetClientInfoARB(req.into_owned()),
4626            #[cfg(feature = "glx")]
4627            Request::GlxCreateContextAttribsARB(req) => Request::GlxCreateContextAttribsARB(req.into_owned()),
4628            #[cfg(feature = "glx")]
4629            Request::GlxSetClientInfo2ARB(req) => Request::GlxSetClientInfo2ARB(req.into_owned()),
4630            #[cfg(feature = "glx")]
4631            Request::GlxNewList(req) => Request::GlxNewList(req),
4632            #[cfg(feature = "glx")]
4633            Request::GlxEndList(req) => Request::GlxEndList(req),
4634            #[cfg(feature = "glx")]
4635            Request::GlxDeleteLists(req) => Request::GlxDeleteLists(req),
4636            #[cfg(feature = "glx")]
4637            Request::GlxGenLists(req) => Request::GlxGenLists(req),
4638            #[cfg(feature = "glx")]
4639            Request::GlxFeedbackBuffer(req) => Request::GlxFeedbackBuffer(req),
4640            #[cfg(feature = "glx")]
4641            Request::GlxSelectBuffer(req) => Request::GlxSelectBuffer(req),
4642            #[cfg(feature = "glx")]
4643            Request::GlxRenderMode(req) => Request::GlxRenderMode(req),
4644            #[cfg(feature = "glx")]
4645            Request::GlxFinish(req) => Request::GlxFinish(req),
4646            #[cfg(feature = "glx")]
4647            Request::GlxPixelStoref(req) => Request::GlxPixelStoref(req),
4648            #[cfg(feature = "glx")]
4649            Request::GlxPixelStorei(req) => Request::GlxPixelStorei(req),
4650            #[cfg(feature = "glx")]
4651            Request::GlxReadPixels(req) => Request::GlxReadPixels(req),
4652            #[cfg(feature = "glx")]
4653            Request::GlxGetBooleanv(req) => Request::GlxGetBooleanv(req),
4654            #[cfg(feature = "glx")]
4655            Request::GlxGetClipPlane(req) => Request::GlxGetClipPlane(req),
4656            #[cfg(feature = "glx")]
4657            Request::GlxGetDoublev(req) => Request::GlxGetDoublev(req),
4658            #[cfg(feature = "glx")]
4659            Request::GlxGetError(req) => Request::GlxGetError(req),
4660            #[cfg(feature = "glx")]
4661            Request::GlxGetFloatv(req) => Request::GlxGetFloatv(req),
4662            #[cfg(feature = "glx")]
4663            Request::GlxGetIntegerv(req) => Request::GlxGetIntegerv(req),
4664            #[cfg(feature = "glx")]
4665            Request::GlxGetLightfv(req) => Request::GlxGetLightfv(req),
4666            #[cfg(feature = "glx")]
4667            Request::GlxGetLightiv(req) => Request::GlxGetLightiv(req),
4668            #[cfg(feature = "glx")]
4669            Request::GlxGetMapdv(req) => Request::GlxGetMapdv(req),
4670            #[cfg(feature = "glx")]
4671            Request::GlxGetMapfv(req) => Request::GlxGetMapfv(req),
4672            #[cfg(feature = "glx")]
4673            Request::GlxGetMapiv(req) => Request::GlxGetMapiv(req),
4674            #[cfg(feature = "glx")]
4675            Request::GlxGetMaterialfv(req) => Request::GlxGetMaterialfv(req),
4676            #[cfg(feature = "glx")]
4677            Request::GlxGetMaterialiv(req) => Request::GlxGetMaterialiv(req),
4678            #[cfg(feature = "glx")]
4679            Request::GlxGetPixelMapfv(req) => Request::GlxGetPixelMapfv(req),
4680            #[cfg(feature = "glx")]
4681            Request::GlxGetPixelMapuiv(req) => Request::GlxGetPixelMapuiv(req),
4682            #[cfg(feature = "glx")]
4683            Request::GlxGetPixelMapusv(req) => Request::GlxGetPixelMapusv(req),
4684            #[cfg(feature = "glx")]
4685            Request::GlxGetPolygonStipple(req) => Request::GlxGetPolygonStipple(req),
4686            #[cfg(feature = "glx")]
4687            Request::GlxGetString(req) => Request::GlxGetString(req),
4688            #[cfg(feature = "glx")]
4689            Request::GlxGetTexEnvfv(req) => Request::GlxGetTexEnvfv(req),
4690            #[cfg(feature = "glx")]
4691            Request::GlxGetTexEnviv(req) => Request::GlxGetTexEnviv(req),
4692            #[cfg(feature = "glx")]
4693            Request::GlxGetTexGendv(req) => Request::GlxGetTexGendv(req),
4694            #[cfg(feature = "glx")]
4695            Request::GlxGetTexGenfv(req) => Request::GlxGetTexGenfv(req),
4696            #[cfg(feature = "glx")]
4697            Request::GlxGetTexGeniv(req) => Request::GlxGetTexGeniv(req),
4698            #[cfg(feature = "glx")]
4699            Request::GlxGetTexImage(req) => Request::GlxGetTexImage(req),
4700            #[cfg(feature = "glx")]
4701            Request::GlxGetTexParameterfv(req) => Request::GlxGetTexParameterfv(req),
4702            #[cfg(feature = "glx")]
4703            Request::GlxGetTexParameteriv(req) => Request::GlxGetTexParameteriv(req),
4704            #[cfg(feature = "glx")]
4705            Request::GlxGetTexLevelParameterfv(req) => Request::GlxGetTexLevelParameterfv(req),
4706            #[cfg(feature = "glx")]
4707            Request::GlxGetTexLevelParameteriv(req) => Request::GlxGetTexLevelParameteriv(req),
4708            #[cfg(feature = "glx")]
4709            Request::GlxIsEnabled(req) => Request::GlxIsEnabled(req),
4710            #[cfg(feature = "glx")]
4711            Request::GlxIsList(req) => Request::GlxIsList(req),
4712            #[cfg(feature = "glx")]
4713            Request::GlxFlush(req) => Request::GlxFlush(req),
4714            #[cfg(feature = "glx")]
4715            Request::GlxAreTexturesResident(req) => Request::GlxAreTexturesResident(req.into_owned()),
4716            #[cfg(feature = "glx")]
4717            Request::GlxDeleteTextures(req) => Request::GlxDeleteTextures(req.into_owned()),
4718            #[cfg(feature = "glx")]
4719            Request::GlxGenTextures(req) => Request::GlxGenTextures(req),
4720            #[cfg(feature = "glx")]
4721            Request::GlxIsTexture(req) => Request::GlxIsTexture(req),
4722            #[cfg(feature = "glx")]
4723            Request::GlxGetColorTable(req) => Request::GlxGetColorTable(req),
4724            #[cfg(feature = "glx")]
4725            Request::GlxGetColorTableParameterfv(req) => Request::GlxGetColorTableParameterfv(req),
4726            #[cfg(feature = "glx")]
4727            Request::GlxGetColorTableParameteriv(req) => Request::GlxGetColorTableParameteriv(req),
4728            #[cfg(feature = "glx")]
4729            Request::GlxGetConvolutionFilter(req) => Request::GlxGetConvolutionFilter(req),
4730            #[cfg(feature = "glx")]
4731            Request::GlxGetConvolutionParameterfv(req) => Request::GlxGetConvolutionParameterfv(req),
4732            #[cfg(feature = "glx")]
4733            Request::GlxGetConvolutionParameteriv(req) => Request::GlxGetConvolutionParameteriv(req),
4734            #[cfg(feature = "glx")]
4735            Request::GlxGetSeparableFilter(req) => Request::GlxGetSeparableFilter(req),
4736            #[cfg(feature = "glx")]
4737            Request::GlxGetHistogram(req) => Request::GlxGetHistogram(req),
4738            #[cfg(feature = "glx")]
4739            Request::GlxGetHistogramParameterfv(req) => Request::GlxGetHistogramParameterfv(req),
4740            #[cfg(feature = "glx")]
4741            Request::GlxGetHistogramParameteriv(req) => Request::GlxGetHistogramParameteriv(req),
4742            #[cfg(feature = "glx")]
4743            Request::GlxGetMinmax(req) => Request::GlxGetMinmax(req),
4744            #[cfg(feature = "glx")]
4745            Request::GlxGetMinmaxParameterfv(req) => Request::GlxGetMinmaxParameterfv(req),
4746            #[cfg(feature = "glx")]
4747            Request::GlxGetMinmaxParameteriv(req) => Request::GlxGetMinmaxParameteriv(req),
4748            #[cfg(feature = "glx")]
4749            Request::GlxGetCompressedTexImageARB(req) => Request::GlxGetCompressedTexImageARB(req),
4750            #[cfg(feature = "glx")]
4751            Request::GlxDeleteQueriesARB(req) => Request::GlxDeleteQueriesARB(req.into_owned()),
4752            #[cfg(feature = "glx")]
4753            Request::GlxGenQueriesARB(req) => Request::GlxGenQueriesARB(req),
4754            #[cfg(feature = "glx")]
4755            Request::GlxIsQueryARB(req) => Request::GlxIsQueryARB(req),
4756            #[cfg(feature = "glx")]
4757            Request::GlxGetQueryivARB(req) => Request::GlxGetQueryivARB(req),
4758            #[cfg(feature = "glx")]
4759            Request::GlxGetQueryObjectivARB(req) => Request::GlxGetQueryObjectivARB(req),
4760            #[cfg(feature = "glx")]
4761            Request::GlxGetQueryObjectuivARB(req) => Request::GlxGetQueryObjectuivARB(req),
4762            #[cfg(feature = "present")]
4763            Request::PresentQueryVersion(req) => Request::PresentQueryVersion(req),
4764            #[cfg(feature = "present")]
4765            Request::PresentPixmap(req) => Request::PresentPixmap(req.into_owned()),
4766            #[cfg(feature = "present")]
4767            Request::PresentNotifyMSC(req) => Request::PresentNotifyMSC(req),
4768            #[cfg(feature = "present")]
4769            Request::PresentSelectInput(req) => Request::PresentSelectInput(req),
4770            #[cfg(feature = "present")]
4771            Request::PresentQueryCapabilities(req) => Request::PresentQueryCapabilities(req),
4772            #[cfg(feature = "present")]
4773            Request::PresentPixmapSynced(req) => Request::PresentPixmapSynced(req.into_owned()),
4774            #[cfg(feature = "randr")]
4775            Request::RandrQueryVersion(req) => Request::RandrQueryVersion(req),
4776            #[cfg(feature = "randr")]
4777            Request::RandrSetScreenConfig(req) => Request::RandrSetScreenConfig(req),
4778            #[cfg(feature = "randr")]
4779            Request::RandrSelectInput(req) => Request::RandrSelectInput(req),
4780            #[cfg(feature = "randr")]
4781            Request::RandrGetScreenInfo(req) => Request::RandrGetScreenInfo(req),
4782            #[cfg(feature = "randr")]
4783            Request::RandrGetScreenSizeRange(req) => Request::RandrGetScreenSizeRange(req),
4784            #[cfg(feature = "randr")]
4785            Request::RandrSetScreenSize(req) => Request::RandrSetScreenSize(req),
4786            #[cfg(feature = "randr")]
4787            Request::RandrGetScreenResources(req) => Request::RandrGetScreenResources(req),
4788            #[cfg(feature = "randr")]
4789            Request::RandrGetOutputInfo(req) => Request::RandrGetOutputInfo(req),
4790            #[cfg(feature = "randr")]
4791            Request::RandrListOutputProperties(req) => Request::RandrListOutputProperties(req),
4792            #[cfg(feature = "randr")]
4793            Request::RandrQueryOutputProperty(req) => Request::RandrQueryOutputProperty(req),
4794            #[cfg(feature = "randr")]
4795            Request::RandrConfigureOutputProperty(req) => Request::RandrConfigureOutputProperty(req.into_owned()),
4796            #[cfg(feature = "randr")]
4797            Request::RandrChangeOutputProperty(req) => Request::RandrChangeOutputProperty(req.into_owned()),
4798            #[cfg(feature = "randr")]
4799            Request::RandrDeleteOutputProperty(req) => Request::RandrDeleteOutputProperty(req),
4800            #[cfg(feature = "randr")]
4801            Request::RandrGetOutputProperty(req) => Request::RandrGetOutputProperty(req),
4802            #[cfg(feature = "randr")]
4803            Request::RandrCreateMode(req) => Request::RandrCreateMode(req.into_owned()),
4804            #[cfg(feature = "randr")]
4805            Request::RandrDestroyMode(req) => Request::RandrDestroyMode(req),
4806            #[cfg(feature = "randr")]
4807            Request::RandrAddOutputMode(req) => Request::RandrAddOutputMode(req),
4808            #[cfg(feature = "randr")]
4809            Request::RandrDeleteOutputMode(req) => Request::RandrDeleteOutputMode(req),
4810            #[cfg(feature = "randr")]
4811            Request::RandrGetCrtcInfo(req) => Request::RandrGetCrtcInfo(req),
4812            #[cfg(feature = "randr")]
4813            Request::RandrSetCrtcConfig(req) => Request::RandrSetCrtcConfig(req.into_owned()),
4814            #[cfg(feature = "randr")]
4815            Request::RandrGetCrtcGammaSize(req) => Request::RandrGetCrtcGammaSize(req),
4816            #[cfg(feature = "randr")]
4817            Request::RandrGetCrtcGamma(req) => Request::RandrGetCrtcGamma(req),
4818            #[cfg(feature = "randr")]
4819            Request::RandrSetCrtcGamma(req) => Request::RandrSetCrtcGamma(req.into_owned()),
4820            #[cfg(feature = "randr")]
4821            Request::RandrGetScreenResourcesCurrent(req) => Request::RandrGetScreenResourcesCurrent(req),
4822            #[cfg(feature = "randr")]
4823            Request::RandrSetCrtcTransform(req) => Request::RandrSetCrtcTransform(req.into_owned()),
4824            #[cfg(feature = "randr")]
4825            Request::RandrGetCrtcTransform(req) => Request::RandrGetCrtcTransform(req),
4826            #[cfg(feature = "randr")]
4827            Request::RandrGetPanning(req) => Request::RandrGetPanning(req),
4828            #[cfg(feature = "randr")]
4829            Request::RandrSetPanning(req) => Request::RandrSetPanning(req),
4830            #[cfg(feature = "randr")]
4831            Request::RandrSetOutputPrimary(req) => Request::RandrSetOutputPrimary(req),
4832            #[cfg(feature = "randr")]
4833            Request::RandrGetOutputPrimary(req) => Request::RandrGetOutputPrimary(req),
4834            #[cfg(feature = "randr")]
4835            Request::RandrGetProviders(req) => Request::RandrGetProviders(req),
4836            #[cfg(feature = "randr")]
4837            Request::RandrGetProviderInfo(req) => Request::RandrGetProviderInfo(req),
4838            #[cfg(feature = "randr")]
4839            Request::RandrSetProviderOffloadSink(req) => Request::RandrSetProviderOffloadSink(req),
4840            #[cfg(feature = "randr")]
4841            Request::RandrSetProviderOutputSource(req) => Request::RandrSetProviderOutputSource(req),
4842            #[cfg(feature = "randr")]
4843            Request::RandrListProviderProperties(req) => Request::RandrListProviderProperties(req),
4844            #[cfg(feature = "randr")]
4845            Request::RandrQueryProviderProperty(req) => Request::RandrQueryProviderProperty(req),
4846            #[cfg(feature = "randr")]
4847            Request::RandrConfigureProviderProperty(req) => Request::RandrConfigureProviderProperty(req.into_owned()),
4848            #[cfg(feature = "randr")]
4849            Request::RandrChangeProviderProperty(req) => Request::RandrChangeProviderProperty(req.into_owned()),
4850            #[cfg(feature = "randr")]
4851            Request::RandrDeleteProviderProperty(req) => Request::RandrDeleteProviderProperty(req),
4852            #[cfg(feature = "randr")]
4853            Request::RandrGetProviderProperty(req) => Request::RandrGetProviderProperty(req),
4854            #[cfg(feature = "randr")]
4855            Request::RandrGetMonitors(req) => Request::RandrGetMonitors(req),
4856            #[cfg(feature = "randr")]
4857            Request::RandrSetMonitor(req) => Request::RandrSetMonitor(req),
4858            #[cfg(feature = "randr")]
4859            Request::RandrDeleteMonitor(req) => Request::RandrDeleteMonitor(req),
4860            #[cfg(feature = "randr")]
4861            Request::RandrCreateLease(req) => Request::RandrCreateLease(req.into_owned()),
4862            #[cfg(feature = "randr")]
4863            Request::RandrFreeLease(req) => Request::RandrFreeLease(req),
4864            #[cfg(feature = "record")]
4865            Request::RecordQueryVersion(req) => Request::RecordQueryVersion(req),
4866            #[cfg(feature = "record")]
4867            Request::RecordCreateContext(req) => Request::RecordCreateContext(req.into_owned()),
4868            #[cfg(feature = "record")]
4869            Request::RecordRegisterClients(req) => Request::RecordRegisterClients(req.into_owned()),
4870            #[cfg(feature = "record")]
4871            Request::RecordUnregisterClients(req) => Request::RecordUnregisterClients(req.into_owned()),
4872            #[cfg(feature = "record")]
4873            Request::RecordGetContext(req) => Request::RecordGetContext(req),
4874            #[cfg(feature = "record")]
4875            Request::RecordEnableContext(req) => Request::RecordEnableContext(req),
4876            #[cfg(feature = "record")]
4877            Request::RecordDisableContext(req) => Request::RecordDisableContext(req),
4878            #[cfg(feature = "record")]
4879            Request::RecordFreeContext(req) => Request::RecordFreeContext(req),
4880            #[cfg(feature = "render")]
4881            Request::RenderQueryVersion(req) => Request::RenderQueryVersion(req),
4882            #[cfg(feature = "render")]
4883            Request::RenderQueryPictFormats(req) => Request::RenderQueryPictFormats(req),
4884            #[cfg(feature = "render")]
4885            Request::RenderQueryPictIndexValues(req) => Request::RenderQueryPictIndexValues(req),
4886            #[cfg(feature = "render")]
4887            Request::RenderCreatePicture(req) => Request::RenderCreatePicture(req.into_owned()),
4888            #[cfg(feature = "render")]
4889            Request::RenderChangePicture(req) => Request::RenderChangePicture(req.into_owned()),
4890            #[cfg(feature = "render")]
4891            Request::RenderSetPictureClipRectangles(req) => Request::RenderSetPictureClipRectangles(req.into_owned()),
4892            #[cfg(feature = "render")]
4893            Request::RenderFreePicture(req) => Request::RenderFreePicture(req),
4894            #[cfg(feature = "render")]
4895            Request::RenderComposite(req) => Request::RenderComposite(req),
4896            #[cfg(feature = "render")]
4897            Request::RenderTrapezoids(req) => Request::RenderTrapezoids(req.into_owned()),
4898            #[cfg(feature = "render")]
4899            Request::RenderTriangles(req) => Request::RenderTriangles(req.into_owned()),
4900            #[cfg(feature = "render")]
4901            Request::RenderTriStrip(req) => Request::RenderTriStrip(req.into_owned()),
4902            #[cfg(feature = "render")]
4903            Request::RenderTriFan(req) => Request::RenderTriFan(req.into_owned()),
4904            #[cfg(feature = "render")]
4905            Request::RenderCreateGlyphSet(req) => Request::RenderCreateGlyphSet(req),
4906            #[cfg(feature = "render")]
4907            Request::RenderReferenceGlyphSet(req) => Request::RenderReferenceGlyphSet(req),
4908            #[cfg(feature = "render")]
4909            Request::RenderFreeGlyphSet(req) => Request::RenderFreeGlyphSet(req),
4910            #[cfg(feature = "render")]
4911            Request::RenderAddGlyphs(req) => Request::RenderAddGlyphs(req.into_owned()),
4912            #[cfg(feature = "render")]
4913            Request::RenderFreeGlyphs(req) => Request::RenderFreeGlyphs(req.into_owned()),
4914            #[cfg(feature = "render")]
4915            Request::RenderCompositeGlyphs8(req) => Request::RenderCompositeGlyphs8(req.into_owned()),
4916            #[cfg(feature = "render")]
4917            Request::RenderCompositeGlyphs16(req) => Request::RenderCompositeGlyphs16(req.into_owned()),
4918            #[cfg(feature = "render")]
4919            Request::RenderCompositeGlyphs32(req) => Request::RenderCompositeGlyphs32(req.into_owned()),
4920            #[cfg(feature = "render")]
4921            Request::RenderFillRectangles(req) => Request::RenderFillRectangles(req.into_owned()),
4922            #[cfg(feature = "render")]
4923            Request::RenderCreateCursor(req) => Request::RenderCreateCursor(req),
4924            #[cfg(feature = "render")]
4925            Request::RenderSetPictureTransform(req) => Request::RenderSetPictureTransform(req),
4926            #[cfg(feature = "render")]
4927            Request::RenderQueryFilters(req) => Request::RenderQueryFilters(req),
4928            #[cfg(feature = "render")]
4929            Request::RenderSetPictureFilter(req) => Request::RenderSetPictureFilter(req.into_owned()),
4930            #[cfg(feature = "render")]
4931            Request::RenderCreateAnimCursor(req) => Request::RenderCreateAnimCursor(req.into_owned()),
4932            #[cfg(feature = "render")]
4933            Request::RenderAddTraps(req) => Request::RenderAddTraps(req.into_owned()),
4934            #[cfg(feature = "render")]
4935            Request::RenderCreateSolidFill(req) => Request::RenderCreateSolidFill(req),
4936            #[cfg(feature = "render")]
4937            Request::RenderCreateLinearGradient(req) => Request::RenderCreateLinearGradient(req.into_owned()),
4938            #[cfg(feature = "render")]
4939            Request::RenderCreateRadialGradient(req) => Request::RenderCreateRadialGradient(req.into_owned()),
4940            #[cfg(feature = "render")]
4941            Request::RenderCreateConicalGradient(req) => Request::RenderCreateConicalGradient(req.into_owned()),
4942            #[cfg(feature = "res")]
4943            Request::ResQueryVersion(req) => Request::ResQueryVersion(req),
4944            #[cfg(feature = "res")]
4945            Request::ResQueryClients(req) => Request::ResQueryClients(req),
4946            #[cfg(feature = "res")]
4947            Request::ResQueryClientResources(req) => Request::ResQueryClientResources(req),
4948            #[cfg(feature = "res")]
4949            Request::ResQueryClientPixmapBytes(req) => Request::ResQueryClientPixmapBytes(req),
4950            #[cfg(feature = "res")]
4951            Request::ResQueryClientIds(req) => Request::ResQueryClientIds(req.into_owned()),
4952            #[cfg(feature = "res")]
4953            Request::ResQueryResourceBytes(req) => Request::ResQueryResourceBytes(req.into_owned()),
4954            #[cfg(feature = "screensaver")]
4955            Request::ScreensaverQueryVersion(req) => Request::ScreensaverQueryVersion(req),
4956            #[cfg(feature = "screensaver")]
4957            Request::ScreensaverQueryInfo(req) => Request::ScreensaverQueryInfo(req),
4958            #[cfg(feature = "screensaver")]
4959            Request::ScreensaverSelectInput(req) => Request::ScreensaverSelectInput(req),
4960            #[cfg(feature = "screensaver")]
4961            Request::ScreensaverSetAttributes(req) => Request::ScreensaverSetAttributes(req.into_owned()),
4962            #[cfg(feature = "screensaver")]
4963            Request::ScreensaverUnsetAttributes(req) => Request::ScreensaverUnsetAttributes(req),
4964            #[cfg(feature = "screensaver")]
4965            Request::ScreensaverSuspend(req) => Request::ScreensaverSuspend(req),
4966            #[cfg(feature = "shape")]
4967            Request::ShapeQueryVersion(req) => Request::ShapeQueryVersion(req),
4968            #[cfg(feature = "shape")]
4969            Request::ShapeRectangles(req) => Request::ShapeRectangles(req.into_owned()),
4970            #[cfg(feature = "shape")]
4971            Request::ShapeMask(req) => Request::ShapeMask(req),
4972            #[cfg(feature = "shape")]
4973            Request::ShapeCombine(req) => Request::ShapeCombine(req),
4974            #[cfg(feature = "shape")]
4975            Request::ShapeOffset(req) => Request::ShapeOffset(req),
4976            #[cfg(feature = "shape")]
4977            Request::ShapeQueryExtents(req) => Request::ShapeQueryExtents(req),
4978            #[cfg(feature = "shape")]
4979            Request::ShapeSelectInput(req) => Request::ShapeSelectInput(req),
4980            #[cfg(feature = "shape")]
4981            Request::ShapeInputSelected(req) => Request::ShapeInputSelected(req),
4982            #[cfg(feature = "shape")]
4983            Request::ShapeGetRectangles(req) => Request::ShapeGetRectangles(req),
4984            #[cfg(feature = "shm")]
4985            Request::ShmQueryVersion(req) => Request::ShmQueryVersion(req),
4986            #[cfg(feature = "shm")]
4987            Request::ShmAttach(req) => Request::ShmAttach(req),
4988            #[cfg(feature = "shm")]
4989            Request::ShmDetach(req) => Request::ShmDetach(req),
4990            #[cfg(feature = "shm")]
4991            Request::ShmPutImage(req) => Request::ShmPutImage(req),
4992            #[cfg(feature = "shm")]
4993            Request::ShmGetImage(req) => Request::ShmGetImage(req),
4994            #[cfg(feature = "shm")]
4995            Request::ShmCreatePixmap(req) => Request::ShmCreatePixmap(req),
4996            #[cfg(feature = "shm")]
4997            Request::ShmAttachFd(req) => Request::ShmAttachFd(req),
4998            #[cfg(feature = "shm")]
4999            Request::ShmCreateSegment(req) => Request::ShmCreateSegment(req),
5000            #[cfg(feature = "sync")]
5001            Request::SyncInitialize(req) => Request::SyncInitialize(req),
5002            #[cfg(feature = "sync")]
5003            Request::SyncListSystemCounters(req) => Request::SyncListSystemCounters(req),
5004            #[cfg(feature = "sync")]
5005            Request::SyncCreateCounter(req) => Request::SyncCreateCounter(req),
5006            #[cfg(feature = "sync")]
5007            Request::SyncDestroyCounter(req) => Request::SyncDestroyCounter(req),
5008            #[cfg(feature = "sync")]
5009            Request::SyncQueryCounter(req) => Request::SyncQueryCounter(req),
5010            #[cfg(feature = "sync")]
5011            Request::SyncAwait(req) => Request::SyncAwait(req.into_owned()),
5012            #[cfg(feature = "sync")]
5013            Request::SyncChangeCounter(req) => Request::SyncChangeCounter(req),
5014            #[cfg(feature = "sync")]
5015            Request::SyncSetCounter(req) => Request::SyncSetCounter(req),
5016            #[cfg(feature = "sync")]
5017            Request::SyncCreateAlarm(req) => Request::SyncCreateAlarm(req.into_owned()),
5018            #[cfg(feature = "sync")]
5019            Request::SyncChangeAlarm(req) => Request::SyncChangeAlarm(req.into_owned()),
5020            #[cfg(feature = "sync")]
5021            Request::SyncDestroyAlarm(req) => Request::SyncDestroyAlarm(req),
5022            #[cfg(feature = "sync")]
5023            Request::SyncQueryAlarm(req) => Request::SyncQueryAlarm(req),
5024            #[cfg(feature = "sync")]
5025            Request::SyncSetPriority(req) => Request::SyncSetPriority(req),
5026            #[cfg(feature = "sync")]
5027            Request::SyncGetPriority(req) => Request::SyncGetPriority(req),
5028            #[cfg(feature = "sync")]
5029            Request::SyncCreateFence(req) => Request::SyncCreateFence(req),
5030            #[cfg(feature = "sync")]
5031            Request::SyncTriggerFence(req) => Request::SyncTriggerFence(req),
5032            #[cfg(feature = "sync")]
5033            Request::SyncResetFence(req) => Request::SyncResetFence(req),
5034            #[cfg(feature = "sync")]
5035            Request::SyncDestroyFence(req) => Request::SyncDestroyFence(req),
5036            #[cfg(feature = "sync")]
5037            Request::SyncQueryFence(req) => Request::SyncQueryFence(req),
5038            #[cfg(feature = "sync")]
5039            Request::SyncAwaitFence(req) => Request::SyncAwaitFence(req.into_owned()),
5040            Request::XcMiscGetVersion(req) => Request::XcMiscGetVersion(req),
5041            Request::XcMiscGetXIDRange(req) => Request::XcMiscGetXIDRange(req),
5042            Request::XcMiscGetXIDList(req) => Request::XcMiscGetXIDList(req),
5043            #[cfg(feature = "xevie")]
5044            Request::XevieQueryVersion(req) => Request::XevieQueryVersion(req),
5045            #[cfg(feature = "xevie")]
5046            Request::XevieStart(req) => Request::XevieStart(req),
5047            #[cfg(feature = "xevie")]
5048            Request::XevieEnd(req) => Request::XevieEnd(req),
5049            #[cfg(feature = "xevie")]
5050            Request::XevieSend(req) => Request::XevieSend(req),
5051            #[cfg(feature = "xevie")]
5052            Request::XevieSelectInput(req) => Request::XevieSelectInput(req),
5053            #[cfg(feature = "xf86dri")]
5054            Request::Xf86driQueryVersion(req) => Request::Xf86driQueryVersion(req),
5055            #[cfg(feature = "xf86dri")]
5056            Request::Xf86driQueryDirectRenderingCapable(req) => Request::Xf86driQueryDirectRenderingCapable(req),
5057            #[cfg(feature = "xf86dri")]
5058            Request::Xf86driOpenConnection(req) => Request::Xf86driOpenConnection(req),
5059            #[cfg(feature = "xf86dri")]
5060            Request::Xf86driCloseConnection(req) => Request::Xf86driCloseConnection(req),
5061            #[cfg(feature = "xf86dri")]
5062            Request::Xf86driGetClientDriverName(req) => Request::Xf86driGetClientDriverName(req),
5063            #[cfg(feature = "xf86dri")]
5064            Request::Xf86driCreateContext(req) => Request::Xf86driCreateContext(req),
5065            #[cfg(feature = "xf86dri")]
5066            Request::Xf86driDestroyContext(req) => Request::Xf86driDestroyContext(req),
5067            #[cfg(feature = "xf86dri")]
5068            Request::Xf86driCreateDrawable(req) => Request::Xf86driCreateDrawable(req),
5069            #[cfg(feature = "xf86dri")]
5070            Request::Xf86driDestroyDrawable(req) => Request::Xf86driDestroyDrawable(req),
5071            #[cfg(feature = "xf86dri")]
5072            Request::Xf86driGetDrawableInfo(req) => Request::Xf86driGetDrawableInfo(req),
5073            #[cfg(feature = "xf86dri")]
5074            Request::Xf86driGetDeviceInfo(req) => Request::Xf86driGetDeviceInfo(req),
5075            #[cfg(feature = "xf86dri")]
5076            Request::Xf86driAuthConnection(req) => Request::Xf86driAuthConnection(req),
5077            #[cfg(feature = "xf86vidmode")]
5078            Request::Xf86vidmodeQueryVersion(req) => Request::Xf86vidmodeQueryVersion(req),
5079            #[cfg(feature = "xf86vidmode")]
5080            Request::Xf86vidmodeGetModeLine(req) => Request::Xf86vidmodeGetModeLine(req),
5081            #[cfg(feature = "xf86vidmode")]
5082            Request::Xf86vidmodeModModeLine(req) => Request::Xf86vidmodeModModeLine(req.into_owned()),
5083            #[cfg(feature = "xf86vidmode")]
5084            Request::Xf86vidmodeSwitchMode(req) => Request::Xf86vidmodeSwitchMode(req),
5085            #[cfg(feature = "xf86vidmode")]
5086            Request::Xf86vidmodeGetMonitor(req) => Request::Xf86vidmodeGetMonitor(req),
5087            #[cfg(feature = "xf86vidmode")]
5088            Request::Xf86vidmodeLockModeSwitch(req) => Request::Xf86vidmodeLockModeSwitch(req),
5089            #[cfg(feature = "xf86vidmode")]
5090            Request::Xf86vidmodeGetAllModeLines(req) => Request::Xf86vidmodeGetAllModeLines(req),
5091            #[cfg(feature = "xf86vidmode")]
5092            Request::Xf86vidmodeAddModeLine(req) => Request::Xf86vidmodeAddModeLine(req.into_owned()),
5093            #[cfg(feature = "xf86vidmode")]
5094            Request::Xf86vidmodeDeleteModeLine(req) => Request::Xf86vidmodeDeleteModeLine(req.into_owned()),
5095            #[cfg(feature = "xf86vidmode")]
5096            Request::Xf86vidmodeValidateModeLine(req) => Request::Xf86vidmodeValidateModeLine(req.into_owned()),
5097            #[cfg(feature = "xf86vidmode")]
5098            Request::Xf86vidmodeSwitchToMode(req) => Request::Xf86vidmodeSwitchToMode(req.into_owned()),
5099            #[cfg(feature = "xf86vidmode")]
5100            Request::Xf86vidmodeGetViewPort(req) => Request::Xf86vidmodeGetViewPort(req),
5101            #[cfg(feature = "xf86vidmode")]
5102            Request::Xf86vidmodeSetViewPort(req) => Request::Xf86vidmodeSetViewPort(req),
5103            #[cfg(feature = "xf86vidmode")]
5104            Request::Xf86vidmodeGetDotClocks(req) => Request::Xf86vidmodeGetDotClocks(req),
5105            #[cfg(feature = "xf86vidmode")]
5106            Request::Xf86vidmodeSetClientVersion(req) => Request::Xf86vidmodeSetClientVersion(req),
5107            #[cfg(feature = "xf86vidmode")]
5108            Request::Xf86vidmodeSetGamma(req) => Request::Xf86vidmodeSetGamma(req),
5109            #[cfg(feature = "xf86vidmode")]
5110            Request::Xf86vidmodeGetGamma(req) => Request::Xf86vidmodeGetGamma(req),
5111            #[cfg(feature = "xf86vidmode")]
5112            Request::Xf86vidmodeGetGammaRamp(req) => Request::Xf86vidmodeGetGammaRamp(req),
5113            #[cfg(feature = "xf86vidmode")]
5114            Request::Xf86vidmodeSetGammaRamp(req) => Request::Xf86vidmodeSetGammaRamp(req.into_owned()),
5115            #[cfg(feature = "xf86vidmode")]
5116            Request::Xf86vidmodeGetGammaRampSize(req) => Request::Xf86vidmodeGetGammaRampSize(req),
5117            #[cfg(feature = "xf86vidmode")]
5118            Request::Xf86vidmodeGetPermissions(req) => Request::Xf86vidmodeGetPermissions(req),
5119            #[cfg(feature = "xfixes")]
5120            Request::XfixesQueryVersion(req) => Request::XfixesQueryVersion(req),
5121            #[cfg(feature = "xfixes")]
5122            Request::XfixesChangeSaveSet(req) => Request::XfixesChangeSaveSet(req),
5123            #[cfg(feature = "xfixes")]
5124            Request::XfixesSelectSelectionInput(req) => Request::XfixesSelectSelectionInput(req),
5125            #[cfg(feature = "xfixes")]
5126            Request::XfixesSelectCursorInput(req) => Request::XfixesSelectCursorInput(req),
5127            #[cfg(feature = "xfixes")]
5128            Request::XfixesGetCursorImage(req) => Request::XfixesGetCursorImage(req),
5129            #[cfg(feature = "xfixes")]
5130            Request::XfixesCreateRegion(req) => Request::XfixesCreateRegion(req.into_owned()),
5131            #[cfg(feature = "xfixes")]
5132            Request::XfixesCreateRegionFromBitmap(req) => Request::XfixesCreateRegionFromBitmap(req),
5133            #[cfg(feature = "xfixes")]
5134            Request::XfixesCreateRegionFromWindow(req) => Request::XfixesCreateRegionFromWindow(req),
5135            #[cfg(feature = "xfixes")]
5136            Request::XfixesCreateRegionFromGC(req) => Request::XfixesCreateRegionFromGC(req),
5137            #[cfg(feature = "xfixes")]
5138            Request::XfixesCreateRegionFromPicture(req) => Request::XfixesCreateRegionFromPicture(req),
5139            #[cfg(feature = "xfixes")]
5140            Request::XfixesDestroyRegion(req) => Request::XfixesDestroyRegion(req),
5141            #[cfg(feature = "xfixes")]
5142            Request::XfixesSetRegion(req) => Request::XfixesSetRegion(req.into_owned()),
5143            #[cfg(feature = "xfixes")]
5144            Request::XfixesCopyRegion(req) => Request::XfixesCopyRegion(req),
5145            #[cfg(feature = "xfixes")]
5146            Request::XfixesUnionRegion(req) => Request::XfixesUnionRegion(req),
5147            #[cfg(feature = "xfixes")]
5148            Request::XfixesIntersectRegion(req) => Request::XfixesIntersectRegion(req),
5149            #[cfg(feature = "xfixes")]
5150            Request::XfixesSubtractRegion(req) => Request::XfixesSubtractRegion(req),
5151            #[cfg(feature = "xfixes")]
5152            Request::XfixesInvertRegion(req) => Request::XfixesInvertRegion(req),
5153            #[cfg(feature = "xfixes")]
5154            Request::XfixesTranslateRegion(req) => Request::XfixesTranslateRegion(req),
5155            #[cfg(feature = "xfixes")]
5156            Request::XfixesRegionExtents(req) => Request::XfixesRegionExtents(req),
5157            #[cfg(feature = "xfixes")]
5158            Request::XfixesFetchRegion(req) => Request::XfixesFetchRegion(req),
5159            #[cfg(feature = "xfixes")]
5160            Request::XfixesSetGCClipRegion(req) => Request::XfixesSetGCClipRegion(req),
5161            #[cfg(feature = "xfixes")]
5162            Request::XfixesSetWindowShapeRegion(req) => Request::XfixesSetWindowShapeRegion(req),
5163            #[cfg(feature = "xfixes")]
5164            Request::XfixesSetPictureClipRegion(req) => Request::XfixesSetPictureClipRegion(req),
5165            #[cfg(feature = "xfixes")]
5166            Request::XfixesSetCursorName(req) => Request::XfixesSetCursorName(req.into_owned()),
5167            #[cfg(feature = "xfixes")]
5168            Request::XfixesGetCursorName(req) => Request::XfixesGetCursorName(req),
5169            #[cfg(feature = "xfixes")]
5170            Request::XfixesGetCursorImageAndName(req) => Request::XfixesGetCursorImageAndName(req),
5171            #[cfg(feature = "xfixes")]
5172            Request::XfixesChangeCursor(req) => Request::XfixesChangeCursor(req),
5173            #[cfg(feature = "xfixes")]
5174            Request::XfixesChangeCursorByName(req) => Request::XfixesChangeCursorByName(req.into_owned()),
5175            #[cfg(feature = "xfixes")]
5176            Request::XfixesExpandRegion(req) => Request::XfixesExpandRegion(req),
5177            #[cfg(feature = "xfixes")]
5178            Request::XfixesHideCursor(req) => Request::XfixesHideCursor(req),
5179            #[cfg(feature = "xfixes")]
5180            Request::XfixesShowCursor(req) => Request::XfixesShowCursor(req),
5181            #[cfg(feature = "xfixes")]
5182            Request::XfixesCreatePointerBarrier(req) => Request::XfixesCreatePointerBarrier(req.into_owned()),
5183            #[cfg(feature = "xfixes")]
5184            Request::XfixesDeletePointerBarrier(req) => Request::XfixesDeletePointerBarrier(req),
5185            #[cfg(feature = "xfixes")]
5186            Request::XfixesSetClientDisconnectMode(req) => Request::XfixesSetClientDisconnectMode(req),
5187            #[cfg(feature = "xfixes")]
5188            Request::XfixesGetClientDisconnectMode(req) => Request::XfixesGetClientDisconnectMode(req),
5189            #[cfg(feature = "xinerama")]
5190            Request::XineramaQueryVersion(req) => Request::XineramaQueryVersion(req),
5191            #[cfg(feature = "xinerama")]
5192            Request::XineramaGetState(req) => Request::XineramaGetState(req),
5193            #[cfg(feature = "xinerama")]
5194            Request::XineramaGetScreenCount(req) => Request::XineramaGetScreenCount(req),
5195            #[cfg(feature = "xinerama")]
5196            Request::XineramaGetScreenSize(req) => Request::XineramaGetScreenSize(req),
5197            #[cfg(feature = "xinerama")]
5198            Request::XineramaIsActive(req) => Request::XineramaIsActive(req),
5199            #[cfg(feature = "xinerama")]
5200            Request::XineramaQueryScreens(req) => Request::XineramaQueryScreens(req),
5201            #[cfg(feature = "xinput")]
5202            Request::XinputGetExtensionVersion(req) => Request::XinputGetExtensionVersion(req.into_owned()),
5203            #[cfg(feature = "xinput")]
5204            Request::XinputListInputDevices(req) => Request::XinputListInputDevices(req),
5205            #[cfg(feature = "xinput")]
5206            Request::XinputOpenDevice(req) => Request::XinputOpenDevice(req),
5207            #[cfg(feature = "xinput")]
5208            Request::XinputCloseDevice(req) => Request::XinputCloseDevice(req),
5209            #[cfg(feature = "xinput")]
5210            Request::XinputSetDeviceMode(req) => Request::XinputSetDeviceMode(req),
5211            #[cfg(feature = "xinput")]
5212            Request::XinputSelectExtensionEvent(req) => Request::XinputSelectExtensionEvent(req.into_owned()),
5213            #[cfg(feature = "xinput")]
5214            Request::XinputGetSelectedExtensionEvents(req) => Request::XinputGetSelectedExtensionEvents(req),
5215            #[cfg(feature = "xinput")]
5216            Request::XinputChangeDeviceDontPropagateList(req) => Request::XinputChangeDeviceDontPropagateList(req.into_owned()),
5217            #[cfg(feature = "xinput")]
5218            Request::XinputGetDeviceDontPropagateList(req) => Request::XinputGetDeviceDontPropagateList(req),
5219            #[cfg(feature = "xinput")]
5220            Request::XinputGetDeviceMotionEvents(req) => Request::XinputGetDeviceMotionEvents(req),
5221            #[cfg(feature = "xinput")]
5222            Request::XinputChangeKeyboardDevice(req) => Request::XinputChangeKeyboardDevice(req),
5223            #[cfg(feature = "xinput")]
5224            Request::XinputChangePointerDevice(req) => Request::XinputChangePointerDevice(req),
5225            #[cfg(feature = "xinput")]
5226            Request::XinputGrabDevice(req) => Request::XinputGrabDevice(req.into_owned()),
5227            #[cfg(feature = "xinput")]
5228            Request::XinputUngrabDevice(req) => Request::XinputUngrabDevice(req),
5229            #[cfg(feature = "xinput")]
5230            Request::XinputGrabDeviceKey(req) => Request::XinputGrabDeviceKey(req.into_owned()),
5231            #[cfg(feature = "xinput")]
5232            Request::XinputUngrabDeviceKey(req) => Request::XinputUngrabDeviceKey(req),
5233            #[cfg(feature = "xinput")]
5234            Request::XinputGrabDeviceButton(req) => Request::XinputGrabDeviceButton(req.into_owned()),
5235            #[cfg(feature = "xinput")]
5236            Request::XinputUngrabDeviceButton(req) => Request::XinputUngrabDeviceButton(req),
5237            #[cfg(feature = "xinput")]
5238            Request::XinputAllowDeviceEvents(req) => Request::XinputAllowDeviceEvents(req),
5239            #[cfg(feature = "xinput")]
5240            Request::XinputGetDeviceFocus(req) => Request::XinputGetDeviceFocus(req),
5241            #[cfg(feature = "xinput")]
5242            Request::XinputSetDeviceFocus(req) => Request::XinputSetDeviceFocus(req),
5243            #[cfg(feature = "xinput")]
5244            Request::XinputGetFeedbackControl(req) => Request::XinputGetFeedbackControl(req),
5245            #[cfg(feature = "xinput")]
5246            Request::XinputChangeFeedbackControl(req) => Request::XinputChangeFeedbackControl(req),
5247            #[cfg(feature = "xinput")]
5248            Request::XinputGetDeviceKeyMapping(req) => Request::XinputGetDeviceKeyMapping(req),
5249            #[cfg(feature = "xinput")]
5250            Request::XinputChangeDeviceKeyMapping(req) => Request::XinputChangeDeviceKeyMapping(req.into_owned()),
5251            #[cfg(feature = "xinput")]
5252            Request::XinputGetDeviceModifierMapping(req) => Request::XinputGetDeviceModifierMapping(req),
5253            #[cfg(feature = "xinput")]
5254            Request::XinputSetDeviceModifierMapping(req) => Request::XinputSetDeviceModifierMapping(req.into_owned()),
5255            #[cfg(feature = "xinput")]
5256            Request::XinputGetDeviceButtonMapping(req) => Request::XinputGetDeviceButtonMapping(req),
5257            #[cfg(feature = "xinput")]
5258            Request::XinputSetDeviceButtonMapping(req) => Request::XinputSetDeviceButtonMapping(req.into_owned()),
5259            #[cfg(feature = "xinput")]
5260            Request::XinputQueryDeviceState(req) => Request::XinputQueryDeviceState(req),
5261            #[cfg(feature = "xinput")]
5262            Request::XinputDeviceBell(req) => Request::XinputDeviceBell(req),
5263            #[cfg(feature = "xinput")]
5264            Request::XinputSetDeviceValuators(req) => Request::XinputSetDeviceValuators(req.into_owned()),
5265            #[cfg(feature = "xinput")]
5266            Request::XinputGetDeviceControl(req) => Request::XinputGetDeviceControl(req),
5267            #[cfg(feature = "xinput")]
5268            Request::XinputChangeDeviceControl(req) => Request::XinputChangeDeviceControl(req),
5269            #[cfg(feature = "xinput")]
5270            Request::XinputListDeviceProperties(req) => Request::XinputListDeviceProperties(req),
5271            #[cfg(feature = "xinput")]
5272            Request::XinputChangeDeviceProperty(req) => Request::XinputChangeDeviceProperty(req.into_owned()),
5273            #[cfg(feature = "xinput")]
5274            Request::XinputDeleteDeviceProperty(req) => Request::XinputDeleteDeviceProperty(req),
5275            #[cfg(feature = "xinput")]
5276            Request::XinputGetDeviceProperty(req) => Request::XinputGetDeviceProperty(req),
5277            #[cfg(feature = "xinput")]
5278            Request::XinputXIQueryPointer(req) => Request::XinputXIQueryPointer(req),
5279            #[cfg(feature = "xinput")]
5280            Request::XinputXIWarpPointer(req) => Request::XinputXIWarpPointer(req),
5281            #[cfg(feature = "xinput")]
5282            Request::XinputXIChangeCursor(req) => Request::XinputXIChangeCursor(req),
5283            #[cfg(feature = "xinput")]
5284            Request::XinputXIChangeHierarchy(req) => Request::XinputXIChangeHierarchy(req.into_owned()),
5285            #[cfg(feature = "xinput")]
5286            Request::XinputXISetClientPointer(req) => Request::XinputXISetClientPointer(req),
5287            #[cfg(feature = "xinput")]
5288            Request::XinputXIGetClientPointer(req) => Request::XinputXIGetClientPointer(req),
5289            #[cfg(feature = "xinput")]
5290            Request::XinputXISelectEvents(req) => Request::XinputXISelectEvents(req.into_owned()),
5291            #[cfg(feature = "xinput")]
5292            Request::XinputXIQueryVersion(req) => Request::XinputXIQueryVersion(req),
5293            #[cfg(feature = "xinput")]
5294            Request::XinputXIQueryDevice(req) => Request::XinputXIQueryDevice(req),
5295            #[cfg(feature = "xinput")]
5296            Request::XinputXISetFocus(req) => Request::XinputXISetFocus(req),
5297            #[cfg(feature = "xinput")]
5298            Request::XinputXIGetFocus(req) => Request::XinputXIGetFocus(req),
5299            #[cfg(feature = "xinput")]
5300            Request::XinputXIGrabDevice(req) => Request::XinputXIGrabDevice(req.into_owned()),
5301            #[cfg(feature = "xinput")]
5302            Request::XinputXIUngrabDevice(req) => Request::XinputXIUngrabDevice(req),
5303            #[cfg(feature = "xinput")]
5304            Request::XinputXIAllowEvents(req) => Request::XinputXIAllowEvents(req),
5305            #[cfg(feature = "xinput")]
5306            Request::XinputXIPassiveGrabDevice(req) => Request::XinputXIPassiveGrabDevice(req.into_owned()),
5307            #[cfg(feature = "xinput")]
5308            Request::XinputXIPassiveUngrabDevice(req) => Request::XinputXIPassiveUngrabDevice(req.into_owned()),
5309            #[cfg(feature = "xinput")]
5310            Request::XinputXIListProperties(req) => Request::XinputXIListProperties(req),
5311            #[cfg(feature = "xinput")]
5312            Request::XinputXIChangeProperty(req) => Request::XinputXIChangeProperty(req.into_owned()),
5313            #[cfg(feature = "xinput")]
5314            Request::XinputXIDeleteProperty(req) => Request::XinputXIDeleteProperty(req),
5315            #[cfg(feature = "xinput")]
5316            Request::XinputXIGetProperty(req) => Request::XinputXIGetProperty(req),
5317            #[cfg(feature = "xinput")]
5318            Request::XinputXIGetSelectedEvents(req) => Request::XinputXIGetSelectedEvents(req),
5319            #[cfg(feature = "xinput")]
5320            Request::XinputXIBarrierReleasePointer(req) => Request::XinputXIBarrierReleasePointer(req.into_owned()),
5321            #[cfg(feature = "xinput")]
5322            Request::XinputSendExtensionEvent(req) => Request::XinputSendExtensionEvent(req.into_owned()),
5323            #[cfg(feature = "xkb")]
5324            Request::XkbUseExtension(req) => Request::XkbUseExtension(req),
5325            #[cfg(feature = "xkb")]
5326            Request::XkbSelectEvents(req) => Request::XkbSelectEvents(req.into_owned()),
5327            #[cfg(feature = "xkb")]
5328            Request::XkbBell(req) => Request::XkbBell(req),
5329            #[cfg(feature = "xkb")]
5330            Request::XkbGetState(req) => Request::XkbGetState(req),
5331            #[cfg(feature = "xkb")]
5332            Request::XkbLatchLockState(req) => Request::XkbLatchLockState(req),
5333            #[cfg(feature = "xkb")]
5334            Request::XkbGetControls(req) => Request::XkbGetControls(req),
5335            #[cfg(feature = "xkb")]
5336            Request::XkbSetControls(req) => Request::XkbSetControls(req.into_owned()),
5337            #[cfg(feature = "xkb")]
5338            Request::XkbGetMap(req) => Request::XkbGetMap(req),
5339            #[cfg(feature = "xkb")]
5340            Request::XkbSetMap(req) => Request::XkbSetMap(req.into_owned()),
5341            #[cfg(feature = "xkb")]
5342            Request::XkbGetCompatMap(req) => Request::XkbGetCompatMap(req),
5343            #[cfg(feature = "xkb")]
5344            Request::XkbSetCompatMap(req) => Request::XkbSetCompatMap(req.into_owned()),
5345            #[cfg(feature = "xkb")]
5346            Request::XkbGetIndicatorState(req) => Request::XkbGetIndicatorState(req),
5347            #[cfg(feature = "xkb")]
5348            Request::XkbGetIndicatorMap(req) => Request::XkbGetIndicatorMap(req),
5349            #[cfg(feature = "xkb")]
5350            Request::XkbSetIndicatorMap(req) => Request::XkbSetIndicatorMap(req.into_owned()),
5351            #[cfg(feature = "xkb")]
5352            Request::XkbGetNamedIndicator(req) => Request::XkbGetNamedIndicator(req),
5353            #[cfg(feature = "xkb")]
5354            Request::XkbSetNamedIndicator(req) => Request::XkbSetNamedIndicator(req),
5355            #[cfg(feature = "xkb")]
5356            Request::XkbGetNames(req) => Request::XkbGetNames(req),
5357            #[cfg(feature = "xkb")]
5358            Request::XkbSetNames(req) => Request::XkbSetNames(req.into_owned()),
5359            #[cfg(feature = "xkb")]
5360            Request::XkbPerClientFlags(req) => Request::XkbPerClientFlags(req),
5361            #[cfg(feature = "xkb")]
5362            Request::XkbListComponents(req) => Request::XkbListComponents(req),
5363            #[cfg(feature = "xkb")]
5364            Request::XkbGetKbdByName(req) => Request::XkbGetKbdByName(req),
5365            #[cfg(feature = "xkb")]
5366            Request::XkbGetDeviceInfo(req) => Request::XkbGetDeviceInfo(req),
5367            #[cfg(feature = "xkb")]
5368            Request::XkbSetDeviceInfo(req) => Request::XkbSetDeviceInfo(req.into_owned()),
5369            #[cfg(feature = "xkb")]
5370            Request::XkbSetDebuggingFlags(req) => Request::XkbSetDebuggingFlags(req.into_owned()),
5371            #[cfg(feature = "xprint")]
5372            Request::XprintPrintQueryVersion(req) => Request::XprintPrintQueryVersion(req),
5373            #[cfg(feature = "xprint")]
5374            Request::XprintPrintGetPrinterList(req) => Request::XprintPrintGetPrinterList(req.into_owned()),
5375            #[cfg(feature = "xprint")]
5376            Request::XprintPrintRehashPrinterList(req) => Request::XprintPrintRehashPrinterList(req),
5377            #[cfg(feature = "xprint")]
5378            Request::XprintCreateContext(req) => Request::XprintCreateContext(req.into_owned()),
5379            #[cfg(feature = "xprint")]
5380            Request::XprintPrintSetContext(req) => Request::XprintPrintSetContext(req),
5381            #[cfg(feature = "xprint")]
5382            Request::XprintPrintGetContext(req) => Request::XprintPrintGetContext(req),
5383            #[cfg(feature = "xprint")]
5384            Request::XprintPrintDestroyContext(req) => Request::XprintPrintDestroyContext(req),
5385            #[cfg(feature = "xprint")]
5386            Request::XprintPrintGetScreenOfContext(req) => Request::XprintPrintGetScreenOfContext(req),
5387            #[cfg(feature = "xprint")]
5388            Request::XprintPrintStartJob(req) => Request::XprintPrintStartJob(req),
5389            #[cfg(feature = "xprint")]
5390            Request::XprintPrintEndJob(req) => Request::XprintPrintEndJob(req),
5391            #[cfg(feature = "xprint")]
5392            Request::XprintPrintStartDoc(req) => Request::XprintPrintStartDoc(req),
5393            #[cfg(feature = "xprint")]
5394            Request::XprintPrintEndDoc(req) => Request::XprintPrintEndDoc(req),
5395            #[cfg(feature = "xprint")]
5396            Request::XprintPrintPutDocumentData(req) => Request::XprintPrintPutDocumentData(req.into_owned()),
5397            #[cfg(feature = "xprint")]
5398            Request::XprintPrintGetDocumentData(req) => Request::XprintPrintGetDocumentData(req),
5399            #[cfg(feature = "xprint")]
5400            Request::XprintPrintStartPage(req) => Request::XprintPrintStartPage(req),
5401            #[cfg(feature = "xprint")]
5402            Request::XprintPrintEndPage(req) => Request::XprintPrintEndPage(req),
5403            #[cfg(feature = "xprint")]
5404            Request::XprintPrintSelectInput(req) => Request::XprintPrintSelectInput(req),
5405            #[cfg(feature = "xprint")]
5406            Request::XprintPrintInputSelected(req) => Request::XprintPrintInputSelected(req),
5407            #[cfg(feature = "xprint")]
5408            Request::XprintPrintGetAttributes(req) => Request::XprintPrintGetAttributes(req),
5409            #[cfg(feature = "xprint")]
5410            Request::XprintPrintGetOneAttributes(req) => Request::XprintPrintGetOneAttributes(req.into_owned()),
5411            #[cfg(feature = "xprint")]
5412            Request::XprintPrintSetAttributes(req) => Request::XprintPrintSetAttributes(req.into_owned()),
5413            #[cfg(feature = "xprint")]
5414            Request::XprintPrintGetPageDimensions(req) => Request::XprintPrintGetPageDimensions(req),
5415            #[cfg(feature = "xprint")]
5416            Request::XprintPrintQueryScreens(req) => Request::XprintPrintQueryScreens(req),
5417            #[cfg(feature = "xprint")]
5418            Request::XprintPrintSetImageResolution(req) => Request::XprintPrintSetImageResolution(req),
5419            #[cfg(feature = "xprint")]
5420            Request::XprintPrintGetImageResolution(req) => Request::XprintPrintGetImageResolution(req),
5421            #[cfg(feature = "xselinux")]
5422            Request::XselinuxQueryVersion(req) => Request::XselinuxQueryVersion(req),
5423            #[cfg(feature = "xselinux")]
5424            Request::XselinuxSetDeviceCreateContext(req) => Request::XselinuxSetDeviceCreateContext(req.into_owned()),
5425            #[cfg(feature = "xselinux")]
5426            Request::XselinuxGetDeviceCreateContext(req) => Request::XselinuxGetDeviceCreateContext(req),
5427            #[cfg(feature = "xselinux")]
5428            Request::XselinuxSetDeviceContext(req) => Request::XselinuxSetDeviceContext(req.into_owned()),
5429            #[cfg(feature = "xselinux")]
5430            Request::XselinuxGetDeviceContext(req) => Request::XselinuxGetDeviceContext(req),
5431            #[cfg(feature = "xselinux")]
5432            Request::XselinuxSetWindowCreateContext(req) => Request::XselinuxSetWindowCreateContext(req.into_owned()),
5433            #[cfg(feature = "xselinux")]
5434            Request::XselinuxGetWindowCreateContext(req) => Request::XselinuxGetWindowCreateContext(req),
5435            #[cfg(feature = "xselinux")]
5436            Request::XselinuxGetWindowContext(req) => Request::XselinuxGetWindowContext(req),
5437            #[cfg(feature = "xselinux")]
5438            Request::XselinuxSetPropertyCreateContext(req) => Request::XselinuxSetPropertyCreateContext(req.into_owned()),
5439            #[cfg(feature = "xselinux")]
5440            Request::XselinuxGetPropertyCreateContext(req) => Request::XselinuxGetPropertyCreateContext(req),
5441            #[cfg(feature = "xselinux")]
5442            Request::XselinuxSetPropertyUseContext(req) => Request::XselinuxSetPropertyUseContext(req.into_owned()),
5443            #[cfg(feature = "xselinux")]
5444            Request::XselinuxGetPropertyUseContext(req) => Request::XselinuxGetPropertyUseContext(req),
5445            #[cfg(feature = "xselinux")]
5446            Request::XselinuxGetPropertyContext(req) => Request::XselinuxGetPropertyContext(req),
5447            #[cfg(feature = "xselinux")]
5448            Request::XselinuxGetPropertyDataContext(req) => Request::XselinuxGetPropertyDataContext(req),
5449            #[cfg(feature = "xselinux")]
5450            Request::XselinuxListProperties(req) => Request::XselinuxListProperties(req),
5451            #[cfg(feature = "xselinux")]
5452            Request::XselinuxSetSelectionCreateContext(req) => Request::XselinuxSetSelectionCreateContext(req.into_owned()),
5453            #[cfg(feature = "xselinux")]
5454            Request::XselinuxGetSelectionCreateContext(req) => Request::XselinuxGetSelectionCreateContext(req),
5455            #[cfg(feature = "xselinux")]
5456            Request::XselinuxSetSelectionUseContext(req) => Request::XselinuxSetSelectionUseContext(req.into_owned()),
5457            #[cfg(feature = "xselinux")]
5458            Request::XselinuxGetSelectionUseContext(req) => Request::XselinuxGetSelectionUseContext(req),
5459            #[cfg(feature = "xselinux")]
5460            Request::XselinuxGetSelectionContext(req) => Request::XselinuxGetSelectionContext(req),
5461            #[cfg(feature = "xselinux")]
5462            Request::XselinuxGetSelectionDataContext(req) => Request::XselinuxGetSelectionDataContext(req),
5463            #[cfg(feature = "xselinux")]
5464            Request::XselinuxListSelections(req) => Request::XselinuxListSelections(req),
5465            #[cfg(feature = "xselinux")]
5466            Request::XselinuxGetClientContext(req) => Request::XselinuxGetClientContext(req),
5467            #[cfg(feature = "xtest")]
5468            Request::XtestGetVersion(req) => Request::XtestGetVersion(req),
5469            #[cfg(feature = "xtest")]
5470            Request::XtestCompareCursor(req) => Request::XtestCompareCursor(req),
5471            #[cfg(feature = "xtest")]
5472            Request::XtestFakeInput(req) => Request::XtestFakeInput(req),
5473            #[cfg(feature = "xtest")]
5474            Request::XtestGrabControl(req) => Request::XtestGrabControl(req),
5475            #[cfg(feature = "xv")]
5476            Request::XvQueryExtension(req) => Request::XvQueryExtension(req),
5477            #[cfg(feature = "xv")]
5478            Request::XvQueryAdaptors(req) => Request::XvQueryAdaptors(req),
5479            #[cfg(feature = "xv")]
5480            Request::XvQueryEncodings(req) => Request::XvQueryEncodings(req),
5481            #[cfg(feature = "xv")]
5482            Request::XvGrabPort(req) => Request::XvGrabPort(req),
5483            #[cfg(feature = "xv")]
5484            Request::XvUngrabPort(req) => Request::XvUngrabPort(req),
5485            #[cfg(feature = "xv")]
5486            Request::XvPutVideo(req) => Request::XvPutVideo(req),
5487            #[cfg(feature = "xv")]
5488            Request::XvPutStill(req) => Request::XvPutStill(req),
5489            #[cfg(feature = "xv")]
5490            Request::XvGetVideo(req) => Request::XvGetVideo(req),
5491            #[cfg(feature = "xv")]
5492            Request::XvGetStill(req) => Request::XvGetStill(req),
5493            #[cfg(feature = "xv")]
5494            Request::XvStopVideo(req) => Request::XvStopVideo(req),
5495            #[cfg(feature = "xv")]
5496            Request::XvSelectVideoNotify(req) => Request::XvSelectVideoNotify(req),
5497            #[cfg(feature = "xv")]
5498            Request::XvSelectPortNotify(req) => Request::XvSelectPortNotify(req),
5499            #[cfg(feature = "xv")]
5500            Request::XvQueryBestSize(req) => Request::XvQueryBestSize(req),
5501            #[cfg(feature = "xv")]
5502            Request::XvSetPortAttribute(req) => Request::XvSetPortAttribute(req),
5503            #[cfg(feature = "xv")]
5504            Request::XvGetPortAttribute(req) => Request::XvGetPortAttribute(req),
5505            #[cfg(feature = "xv")]
5506            Request::XvQueryPortAttributes(req) => Request::XvQueryPortAttributes(req),
5507            #[cfg(feature = "xv")]
5508            Request::XvListImageFormats(req) => Request::XvListImageFormats(req),
5509            #[cfg(feature = "xv")]
5510            Request::XvQueryImageAttributes(req) => Request::XvQueryImageAttributes(req),
5511            #[cfg(feature = "xv")]
5512            Request::XvPutImage(req) => Request::XvPutImage(req.into_owned()),
5513            #[cfg(feature = "xv")]
5514            Request::XvShmPutImage(req) => Request::XvShmPutImage(req),
5515            #[cfg(feature = "xvmc")]
5516            Request::XvmcQueryVersion(req) => Request::XvmcQueryVersion(req),
5517            #[cfg(feature = "xvmc")]
5518            Request::XvmcListSurfaceTypes(req) => Request::XvmcListSurfaceTypes(req),
5519            #[cfg(feature = "xvmc")]
5520            Request::XvmcCreateContext(req) => Request::XvmcCreateContext(req),
5521            #[cfg(feature = "xvmc")]
5522            Request::XvmcDestroyContext(req) => Request::XvmcDestroyContext(req),
5523            #[cfg(feature = "xvmc")]
5524            Request::XvmcCreateSurface(req) => Request::XvmcCreateSurface(req),
5525            #[cfg(feature = "xvmc")]
5526            Request::XvmcDestroySurface(req) => Request::XvmcDestroySurface(req),
5527            #[cfg(feature = "xvmc")]
5528            Request::XvmcCreateSubpicture(req) => Request::XvmcCreateSubpicture(req),
5529            #[cfg(feature = "xvmc")]
5530            Request::XvmcDestroySubpicture(req) => Request::XvmcDestroySubpicture(req),
5531            #[cfg(feature = "xvmc")]
5532            Request::XvmcListSubpictureTypes(req) => Request::XvmcListSubpictureTypes(req),
5533        }
5534    }
5535}
5536
5537/// Enumeration of all possible X11 replies.
5538#[derive(Debug)]
5539#[allow(clippy::large_enum_variant)]
5540#[non_exhaustive]
5541pub enum Reply {
5542    Void,
5543    GetWindowAttributes(xproto::GetWindowAttributesReply),
5544    GetGeometry(xproto::GetGeometryReply),
5545    QueryTree(xproto::QueryTreeReply),
5546    InternAtom(xproto::InternAtomReply),
5547    GetAtomName(xproto::GetAtomNameReply),
5548    GetProperty(xproto::GetPropertyReply),
5549    ListProperties(xproto::ListPropertiesReply),
5550    GetSelectionOwner(xproto::GetSelectionOwnerReply),
5551    GrabPointer(xproto::GrabPointerReply),
5552    GrabKeyboard(xproto::GrabKeyboardReply),
5553    QueryPointer(xproto::QueryPointerReply),
5554    GetMotionEvents(xproto::GetMotionEventsReply),
5555    TranslateCoordinates(xproto::TranslateCoordinatesReply),
5556    GetInputFocus(xproto::GetInputFocusReply),
5557    QueryKeymap(xproto::QueryKeymapReply),
5558    QueryFont(xproto::QueryFontReply),
5559    QueryTextExtents(xproto::QueryTextExtentsReply),
5560    ListFonts(xproto::ListFontsReply),
5561    ListFontsWithInfo(xproto::ListFontsWithInfoReply),
5562    GetFontPath(xproto::GetFontPathReply),
5563    GetImage(xproto::GetImageReply),
5564    ListInstalledColormaps(xproto::ListInstalledColormapsReply),
5565    AllocColor(xproto::AllocColorReply),
5566    AllocNamedColor(xproto::AllocNamedColorReply),
5567    AllocColorCells(xproto::AllocColorCellsReply),
5568    AllocColorPlanes(xproto::AllocColorPlanesReply),
5569    QueryColors(xproto::QueryColorsReply),
5570    LookupColor(xproto::LookupColorReply),
5571    QueryBestSize(xproto::QueryBestSizeReply),
5572    QueryExtension(xproto::QueryExtensionReply),
5573    ListExtensions(xproto::ListExtensionsReply),
5574    GetKeyboardMapping(xproto::GetKeyboardMappingReply),
5575    GetKeyboardControl(xproto::GetKeyboardControlReply),
5576    GetPointerControl(xproto::GetPointerControlReply),
5577    GetScreenSaver(xproto::GetScreenSaverReply),
5578    ListHosts(xproto::ListHostsReply),
5579    SetPointerMapping(xproto::SetPointerMappingReply),
5580    GetPointerMapping(xproto::GetPointerMappingReply),
5581    SetModifierMapping(xproto::SetModifierMappingReply),
5582    GetModifierMapping(xproto::GetModifierMappingReply),
5583    BigreqEnable(bigreq::EnableReply),
5584    #[cfg(feature = "composite")]
5585    CompositeQueryVersion(composite::QueryVersionReply),
5586    #[cfg(feature = "composite")]
5587    CompositeGetOverlayWindow(composite::GetOverlayWindowReply),
5588    #[cfg(feature = "damage")]
5589    DamageQueryVersion(damage::QueryVersionReply),
5590    #[cfg(feature = "dbe")]
5591    DbeQueryVersion(dbe::QueryVersionReply),
5592    #[cfg(feature = "dbe")]
5593    DbeGetVisualInfo(dbe::GetVisualInfoReply),
5594    #[cfg(feature = "dbe")]
5595    DbeGetBackBufferAttributes(dbe::GetBackBufferAttributesReply),
5596    #[cfg(feature = "dpms")]
5597    DpmsGetVersion(dpms::GetVersionReply),
5598    #[cfg(feature = "dpms")]
5599    DpmsCapable(dpms::CapableReply),
5600    #[cfg(feature = "dpms")]
5601    DpmsGetTimeouts(dpms::GetTimeoutsReply),
5602    #[cfg(feature = "dpms")]
5603    DpmsInfo(dpms::InfoReply),
5604    #[cfg(feature = "dri2")]
5605    Dri2QueryVersion(dri2::QueryVersionReply),
5606    #[cfg(feature = "dri2")]
5607    Dri2Connect(dri2::ConnectReply),
5608    #[cfg(feature = "dri2")]
5609    Dri2Authenticate(dri2::AuthenticateReply),
5610    #[cfg(feature = "dri2")]
5611    Dri2GetBuffers(dri2::GetBuffersReply),
5612    #[cfg(feature = "dri2")]
5613    Dri2CopyRegion(dri2::CopyRegionReply),
5614    #[cfg(feature = "dri2")]
5615    Dri2GetBuffersWithFormat(dri2::GetBuffersWithFormatReply),
5616    #[cfg(feature = "dri2")]
5617    Dri2SwapBuffers(dri2::SwapBuffersReply),
5618    #[cfg(feature = "dri2")]
5619    Dri2GetMSC(dri2::GetMSCReply),
5620    #[cfg(feature = "dri2")]
5621    Dri2WaitMSC(dri2::WaitMSCReply),
5622    #[cfg(feature = "dri2")]
5623    Dri2WaitSBC(dri2::WaitSBCReply),
5624    #[cfg(feature = "dri2")]
5625    Dri2GetParam(dri2::GetParamReply),
5626    #[cfg(feature = "dri3")]
5627    Dri3QueryVersion(dri3::QueryVersionReply),
5628    #[cfg(feature = "dri3")]
5629    Dri3Open(dri3::OpenReply),
5630    #[cfg(feature = "dri3")]
5631    Dri3BufferFromPixmap(dri3::BufferFromPixmapReply),
5632    #[cfg(feature = "dri3")]
5633    Dri3FDFromFence(dri3::FDFromFenceReply),
5634    #[cfg(feature = "dri3")]
5635    Dri3GetSupportedModifiers(dri3::GetSupportedModifiersReply),
5636    #[cfg(feature = "dri3")]
5637    Dri3BuffersFromPixmap(dri3::BuffersFromPixmapReply),
5638    GeQueryVersion(ge::QueryVersionReply),
5639    #[cfg(feature = "glx")]
5640    GlxMakeCurrent(glx::MakeCurrentReply),
5641    #[cfg(feature = "glx")]
5642    GlxIsDirect(glx::IsDirectReply),
5643    #[cfg(feature = "glx")]
5644    GlxQueryVersion(glx::QueryVersionReply),
5645    #[cfg(feature = "glx")]
5646    GlxGetVisualConfigs(glx::GetVisualConfigsReply),
5647    #[cfg(feature = "glx")]
5648    GlxVendorPrivateWithReply(glx::VendorPrivateWithReplyReply),
5649    #[cfg(feature = "glx")]
5650    GlxQueryExtensionsString(glx::QueryExtensionsStringReply),
5651    #[cfg(feature = "glx")]
5652    GlxQueryServerString(glx::QueryServerStringReply),
5653    #[cfg(feature = "glx")]
5654    GlxGetFBConfigs(glx::GetFBConfigsReply),
5655    #[cfg(feature = "glx")]
5656    GlxQueryContext(glx::QueryContextReply),
5657    #[cfg(feature = "glx")]
5658    GlxMakeContextCurrent(glx::MakeContextCurrentReply),
5659    #[cfg(feature = "glx")]
5660    GlxGetDrawableAttributes(glx::GetDrawableAttributesReply),
5661    #[cfg(feature = "glx")]
5662    GlxGenLists(glx::GenListsReply),
5663    #[cfg(feature = "glx")]
5664    GlxRenderMode(glx::RenderModeReply),
5665    #[cfg(feature = "glx")]
5666    GlxFinish(glx::FinishReply),
5667    #[cfg(feature = "glx")]
5668    GlxReadPixels(glx::ReadPixelsReply),
5669    #[cfg(feature = "glx")]
5670    GlxGetBooleanv(glx::GetBooleanvReply),
5671    #[cfg(feature = "glx")]
5672    GlxGetClipPlane(glx::GetClipPlaneReply),
5673    #[cfg(feature = "glx")]
5674    GlxGetDoublev(glx::GetDoublevReply),
5675    #[cfg(feature = "glx")]
5676    GlxGetError(glx::GetErrorReply),
5677    #[cfg(feature = "glx")]
5678    GlxGetFloatv(glx::GetFloatvReply),
5679    #[cfg(feature = "glx")]
5680    GlxGetIntegerv(glx::GetIntegervReply),
5681    #[cfg(feature = "glx")]
5682    GlxGetLightfv(glx::GetLightfvReply),
5683    #[cfg(feature = "glx")]
5684    GlxGetLightiv(glx::GetLightivReply),
5685    #[cfg(feature = "glx")]
5686    GlxGetMapdv(glx::GetMapdvReply),
5687    #[cfg(feature = "glx")]
5688    GlxGetMapfv(glx::GetMapfvReply),
5689    #[cfg(feature = "glx")]
5690    GlxGetMapiv(glx::GetMapivReply),
5691    #[cfg(feature = "glx")]
5692    GlxGetMaterialfv(glx::GetMaterialfvReply),
5693    #[cfg(feature = "glx")]
5694    GlxGetMaterialiv(glx::GetMaterialivReply),
5695    #[cfg(feature = "glx")]
5696    GlxGetPixelMapfv(glx::GetPixelMapfvReply),
5697    #[cfg(feature = "glx")]
5698    GlxGetPixelMapuiv(glx::GetPixelMapuivReply),
5699    #[cfg(feature = "glx")]
5700    GlxGetPixelMapusv(glx::GetPixelMapusvReply),
5701    #[cfg(feature = "glx")]
5702    GlxGetPolygonStipple(glx::GetPolygonStippleReply),
5703    #[cfg(feature = "glx")]
5704    GlxGetString(glx::GetStringReply),
5705    #[cfg(feature = "glx")]
5706    GlxGetTexEnvfv(glx::GetTexEnvfvReply),
5707    #[cfg(feature = "glx")]
5708    GlxGetTexEnviv(glx::GetTexEnvivReply),
5709    #[cfg(feature = "glx")]
5710    GlxGetTexGendv(glx::GetTexGendvReply),
5711    #[cfg(feature = "glx")]
5712    GlxGetTexGenfv(glx::GetTexGenfvReply),
5713    #[cfg(feature = "glx")]
5714    GlxGetTexGeniv(glx::GetTexGenivReply),
5715    #[cfg(feature = "glx")]
5716    GlxGetTexImage(glx::GetTexImageReply),
5717    #[cfg(feature = "glx")]
5718    GlxGetTexParameterfv(glx::GetTexParameterfvReply),
5719    #[cfg(feature = "glx")]
5720    GlxGetTexParameteriv(glx::GetTexParameterivReply),
5721    #[cfg(feature = "glx")]
5722    GlxGetTexLevelParameterfv(glx::GetTexLevelParameterfvReply),
5723    #[cfg(feature = "glx")]
5724    GlxGetTexLevelParameteriv(glx::GetTexLevelParameterivReply),
5725    #[cfg(feature = "glx")]
5726    GlxIsEnabled(glx::IsEnabledReply),
5727    #[cfg(feature = "glx")]
5728    GlxIsList(glx::IsListReply),
5729    #[cfg(feature = "glx")]
5730    GlxAreTexturesResident(glx::AreTexturesResidentReply),
5731    #[cfg(feature = "glx")]
5732    GlxGenTextures(glx::GenTexturesReply),
5733    #[cfg(feature = "glx")]
5734    GlxIsTexture(glx::IsTextureReply),
5735    #[cfg(feature = "glx")]
5736    GlxGetColorTable(glx::GetColorTableReply),
5737    #[cfg(feature = "glx")]
5738    GlxGetColorTableParameterfv(glx::GetColorTableParameterfvReply),
5739    #[cfg(feature = "glx")]
5740    GlxGetColorTableParameteriv(glx::GetColorTableParameterivReply),
5741    #[cfg(feature = "glx")]
5742    GlxGetConvolutionFilter(glx::GetConvolutionFilterReply),
5743    #[cfg(feature = "glx")]
5744    GlxGetConvolutionParameterfv(glx::GetConvolutionParameterfvReply),
5745    #[cfg(feature = "glx")]
5746    GlxGetConvolutionParameteriv(glx::GetConvolutionParameterivReply),
5747    #[cfg(feature = "glx")]
5748    GlxGetSeparableFilter(glx::GetSeparableFilterReply),
5749    #[cfg(feature = "glx")]
5750    GlxGetHistogram(glx::GetHistogramReply),
5751    #[cfg(feature = "glx")]
5752    GlxGetHistogramParameterfv(glx::GetHistogramParameterfvReply),
5753    #[cfg(feature = "glx")]
5754    GlxGetHistogramParameteriv(glx::GetHistogramParameterivReply),
5755    #[cfg(feature = "glx")]
5756    GlxGetMinmax(glx::GetMinmaxReply),
5757    #[cfg(feature = "glx")]
5758    GlxGetMinmaxParameterfv(glx::GetMinmaxParameterfvReply),
5759    #[cfg(feature = "glx")]
5760    GlxGetMinmaxParameteriv(glx::GetMinmaxParameterivReply),
5761    #[cfg(feature = "glx")]
5762    GlxGetCompressedTexImageARB(glx::GetCompressedTexImageARBReply),
5763    #[cfg(feature = "glx")]
5764    GlxGenQueriesARB(glx::GenQueriesARBReply),
5765    #[cfg(feature = "glx")]
5766    GlxIsQueryARB(glx::IsQueryARBReply),
5767    #[cfg(feature = "glx")]
5768    GlxGetQueryivARB(glx::GetQueryivARBReply),
5769    #[cfg(feature = "glx")]
5770    GlxGetQueryObjectivARB(glx::GetQueryObjectivARBReply),
5771    #[cfg(feature = "glx")]
5772    GlxGetQueryObjectuivARB(glx::GetQueryObjectuivARBReply),
5773    #[cfg(feature = "present")]
5774    PresentQueryVersion(present::QueryVersionReply),
5775    #[cfg(feature = "present")]
5776    PresentQueryCapabilities(present::QueryCapabilitiesReply),
5777    #[cfg(feature = "randr")]
5778    RandrQueryVersion(randr::QueryVersionReply),
5779    #[cfg(feature = "randr")]
5780    RandrSetScreenConfig(randr::SetScreenConfigReply),
5781    #[cfg(feature = "randr")]
5782    RandrGetScreenInfo(randr::GetScreenInfoReply),
5783    #[cfg(feature = "randr")]
5784    RandrGetScreenSizeRange(randr::GetScreenSizeRangeReply),
5785    #[cfg(feature = "randr")]
5786    RandrGetScreenResources(randr::GetScreenResourcesReply),
5787    #[cfg(feature = "randr")]
5788    RandrGetOutputInfo(randr::GetOutputInfoReply),
5789    #[cfg(feature = "randr")]
5790    RandrListOutputProperties(randr::ListOutputPropertiesReply),
5791    #[cfg(feature = "randr")]
5792    RandrQueryOutputProperty(randr::QueryOutputPropertyReply),
5793    #[cfg(feature = "randr")]
5794    RandrGetOutputProperty(randr::GetOutputPropertyReply),
5795    #[cfg(feature = "randr")]
5796    RandrCreateMode(randr::CreateModeReply),
5797    #[cfg(feature = "randr")]
5798    RandrGetCrtcInfo(randr::GetCrtcInfoReply),
5799    #[cfg(feature = "randr")]
5800    RandrSetCrtcConfig(randr::SetCrtcConfigReply),
5801    #[cfg(feature = "randr")]
5802    RandrGetCrtcGammaSize(randr::GetCrtcGammaSizeReply),
5803    #[cfg(feature = "randr")]
5804    RandrGetCrtcGamma(randr::GetCrtcGammaReply),
5805    #[cfg(feature = "randr")]
5806    RandrGetScreenResourcesCurrent(randr::GetScreenResourcesCurrentReply),
5807    #[cfg(feature = "randr")]
5808    RandrGetCrtcTransform(randr::GetCrtcTransformReply),
5809    #[cfg(feature = "randr")]
5810    RandrGetPanning(randr::GetPanningReply),
5811    #[cfg(feature = "randr")]
5812    RandrSetPanning(randr::SetPanningReply),
5813    #[cfg(feature = "randr")]
5814    RandrGetOutputPrimary(randr::GetOutputPrimaryReply),
5815    #[cfg(feature = "randr")]
5816    RandrGetProviders(randr::GetProvidersReply),
5817    #[cfg(feature = "randr")]
5818    RandrGetProviderInfo(randr::GetProviderInfoReply),
5819    #[cfg(feature = "randr")]
5820    RandrListProviderProperties(randr::ListProviderPropertiesReply),
5821    #[cfg(feature = "randr")]
5822    RandrQueryProviderProperty(randr::QueryProviderPropertyReply),
5823    #[cfg(feature = "randr")]
5824    RandrGetProviderProperty(randr::GetProviderPropertyReply),
5825    #[cfg(feature = "randr")]
5826    RandrGetMonitors(randr::GetMonitorsReply),
5827    #[cfg(feature = "randr")]
5828    RandrCreateLease(randr::CreateLeaseReply),
5829    #[cfg(feature = "record")]
5830    RecordQueryVersion(record::QueryVersionReply),
5831    #[cfg(feature = "record")]
5832    RecordGetContext(record::GetContextReply),
5833    #[cfg(feature = "record")]
5834    RecordEnableContext(record::EnableContextReply),
5835    #[cfg(feature = "render")]
5836    RenderQueryVersion(render::QueryVersionReply),
5837    #[cfg(feature = "render")]
5838    RenderQueryPictFormats(render::QueryPictFormatsReply),
5839    #[cfg(feature = "render")]
5840    RenderQueryPictIndexValues(render::QueryPictIndexValuesReply),
5841    #[cfg(feature = "render")]
5842    RenderQueryFilters(render::QueryFiltersReply),
5843    #[cfg(feature = "res")]
5844    ResQueryVersion(res::QueryVersionReply),
5845    #[cfg(feature = "res")]
5846    ResQueryClients(res::QueryClientsReply),
5847    #[cfg(feature = "res")]
5848    ResQueryClientResources(res::QueryClientResourcesReply),
5849    #[cfg(feature = "res")]
5850    ResQueryClientPixmapBytes(res::QueryClientPixmapBytesReply),
5851    #[cfg(feature = "res")]
5852    ResQueryClientIds(res::QueryClientIdsReply),
5853    #[cfg(feature = "res")]
5854    ResQueryResourceBytes(res::QueryResourceBytesReply),
5855    #[cfg(feature = "screensaver")]
5856    ScreensaverQueryVersion(screensaver::QueryVersionReply),
5857    #[cfg(feature = "screensaver")]
5858    ScreensaverQueryInfo(screensaver::QueryInfoReply),
5859    #[cfg(feature = "shape")]
5860    ShapeQueryVersion(shape::QueryVersionReply),
5861    #[cfg(feature = "shape")]
5862    ShapeQueryExtents(shape::QueryExtentsReply),
5863    #[cfg(feature = "shape")]
5864    ShapeInputSelected(shape::InputSelectedReply),
5865    #[cfg(feature = "shape")]
5866    ShapeGetRectangles(shape::GetRectanglesReply),
5867    #[cfg(feature = "shm")]
5868    ShmQueryVersion(shm::QueryVersionReply),
5869    #[cfg(feature = "shm")]
5870    ShmGetImage(shm::GetImageReply),
5871    #[cfg(feature = "shm")]
5872    ShmCreateSegment(shm::CreateSegmentReply),
5873    #[cfg(feature = "sync")]
5874    SyncInitialize(sync::InitializeReply),
5875    #[cfg(feature = "sync")]
5876    SyncListSystemCounters(sync::ListSystemCountersReply),
5877    #[cfg(feature = "sync")]
5878    SyncQueryCounter(sync::QueryCounterReply),
5879    #[cfg(feature = "sync")]
5880    SyncQueryAlarm(sync::QueryAlarmReply),
5881    #[cfg(feature = "sync")]
5882    SyncGetPriority(sync::GetPriorityReply),
5883    #[cfg(feature = "sync")]
5884    SyncQueryFence(sync::QueryFenceReply),
5885    XcMiscGetVersion(xc_misc::GetVersionReply),
5886    XcMiscGetXIDRange(xc_misc::GetXIDRangeReply),
5887    XcMiscGetXIDList(xc_misc::GetXIDListReply),
5888    #[cfg(feature = "xevie")]
5889    XevieQueryVersion(xevie::QueryVersionReply),
5890    #[cfg(feature = "xevie")]
5891    XevieStart(xevie::StartReply),
5892    #[cfg(feature = "xevie")]
5893    XevieEnd(xevie::EndReply),
5894    #[cfg(feature = "xevie")]
5895    XevieSend(xevie::SendReply),
5896    #[cfg(feature = "xevie")]
5897    XevieSelectInput(xevie::SelectInputReply),
5898    #[cfg(feature = "xf86dri")]
5899    Xf86driQueryVersion(xf86dri::QueryVersionReply),
5900    #[cfg(feature = "xf86dri")]
5901    Xf86driQueryDirectRenderingCapable(xf86dri::QueryDirectRenderingCapableReply),
5902    #[cfg(feature = "xf86dri")]
5903    Xf86driOpenConnection(xf86dri::OpenConnectionReply),
5904    #[cfg(feature = "xf86dri")]
5905    Xf86driGetClientDriverName(xf86dri::GetClientDriverNameReply),
5906    #[cfg(feature = "xf86dri")]
5907    Xf86driCreateContext(xf86dri::CreateContextReply),
5908    #[cfg(feature = "xf86dri")]
5909    Xf86driCreateDrawable(xf86dri::CreateDrawableReply),
5910    #[cfg(feature = "xf86dri")]
5911    Xf86driGetDrawableInfo(xf86dri::GetDrawableInfoReply),
5912    #[cfg(feature = "xf86dri")]
5913    Xf86driGetDeviceInfo(xf86dri::GetDeviceInfoReply),
5914    #[cfg(feature = "xf86dri")]
5915    Xf86driAuthConnection(xf86dri::AuthConnectionReply),
5916    #[cfg(feature = "xf86vidmode")]
5917    Xf86vidmodeQueryVersion(xf86vidmode::QueryVersionReply),
5918    #[cfg(feature = "xf86vidmode")]
5919    Xf86vidmodeGetModeLine(xf86vidmode::GetModeLineReply),
5920    #[cfg(feature = "xf86vidmode")]
5921    Xf86vidmodeGetMonitor(xf86vidmode::GetMonitorReply),
5922    #[cfg(feature = "xf86vidmode")]
5923    Xf86vidmodeGetAllModeLines(xf86vidmode::GetAllModeLinesReply),
5924    #[cfg(feature = "xf86vidmode")]
5925    Xf86vidmodeValidateModeLine(xf86vidmode::ValidateModeLineReply),
5926    #[cfg(feature = "xf86vidmode")]
5927    Xf86vidmodeGetViewPort(xf86vidmode::GetViewPortReply),
5928    #[cfg(feature = "xf86vidmode")]
5929    Xf86vidmodeGetDotClocks(xf86vidmode::GetDotClocksReply),
5930    #[cfg(feature = "xf86vidmode")]
5931    Xf86vidmodeGetGamma(xf86vidmode::GetGammaReply),
5932    #[cfg(feature = "xf86vidmode")]
5933    Xf86vidmodeGetGammaRamp(xf86vidmode::GetGammaRampReply),
5934    #[cfg(feature = "xf86vidmode")]
5935    Xf86vidmodeGetGammaRampSize(xf86vidmode::GetGammaRampSizeReply),
5936    #[cfg(feature = "xf86vidmode")]
5937    Xf86vidmodeGetPermissions(xf86vidmode::GetPermissionsReply),
5938    #[cfg(feature = "xfixes")]
5939    XfixesQueryVersion(xfixes::QueryVersionReply),
5940    #[cfg(feature = "xfixes")]
5941    XfixesGetCursorImage(xfixes::GetCursorImageReply),
5942    #[cfg(feature = "xfixes")]
5943    XfixesFetchRegion(xfixes::FetchRegionReply),
5944    #[cfg(feature = "xfixes")]
5945    XfixesGetCursorName(xfixes::GetCursorNameReply),
5946    #[cfg(feature = "xfixes")]
5947    XfixesGetCursorImageAndName(xfixes::GetCursorImageAndNameReply),
5948    #[cfg(feature = "xfixes")]
5949    XfixesGetClientDisconnectMode(xfixes::GetClientDisconnectModeReply),
5950    #[cfg(feature = "xinerama")]
5951    XineramaQueryVersion(xinerama::QueryVersionReply),
5952    #[cfg(feature = "xinerama")]
5953    XineramaGetState(xinerama::GetStateReply),
5954    #[cfg(feature = "xinerama")]
5955    XineramaGetScreenCount(xinerama::GetScreenCountReply),
5956    #[cfg(feature = "xinerama")]
5957    XineramaGetScreenSize(xinerama::GetScreenSizeReply),
5958    #[cfg(feature = "xinerama")]
5959    XineramaIsActive(xinerama::IsActiveReply),
5960    #[cfg(feature = "xinerama")]
5961    XineramaQueryScreens(xinerama::QueryScreensReply),
5962    #[cfg(feature = "xinput")]
5963    XinputGetExtensionVersion(xinput::GetExtensionVersionReply),
5964    #[cfg(feature = "xinput")]
5965    XinputListInputDevices(xinput::ListInputDevicesReply),
5966    #[cfg(feature = "xinput")]
5967    XinputOpenDevice(xinput::OpenDeviceReply),
5968    #[cfg(feature = "xinput")]
5969    XinputSetDeviceMode(xinput::SetDeviceModeReply),
5970    #[cfg(feature = "xinput")]
5971    XinputGetSelectedExtensionEvents(xinput::GetSelectedExtensionEventsReply),
5972    #[cfg(feature = "xinput")]
5973    XinputGetDeviceDontPropagateList(xinput::GetDeviceDontPropagateListReply),
5974    #[cfg(feature = "xinput")]
5975    XinputGetDeviceMotionEvents(xinput::GetDeviceMotionEventsReply),
5976    #[cfg(feature = "xinput")]
5977    XinputChangeKeyboardDevice(xinput::ChangeKeyboardDeviceReply),
5978    #[cfg(feature = "xinput")]
5979    XinputChangePointerDevice(xinput::ChangePointerDeviceReply),
5980    #[cfg(feature = "xinput")]
5981    XinputGrabDevice(xinput::GrabDeviceReply),
5982    #[cfg(feature = "xinput")]
5983    XinputGetDeviceFocus(xinput::GetDeviceFocusReply),
5984    #[cfg(feature = "xinput")]
5985    XinputGetFeedbackControl(xinput::GetFeedbackControlReply),
5986    #[cfg(feature = "xinput")]
5987    XinputGetDeviceKeyMapping(xinput::GetDeviceKeyMappingReply),
5988    #[cfg(feature = "xinput")]
5989    XinputGetDeviceModifierMapping(xinput::GetDeviceModifierMappingReply),
5990    #[cfg(feature = "xinput")]
5991    XinputSetDeviceModifierMapping(xinput::SetDeviceModifierMappingReply),
5992    #[cfg(feature = "xinput")]
5993    XinputGetDeviceButtonMapping(xinput::GetDeviceButtonMappingReply),
5994    #[cfg(feature = "xinput")]
5995    XinputSetDeviceButtonMapping(xinput::SetDeviceButtonMappingReply),
5996    #[cfg(feature = "xinput")]
5997    XinputQueryDeviceState(xinput::QueryDeviceStateReply),
5998    #[cfg(feature = "xinput")]
5999    XinputSetDeviceValuators(xinput::SetDeviceValuatorsReply),
6000    #[cfg(feature = "xinput")]
6001    XinputGetDeviceControl(xinput::GetDeviceControlReply),
6002    #[cfg(feature = "xinput")]
6003    XinputChangeDeviceControl(xinput::ChangeDeviceControlReply),
6004    #[cfg(feature = "xinput")]
6005    XinputListDeviceProperties(xinput::ListDevicePropertiesReply),
6006    #[cfg(feature = "xinput")]
6007    XinputGetDeviceProperty(xinput::GetDevicePropertyReply),
6008    #[cfg(feature = "xinput")]
6009    XinputXIQueryPointer(xinput::XIQueryPointerReply),
6010    #[cfg(feature = "xinput")]
6011    XinputXIGetClientPointer(xinput::XIGetClientPointerReply),
6012    #[cfg(feature = "xinput")]
6013    XinputXIQueryVersion(xinput::XIQueryVersionReply),
6014    #[cfg(feature = "xinput")]
6015    XinputXIQueryDevice(xinput::XIQueryDeviceReply),
6016    #[cfg(feature = "xinput")]
6017    XinputXIGetFocus(xinput::XIGetFocusReply),
6018    #[cfg(feature = "xinput")]
6019    XinputXIGrabDevice(xinput::XIGrabDeviceReply),
6020    #[cfg(feature = "xinput")]
6021    XinputXIPassiveGrabDevice(xinput::XIPassiveGrabDeviceReply),
6022    #[cfg(feature = "xinput")]
6023    XinputXIListProperties(xinput::XIListPropertiesReply),
6024    #[cfg(feature = "xinput")]
6025    XinputXIGetProperty(xinput::XIGetPropertyReply),
6026    #[cfg(feature = "xinput")]
6027    XinputXIGetSelectedEvents(xinput::XIGetSelectedEventsReply),
6028    #[cfg(feature = "xkb")]
6029    XkbUseExtension(xkb::UseExtensionReply),
6030    #[cfg(feature = "xkb")]
6031    XkbGetState(xkb::GetStateReply),
6032    #[cfg(feature = "xkb")]
6033    XkbGetControls(xkb::GetControlsReply),
6034    #[cfg(feature = "xkb")]
6035    XkbGetMap(xkb::GetMapReply),
6036    #[cfg(feature = "xkb")]
6037    XkbGetCompatMap(xkb::GetCompatMapReply),
6038    #[cfg(feature = "xkb")]
6039    XkbGetIndicatorState(xkb::GetIndicatorStateReply),
6040    #[cfg(feature = "xkb")]
6041    XkbGetIndicatorMap(xkb::GetIndicatorMapReply),
6042    #[cfg(feature = "xkb")]
6043    XkbGetNamedIndicator(xkb::GetNamedIndicatorReply),
6044    #[cfg(feature = "xkb")]
6045    XkbGetNames(xkb::GetNamesReply),
6046    #[cfg(feature = "xkb")]
6047    XkbPerClientFlags(xkb::PerClientFlagsReply),
6048    #[cfg(feature = "xkb")]
6049    XkbListComponents(xkb::ListComponentsReply),
6050    #[cfg(feature = "xkb")]
6051    XkbGetKbdByName(xkb::GetKbdByNameReply),
6052    #[cfg(feature = "xkb")]
6053    XkbGetDeviceInfo(xkb::GetDeviceInfoReply),
6054    #[cfg(feature = "xkb")]
6055    XkbSetDebuggingFlags(xkb::SetDebuggingFlagsReply),
6056    #[cfg(feature = "xprint")]
6057    XprintPrintQueryVersion(xprint::PrintQueryVersionReply),
6058    #[cfg(feature = "xprint")]
6059    XprintPrintGetPrinterList(xprint::PrintGetPrinterListReply),
6060    #[cfg(feature = "xprint")]
6061    XprintPrintGetContext(xprint::PrintGetContextReply),
6062    #[cfg(feature = "xprint")]
6063    XprintPrintGetScreenOfContext(xprint::PrintGetScreenOfContextReply),
6064    #[cfg(feature = "xprint")]
6065    XprintPrintGetDocumentData(xprint::PrintGetDocumentDataReply),
6066    #[cfg(feature = "xprint")]
6067    XprintPrintInputSelected(xprint::PrintInputSelectedReply),
6068    #[cfg(feature = "xprint")]
6069    XprintPrintGetAttributes(xprint::PrintGetAttributesReply),
6070    #[cfg(feature = "xprint")]
6071    XprintPrintGetOneAttributes(xprint::PrintGetOneAttributesReply),
6072    #[cfg(feature = "xprint")]
6073    XprintPrintGetPageDimensions(xprint::PrintGetPageDimensionsReply),
6074    #[cfg(feature = "xprint")]
6075    XprintPrintQueryScreens(xprint::PrintQueryScreensReply),
6076    #[cfg(feature = "xprint")]
6077    XprintPrintSetImageResolution(xprint::PrintSetImageResolutionReply),
6078    #[cfg(feature = "xprint")]
6079    XprintPrintGetImageResolution(xprint::PrintGetImageResolutionReply),
6080    #[cfg(feature = "xselinux")]
6081    XselinuxQueryVersion(xselinux::QueryVersionReply),
6082    #[cfg(feature = "xselinux")]
6083    XselinuxGetDeviceCreateContext(xselinux::GetDeviceCreateContextReply),
6084    #[cfg(feature = "xselinux")]
6085    XselinuxGetDeviceContext(xselinux::GetDeviceContextReply),
6086    #[cfg(feature = "xselinux")]
6087    XselinuxGetWindowCreateContext(xselinux::GetWindowCreateContextReply),
6088    #[cfg(feature = "xselinux")]
6089    XselinuxGetWindowContext(xselinux::GetWindowContextReply),
6090    #[cfg(feature = "xselinux")]
6091    XselinuxGetPropertyCreateContext(xselinux::GetPropertyCreateContextReply),
6092    #[cfg(feature = "xselinux")]
6093    XselinuxGetPropertyUseContext(xselinux::GetPropertyUseContextReply),
6094    #[cfg(feature = "xselinux")]
6095    XselinuxGetPropertyContext(xselinux::GetPropertyContextReply),
6096    #[cfg(feature = "xselinux")]
6097    XselinuxGetPropertyDataContext(xselinux::GetPropertyDataContextReply),
6098    #[cfg(feature = "xselinux")]
6099    XselinuxListProperties(xselinux::ListPropertiesReply),
6100    #[cfg(feature = "xselinux")]
6101    XselinuxGetSelectionCreateContext(xselinux::GetSelectionCreateContextReply),
6102    #[cfg(feature = "xselinux")]
6103    XselinuxGetSelectionUseContext(xselinux::GetSelectionUseContextReply),
6104    #[cfg(feature = "xselinux")]
6105    XselinuxGetSelectionContext(xselinux::GetSelectionContextReply),
6106    #[cfg(feature = "xselinux")]
6107    XselinuxGetSelectionDataContext(xselinux::GetSelectionDataContextReply),
6108    #[cfg(feature = "xselinux")]
6109    XselinuxListSelections(xselinux::ListSelectionsReply),
6110    #[cfg(feature = "xselinux")]
6111    XselinuxGetClientContext(xselinux::GetClientContextReply),
6112    #[cfg(feature = "xtest")]
6113    XtestGetVersion(xtest::GetVersionReply),
6114    #[cfg(feature = "xtest")]
6115    XtestCompareCursor(xtest::CompareCursorReply),
6116    #[cfg(feature = "xv")]
6117    XvQueryExtension(xv::QueryExtensionReply),
6118    #[cfg(feature = "xv")]
6119    XvQueryAdaptors(xv::QueryAdaptorsReply),
6120    #[cfg(feature = "xv")]
6121    XvQueryEncodings(xv::QueryEncodingsReply),
6122    #[cfg(feature = "xv")]
6123    XvGrabPort(xv::GrabPortReply),
6124    #[cfg(feature = "xv")]
6125    XvQueryBestSize(xv::QueryBestSizeReply),
6126    #[cfg(feature = "xv")]
6127    XvGetPortAttribute(xv::GetPortAttributeReply),
6128    #[cfg(feature = "xv")]
6129    XvQueryPortAttributes(xv::QueryPortAttributesReply),
6130    #[cfg(feature = "xv")]
6131    XvListImageFormats(xv::ListImageFormatsReply),
6132    #[cfg(feature = "xv")]
6133    XvQueryImageAttributes(xv::QueryImageAttributesReply),
6134    #[cfg(feature = "xvmc")]
6135    XvmcQueryVersion(xvmc::QueryVersionReply),
6136    #[cfg(feature = "xvmc")]
6137    XvmcListSurfaceTypes(xvmc::ListSurfaceTypesReply),
6138    #[cfg(feature = "xvmc")]
6139    XvmcCreateContext(xvmc::CreateContextReply),
6140    #[cfg(feature = "xvmc")]
6141    XvmcCreateSurface(xvmc::CreateSurfaceReply),
6142    #[cfg(feature = "xvmc")]
6143    XvmcCreateSubpicture(xvmc::CreateSubpictureReply),
6144    #[cfg(feature = "xvmc")]
6145    XvmcListSubpictureTypes(xvmc::ListSubpictureTypesReply),
6146}
6147impl From<()> for Reply {
6148    fn from(_: ()) -> Reply {
6149        Reply::Void
6150    }
6151}
6152impl From<xproto::GetWindowAttributesReply> for Reply {
6153  fn from(reply: xproto::GetWindowAttributesReply) -> Reply {
6154    Reply::GetWindowAttributes(reply)
6155  }
6156}
6157impl From<xproto::GetGeometryReply> for Reply {
6158  fn from(reply: xproto::GetGeometryReply) -> Reply {
6159    Reply::GetGeometry(reply)
6160  }
6161}
6162impl From<xproto::QueryTreeReply> for Reply {
6163  fn from(reply: xproto::QueryTreeReply) -> Reply {
6164    Reply::QueryTree(reply)
6165  }
6166}
6167impl From<xproto::InternAtomReply> for Reply {
6168  fn from(reply: xproto::InternAtomReply) -> Reply {
6169    Reply::InternAtom(reply)
6170  }
6171}
6172impl From<xproto::GetAtomNameReply> for Reply {
6173  fn from(reply: xproto::GetAtomNameReply) -> Reply {
6174    Reply::GetAtomName(reply)
6175  }
6176}
6177impl From<xproto::GetPropertyReply> for Reply {
6178  fn from(reply: xproto::GetPropertyReply) -> Reply {
6179    Reply::GetProperty(reply)
6180  }
6181}
6182impl From<xproto::ListPropertiesReply> for Reply {
6183  fn from(reply: xproto::ListPropertiesReply) -> Reply {
6184    Reply::ListProperties(reply)
6185  }
6186}
6187impl From<xproto::GetSelectionOwnerReply> for Reply {
6188  fn from(reply: xproto::GetSelectionOwnerReply) -> Reply {
6189    Reply::GetSelectionOwner(reply)
6190  }
6191}
6192impl From<xproto::GrabPointerReply> for Reply {
6193  fn from(reply: xproto::GrabPointerReply) -> Reply {
6194    Reply::GrabPointer(reply)
6195  }
6196}
6197impl From<xproto::GrabKeyboardReply> for Reply {
6198  fn from(reply: xproto::GrabKeyboardReply) -> Reply {
6199    Reply::GrabKeyboard(reply)
6200  }
6201}
6202impl From<xproto::QueryPointerReply> for Reply {
6203  fn from(reply: xproto::QueryPointerReply) -> Reply {
6204    Reply::QueryPointer(reply)
6205  }
6206}
6207impl From<xproto::GetMotionEventsReply> for Reply {
6208  fn from(reply: xproto::GetMotionEventsReply) -> Reply {
6209    Reply::GetMotionEvents(reply)
6210  }
6211}
6212impl From<xproto::TranslateCoordinatesReply> for Reply {
6213  fn from(reply: xproto::TranslateCoordinatesReply) -> Reply {
6214    Reply::TranslateCoordinates(reply)
6215  }
6216}
6217impl From<xproto::GetInputFocusReply> for Reply {
6218  fn from(reply: xproto::GetInputFocusReply) -> Reply {
6219    Reply::GetInputFocus(reply)
6220  }
6221}
6222impl From<xproto::QueryKeymapReply> for Reply {
6223  fn from(reply: xproto::QueryKeymapReply) -> Reply {
6224    Reply::QueryKeymap(reply)
6225  }
6226}
6227impl From<xproto::QueryFontReply> for Reply {
6228  fn from(reply: xproto::QueryFontReply) -> Reply {
6229    Reply::QueryFont(reply)
6230  }
6231}
6232impl From<xproto::QueryTextExtentsReply> for Reply {
6233  fn from(reply: xproto::QueryTextExtentsReply) -> Reply {
6234    Reply::QueryTextExtents(reply)
6235  }
6236}
6237impl From<xproto::ListFontsReply> for Reply {
6238  fn from(reply: xproto::ListFontsReply) -> Reply {
6239    Reply::ListFonts(reply)
6240  }
6241}
6242impl From<xproto::ListFontsWithInfoReply> for Reply {
6243  fn from(reply: xproto::ListFontsWithInfoReply) -> Reply {
6244    Reply::ListFontsWithInfo(reply)
6245  }
6246}
6247impl From<xproto::GetFontPathReply> for Reply {
6248  fn from(reply: xproto::GetFontPathReply) -> Reply {
6249    Reply::GetFontPath(reply)
6250  }
6251}
6252impl From<xproto::GetImageReply> for Reply {
6253  fn from(reply: xproto::GetImageReply) -> Reply {
6254    Reply::GetImage(reply)
6255  }
6256}
6257impl From<xproto::ListInstalledColormapsReply> for Reply {
6258  fn from(reply: xproto::ListInstalledColormapsReply) -> Reply {
6259    Reply::ListInstalledColormaps(reply)
6260  }
6261}
6262impl From<xproto::AllocColorReply> for Reply {
6263  fn from(reply: xproto::AllocColorReply) -> Reply {
6264    Reply::AllocColor(reply)
6265  }
6266}
6267impl From<xproto::AllocNamedColorReply> for Reply {
6268  fn from(reply: xproto::AllocNamedColorReply) -> Reply {
6269    Reply::AllocNamedColor(reply)
6270  }
6271}
6272impl From<xproto::AllocColorCellsReply> for Reply {
6273  fn from(reply: xproto::AllocColorCellsReply) -> Reply {
6274    Reply::AllocColorCells(reply)
6275  }
6276}
6277impl From<xproto::AllocColorPlanesReply> for Reply {
6278  fn from(reply: xproto::AllocColorPlanesReply) -> Reply {
6279    Reply::AllocColorPlanes(reply)
6280  }
6281}
6282impl From<xproto::QueryColorsReply> for Reply {
6283  fn from(reply: xproto::QueryColorsReply) -> Reply {
6284    Reply::QueryColors(reply)
6285  }
6286}
6287impl From<xproto::LookupColorReply> for Reply {
6288  fn from(reply: xproto::LookupColorReply) -> Reply {
6289    Reply::LookupColor(reply)
6290  }
6291}
6292impl From<xproto::QueryBestSizeReply> for Reply {
6293  fn from(reply: xproto::QueryBestSizeReply) -> Reply {
6294    Reply::QueryBestSize(reply)
6295  }
6296}
6297impl From<xproto::QueryExtensionReply> for Reply {
6298  fn from(reply: xproto::QueryExtensionReply) -> Reply {
6299    Reply::QueryExtension(reply)
6300  }
6301}
6302impl From<xproto::ListExtensionsReply> for Reply {
6303  fn from(reply: xproto::ListExtensionsReply) -> Reply {
6304    Reply::ListExtensions(reply)
6305  }
6306}
6307impl From<xproto::GetKeyboardMappingReply> for Reply {
6308  fn from(reply: xproto::GetKeyboardMappingReply) -> Reply {
6309    Reply::GetKeyboardMapping(reply)
6310  }
6311}
6312impl From<xproto::GetKeyboardControlReply> for Reply {
6313  fn from(reply: xproto::GetKeyboardControlReply) -> Reply {
6314    Reply::GetKeyboardControl(reply)
6315  }
6316}
6317impl From<xproto::GetPointerControlReply> for Reply {
6318  fn from(reply: xproto::GetPointerControlReply) -> Reply {
6319    Reply::GetPointerControl(reply)
6320  }
6321}
6322impl From<xproto::GetScreenSaverReply> for Reply {
6323  fn from(reply: xproto::GetScreenSaverReply) -> Reply {
6324    Reply::GetScreenSaver(reply)
6325  }
6326}
6327impl From<xproto::ListHostsReply> for Reply {
6328  fn from(reply: xproto::ListHostsReply) -> Reply {
6329    Reply::ListHosts(reply)
6330  }
6331}
6332impl From<xproto::SetPointerMappingReply> for Reply {
6333  fn from(reply: xproto::SetPointerMappingReply) -> Reply {
6334    Reply::SetPointerMapping(reply)
6335  }
6336}
6337impl From<xproto::GetPointerMappingReply> for Reply {
6338  fn from(reply: xproto::GetPointerMappingReply) -> Reply {
6339    Reply::GetPointerMapping(reply)
6340  }
6341}
6342impl From<xproto::SetModifierMappingReply> for Reply {
6343  fn from(reply: xproto::SetModifierMappingReply) -> Reply {
6344    Reply::SetModifierMapping(reply)
6345  }
6346}
6347impl From<xproto::GetModifierMappingReply> for Reply {
6348  fn from(reply: xproto::GetModifierMappingReply) -> Reply {
6349    Reply::GetModifierMapping(reply)
6350  }
6351}
6352impl From<bigreq::EnableReply> for Reply {
6353  fn from(reply: bigreq::EnableReply) -> Reply {
6354    Reply::BigreqEnable(reply)
6355  }
6356}
6357#[cfg(feature = "composite")]
6358impl From<composite::QueryVersionReply> for Reply {
6359  fn from(reply: composite::QueryVersionReply) -> Reply {
6360    Reply::CompositeQueryVersion(reply)
6361  }
6362}
6363#[cfg(feature = "composite")]
6364impl From<composite::GetOverlayWindowReply> for Reply {
6365  fn from(reply: composite::GetOverlayWindowReply) -> Reply {
6366    Reply::CompositeGetOverlayWindow(reply)
6367  }
6368}
6369#[cfg(feature = "damage")]
6370impl From<damage::QueryVersionReply> for Reply {
6371  fn from(reply: damage::QueryVersionReply) -> Reply {
6372    Reply::DamageQueryVersion(reply)
6373  }
6374}
6375#[cfg(feature = "dbe")]
6376impl From<dbe::QueryVersionReply> for Reply {
6377  fn from(reply: dbe::QueryVersionReply) -> Reply {
6378    Reply::DbeQueryVersion(reply)
6379  }
6380}
6381#[cfg(feature = "dbe")]
6382impl From<dbe::GetVisualInfoReply> for Reply {
6383  fn from(reply: dbe::GetVisualInfoReply) -> Reply {
6384    Reply::DbeGetVisualInfo(reply)
6385  }
6386}
6387#[cfg(feature = "dbe")]
6388impl From<dbe::GetBackBufferAttributesReply> for Reply {
6389  fn from(reply: dbe::GetBackBufferAttributesReply) -> Reply {
6390    Reply::DbeGetBackBufferAttributes(reply)
6391  }
6392}
6393#[cfg(feature = "dpms")]
6394impl From<dpms::GetVersionReply> for Reply {
6395  fn from(reply: dpms::GetVersionReply) -> Reply {
6396    Reply::DpmsGetVersion(reply)
6397  }
6398}
6399#[cfg(feature = "dpms")]
6400impl From<dpms::CapableReply> for Reply {
6401  fn from(reply: dpms::CapableReply) -> Reply {
6402    Reply::DpmsCapable(reply)
6403  }
6404}
6405#[cfg(feature = "dpms")]
6406impl From<dpms::GetTimeoutsReply> for Reply {
6407  fn from(reply: dpms::GetTimeoutsReply) -> Reply {
6408    Reply::DpmsGetTimeouts(reply)
6409  }
6410}
6411#[cfg(feature = "dpms")]
6412impl From<dpms::InfoReply> for Reply {
6413  fn from(reply: dpms::InfoReply) -> Reply {
6414    Reply::DpmsInfo(reply)
6415  }
6416}
6417#[cfg(feature = "dri2")]
6418impl From<dri2::QueryVersionReply> for Reply {
6419  fn from(reply: dri2::QueryVersionReply) -> Reply {
6420    Reply::Dri2QueryVersion(reply)
6421  }
6422}
6423#[cfg(feature = "dri2")]
6424impl From<dri2::ConnectReply> for Reply {
6425  fn from(reply: dri2::ConnectReply) -> Reply {
6426    Reply::Dri2Connect(reply)
6427  }
6428}
6429#[cfg(feature = "dri2")]
6430impl From<dri2::AuthenticateReply> for Reply {
6431  fn from(reply: dri2::AuthenticateReply) -> Reply {
6432    Reply::Dri2Authenticate(reply)
6433  }
6434}
6435#[cfg(feature = "dri2")]
6436impl From<dri2::GetBuffersReply> for Reply {
6437  fn from(reply: dri2::GetBuffersReply) -> Reply {
6438    Reply::Dri2GetBuffers(reply)
6439  }
6440}
6441#[cfg(feature = "dri2")]
6442impl From<dri2::CopyRegionReply> for Reply {
6443  fn from(reply: dri2::CopyRegionReply) -> Reply {
6444    Reply::Dri2CopyRegion(reply)
6445  }
6446}
6447#[cfg(feature = "dri2")]
6448impl From<dri2::GetBuffersWithFormatReply> for Reply {
6449  fn from(reply: dri2::GetBuffersWithFormatReply) -> Reply {
6450    Reply::Dri2GetBuffersWithFormat(reply)
6451  }
6452}
6453#[cfg(feature = "dri2")]
6454impl From<dri2::SwapBuffersReply> for Reply {
6455  fn from(reply: dri2::SwapBuffersReply) -> Reply {
6456    Reply::Dri2SwapBuffers(reply)
6457  }
6458}
6459#[cfg(feature = "dri2")]
6460impl From<dri2::GetMSCReply> for Reply {
6461  fn from(reply: dri2::GetMSCReply) -> Reply {
6462    Reply::Dri2GetMSC(reply)
6463  }
6464}
6465#[cfg(feature = "dri2")]
6466impl From<dri2::WaitMSCReply> for Reply {
6467  fn from(reply: dri2::WaitMSCReply) -> Reply {
6468    Reply::Dri2WaitMSC(reply)
6469  }
6470}
6471#[cfg(feature = "dri2")]
6472impl From<dri2::WaitSBCReply> for Reply {
6473  fn from(reply: dri2::WaitSBCReply) -> Reply {
6474    Reply::Dri2WaitSBC(reply)
6475  }
6476}
6477#[cfg(feature = "dri2")]
6478impl From<dri2::GetParamReply> for Reply {
6479  fn from(reply: dri2::GetParamReply) -> Reply {
6480    Reply::Dri2GetParam(reply)
6481  }
6482}
6483#[cfg(feature = "dri3")]
6484impl From<dri3::QueryVersionReply> for Reply {
6485  fn from(reply: dri3::QueryVersionReply) -> Reply {
6486    Reply::Dri3QueryVersion(reply)
6487  }
6488}
6489#[cfg(feature = "dri3")]
6490impl From<dri3::OpenReply> for Reply {
6491  fn from(reply: dri3::OpenReply) -> Reply {
6492    Reply::Dri3Open(reply)
6493  }
6494}
6495#[cfg(feature = "dri3")]
6496impl From<dri3::BufferFromPixmapReply> for Reply {
6497  fn from(reply: dri3::BufferFromPixmapReply) -> Reply {
6498    Reply::Dri3BufferFromPixmap(reply)
6499  }
6500}
6501#[cfg(feature = "dri3")]
6502impl From<dri3::FDFromFenceReply> for Reply {
6503  fn from(reply: dri3::FDFromFenceReply) -> Reply {
6504    Reply::Dri3FDFromFence(reply)
6505  }
6506}
6507#[cfg(feature = "dri3")]
6508impl From<dri3::GetSupportedModifiersReply> for Reply {
6509  fn from(reply: dri3::GetSupportedModifiersReply) -> Reply {
6510    Reply::Dri3GetSupportedModifiers(reply)
6511  }
6512}
6513#[cfg(feature = "dri3")]
6514impl From<dri3::BuffersFromPixmapReply> for Reply {
6515  fn from(reply: dri3::BuffersFromPixmapReply) -> Reply {
6516    Reply::Dri3BuffersFromPixmap(reply)
6517  }
6518}
6519impl From<ge::QueryVersionReply> for Reply {
6520  fn from(reply: ge::QueryVersionReply) -> Reply {
6521    Reply::GeQueryVersion(reply)
6522  }
6523}
6524#[cfg(feature = "glx")]
6525impl From<glx::MakeCurrentReply> for Reply {
6526  fn from(reply: glx::MakeCurrentReply) -> Reply {
6527    Reply::GlxMakeCurrent(reply)
6528  }
6529}
6530#[cfg(feature = "glx")]
6531impl From<glx::IsDirectReply> for Reply {
6532  fn from(reply: glx::IsDirectReply) -> Reply {
6533    Reply::GlxIsDirect(reply)
6534  }
6535}
6536#[cfg(feature = "glx")]
6537impl From<glx::QueryVersionReply> for Reply {
6538  fn from(reply: glx::QueryVersionReply) -> Reply {
6539    Reply::GlxQueryVersion(reply)
6540  }
6541}
6542#[cfg(feature = "glx")]
6543impl From<glx::GetVisualConfigsReply> for Reply {
6544  fn from(reply: glx::GetVisualConfigsReply) -> Reply {
6545    Reply::GlxGetVisualConfigs(reply)
6546  }
6547}
6548#[cfg(feature = "glx")]
6549impl From<glx::VendorPrivateWithReplyReply> for Reply {
6550  fn from(reply: glx::VendorPrivateWithReplyReply) -> Reply {
6551    Reply::GlxVendorPrivateWithReply(reply)
6552  }
6553}
6554#[cfg(feature = "glx")]
6555impl From<glx::QueryExtensionsStringReply> for Reply {
6556  fn from(reply: glx::QueryExtensionsStringReply) -> Reply {
6557    Reply::GlxQueryExtensionsString(reply)
6558  }
6559}
6560#[cfg(feature = "glx")]
6561impl From<glx::QueryServerStringReply> for Reply {
6562  fn from(reply: glx::QueryServerStringReply) -> Reply {
6563    Reply::GlxQueryServerString(reply)
6564  }
6565}
6566#[cfg(feature = "glx")]
6567impl From<glx::GetFBConfigsReply> for Reply {
6568  fn from(reply: glx::GetFBConfigsReply) -> Reply {
6569    Reply::GlxGetFBConfigs(reply)
6570  }
6571}
6572#[cfg(feature = "glx")]
6573impl From<glx::QueryContextReply> for Reply {
6574  fn from(reply: glx::QueryContextReply) -> Reply {
6575    Reply::GlxQueryContext(reply)
6576  }
6577}
6578#[cfg(feature = "glx")]
6579impl From<glx::MakeContextCurrentReply> for Reply {
6580  fn from(reply: glx::MakeContextCurrentReply) -> Reply {
6581    Reply::GlxMakeContextCurrent(reply)
6582  }
6583}
6584#[cfg(feature = "glx")]
6585impl From<glx::GetDrawableAttributesReply> for Reply {
6586  fn from(reply: glx::GetDrawableAttributesReply) -> Reply {
6587    Reply::GlxGetDrawableAttributes(reply)
6588  }
6589}
6590#[cfg(feature = "glx")]
6591impl From<glx::GenListsReply> for Reply {
6592  fn from(reply: glx::GenListsReply) -> Reply {
6593    Reply::GlxGenLists(reply)
6594  }
6595}
6596#[cfg(feature = "glx")]
6597impl From<glx::RenderModeReply> for Reply {
6598  fn from(reply: glx::RenderModeReply) -> Reply {
6599    Reply::GlxRenderMode(reply)
6600  }
6601}
6602#[cfg(feature = "glx")]
6603impl From<glx::FinishReply> for Reply {
6604  fn from(reply: glx::FinishReply) -> Reply {
6605    Reply::GlxFinish(reply)
6606  }
6607}
6608#[cfg(feature = "glx")]
6609impl From<glx::ReadPixelsReply> for Reply {
6610  fn from(reply: glx::ReadPixelsReply) -> Reply {
6611    Reply::GlxReadPixels(reply)
6612  }
6613}
6614#[cfg(feature = "glx")]
6615impl From<glx::GetBooleanvReply> for Reply {
6616  fn from(reply: glx::GetBooleanvReply) -> Reply {
6617    Reply::GlxGetBooleanv(reply)
6618  }
6619}
6620#[cfg(feature = "glx")]
6621impl From<glx::GetClipPlaneReply> for Reply {
6622  fn from(reply: glx::GetClipPlaneReply) -> Reply {
6623    Reply::GlxGetClipPlane(reply)
6624  }
6625}
6626#[cfg(feature = "glx")]
6627impl From<glx::GetDoublevReply> for Reply {
6628  fn from(reply: glx::GetDoublevReply) -> Reply {
6629    Reply::GlxGetDoublev(reply)
6630  }
6631}
6632#[cfg(feature = "glx")]
6633impl From<glx::GetErrorReply> for Reply {
6634  fn from(reply: glx::GetErrorReply) -> Reply {
6635    Reply::GlxGetError(reply)
6636  }
6637}
6638#[cfg(feature = "glx")]
6639impl From<glx::GetFloatvReply> for Reply {
6640  fn from(reply: glx::GetFloatvReply) -> Reply {
6641    Reply::GlxGetFloatv(reply)
6642  }
6643}
6644#[cfg(feature = "glx")]
6645impl From<glx::GetIntegervReply> for Reply {
6646  fn from(reply: glx::GetIntegervReply) -> Reply {
6647    Reply::GlxGetIntegerv(reply)
6648  }
6649}
6650#[cfg(feature = "glx")]
6651impl From<glx::GetLightfvReply> for Reply {
6652  fn from(reply: glx::GetLightfvReply) -> Reply {
6653    Reply::GlxGetLightfv(reply)
6654  }
6655}
6656#[cfg(feature = "glx")]
6657impl From<glx::GetLightivReply> for Reply {
6658  fn from(reply: glx::GetLightivReply) -> Reply {
6659    Reply::GlxGetLightiv(reply)
6660  }
6661}
6662#[cfg(feature = "glx")]
6663impl From<glx::GetMapdvReply> for Reply {
6664  fn from(reply: glx::GetMapdvReply) -> Reply {
6665    Reply::GlxGetMapdv(reply)
6666  }
6667}
6668#[cfg(feature = "glx")]
6669impl From<glx::GetMapfvReply> for Reply {
6670  fn from(reply: glx::GetMapfvReply) -> Reply {
6671    Reply::GlxGetMapfv(reply)
6672  }
6673}
6674#[cfg(feature = "glx")]
6675impl From<glx::GetMapivReply> for Reply {
6676  fn from(reply: glx::GetMapivReply) -> Reply {
6677    Reply::GlxGetMapiv(reply)
6678  }
6679}
6680#[cfg(feature = "glx")]
6681impl From<glx::GetMaterialfvReply> for Reply {
6682  fn from(reply: glx::GetMaterialfvReply) -> Reply {
6683    Reply::GlxGetMaterialfv(reply)
6684  }
6685}
6686#[cfg(feature = "glx")]
6687impl From<glx::GetMaterialivReply> for Reply {
6688  fn from(reply: glx::GetMaterialivReply) -> Reply {
6689    Reply::GlxGetMaterialiv(reply)
6690  }
6691}
6692#[cfg(feature = "glx")]
6693impl From<glx::GetPixelMapfvReply> for Reply {
6694  fn from(reply: glx::GetPixelMapfvReply) -> Reply {
6695    Reply::GlxGetPixelMapfv(reply)
6696  }
6697}
6698#[cfg(feature = "glx")]
6699impl From<glx::GetPixelMapuivReply> for Reply {
6700  fn from(reply: glx::GetPixelMapuivReply) -> Reply {
6701    Reply::GlxGetPixelMapuiv(reply)
6702  }
6703}
6704#[cfg(feature = "glx")]
6705impl From<glx::GetPixelMapusvReply> for Reply {
6706  fn from(reply: glx::GetPixelMapusvReply) -> Reply {
6707    Reply::GlxGetPixelMapusv(reply)
6708  }
6709}
6710#[cfg(feature = "glx")]
6711impl From<glx::GetPolygonStippleReply> for Reply {
6712  fn from(reply: glx::GetPolygonStippleReply) -> Reply {
6713    Reply::GlxGetPolygonStipple(reply)
6714  }
6715}
6716#[cfg(feature = "glx")]
6717impl From<glx::GetStringReply> for Reply {
6718  fn from(reply: glx::GetStringReply) -> Reply {
6719    Reply::GlxGetString(reply)
6720  }
6721}
6722#[cfg(feature = "glx")]
6723impl From<glx::GetTexEnvfvReply> for Reply {
6724  fn from(reply: glx::GetTexEnvfvReply) -> Reply {
6725    Reply::GlxGetTexEnvfv(reply)
6726  }
6727}
6728#[cfg(feature = "glx")]
6729impl From<glx::GetTexEnvivReply> for Reply {
6730  fn from(reply: glx::GetTexEnvivReply) -> Reply {
6731    Reply::GlxGetTexEnviv(reply)
6732  }
6733}
6734#[cfg(feature = "glx")]
6735impl From<glx::GetTexGendvReply> for Reply {
6736  fn from(reply: glx::GetTexGendvReply) -> Reply {
6737    Reply::GlxGetTexGendv(reply)
6738  }
6739}
6740#[cfg(feature = "glx")]
6741impl From<glx::GetTexGenfvReply> for Reply {
6742  fn from(reply: glx::GetTexGenfvReply) -> Reply {
6743    Reply::GlxGetTexGenfv(reply)
6744  }
6745}
6746#[cfg(feature = "glx")]
6747impl From<glx::GetTexGenivReply> for Reply {
6748  fn from(reply: glx::GetTexGenivReply) -> Reply {
6749    Reply::GlxGetTexGeniv(reply)
6750  }
6751}
6752#[cfg(feature = "glx")]
6753impl From<glx::GetTexImageReply> for Reply {
6754  fn from(reply: glx::GetTexImageReply) -> Reply {
6755    Reply::GlxGetTexImage(reply)
6756  }
6757}
6758#[cfg(feature = "glx")]
6759impl From<glx::GetTexParameterfvReply> for Reply {
6760  fn from(reply: glx::GetTexParameterfvReply) -> Reply {
6761    Reply::GlxGetTexParameterfv(reply)
6762  }
6763}
6764#[cfg(feature = "glx")]
6765impl From<glx::GetTexParameterivReply> for Reply {
6766  fn from(reply: glx::GetTexParameterivReply) -> Reply {
6767    Reply::GlxGetTexParameteriv(reply)
6768  }
6769}
6770#[cfg(feature = "glx")]
6771impl From<glx::GetTexLevelParameterfvReply> for Reply {
6772  fn from(reply: glx::GetTexLevelParameterfvReply) -> Reply {
6773    Reply::GlxGetTexLevelParameterfv(reply)
6774  }
6775}
6776#[cfg(feature = "glx")]
6777impl From<glx::GetTexLevelParameterivReply> for Reply {
6778  fn from(reply: glx::GetTexLevelParameterivReply) -> Reply {
6779    Reply::GlxGetTexLevelParameteriv(reply)
6780  }
6781}
6782#[cfg(feature = "glx")]
6783impl From<glx::IsEnabledReply> for Reply {
6784  fn from(reply: glx::IsEnabledReply) -> Reply {
6785    Reply::GlxIsEnabled(reply)
6786  }
6787}
6788#[cfg(feature = "glx")]
6789impl From<glx::IsListReply> for Reply {
6790  fn from(reply: glx::IsListReply) -> Reply {
6791    Reply::GlxIsList(reply)
6792  }
6793}
6794#[cfg(feature = "glx")]
6795impl From<glx::AreTexturesResidentReply> for Reply {
6796  fn from(reply: glx::AreTexturesResidentReply) -> Reply {
6797    Reply::GlxAreTexturesResident(reply)
6798  }
6799}
6800#[cfg(feature = "glx")]
6801impl From<glx::GenTexturesReply> for Reply {
6802  fn from(reply: glx::GenTexturesReply) -> Reply {
6803    Reply::GlxGenTextures(reply)
6804  }
6805}
6806#[cfg(feature = "glx")]
6807impl From<glx::IsTextureReply> for Reply {
6808  fn from(reply: glx::IsTextureReply) -> Reply {
6809    Reply::GlxIsTexture(reply)
6810  }
6811}
6812#[cfg(feature = "glx")]
6813impl From<glx::GetColorTableReply> for Reply {
6814  fn from(reply: glx::GetColorTableReply) -> Reply {
6815    Reply::GlxGetColorTable(reply)
6816  }
6817}
6818#[cfg(feature = "glx")]
6819impl From<glx::GetColorTableParameterfvReply> for Reply {
6820  fn from(reply: glx::GetColorTableParameterfvReply) -> Reply {
6821    Reply::GlxGetColorTableParameterfv(reply)
6822  }
6823}
6824#[cfg(feature = "glx")]
6825impl From<glx::GetColorTableParameterivReply> for Reply {
6826  fn from(reply: glx::GetColorTableParameterivReply) -> Reply {
6827    Reply::GlxGetColorTableParameteriv(reply)
6828  }
6829}
6830#[cfg(feature = "glx")]
6831impl From<glx::GetConvolutionFilterReply> for Reply {
6832  fn from(reply: glx::GetConvolutionFilterReply) -> Reply {
6833    Reply::GlxGetConvolutionFilter(reply)
6834  }
6835}
6836#[cfg(feature = "glx")]
6837impl From<glx::GetConvolutionParameterfvReply> for Reply {
6838  fn from(reply: glx::GetConvolutionParameterfvReply) -> Reply {
6839    Reply::GlxGetConvolutionParameterfv(reply)
6840  }
6841}
6842#[cfg(feature = "glx")]
6843impl From<glx::GetConvolutionParameterivReply> for Reply {
6844  fn from(reply: glx::GetConvolutionParameterivReply) -> Reply {
6845    Reply::GlxGetConvolutionParameteriv(reply)
6846  }
6847}
6848#[cfg(feature = "glx")]
6849impl From<glx::GetSeparableFilterReply> for Reply {
6850  fn from(reply: glx::GetSeparableFilterReply) -> Reply {
6851    Reply::GlxGetSeparableFilter(reply)
6852  }
6853}
6854#[cfg(feature = "glx")]
6855impl From<glx::GetHistogramReply> for Reply {
6856  fn from(reply: glx::GetHistogramReply) -> Reply {
6857    Reply::GlxGetHistogram(reply)
6858  }
6859}
6860#[cfg(feature = "glx")]
6861impl From<glx::GetHistogramParameterfvReply> for Reply {
6862  fn from(reply: glx::GetHistogramParameterfvReply) -> Reply {
6863    Reply::GlxGetHistogramParameterfv(reply)
6864  }
6865}
6866#[cfg(feature = "glx")]
6867impl From<glx::GetHistogramParameterivReply> for Reply {
6868  fn from(reply: glx::GetHistogramParameterivReply) -> Reply {
6869    Reply::GlxGetHistogramParameteriv(reply)
6870  }
6871}
6872#[cfg(feature = "glx")]
6873impl From<glx::GetMinmaxReply> for Reply {
6874  fn from(reply: glx::GetMinmaxReply) -> Reply {
6875    Reply::GlxGetMinmax(reply)
6876  }
6877}
6878#[cfg(feature = "glx")]
6879impl From<glx::GetMinmaxParameterfvReply> for Reply {
6880  fn from(reply: glx::GetMinmaxParameterfvReply) -> Reply {
6881    Reply::GlxGetMinmaxParameterfv(reply)
6882  }
6883}
6884#[cfg(feature = "glx")]
6885impl From<glx::GetMinmaxParameterivReply> for Reply {
6886  fn from(reply: glx::GetMinmaxParameterivReply) -> Reply {
6887    Reply::GlxGetMinmaxParameteriv(reply)
6888  }
6889}
6890#[cfg(feature = "glx")]
6891impl From<glx::GetCompressedTexImageARBReply> for Reply {
6892  fn from(reply: glx::GetCompressedTexImageARBReply) -> Reply {
6893    Reply::GlxGetCompressedTexImageARB(reply)
6894  }
6895}
6896#[cfg(feature = "glx")]
6897impl From<glx::GenQueriesARBReply> for Reply {
6898  fn from(reply: glx::GenQueriesARBReply) -> Reply {
6899    Reply::GlxGenQueriesARB(reply)
6900  }
6901}
6902#[cfg(feature = "glx")]
6903impl From<glx::IsQueryARBReply> for Reply {
6904  fn from(reply: glx::IsQueryARBReply) -> Reply {
6905    Reply::GlxIsQueryARB(reply)
6906  }
6907}
6908#[cfg(feature = "glx")]
6909impl From<glx::GetQueryivARBReply> for Reply {
6910  fn from(reply: glx::GetQueryivARBReply) -> Reply {
6911    Reply::GlxGetQueryivARB(reply)
6912  }
6913}
6914#[cfg(feature = "glx")]
6915impl From<glx::GetQueryObjectivARBReply> for Reply {
6916  fn from(reply: glx::GetQueryObjectivARBReply) -> Reply {
6917    Reply::GlxGetQueryObjectivARB(reply)
6918  }
6919}
6920#[cfg(feature = "glx")]
6921impl From<glx::GetQueryObjectuivARBReply> for Reply {
6922  fn from(reply: glx::GetQueryObjectuivARBReply) -> Reply {
6923    Reply::GlxGetQueryObjectuivARB(reply)
6924  }
6925}
6926#[cfg(feature = "present")]
6927impl From<present::QueryVersionReply> for Reply {
6928  fn from(reply: present::QueryVersionReply) -> Reply {
6929    Reply::PresentQueryVersion(reply)
6930  }
6931}
6932#[cfg(feature = "present")]
6933impl From<present::QueryCapabilitiesReply> for Reply {
6934  fn from(reply: present::QueryCapabilitiesReply) -> Reply {
6935    Reply::PresentQueryCapabilities(reply)
6936  }
6937}
6938#[cfg(feature = "randr")]
6939impl From<randr::QueryVersionReply> for Reply {
6940  fn from(reply: randr::QueryVersionReply) -> Reply {
6941    Reply::RandrQueryVersion(reply)
6942  }
6943}
6944#[cfg(feature = "randr")]
6945impl From<randr::SetScreenConfigReply> for Reply {
6946  fn from(reply: randr::SetScreenConfigReply) -> Reply {
6947    Reply::RandrSetScreenConfig(reply)
6948  }
6949}
6950#[cfg(feature = "randr")]
6951impl From<randr::GetScreenInfoReply> for Reply {
6952  fn from(reply: randr::GetScreenInfoReply) -> Reply {
6953    Reply::RandrGetScreenInfo(reply)
6954  }
6955}
6956#[cfg(feature = "randr")]
6957impl From<randr::GetScreenSizeRangeReply> for Reply {
6958  fn from(reply: randr::GetScreenSizeRangeReply) -> Reply {
6959    Reply::RandrGetScreenSizeRange(reply)
6960  }
6961}
6962#[cfg(feature = "randr")]
6963impl From<randr::GetScreenResourcesReply> for Reply {
6964  fn from(reply: randr::GetScreenResourcesReply) -> Reply {
6965    Reply::RandrGetScreenResources(reply)
6966  }
6967}
6968#[cfg(feature = "randr")]
6969impl From<randr::GetOutputInfoReply> for Reply {
6970  fn from(reply: randr::GetOutputInfoReply) -> Reply {
6971    Reply::RandrGetOutputInfo(reply)
6972  }
6973}
6974#[cfg(feature = "randr")]
6975impl From<randr::ListOutputPropertiesReply> for Reply {
6976  fn from(reply: randr::ListOutputPropertiesReply) -> Reply {
6977    Reply::RandrListOutputProperties(reply)
6978  }
6979}
6980#[cfg(feature = "randr")]
6981impl From<randr::QueryOutputPropertyReply> for Reply {
6982  fn from(reply: randr::QueryOutputPropertyReply) -> Reply {
6983    Reply::RandrQueryOutputProperty(reply)
6984  }
6985}
6986#[cfg(feature = "randr")]
6987impl From<randr::GetOutputPropertyReply> for Reply {
6988  fn from(reply: randr::GetOutputPropertyReply) -> Reply {
6989    Reply::RandrGetOutputProperty(reply)
6990  }
6991}
6992#[cfg(feature = "randr")]
6993impl From<randr::CreateModeReply> for Reply {
6994  fn from(reply: randr::CreateModeReply) -> Reply {
6995    Reply::RandrCreateMode(reply)
6996  }
6997}
6998#[cfg(feature = "randr")]
6999impl From<randr::GetCrtcInfoReply> for Reply {
7000  fn from(reply: randr::GetCrtcInfoReply) -> Reply {
7001    Reply::RandrGetCrtcInfo(reply)
7002  }
7003}
7004#[cfg(feature = "randr")]
7005impl From<randr::SetCrtcConfigReply> for Reply {
7006  fn from(reply: randr::SetCrtcConfigReply) -> Reply {
7007    Reply::RandrSetCrtcConfig(reply)
7008  }
7009}
7010#[cfg(feature = "randr")]
7011impl From<randr::GetCrtcGammaSizeReply> for Reply {
7012  fn from(reply: randr::GetCrtcGammaSizeReply) -> Reply {
7013    Reply::RandrGetCrtcGammaSize(reply)
7014  }
7015}
7016#[cfg(feature = "randr")]
7017impl From<randr::GetCrtcGammaReply> for Reply {
7018  fn from(reply: randr::GetCrtcGammaReply) -> Reply {
7019    Reply::RandrGetCrtcGamma(reply)
7020  }
7021}
7022#[cfg(feature = "randr")]
7023impl From<randr::GetScreenResourcesCurrentReply> for Reply {
7024  fn from(reply: randr::GetScreenResourcesCurrentReply) -> Reply {
7025    Reply::RandrGetScreenResourcesCurrent(reply)
7026  }
7027}
7028#[cfg(feature = "randr")]
7029impl From<randr::GetCrtcTransformReply> for Reply {
7030  fn from(reply: randr::GetCrtcTransformReply) -> Reply {
7031    Reply::RandrGetCrtcTransform(reply)
7032  }
7033}
7034#[cfg(feature = "randr")]
7035impl From<randr::GetPanningReply> for Reply {
7036  fn from(reply: randr::GetPanningReply) -> Reply {
7037    Reply::RandrGetPanning(reply)
7038  }
7039}
7040#[cfg(feature = "randr")]
7041impl From<randr::SetPanningReply> for Reply {
7042  fn from(reply: randr::SetPanningReply) -> Reply {
7043    Reply::RandrSetPanning(reply)
7044  }
7045}
7046#[cfg(feature = "randr")]
7047impl From<randr::GetOutputPrimaryReply> for Reply {
7048  fn from(reply: randr::GetOutputPrimaryReply) -> Reply {
7049    Reply::RandrGetOutputPrimary(reply)
7050  }
7051}
7052#[cfg(feature = "randr")]
7053impl From<randr::GetProvidersReply> for Reply {
7054  fn from(reply: randr::GetProvidersReply) -> Reply {
7055    Reply::RandrGetProviders(reply)
7056  }
7057}
7058#[cfg(feature = "randr")]
7059impl From<randr::GetProviderInfoReply> for Reply {
7060  fn from(reply: randr::GetProviderInfoReply) -> Reply {
7061    Reply::RandrGetProviderInfo(reply)
7062  }
7063}
7064#[cfg(feature = "randr")]
7065impl From<randr::ListProviderPropertiesReply> for Reply {
7066  fn from(reply: randr::ListProviderPropertiesReply) -> Reply {
7067    Reply::RandrListProviderProperties(reply)
7068  }
7069}
7070#[cfg(feature = "randr")]
7071impl From<randr::QueryProviderPropertyReply> for Reply {
7072  fn from(reply: randr::QueryProviderPropertyReply) -> Reply {
7073    Reply::RandrQueryProviderProperty(reply)
7074  }
7075}
7076#[cfg(feature = "randr")]
7077impl From<randr::GetProviderPropertyReply> for Reply {
7078  fn from(reply: randr::GetProviderPropertyReply) -> Reply {
7079    Reply::RandrGetProviderProperty(reply)
7080  }
7081}
7082#[cfg(feature = "randr")]
7083impl From<randr::GetMonitorsReply> for Reply {
7084  fn from(reply: randr::GetMonitorsReply) -> Reply {
7085    Reply::RandrGetMonitors(reply)
7086  }
7087}
7088#[cfg(feature = "randr")]
7089impl From<randr::CreateLeaseReply> for Reply {
7090  fn from(reply: randr::CreateLeaseReply) -> Reply {
7091    Reply::RandrCreateLease(reply)
7092  }
7093}
7094#[cfg(feature = "record")]
7095impl From<record::QueryVersionReply> for Reply {
7096  fn from(reply: record::QueryVersionReply) -> Reply {
7097    Reply::RecordQueryVersion(reply)
7098  }
7099}
7100#[cfg(feature = "record")]
7101impl From<record::GetContextReply> for Reply {
7102  fn from(reply: record::GetContextReply) -> Reply {
7103    Reply::RecordGetContext(reply)
7104  }
7105}
7106#[cfg(feature = "record")]
7107impl From<record::EnableContextReply> for Reply {
7108  fn from(reply: record::EnableContextReply) -> Reply {
7109    Reply::RecordEnableContext(reply)
7110  }
7111}
7112#[cfg(feature = "render")]
7113impl From<render::QueryVersionReply> for Reply {
7114  fn from(reply: render::QueryVersionReply) -> Reply {
7115    Reply::RenderQueryVersion(reply)
7116  }
7117}
7118#[cfg(feature = "render")]
7119impl From<render::QueryPictFormatsReply> for Reply {
7120  fn from(reply: render::QueryPictFormatsReply) -> Reply {
7121    Reply::RenderQueryPictFormats(reply)
7122  }
7123}
7124#[cfg(feature = "render")]
7125impl From<render::QueryPictIndexValuesReply> for Reply {
7126  fn from(reply: render::QueryPictIndexValuesReply) -> Reply {
7127    Reply::RenderQueryPictIndexValues(reply)
7128  }
7129}
7130#[cfg(feature = "render")]
7131impl From<render::QueryFiltersReply> for Reply {
7132  fn from(reply: render::QueryFiltersReply) -> Reply {
7133    Reply::RenderQueryFilters(reply)
7134  }
7135}
7136#[cfg(feature = "res")]
7137impl From<res::QueryVersionReply> for Reply {
7138  fn from(reply: res::QueryVersionReply) -> Reply {
7139    Reply::ResQueryVersion(reply)
7140  }
7141}
7142#[cfg(feature = "res")]
7143impl From<res::QueryClientsReply> for Reply {
7144  fn from(reply: res::QueryClientsReply) -> Reply {
7145    Reply::ResQueryClients(reply)
7146  }
7147}
7148#[cfg(feature = "res")]
7149impl From<res::QueryClientResourcesReply> for Reply {
7150  fn from(reply: res::QueryClientResourcesReply) -> Reply {
7151    Reply::ResQueryClientResources(reply)
7152  }
7153}
7154#[cfg(feature = "res")]
7155impl From<res::QueryClientPixmapBytesReply> for Reply {
7156  fn from(reply: res::QueryClientPixmapBytesReply) -> Reply {
7157    Reply::ResQueryClientPixmapBytes(reply)
7158  }
7159}
7160#[cfg(feature = "res")]
7161impl From<res::QueryClientIdsReply> for Reply {
7162  fn from(reply: res::QueryClientIdsReply) -> Reply {
7163    Reply::ResQueryClientIds(reply)
7164  }
7165}
7166#[cfg(feature = "res")]
7167impl From<res::QueryResourceBytesReply> for Reply {
7168  fn from(reply: res::QueryResourceBytesReply) -> Reply {
7169    Reply::ResQueryResourceBytes(reply)
7170  }
7171}
7172#[cfg(feature = "screensaver")]
7173impl From<screensaver::QueryVersionReply> for Reply {
7174  fn from(reply: screensaver::QueryVersionReply) -> Reply {
7175    Reply::ScreensaverQueryVersion(reply)
7176  }
7177}
7178#[cfg(feature = "screensaver")]
7179impl From<screensaver::QueryInfoReply> for Reply {
7180  fn from(reply: screensaver::QueryInfoReply) -> Reply {
7181    Reply::ScreensaverQueryInfo(reply)
7182  }
7183}
7184#[cfg(feature = "shape")]
7185impl From<shape::QueryVersionReply> for Reply {
7186  fn from(reply: shape::QueryVersionReply) -> Reply {
7187    Reply::ShapeQueryVersion(reply)
7188  }
7189}
7190#[cfg(feature = "shape")]
7191impl From<shape::QueryExtentsReply> for Reply {
7192  fn from(reply: shape::QueryExtentsReply) -> Reply {
7193    Reply::ShapeQueryExtents(reply)
7194  }
7195}
7196#[cfg(feature = "shape")]
7197impl From<shape::InputSelectedReply> for Reply {
7198  fn from(reply: shape::InputSelectedReply) -> Reply {
7199    Reply::ShapeInputSelected(reply)
7200  }
7201}
7202#[cfg(feature = "shape")]
7203impl From<shape::GetRectanglesReply> for Reply {
7204  fn from(reply: shape::GetRectanglesReply) -> Reply {
7205    Reply::ShapeGetRectangles(reply)
7206  }
7207}
7208#[cfg(feature = "shm")]
7209impl From<shm::QueryVersionReply> for Reply {
7210  fn from(reply: shm::QueryVersionReply) -> Reply {
7211    Reply::ShmQueryVersion(reply)
7212  }
7213}
7214#[cfg(feature = "shm")]
7215impl From<shm::GetImageReply> for Reply {
7216  fn from(reply: shm::GetImageReply) -> Reply {
7217    Reply::ShmGetImage(reply)
7218  }
7219}
7220#[cfg(feature = "shm")]
7221impl From<shm::CreateSegmentReply> for Reply {
7222  fn from(reply: shm::CreateSegmentReply) -> Reply {
7223    Reply::ShmCreateSegment(reply)
7224  }
7225}
7226#[cfg(feature = "sync")]
7227impl From<sync::InitializeReply> for Reply {
7228  fn from(reply: sync::InitializeReply) -> Reply {
7229    Reply::SyncInitialize(reply)
7230  }
7231}
7232#[cfg(feature = "sync")]
7233impl From<sync::ListSystemCountersReply> for Reply {
7234  fn from(reply: sync::ListSystemCountersReply) -> Reply {
7235    Reply::SyncListSystemCounters(reply)
7236  }
7237}
7238#[cfg(feature = "sync")]
7239impl From<sync::QueryCounterReply> for Reply {
7240  fn from(reply: sync::QueryCounterReply) -> Reply {
7241    Reply::SyncQueryCounter(reply)
7242  }
7243}
7244#[cfg(feature = "sync")]
7245impl From<sync::QueryAlarmReply> for Reply {
7246  fn from(reply: sync::QueryAlarmReply) -> Reply {
7247    Reply::SyncQueryAlarm(reply)
7248  }
7249}
7250#[cfg(feature = "sync")]
7251impl From<sync::GetPriorityReply> for Reply {
7252  fn from(reply: sync::GetPriorityReply) -> Reply {
7253    Reply::SyncGetPriority(reply)
7254  }
7255}
7256#[cfg(feature = "sync")]
7257impl From<sync::QueryFenceReply> for Reply {
7258  fn from(reply: sync::QueryFenceReply) -> Reply {
7259    Reply::SyncQueryFence(reply)
7260  }
7261}
7262impl From<xc_misc::GetVersionReply> for Reply {
7263  fn from(reply: xc_misc::GetVersionReply) -> Reply {
7264    Reply::XcMiscGetVersion(reply)
7265  }
7266}
7267impl From<xc_misc::GetXIDRangeReply> for Reply {
7268  fn from(reply: xc_misc::GetXIDRangeReply) -> Reply {
7269    Reply::XcMiscGetXIDRange(reply)
7270  }
7271}
7272impl From<xc_misc::GetXIDListReply> for Reply {
7273  fn from(reply: xc_misc::GetXIDListReply) -> Reply {
7274    Reply::XcMiscGetXIDList(reply)
7275  }
7276}
7277#[cfg(feature = "xevie")]
7278impl From<xevie::QueryVersionReply> for Reply {
7279  fn from(reply: xevie::QueryVersionReply) -> Reply {
7280    Reply::XevieQueryVersion(reply)
7281  }
7282}
7283#[cfg(feature = "xevie")]
7284impl From<xevie::StartReply> for Reply {
7285  fn from(reply: xevie::StartReply) -> Reply {
7286    Reply::XevieStart(reply)
7287  }
7288}
7289#[cfg(feature = "xevie")]
7290impl From<xevie::EndReply> for Reply {
7291  fn from(reply: xevie::EndReply) -> Reply {
7292    Reply::XevieEnd(reply)
7293  }
7294}
7295#[cfg(feature = "xevie")]
7296impl From<xevie::SendReply> for Reply {
7297  fn from(reply: xevie::SendReply) -> Reply {
7298    Reply::XevieSend(reply)
7299  }
7300}
7301#[cfg(feature = "xevie")]
7302impl From<xevie::SelectInputReply> for Reply {
7303  fn from(reply: xevie::SelectInputReply) -> Reply {
7304    Reply::XevieSelectInput(reply)
7305  }
7306}
7307#[cfg(feature = "xf86dri")]
7308impl From<xf86dri::QueryVersionReply> for Reply {
7309  fn from(reply: xf86dri::QueryVersionReply) -> Reply {
7310    Reply::Xf86driQueryVersion(reply)
7311  }
7312}
7313#[cfg(feature = "xf86dri")]
7314impl From<xf86dri::QueryDirectRenderingCapableReply> for Reply {
7315  fn from(reply: xf86dri::QueryDirectRenderingCapableReply) -> Reply {
7316    Reply::Xf86driQueryDirectRenderingCapable(reply)
7317  }
7318}
7319#[cfg(feature = "xf86dri")]
7320impl From<xf86dri::OpenConnectionReply> for Reply {
7321  fn from(reply: xf86dri::OpenConnectionReply) -> Reply {
7322    Reply::Xf86driOpenConnection(reply)
7323  }
7324}
7325#[cfg(feature = "xf86dri")]
7326impl From<xf86dri::GetClientDriverNameReply> for Reply {
7327  fn from(reply: xf86dri::GetClientDriverNameReply) -> Reply {
7328    Reply::Xf86driGetClientDriverName(reply)
7329  }
7330}
7331#[cfg(feature = "xf86dri")]
7332impl From<xf86dri::CreateContextReply> for Reply {
7333  fn from(reply: xf86dri::CreateContextReply) -> Reply {
7334    Reply::Xf86driCreateContext(reply)
7335  }
7336}
7337#[cfg(feature = "xf86dri")]
7338impl From<xf86dri::CreateDrawableReply> for Reply {
7339  fn from(reply: xf86dri::CreateDrawableReply) -> Reply {
7340    Reply::Xf86driCreateDrawable(reply)
7341  }
7342}
7343#[cfg(feature = "xf86dri")]
7344impl From<xf86dri::GetDrawableInfoReply> for Reply {
7345  fn from(reply: xf86dri::GetDrawableInfoReply) -> Reply {
7346    Reply::Xf86driGetDrawableInfo(reply)
7347  }
7348}
7349#[cfg(feature = "xf86dri")]
7350impl From<xf86dri::GetDeviceInfoReply> for Reply {
7351  fn from(reply: xf86dri::GetDeviceInfoReply) -> Reply {
7352    Reply::Xf86driGetDeviceInfo(reply)
7353  }
7354}
7355#[cfg(feature = "xf86dri")]
7356impl From<xf86dri::AuthConnectionReply> for Reply {
7357  fn from(reply: xf86dri::AuthConnectionReply) -> Reply {
7358    Reply::Xf86driAuthConnection(reply)
7359  }
7360}
7361#[cfg(feature = "xf86vidmode")]
7362impl From<xf86vidmode::QueryVersionReply> for Reply {
7363  fn from(reply: xf86vidmode::QueryVersionReply) -> Reply {
7364    Reply::Xf86vidmodeQueryVersion(reply)
7365  }
7366}
7367#[cfg(feature = "xf86vidmode")]
7368impl From<xf86vidmode::GetModeLineReply> for Reply {
7369  fn from(reply: xf86vidmode::GetModeLineReply) -> Reply {
7370    Reply::Xf86vidmodeGetModeLine(reply)
7371  }
7372}
7373#[cfg(feature = "xf86vidmode")]
7374impl From<xf86vidmode::GetMonitorReply> for Reply {
7375  fn from(reply: xf86vidmode::GetMonitorReply) -> Reply {
7376    Reply::Xf86vidmodeGetMonitor(reply)
7377  }
7378}
7379#[cfg(feature = "xf86vidmode")]
7380impl From<xf86vidmode::GetAllModeLinesReply> for Reply {
7381  fn from(reply: xf86vidmode::GetAllModeLinesReply) -> Reply {
7382    Reply::Xf86vidmodeGetAllModeLines(reply)
7383  }
7384}
7385#[cfg(feature = "xf86vidmode")]
7386impl From<xf86vidmode::ValidateModeLineReply> for Reply {
7387  fn from(reply: xf86vidmode::ValidateModeLineReply) -> Reply {
7388    Reply::Xf86vidmodeValidateModeLine(reply)
7389  }
7390}
7391#[cfg(feature = "xf86vidmode")]
7392impl From<xf86vidmode::GetViewPortReply> for Reply {
7393  fn from(reply: xf86vidmode::GetViewPortReply) -> Reply {
7394    Reply::Xf86vidmodeGetViewPort(reply)
7395  }
7396}
7397#[cfg(feature = "xf86vidmode")]
7398impl From<xf86vidmode::GetDotClocksReply> for Reply {
7399  fn from(reply: xf86vidmode::GetDotClocksReply) -> Reply {
7400    Reply::Xf86vidmodeGetDotClocks(reply)
7401  }
7402}
7403#[cfg(feature = "xf86vidmode")]
7404impl From<xf86vidmode::GetGammaReply> for Reply {
7405  fn from(reply: xf86vidmode::GetGammaReply) -> Reply {
7406    Reply::Xf86vidmodeGetGamma(reply)
7407  }
7408}
7409#[cfg(feature = "xf86vidmode")]
7410impl From<xf86vidmode::GetGammaRampReply> for Reply {
7411  fn from(reply: xf86vidmode::GetGammaRampReply) -> Reply {
7412    Reply::Xf86vidmodeGetGammaRamp(reply)
7413  }
7414}
7415#[cfg(feature = "xf86vidmode")]
7416impl From<xf86vidmode::GetGammaRampSizeReply> for Reply {
7417  fn from(reply: xf86vidmode::GetGammaRampSizeReply) -> Reply {
7418    Reply::Xf86vidmodeGetGammaRampSize(reply)
7419  }
7420}
7421#[cfg(feature = "xf86vidmode")]
7422impl From<xf86vidmode::GetPermissionsReply> for Reply {
7423  fn from(reply: xf86vidmode::GetPermissionsReply) -> Reply {
7424    Reply::Xf86vidmodeGetPermissions(reply)
7425  }
7426}
7427#[cfg(feature = "xfixes")]
7428impl From<xfixes::QueryVersionReply> for Reply {
7429  fn from(reply: xfixes::QueryVersionReply) -> Reply {
7430    Reply::XfixesQueryVersion(reply)
7431  }
7432}
7433#[cfg(feature = "xfixes")]
7434impl From<xfixes::GetCursorImageReply> for Reply {
7435  fn from(reply: xfixes::GetCursorImageReply) -> Reply {
7436    Reply::XfixesGetCursorImage(reply)
7437  }
7438}
7439#[cfg(feature = "xfixes")]
7440impl From<xfixes::FetchRegionReply> for Reply {
7441  fn from(reply: xfixes::FetchRegionReply) -> Reply {
7442    Reply::XfixesFetchRegion(reply)
7443  }
7444}
7445#[cfg(feature = "xfixes")]
7446impl From<xfixes::GetCursorNameReply> for Reply {
7447  fn from(reply: xfixes::GetCursorNameReply) -> Reply {
7448    Reply::XfixesGetCursorName(reply)
7449  }
7450}
7451#[cfg(feature = "xfixes")]
7452impl From<xfixes::GetCursorImageAndNameReply> for Reply {
7453  fn from(reply: xfixes::GetCursorImageAndNameReply) -> Reply {
7454    Reply::XfixesGetCursorImageAndName(reply)
7455  }
7456}
7457#[cfg(feature = "xfixes")]
7458impl From<xfixes::GetClientDisconnectModeReply> for Reply {
7459  fn from(reply: xfixes::GetClientDisconnectModeReply) -> Reply {
7460    Reply::XfixesGetClientDisconnectMode(reply)
7461  }
7462}
7463#[cfg(feature = "xinerama")]
7464impl From<xinerama::QueryVersionReply> for Reply {
7465  fn from(reply: xinerama::QueryVersionReply) -> Reply {
7466    Reply::XineramaQueryVersion(reply)
7467  }
7468}
7469#[cfg(feature = "xinerama")]
7470impl From<xinerama::GetStateReply> for Reply {
7471  fn from(reply: xinerama::GetStateReply) -> Reply {
7472    Reply::XineramaGetState(reply)
7473  }
7474}
7475#[cfg(feature = "xinerama")]
7476impl From<xinerama::GetScreenCountReply> for Reply {
7477  fn from(reply: xinerama::GetScreenCountReply) -> Reply {
7478    Reply::XineramaGetScreenCount(reply)
7479  }
7480}
7481#[cfg(feature = "xinerama")]
7482impl From<xinerama::GetScreenSizeReply> for Reply {
7483  fn from(reply: xinerama::GetScreenSizeReply) -> Reply {
7484    Reply::XineramaGetScreenSize(reply)
7485  }
7486}
7487#[cfg(feature = "xinerama")]
7488impl From<xinerama::IsActiveReply> for Reply {
7489  fn from(reply: xinerama::IsActiveReply) -> Reply {
7490    Reply::XineramaIsActive(reply)
7491  }
7492}
7493#[cfg(feature = "xinerama")]
7494impl From<xinerama::QueryScreensReply> for Reply {
7495  fn from(reply: xinerama::QueryScreensReply) -> Reply {
7496    Reply::XineramaQueryScreens(reply)
7497  }
7498}
7499#[cfg(feature = "xinput")]
7500impl From<xinput::GetExtensionVersionReply> for Reply {
7501  fn from(reply: xinput::GetExtensionVersionReply) -> Reply {
7502    Reply::XinputGetExtensionVersion(reply)
7503  }
7504}
7505#[cfg(feature = "xinput")]
7506impl From<xinput::ListInputDevicesReply> for Reply {
7507  fn from(reply: xinput::ListInputDevicesReply) -> Reply {
7508    Reply::XinputListInputDevices(reply)
7509  }
7510}
7511#[cfg(feature = "xinput")]
7512impl From<xinput::OpenDeviceReply> for Reply {
7513  fn from(reply: xinput::OpenDeviceReply) -> Reply {
7514    Reply::XinputOpenDevice(reply)
7515  }
7516}
7517#[cfg(feature = "xinput")]
7518impl From<xinput::SetDeviceModeReply> for Reply {
7519  fn from(reply: xinput::SetDeviceModeReply) -> Reply {
7520    Reply::XinputSetDeviceMode(reply)
7521  }
7522}
7523#[cfg(feature = "xinput")]
7524impl From<xinput::GetSelectedExtensionEventsReply> for Reply {
7525  fn from(reply: xinput::GetSelectedExtensionEventsReply) -> Reply {
7526    Reply::XinputGetSelectedExtensionEvents(reply)
7527  }
7528}
7529#[cfg(feature = "xinput")]
7530impl From<xinput::GetDeviceDontPropagateListReply> for Reply {
7531  fn from(reply: xinput::GetDeviceDontPropagateListReply) -> Reply {
7532    Reply::XinputGetDeviceDontPropagateList(reply)
7533  }
7534}
7535#[cfg(feature = "xinput")]
7536impl From<xinput::GetDeviceMotionEventsReply> for Reply {
7537  fn from(reply: xinput::GetDeviceMotionEventsReply) -> Reply {
7538    Reply::XinputGetDeviceMotionEvents(reply)
7539  }
7540}
7541#[cfg(feature = "xinput")]
7542impl From<xinput::ChangeKeyboardDeviceReply> for Reply {
7543  fn from(reply: xinput::ChangeKeyboardDeviceReply) -> Reply {
7544    Reply::XinputChangeKeyboardDevice(reply)
7545  }
7546}
7547#[cfg(feature = "xinput")]
7548impl From<xinput::ChangePointerDeviceReply> for Reply {
7549  fn from(reply: xinput::ChangePointerDeviceReply) -> Reply {
7550    Reply::XinputChangePointerDevice(reply)
7551  }
7552}
7553#[cfg(feature = "xinput")]
7554impl From<xinput::GrabDeviceReply> for Reply {
7555  fn from(reply: xinput::GrabDeviceReply) -> Reply {
7556    Reply::XinputGrabDevice(reply)
7557  }
7558}
7559#[cfg(feature = "xinput")]
7560impl From<xinput::GetDeviceFocusReply> for Reply {
7561  fn from(reply: xinput::GetDeviceFocusReply) -> Reply {
7562    Reply::XinputGetDeviceFocus(reply)
7563  }
7564}
7565#[cfg(feature = "xinput")]
7566impl From<xinput::GetFeedbackControlReply> for Reply {
7567  fn from(reply: xinput::GetFeedbackControlReply) -> Reply {
7568    Reply::XinputGetFeedbackControl(reply)
7569  }
7570}
7571#[cfg(feature = "xinput")]
7572impl From<xinput::GetDeviceKeyMappingReply> for Reply {
7573  fn from(reply: xinput::GetDeviceKeyMappingReply) -> Reply {
7574    Reply::XinputGetDeviceKeyMapping(reply)
7575  }
7576}
7577#[cfg(feature = "xinput")]
7578impl From<xinput::GetDeviceModifierMappingReply> for Reply {
7579  fn from(reply: xinput::GetDeviceModifierMappingReply) -> Reply {
7580    Reply::XinputGetDeviceModifierMapping(reply)
7581  }
7582}
7583#[cfg(feature = "xinput")]
7584impl From<xinput::SetDeviceModifierMappingReply> for Reply {
7585  fn from(reply: xinput::SetDeviceModifierMappingReply) -> Reply {
7586    Reply::XinputSetDeviceModifierMapping(reply)
7587  }
7588}
7589#[cfg(feature = "xinput")]
7590impl From<xinput::GetDeviceButtonMappingReply> for Reply {
7591  fn from(reply: xinput::GetDeviceButtonMappingReply) -> Reply {
7592    Reply::XinputGetDeviceButtonMapping(reply)
7593  }
7594}
7595#[cfg(feature = "xinput")]
7596impl From<xinput::SetDeviceButtonMappingReply> for Reply {
7597  fn from(reply: xinput::SetDeviceButtonMappingReply) -> Reply {
7598    Reply::XinputSetDeviceButtonMapping(reply)
7599  }
7600}
7601#[cfg(feature = "xinput")]
7602impl From<xinput::QueryDeviceStateReply> for Reply {
7603  fn from(reply: xinput::QueryDeviceStateReply) -> Reply {
7604    Reply::XinputQueryDeviceState(reply)
7605  }
7606}
7607#[cfg(feature = "xinput")]
7608impl From<xinput::SetDeviceValuatorsReply> for Reply {
7609  fn from(reply: xinput::SetDeviceValuatorsReply) -> Reply {
7610    Reply::XinputSetDeviceValuators(reply)
7611  }
7612}
7613#[cfg(feature = "xinput")]
7614impl From<xinput::GetDeviceControlReply> for Reply {
7615  fn from(reply: xinput::GetDeviceControlReply) -> Reply {
7616    Reply::XinputGetDeviceControl(reply)
7617  }
7618}
7619#[cfg(feature = "xinput")]
7620impl From<xinput::ChangeDeviceControlReply> for Reply {
7621  fn from(reply: xinput::ChangeDeviceControlReply) -> Reply {
7622    Reply::XinputChangeDeviceControl(reply)
7623  }
7624}
7625#[cfg(feature = "xinput")]
7626impl From<xinput::ListDevicePropertiesReply> for Reply {
7627  fn from(reply: xinput::ListDevicePropertiesReply) -> Reply {
7628    Reply::XinputListDeviceProperties(reply)
7629  }
7630}
7631#[cfg(feature = "xinput")]
7632impl From<xinput::GetDevicePropertyReply> for Reply {
7633  fn from(reply: xinput::GetDevicePropertyReply) -> Reply {
7634    Reply::XinputGetDeviceProperty(reply)
7635  }
7636}
7637#[cfg(feature = "xinput")]
7638impl From<xinput::XIQueryPointerReply> for Reply {
7639  fn from(reply: xinput::XIQueryPointerReply) -> Reply {
7640    Reply::XinputXIQueryPointer(reply)
7641  }
7642}
7643#[cfg(feature = "xinput")]
7644impl From<xinput::XIGetClientPointerReply> for Reply {
7645  fn from(reply: xinput::XIGetClientPointerReply) -> Reply {
7646    Reply::XinputXIGetClientPointer(reply)
7647  }
7648}
7649#[cfg(feature = "xinput")]
7650impl From<xinput::XIQueryVersionReply> for Reply {
7651  fn from(reply: xinput::XIQueryVersionReply) -> Reply {
7652    Reply::XinputXIQueryVersion(reply)
7653  }
7654}
7655#[cfg(feature = "xinput")]
7656impl From<xinput::XIQueryDeviceReply> for Reply {
7657  fn from(reply: xinput::XIQueryDeviceReply) -> Reply {
7658    Reply::XinputXIQueryDevice(reply)
7659  }
7660}
7661#[cfg(feature = "xinput")]
7662impl From<xinput::XIGetFocusReply> for Reply {
7663  fn from(reply: xinput::XIGetFocusReply) -> Reply {
7664    Reply::XinputXIGetFocus(reply)
7665  }
7666}
7667#[cfg(feature = "xinput")]
7668impl From<xinput::XIGrabDeviceReply> for Reply {
7669  fn from(reply: xinput::XIGrabDeviceReply) -> Reply {
7670    Reply::XinputXIGrabDevice(reply)
7671  }
7672}
7673#[cfg(feature = "xinput")]
7674impl From<xinput::XIPassiveGrabDeviceReply> for Reply {
7675  fn from(reply: xinput::XIPassiveGrabDeviceReply) -> Reply {
7676    Reply::XinputXIPassiveGrabDevice(reply)
7677  }
7678}
7679#[cfg(feature = "xinput")]
7680impl From<xinput::XIListPropertiesReply> for Reply {
7681  fn from(reply: xinput::XIListPropertiesReply) -> Reply {
7682    Reply::XinputXIListProperties(reply)
7683  }
7684}
7685#[cfg(feature = "xinput")]
7686impl From<xinput::XIGetPropertyReply> for Reply {
7687  fn from(reply: xinput::XIGetPropertyReply) -> Reply {
7688    Reply::XinputXIGetProperty(reply)
7689  }
7690}
7691#[cfg(feature = "xinput")]
7692impl From<xinput::XIGetSelectedEventsReply> for Reply {
7693  fn from(reply: xinput::XIGetSelectedEventsReply) -> Reply {
7694    Reply::XinputXIGetSelectedEvents(reply)
7695  }
7696}
7697#[cfg(feature = "xkb")]
7698impl From<xkb::UseExtensionReply> for Reply {
7699  fn from(reply: xkb::UseExtensionReply) -> Reply {
7700    Reply::XkbUseExtension(reply)
7701  }
7702}
7703#[cfg(feature = "xkb")]
7704impl From<xkb::GetStateReply> for Reply {
7705  fn from(reply: xkb::GetStateReply) -> Reply {
7706    Reply::XkbGetState(reply)
7707  }
7708}
7709#[cfg(feature = "xkb")]
7710impl From<xkb::GetControlsReply> for Reply {
7711  fn from(reply: xkb::GetControlsReply) -> Reply {
7712    Reply::XkbGetControls(reply)
7713  }
7714}
7715#[cfg(feature = "xkb")]
7716impl From<xkb::GetMapReply> for Reply {
7717  fn from(reply: xkb::GetMapReply) -> Reply {
7718    Reply::XkbGetMap(reply)
7719  }
7720}
7721#[cfg(feature = "xkb")]
7722impl From<xkb::GetCompatMapReply> for Reply {
7723  fn from(reply: xkb::GetCompatMapReply) -> Reply {
7724    Reply::XkbGetCompatMap(reply)
7725  }
7726}
7727#[cfg(feature = "xkb")]
7728impl From<xkb::GetIndicatorStateReply> for Reply {
7729  fn from(reply: xkb::GetIndicatorStateReply) -> Reply {
7730    Reply::XkbGetIndicatorState(reply)
7731  }
7732}
7733#[cfg(feature = "xkb")]
7734impl From<xkb::GetIndicatorMapReply> for Reply {
7735  fn from(reply: xkb::GetIndicatorMapReply) -> Reply {
7736    Reply::XkbGetIndicatorMap(reply)
7737  }
7738}
7739#[cfg(feature = "xkb")]
7740impl From<xkb::GetNamedIndicatorReply> for Reply {
7741  fn from(reply: xkb::GetNamedIndicatorReply) -> Reply {
7742    Reply::XkbGetNamedIndicator(reply)
7743  }
7744}
7745#[cfg(feature = "xkb")]
7746impl From<xkb::GetNamesReply> for Reply {
7747  fn from(reply: xkb::GetNamesReply) -> Reply {
7748    Reply::XkbGetNames(reply)
7749  }
7750}
7751#[cfg(feature = "xkb")]
7752impl From<xkb::PerClientFlagsReply> for Reply {
7753  fn from(reply: xkb::PerClientFlagsReply) -> Reply {
7754    Reply::XkbPerClientFlags(reply)
7755  }
7756}
7757#[cfg(feature = "xkb")]
7758impl From<xkb::ListComponentsReply> for Reply {
7759  fn from(reply: xkb::ListComponentsReply) -> Reply {
7760    Reply::XkbListComponents(reply)
7761  }
7762}
7763#[cfg(feature = "xkb")]
7764impl From<xkb::GetKbdByNameReply> for Reply {
7765  fn from(reply: xkb::GetKbdByNameReply) -> Reply {
7766    Reply::XkbGetKbdByName(reply)
7767  }
7768}
7769#[cfg(feature = "xkb")]
7770impl From<xkb::GetDeviceInfoReply> for Reply {
7771  fn from(reply: xkb::GetDeviceInfoReply) -> Reply {
7772    Reply::XkbGetDeviceInfo(reply)
7773  }
7774}
7775#[cfg(feature = "xkb")]
7776impl From<xkb::SetDebuggingFlagsReply> for Reply {
7777  fn from(reply: xkb::SetDebuggingFlagsReply) -> Reply {
7778    Reply::XkbSetDebuggingFlags(reply)
7779  }
7780}
7781#[cfg(feature = "xprint")]
7782impl From<xprint::PrintQueryVersionReply> for Reply {
7783  fn from(reply: xprint::PrintQueryVersionReply) -> Reply {
7784    Reply::XprintPrintQueryVersion(reply)
7785  }
7786}
7787#[cfg(feature = "xprint")]
7788impl From<xprint::PrintGetPrinterListReply> for Reply {
7789  fn from(reply: xprint::PrintGetPrinterListReply) -> Reply {
7790    Reply::XprintPrintGetPrinterList(reply)
7791  }
7792}
7793#[cfg(feature = "xprint")]
7794impl From<xprint::PrintGetContextReply> for Reply {
7795  fn from(reply: xprint::PrintGetContextReply) -> Reply {
7796    Reply::XprintPrintGetContext(reply)
7797  }
7798}
7799#[cfg(feature = "xprint")]
7800impl From<xprint::PrintGetScreenOfContextReply> for Reply {
7801  fn from(reply: xprint::PrintGetScreenOfContextReply) -> Reply {
7802    Reply::XprintPrintGetScreenOfContext(reply)
7803  }
7804}
7805#[cfg(feature = "xprint")]
7806impl From<xprint::PrintGetDocumentDataReply> for Reply {
7807  fn from(reply: xprint::PrintGetDocumentDataReply) -> Reply {
7808    Reply::XprintPrintGetDocumentData(reply)
7809  }
7810}
7811#[cfg(feature = "xprint")]
7812impl From<xprint::PrintInputSelectedReply> for Reply {
7813  fn from(reply: xprint::PrintInputSelectedReply) -> Reply {
7814    Reply::XprintPrintInputSelected(reply)
7815  }
7816}
7817#[cfg(feature = "xprint")]
7818impl From<xprint::PrintGetAttributesReply> for Reply {
7819  fn from(reply: xprint::PrintGetAttributesReply) -> Reply {
7820    Reply::XprintPrintGetAttributes(reply)
7821  }
7822}
7823#[cfg(feature = "xprint")]
7824impl From<xprint::PrintGetOneAttributesReply> for Reply {
7825  fn from(reply: xprint::PrintGetOneAttributesReply) -> Reply {
7826    Reply::XprintPrintGetOneAttributes(reply)
7827  }
7828}
7829#[cfg(feature = "xprint")]
7830impl From<xprint::PrintGetPageDimensionsReply> for Reply {
7831  fn from(reply: xprint::PrintGetPageDimensionsReply) -> Reply {
7832    Reply::XprintPrintGetPageDimensions(reply)
7833  }
7834}
7835#[cfg(feature = "xprint")]
7836impl From<xprint::PrintQueryScreensReply> for Reply {
7837  fn from(reply: xprint::PrintQueryScreensReply) -> Reply {
7838    Reply::XprintPrintQueryScreens(reply)
7839  }
7840}
7841#[cfg(feature = "xprint")]
7842impl From<xprint::PrintSetImageResolutionReply> for Reply {
7843  fn from(reply: xprint::PrintSetImageResolutionReply) -> Reply {
7844    Reply::XprintPrintSetImageResolution(reply)
7845  }
7846}
7847#[cfg(feature = "xprint")]
7848impl From<xprint::PrintGetImageResolutionReply> for Reply {
7849  fn from(reply: xprint::PrintGetImageResolutionReply) -> Reply {
7850    Reply::XprintPrintGetImageResolution(reply)
7851  }
7852}
7853#[cfg(feature = "xselinux")]
7854impl From<xselinux::QueryVersionReply> for Reply {
7855  fn from(reply: xselinux::QueryVersionReply) -> Reply {
7856    Reply::XselinuxQueryVersion(reply)
7857  }
7858}
7859#[cfg(feature = "xselinux")]
7860impl From<xselinux::GetDeviceCreateContextReply> for Reply {
7861  fn from(reply: xselinux::GetDeviceCreateContextReply) -> Reply {
7862    Reply::XselinuxGetDeviceCreateContext(reply)
7863  }
7864}
7865#[cfg(feature = "xselinux")]
7866impl From<xselinux::GetDeviceContextReply> for Reply {
7867  fn from(reply: xselinux::GetDeviceContextReply) -> Reply {
7868    Reply::XselinuxGetDeviceContext(reply)
7869  }
7870}
7871#[cfg(feature = "xselinux")]
7872impl From<xselinux::GetWindowCreateContextReply> for Reply {
7873  fn from(reply: xselinux::GetWindowCreateContextReply) -> Reply {
7874    Reply::XselinuxGetWindowCreateContext(reply)
7875  }
7876}
7877#[cfg(feature = "xselinux")]
7878impl From<xselinux::GetWindowContextReply> for Reply {
7879  fn from(reply: xselinux::GetWindowContextReply) -> Reply {
7880    Reply::XselinuxGetWindowContext(reply)
7881  }
7882}
7883#[cfg(feature = "xselinux")]
7884impl From<xselinux::GetPropertyCreateContextReply> for Reply {
7885  fn from(reply: xselinux::GetPropertyCreateContextReply) -> Reply {
7886    Reply::XselinuxGetPropertyCreateContext(reply)
7887  }
7888}
7889#[cfg(feature = "xselinux")]
7890impl From<xselinux::GetPropertyUseContextReply> for Reply {
7891  fn from(reply: xselinux::GetPropertyUseContextReply) -> Reply {
7892    Reply::XselinuxGetPropertyUseContext(reply)
7893  }
7894}
7895#[cfg(feature = "xselinux")]
7896impl From<xselinux::GetPropertyContextReply> for Reply {
7897  fn from(reply: xselinux::GetPropertyContextReply) -> Reply {
7898    Reply::XselinuxGetPropertyContext(reply)
7899  }
7900}
7901#[cfg(feature = "xselinux")]
7902impl From<xselinux::GetPropertyDataContextReply> for Reply {
7903  fn from(reply: xselinux::GetPropertyDataContextReply) -> Reply {
7904    Reply::XselinuxGetPropertyDataContext(reply)
7905  }
7906}
7907#[cfg(feature = "xselinux")]
7908impl From<xselinux::ListPropertiesReply> for Reply {
7909  fn from(reply: xselinux::ListPropertiesReply) -> Reply {
7910    Reply::XselinuxListProperties(reply)
7911  }
7912}
7913#[cfg(feature = "xselinux")]
7914impl From<xselinux::GetSelectionCreateContextReply> for Reply {
7915  fn from(reply: xselinux::GetSelectionCreateContextReply) -> Reply {
7916    Reply::XselinuxGetSelectionCreateContext(reply)
7917  }
7918}
7919#[cfg(feature = "xselinux")]
7920impl From<xselinux::GetSelectionUseContextReply> for Reply {
7921  fn from(reply: xselinux::GetSelectionUseContextReply) -> Reply {
7922    Reply::XselinuxGetSelectionUseContext(reply)
7923  }
7924}
7925#[cfg(feature = "xselinux")]
7926impl From<xselinux::GetSelectionContextReply> for Reply {
7927  fn from(reply: xselinux::GetSelectionContextReply) -> Reply {
7928    Reply::XselinuxGetSelectionContext(reply)
7929  }
7930}
7931#[cfg(feature = "xselinux")]
7932impl From<xselinux::GetSelectionDataContextReply> for Reply {
7933  fn from(reply: xselinux::GetSelectionDataContextReply) -> Reply {
7934    Reply::XselinuxGetSelectionDataContext(reply)
7935  }
7936}
7937#[cfg(feature = "xselinux")]
7938impl From<xselinux::ListSelectionsReply> for Reply {
7939  fn from(reply: xselinux::ListSelectionsReply) -> Reply {
7940    Reply::XselinuxListSelections(reply)
7941  }
7942}
7943#[cfg(feature = "xselinux")]
7944impl From<xselinux::GetClientContextReply> for Reply {
7945  fn from(reply: xselinux::GetClientContextReply) -> Reply {
7946    Reply::XselinuxGetClientContext(reply)
7947  }
7948}
7949#[cfg(feature = "xtest")]
7950impl From<xtest::GetVersionReply> for Reply {
7951  fn from(reply: xtest::GetVersionReply) -> Reply {
7952    Reply::XtestGetVersion(reply)
7953  }
7954}
7955#[cfg(feature = "xtest")]
7956impl From<xtest::CompareCursorReply> for Reply {
7957  fn from(reply: xtest::CompareCursorReply) -> Reply {
7958    Reply::XtestCompareCursor(reply)
7959  }
7960}
7961#[cfg(feature = "xv")]
7962impl From<xv::QueryExtensionReply> for Reply {
7963  fn from(reply: xv::QueryExtensionReply) -> Reply {
7964    Reply::XvQueryExtension(reply)
7965  }
7966}
7967#[cfg(feature = "xv")]
7968impl From<xv::QueryAdaptorsReply> for Reply {
7969  fn from(reply: xv::QueryAdaptorsReply) -> Reply {
7970    Reply::XvQueryAdaptors(reply)
7971  }
7972}
7973#[cfg(feature = "xv")]
7974impl From<xv::QueryEncodingsReply> for Reply {
7975  fn from(reply: xv::QueryEncodingsReply) -> Reply {
7976    Reply::XvQueryEncodings(reply)
7977  }
7978}
7979#[cfg(feature = "xv")]
7980impl From<xv::GrabPortReply> for Reply {
7981  fn from(reply: xv::GrabPortReply) -> Reply {
7982    Reply::XvGrabPort(reply)
7983  }
7984}
7985#[cfg(feature = "xv")]
7986impl From<xv::QueryBestSizeReply> for Reply {
7987  fn from(reply: xv::QueryBestSizeReply) -> Reply {
7988    Reply::XvQueryBestSize(reply)
7989  }
7990}
7991#[cfg(feature = "xv")]
7992impl From<xv::GetPortAttributeReply> for Reply {
7993  fn from(reply: xv::GetPortAttributeReply) -> Reply {
7994    Reply::XvGetPortAttribute(reply)
7995  }
7996}
7997#[cfg(feature = "xv")]
7998impl From<xv::QueryPortAttributesReply> for Reply {
7999  fn from(reply: xv::QueryPortAttributesReply) -> Reply {
8000    Reply::XvQueryPortAttributes(reply)
8001  }
8002}
8003#[cfg(feature = "xv")]
8004impl From<xv::ListImageFormatsReply> for Reply {
8005  fn from(reply: xv::ListImageFormatsReply) -> Reply {
8006    Reply::XvListImageFormats(reply)
8007  }
8008}
8009#[cfg(feature = "xv")]
8010impl From<xv::QueryImageAttributesReply> for Reply {
8011  fn from(reply: xv::QueryImageAttributesReply) -> Reply {
8012    Reply::XvQueryImageAttributes(reply)
8013  }
8014}
8015#[cfg(feature = "xvmc")]
8016impl From<xvmc::QueryVersionReply> for Reply {
8017  fn from(reply: xvmc::QueryVersionReply) -> Reply {
8018    Reply::XvmcQueryVersion(reply)
8019  }
8020}
8021#[cfg(feature = "xvmc")]
8022impl From<xvmc::ListSurfaceTypesReply> for Reply {
8023  fn from(reply: xvmc::ListSurfaceTypesReply) -> Reply {
8024    Reply::XvmcListSurfaceTypes(reply)
8025  }
8026}
8027#[cfg(feature = "xvmc")]
8028impl From<xvmc::CreateContextReply> for Reply {
8029  fn from(reply: xvmc::CreateContextReply) -> Reply {
8030    Reply::XvmcCreateContext(reply)
8031  }
8032}
8033#[cfg(feature = "xvmc")]
8034impl From<xvmc::CreateSurfaceReply> for Reply {
8035  fn from(reply: xvmc::CreateSurfaceReply) -> Reply {
8036    Reply::XvmcCreateSurface(reply)
8037  }
8038}
8039#[cfg(feature = "xvmc")]
8040impl From<xvmc::CreateSubpictureReply> for Reply {
8041  fn from(reply: xvmc::CreateSubpictureReply) -> Reply {
8042    Reply::XvmcCreateSubpicture(reply)
8043  }
8044}
8045#[cfg(feature = "xvmc")]
8046impl From<xvmc::ListSubpictureTypesReply> for Reply {
8047  fn from(reply: xvmc::ListSubpictureTypesReply) -> Reply {
8048    Reply::XvmcListSubpictureTypes(reply)
8049  }
8050}
8051
8052/// Get the name of a request from its extension name and opcodes.
8053///
8054/// First result is the name of the extension, second the name of the request.
8055pub(crate) fn request_name(ext_info_provider: &dyn ExtInfoProvider, major_opcode: u8, minor_opcode: u16) -> (Option<String>, Option<&'static str>) {
8056    // Don't ask me why X11 errors contain u16 for minor opcode, but requests are sent with u8.
8057    // We have to work around that incompatibility here.
8058    // From the X11 protocol reference manual:
8059    // Major opcodes 128 through 255 are reserved for extensions.
8060    let (ext, info) = if major_opcode < 128 || minor_opcode <= u16::from(u8::MAX) {
8061        get_request_name_internal(ext_info_provider, major_opcode, minor_opcode as u8)
8062    } else {
8063        let ext = ext_info_provider.get_from_major_opcode(major_opcode);
8064        return (ext.map(|(ext, _)| String::from(ext)), None);
8065    };
8066    let ext = ext.map(String::from);
8067    let info = match info {
8068        RequestInfo::Xproto(request) => request.into(),
8069        RequestInfo::KnownExt(ext_and_request) => ext_and_request.split_once("::").map(|r| r.1),
8070        RequestInfo::UnknownRequest(_, _) => None,
8071        RequestInfo::UnknownExtension(_, _) => None,
8072    };
8073    (ext, info)
8074}
8075
8076/// Enumeration of all possible X11 error kinds.
8077#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
8078#[non_exhaustive]
8079pub enum ErrorKind {
8080    Unknown(u8),
8081    Access,
8082    Alloc,
8083    Atom,
8084    Colormap,
8085    Cursor,
8086    Drawable,
8087    Font,
8088    GContext,
8089    IDChoice,
8090    Implementation,
8091    Length,
8092    Match,
8093    Name,
8094    Pixmap,
8095    Request,
8096    Value,
8097    Window,
8098    #[cfg(feature = "damage")]
8099    DamageBadDamage,
8100    #[cfg(feature = "dbe")]
8101    DbeBadBuffer,
8102    #[cfg(feature = "glx")]
8103    GlxBadContext,
8104    #[cfg(feature = "glx")]
8105    GlxBadContextState,
8106    #[cfg(feature = "glx")]
8107    GlxBadContextTag,
8108    #[cfg(feature = "glx")]
8109    GlxBadCurrentDrawable,
8110    #[cfg(feature = "glx")]
8111    GlxBadCurrentWindow,
8112    #[cfg(feature = "glx")]
8113    GlxBadDrawable,
8114    #[cfg(feature = "glx")]
8115    GlxBadFBConfig,
8116    #[cfg(feature = "glx")]
8117    GlxBadLargeRequest,
8118    #[cfg(feature = "glx")]
8119    GlxBadPbuffer,
8120    #[cfg(feature = "glx")]
8121    GlxBadPixmap,
8122    #[cfg(feature = "glx")]
8123    GlxBadRenderRequest,
8124    #[cfg(feature = "glx")]
8125    GlxBadWindow,
8126    #[cfg(feature = "glx")]
8127    GlxGLXBadProfileARB,
8128    #[cfg(feature = "glx")]
8129    GlxUnsupportedPrivateRequest,
8130    #[cfg(feature = "randr")]
8131    RandrBadCrtc,
8132    #[cfg(feature = "randr")]
8133    RandrBadMode,
8134    #[cfg(feature = "randr")]
8135    RandrBadOutput,
8136    #[cfg(feature = "randr")]
8137    RandrBadProvider,
8138    #[cfg(feature = "record")]
8139    RecordBadContext,
8140    #[cfg(feature = "render")]
8141    RenderGlyph,
8142    #[cfg(feature = "render")]
8143    RenderGlyphSet,
8144    #[cfg(feature = "render")]
8145    RenderPictFormat,
8146    #[cfg(feature = "render")]
8147    RenderPictOp,
8148    #[cfg(feature = "render")]
8149    RenderPicture,
8150    #[cfg(feature = "shm")]
8151    ShmBadSeg,
8152    #[cfg(feature = "sync")]
8153    SyncAlarm,
8154    #[cfg(feature = "sync")]
8155    SyncCounter,
8156    #[cfg(feature = "xf86vidmode")]
8157    Xf86vidmodeBadClock,
8158    #[cfg(feature = "xf86vidmode")]
8159    Xf86vidmodeBadHTimings,
8160    #[cfg(feature = "xf86vidmode")]
8161    Xf86vidmodeBadVTimings,
8162    #[cfg(feature = "xf86vidmode")]
8163    Xf86vidmodeClientNotLocal,
8164    #[cfg(feature = "xf86vidmode")]
8165    Xf86vidmodeExtensionDisabled,
8166    #[cfg(feature = "xf86vidmode")]
8167    Xf86vidmodeModeUnsuitable,
8168    #[cfg(feature = "xf86vidmode")]
8169    Xf86vidmodeZoomLocked,
8170    #[cfg(feature = "xfixes")]
8171    XfixesBadRegion,
8172    #[cfg(feature = "xinput")]
8173    XinputClass,
8174    #[cfg(feature = "xinput")]
8175    XinputDevice,
8176    #[cfg(feature = "xinput")]
8177    XinputDeviceBusy,
8178    #[cfg(feature = "xinput")]
8179    XinputEvent,
8180    #[cfg(feature = "xinput")]
8181    XinputMode,
8182    #[cfg(feature = "xkb")]
8183    XkbKeyboard,
8184    #[cfg(feature = "xprint")]
8185    XprintBadContext,
8186    #[cfg(feature = "xprint")]
8187    XprintBadSequence,
8188    #[cfg(feature = "xv")]
8189    XvBadControl,
8190    #[cfg(feature = "xv")]
8191    XvBadEncoding,
8192    #[cfg(feature = "xv")]
8193    XvBadPort,
8194}
8195
8196impl ErrorKind {
8197    #[allow(clippy::match_single_binding)]
8198    pub fn from_wire_error_code(
8199        error_code: u8,
8200        ext_info_provider: &dyn ExtInfoProvider,
8201    ) -> Self {
8202        // Check if this is a core protocol error
8203        match error_code {
8204            xproto::ACCESS_ERROR => return Self::Access,
8205            xproto::ALLOC_ERROR => return Self::Alloc,
8206            xproto::ATOM_ERROR => return Self::Atom,
8207            xproto::COLORMAP_ERROR => return Self::Colormap,
8208            xproto::CURSOR_ERROR => return Self::Cursor,
8209            xproto::DRAWABLE_ERROR => return Self::Drawable,
8210            xproto::FONT_ERROR => return Self::Font,
8211            xproto::G_CONTEXT_ERROR => return Self::GContext,
8212            xproto::ID_CHOICE_ERROR => return Self::IDChoice,
8213            xproto::IMPLEMENTATION_ERROR => return Self::Implementation,
8214            xproto::LENGTH_ERROR => return Self::Length,
8215            xproto::MATCH_ERROR => return Self::Match,
8216            xproto::NAME_ERROR => return Self::Name,
8217            xproto::PIXMAP_ERROR => return Self::Pixmap,
8218            xproto::REQUEST_ERROR => return Self::Request,
8219            xproto::VALUE_ERROR => return Self::Value,
8220            xproto::WINDOW_ERROR => return Self::Window,
8221            _ => {}
8222        }
8223
8224        // Find the extension that this error could belong to
8225        let ext_info = ext_info_provider.get_from_error_code(error_code);
8226        match ext_info {
8227            #[cfg(feature = "damage")]
8228            Some((damage::X11_EXTENSION_NAME, ext_info)) => {
8229                match error_code - ext_info.first_error {
8230                    damage::BAD_DAMAGE_ERROR => Self::DamageBadDamage,
8231                    _ => Self::Unknown(error_code),
8232                }
8233            }
8234            #[cfg(feature = "dbe")]
8235            Some((dbe::X11_EXTENSION_NAME, ext_info)) => {
8236                match error_code - ext_info.first_error {
8237                    dbe::BAD_BUFFER_ERROR => Self::DbeBadBuffer,
8238                    _ => Self::Unknown(error_code),
8239                }
8240            }
8241            #[cfg(feature = "glx")]
8242            Some((glx::X11_EXTENSION_NAME, ext_info)) => {
8243                match error_code - ext_info.first_error {
8244                    glx::BAD_CONTEXT_ERROR => Self::GlxBadContext,
8245                    glx::BAD_CONTEXT_STATE_ERROR => Self::GlxBadContextState,
8246                    glx::BAD_CONTEXT_TAG_ERROR => Self::GlxBadContextTag,
8247                    glx::BAD_CURRENT_DRAWABLE_ERROR => Self::GlxBadCurrentDrawable,
8248                    glx::BAD_CURRENT_WINDOW_ERROR => Self::GlxBadCurrentWindow,
8249                    glx::BAD_DRAWABLE_ERROR => Self::GlxBadDrawable,
8250                    glx::BAD_FB_CONFIG_ERROR => Self::GlxBadFBConfig,
8251                    glx::BAD_LARGE_REQUEST_ERROR => Self::GlxBadLargeRequest,
8252                    glx::BAD_PBUFFER_ERROR => Self::GlxBadPbuffer,
8253                    glx::BAD_PIXMAP_ERROR => Self::GlxBadPixmap,
8254                    glx::BAD_RENDER_REQUEST_ERROR => Self::GlxBadRenderRequest,
8255                    glx::BAD_WINDOW_ERROR => Self::GlxBadWindow,
8256                    glx::GLX_BAD_PROFILE_ARB_ERROR => Self::GlxGLXBadProfileARB,
8257                    glx::UNSUPPORTED_PRIVATE_REQUEST_ERROR => Self::GlxUnsupportedPrivateRequest,
8258                    _ => Self::Unknown(error_code),
8259                }
8260            }
8261            #[cfg(feature = "randr")]
8262            Some((randr::X11_EXTENSION_NAME, ext_info)) => {
8263                match error_code - ext_info.first_error {
8264                    randr::BAD_CRTC_ERROR => Self::RandrBadCrtc,
8265                    randr::BAD_MODE_ERROR => Self::RandrBadMode,
8266                    randr::BAD_OUTPUT_ERROR => Self::RandrBadOutput,
8267                    randr::BAD_PROVIDER_ERROR => Self::RandrBadProvider,
8268                    _ => Self::Unknown(error_code),
8269                }
8270            }
8271            #[cfg(feature = "record")]
8272            Some((record::X11_EXTENSION_NAME, ext_info)) => {
8273                match error_code - ext_info.first_error {
8274                    record::BAD_CONTEXT_ERROR => Self::RecordBadContext,
8275                    _ => Self::Unknown(error_code),
8276                }
8277            }
8278            #[cfg(feature = "render")]
8279            Some((render::X11_EXTENSION_NAME, ext_info)) => {
8280                match error_code - ext_info.first_error {
8281                    render::GLYPH_ERROR => Self::RenderGlyph,
8282                    render::GLYPH_SET_ERROR => Self::RenderGlyphSet,
8283                    render::PICT_FORMAT_ERROR => Self::RenderPictFormat,
8284                    render::PICT_OP_ERROR => Self::RenderPictOp,
8285                    render::PICTURE_ERROR => Self::RenderPicture,
8286                    _ => Self::Unknown(error_code),
8287                }
8288            }
8289            #[cfg(feature = "shm")]
8290            Some((shm::X11_EXTENSION_NAME, ext_info)) => {
8291                match error_code - ext_info.first_error {
8292                    shm::BAD_SEG_ERROR => Self::ShmBadSeg,
8293                    _ => Self::Unknown(error_code),
8294                }
8295            }
8296            #[cfg(feature = "sync")]
8297            Some((sync::X11_EXTENSION_NAME, ext_info)) => {
8298                match error_code - ext_info.first_error {
8299                    sync::ALARM_ERROR => Self::SyncAlarm,
8300                    sync::COUNTER_ERROR => Self::SyncCounter,
8301                    _ => Self::Unknown(error_code),
8302                }
8303            }
8304            #[cfg(feature = "xf86vidmode")]
8305            Some((xf86vidmode::X11_EXTENSION_NAME, ext_info)) => {
8306                match error_code - ext_info.first_error {
8307                    xf86vidmode::BAD_CLOCK_ERROR => Self::Xf86vidmodeBadClock,
8308                    xf86vidmode::BAD_H_TIMINGS_ERROR => Self::Xf86vidmodeBadHTimings,
8309                    xf86vidmode::BAD_V_TIMINGS_ERROR => Self::Xf86vidmodeBadVTimings,
8310                    xf86vidmode::CLIENT_NOT_LOCAL_ERROR => Self::Xf86vidmodeClientNotLocal,
8311                    xf86vidmode::EXTENSION_DISABLED_ERROR => Self::Xf86vidmodeExtensionDisabled,
8312                    xf86vidmode::MODE_UNSUITABLE_ERROR => Self::Xf86vidmodeModeUnsuitable,
8313                    xf86vidmode::ZOOM_LOCKED_ERROR => Self::Xf86vidmodeZoomLocked,
8314                    _ => Self::Unknown(error_code),
8315                }
8316            }
8317            #[cfg(feature = "xfixes")]
8318            Some((xfixes::X11_EXTENSION_NAME, ext_info)) => {
8319                match error_code - ext_info.first_error {
8320                    xfixes::BAD_REGION_ERROR => Self::XfixesBadRegion,
8321                    _ => Self::Unknown(error_code),
8322                }
8323            }
8324            #[cfg(feature = "xinput")]
8325            Some((xinput::X11_EXTENSION_NAME, ext_info)) => {
8326                match error_code - ext_info.first_error {
8327                    xinput::CLASS_ERROR => Self::XinputClass,
8328                    xinput::DEVICE_ERROR => Self::XinputDevice,
8329                    xinput::DEVICE_BUSY_ERROR => Self::XinputDeviceBusy,
8330                    xinput::EVENT_ERROR => Self::XinputEvent,
8331                    xinput::MODE_ERROR => Self::XinputMode,
8332                    _ => Self::Unknown(error_code),
8333                }
8334            }
8335            #[cfg(feature = "xkb")]
8336            Some((xkb::X11_EXTENSION_NAME, ext_info)) => {
8337                match error_code - ext_info.first_error {
8338                    xkb::KEYBOARD_ERROR => Self::XkbKeyboard,
8339                    _ => Self::Unknown(error_code),
8340                }
8341            }
8342            #[cfg(feature = "xprint")]
8343            Some((xprint::X11_EXTENSION_NAME, ext_info)) => {
8344                match error_code - ext_info.first_error {
8345                    xprint::BAD_CONTEXT_ERROR => Self::XprintBadContext,
8346                    xprint::BAD_SEQUENCE_ERROR => Self::XprintBadSequence,
8347                    _ => Self::Unknown(error_code),
8348                }
8349            }
8350            #[cfg(feature = "xv")]
8351            Some((xv::X11_EXTENSION_NAME, ext_info)) => {
8352                match error_code - ext_info.first_error {
8353                    xv::BAD_CONTROL_ERROR => Self::XvBadControl,
8354                    xv::BAD_ENCODING_ERROR => Self::XvBadEncoding,
8355                    xv::BAD_PORT_ERROR => Self::XvBadPort,
8356                    _ => Self::Unknown(error_code),
8357                }
8358            }
8359            _ => Self::Unknown(error_code),
8360        }
8361    }
8362}
8363
8364
8365/// Enumeration of all possible X11 events.
8366#[derive(Debug, Clone)]
8367#[non_exhaustive]
8368pub enum Event {
8369    Unknown(Vec<u8>),
8370    Error(X11Error),
8371    ButtonPress(xproto::ButtonPressEvent),
8372    ButtonRelease(xproto::ButtonReleaseEvent),
8373    CirculateNotify(xproto::CirculateNotifyEvent),
8374    CirculateRequest(xproto::CirculateRequestEvent),
8375    ClientMessage(xproto::ClientMessageEvent),
8376    ColormapNotify(xproto::ColormapNotifyEvent),
8377    ConfigureNotify(xproto::ConfigureNotifyEvent),
8378    ConfigureRequest(xproto::ConfigureRequestEvent),
8379    CreateNotify(xproto::CreateNotifyEvent),
8380    DestroyNotify(xproto::DestroyNotifyEvent),
8381    EnterNotify(xproto::EnterNotifyEvent),
8382    Expose(xproto::ExposeEvent),
8383    FocusIn(xproto::FocusInEvent),
8384    FocusOut(xproto::FocusOutEvent),
8385    GeGeneric(xproto::GeGenericEvent),
8386    GraphicsExposure(xproto::GraphicsExposureEvent),
8387    GravityNotify(xproto::GravityNotifyEvent),
8388    KeyPress(xproto::KeyPressEvent),
8389    KeyRelease(xproto::KeyReleaseEvent),
8390    KeymapNotify(xproto::KeymapNotifyEvent),
8391    LeaveNotify(xproto::LeaveNotifyEvent),
8392    MapNotify(xproto::MapNotifyEvent),
8393    MapRequest(xproto::MapRequestEvent),
8394    MappingNotify(xproto::MappingNotifyEvent),
8395    MotionNotify(xproto::MotionNotifyEvent),
8396    NoExposure(xproto::NoExposureEvent),
8397    PropertyNotify(xproto::PropertyNotifyEvent),
8398    ReparentNotify(xproto::ReparentNotifyEvent),
8399    ResizeRequest(xproto::ResizeRequestEvent),
8400    SelectionClear(xproto::SelectionClearEvent),
8401    SelectionNotify(xproto::SelectionNotifyEvent),
8402    SelectionRequest(xproto::SelectionRequestEvent),
8403    UnmapNotify(xproto::UnmapNotifyEvent),
8404    VisibilityNotify(xproto::VisibilityNotifyEvent),
8405    #[cfg(feature = "damage")]
8406    DamageNotify(damage::NotifyEvent),
8407    #[cfg(feature = "dpms")]
8408    DpmsInfoNotify(dpms::InfoNotifyEvent),
8409    #[cfg(feature = "dri2")]
8410    Dri2BufferSwapComplete(dri2::BufferSwapCompleteEvent),
8411    #[cfg(feature = "dri2")]
8412    Dri2InvalidateBuffers(dri2::InvalidateBuffersEvent),
8413    #[cfg(feature = "glx")]
8414    GlxBufferSwapComplete(glx::BufferSwapCompleteEvent),
8415    #[cfg(feature = "glx")]
8416    GlxPbufferClobber(glx::PbufferClobberEvent),
8417    #[cfg(feature = "present")]
8418    PresentCompleteNotify(present::CompleteNotifyEvent),
8419    #[cfg(feature = "present")]
8420    PresentConfigureNotify(present::ConfigureNotifyEvent),
8421    #[cfg(feature = "present")]
8422    PresentGeneric(present::GenericEvent),
8423    #[cfg(feature = "present")]
8424    PresentIdleNotify(present::IdleNotifyEvent),
8425    #[cfg(feature = "present")]
8426    PresentRedirectNotify(present::RedirectNotifyEvent),
8427    #[cfg(feature = "randr")]
8428    RandrNotify(randr::NotifyEvent),
8429    #[cfg(feature = "randr")]
8430    RandrScreenChangeNotify(randr::ScreenChangeNotifyEvent),
8431    #[cfg(feature = "screensaver")]
8432    ScreensaverNotify(screensaver::NotifyEvent),
8433    #[cfg(feature = "shape")]
8434    ShapeNotify(shape::NotifyEvent),
8435    #[cfg(feature = "shm")]
8436    ShmCompletion(shm::CompletionEvent),
8437    #[cfg(feature = "sync")]
8438    SyncAlarmNotify(sync::AlarmNotifyEvent),
8439    #[cfg(feature = "sync")]
8440    SyncCounterNotify(sync::CounterNotifyEvent),
8441    #[cfg(feature = "xfixes")]
8442    XfixesCursorNotify(xfixes::CursorNotifyEvent),
8443    #[cfg(feature = "xfixes")]
8444    XfixesSelectionNotify(xfixes::SelectionNotifyEvent),
8445    #[cfg(feature = "xinput")]
8446    XinputBarrierHit(xinput::BarrierHitEvent),
8447    #[cfg(feature = "xinput")]
8448    XinputBarrierLeave(xinput::BarrierLeaveEvent),
8449    #[cfg(feature = "xinput")]
8450    XinputButtonPress(xinput::ButtonPressEvent),
8451    #[cfg(feature = "xinput")]
8452    XinputButtonRelease(xinput::ButtonReleaseEvent),
8453    #[cfg(feature = "xinput")]
8454    XinputChangeDeviceNotify(xinput::ChangeDeviceNotifyEvent),
8455    #[cfg(feature = "xinput")]
8456    XinputDeviceButtonPress(xinput::DeviceButtonPressEvent),
8457    #[cfg(feature = "xinput")]
8458    XinputDeviceButtonRelease(xinput::DeviceButtonReleaseEvent),
8459    #[cfg(feature = "xinput")]
8460    XinputDeviceButtonStateNotify(xinput::DeviceButtonStateNotifyEvent),
8461    #[cfg(feature = "xinput")]
8462    XinputDeviceChanged(xinput::DeviceChangedEvent),
8463    #[cfg(feature = "xinput")]
8464    XinputDeviceFocusIn(xinput::DeviceFocusInEvent),
8465    #[cfg(feature = "xinput")]
8466    XinputDeviceFocusOut(xinput::DeviceFocusOutEvent),
8467    #[cfg(feature = "xinput")]
8468    XinputDeviceKeyPress(xinput::DeviceKeyPressEvent),
8469    #[cfg(feature = "xinput")]
8470    XinputDeviceKeyRelease(xinput::DeviceKeyReleaseEvent),
8471    #[cfg(feature = "xinput")]
8472    XinputDeviceKeyStateNotify(xinput::DeviceKeyStateNotifyEvent),
8473    #[cfg(feature = "xinput")]
8474    XinputDeviceMappingNotify(xinput::DeviceMappingNotifyEvent),
8475    #[cfg(feature = "xinput")]
8476    XinputDeviceMotionNotify(xinput::DeviceMotionNotifyEvent),
8477    #[cfg(feature = "xinput")]
8478    XinputDevicePresenceNotify(xinput::DevicePresenceNotifyEvent),
8479    #[cfg(feature = "xinput")]
8480    XinputDevicePropertyNotify(xinput::DevicePropertyNotifyEvent),
8481    #[cfg(feature = "xinput")]
8482    XinputDeviceStateNotify(xinput::DeviceStateNotifyEvent),
8483    #[cfg(feature = "xinput")]
8484    XinputDeviceValuator(xinput::DeviceValuatorEvent),
8485    #[cfg(feature = "xinput")]
8486    XinputEnter(xinput::EnterEvent),
8487    #[cfg(feature = "xinput")]
8488    XinputFocusIn(xinput::FocusInEvent),
8489    #[cfg(feature = "xinput")]
8490    XinputFocusOut(xinput::FocusOutEvent),
8491    #[cfg(feature = "xinput")]
8492    XinputGesturePinchBegin(xinput::GesturePinchBeginEvent),
8493    #[cfg(feature = "xinput")]
8494    XinputGesturePinchEnd(xinput::GesturePinchEndEvent),
8495    #[cfg(feature = "xinput")]
8496    XinputGesturePinchUpdate(xinput::GesturePinchUpdateEvent),
8497    #[cfg(feature = "xinput")]
8498    XinputGestureSwipeBegin(xinput::GestureSwipeBeginEvent),
8499    #[cfg(feature = "xinput")]
8500    XinputGestureSwipeEnd(xinput::GestureSwipeEndEvent),
8501    #[cfg(feature = "xinput")]
8502    XinputGestureSwipeUpdate(xinput::GestureSwipeUpdateEvent),
8503    #[cfg(feature = "xinput")]
8504    XinputHierarchy(xinput::HierarchyEvent),
8505    #[cfg(feature = "xinput")]
8506    XinputKeyPress(xinput::KeyPressEvent),
8507    #[cfg(feature = "xinput")]
8508    XinputKeyRelease(xinput::KeyReleaseEvent),
8509    #[cfg(feature = "xinput")]
8510    XinputLeave(xinput::LeaveEvent),
8511    #[cfg(feature = "xinput")]
8512    XinputMotion(xinput::MotionEvent),
8513    #[cfg(feature = "xinput")]
8514    XinputProperty(xinput::PropertyEvent),
8515    #[cfg(feature = "xinput")]
8516    XinputProximityIn(xinput::ProximityInEvent),
8517    #[cfg(feature = "xinput")]
8518    XinputProximityOut(xinput::ProximityOutEvent),
8519    #[cfg(feature = "xinput")]
8520    XinputRawButtonPress(xinput::RawButtonPressEvent),
8521    #[cfg(feature = "xinput")]
8522    XinputRawButtonRelease(xinput::RawButtonReleaseEvent),
8523    #[cfg(feature = "xinput")]
8524    XinputRawKeyPress(xinput::RawKeyPressEvent),
8525    #[cfg(feature = "xinput")]
8526    XinputRawKeyRelease(xinput::RawKeyReleaseEvent),
8527    #[cfg(feature = "xinput")]
8528    XinputRawMotion(xinput::RawMotionEvent),
8529    #[cfg(feature = "xinput")]
8530    XinputRawTouchBegin(xinput::RawTouchBeginEvent),
8531    #[cfg(feature = "xinput")]
8532    XinputRawTouchEnd(xinput::RawTouchEndEvent),
8533    #[cfg(feature = "xinput")]
8534    XinputRawTouchUpdate(xinput::RawTouchUpdateEvent),
8535    #[cfg(feature = "xinput")]
8536    XinputTouchBegin(xinput::TouchBeginEvent),
8537    #[cfg(feature = "xinput")]
8538    XinputTouchEnd(xinput::TouchEndEvent),
8539    #[cfg(feature = "xinput")]
8540    XinputTouchOwnership(xinput::TouchOwnershipEvent),
8541    #[cfg(feature = "xinput")]
8542    XinputTouchUpdate(xinput::TouchUpdateEvent),
8543    #[cfg(feature = "xkb")]
8544    XkbAccessXNotify(xkb::AccessXNotifyEvent),
8545    #[cfg(feature = "xkb")]
8546    XkbActionMessage(xkb::ActionMessageEvent),
8547    #[cfg(feature = "xkb")]
8548    XkbBellNotify(xkb::BellNotifyEvent),
8549    #[cfg(feature = "xkb")]
8550    XkbCompatMapNotify(xkb::CompatMapNotifyEvent),
8551    #[cfg(feature = "xkb")]
8552    XkbControlsNotify(xkb::ControlsNotifyEvent),
8553    #[cfg(feature = "xkb")]
8554    XkbExtensionDeviceNotify(xkb::ExtensionDeviceNotifyEvent),
8555    #[cfg(feature = "xkb")]
8556    XkbIndicatorMapNotify(xkb::IndicatorMapNotifyEvent),
8557    #[cfg(feature = "xkb")]
8558    XkbIndicatorStateNotify(xkb::IndicatorStateNotifyEvent),
8559    #[cfg(feature = "xkb")]
8560    XkbMapNotify(xkb::MapNotifyEvent),
8561    #[cfg(feature = "xkb")]
8562    XkbNamesNotify(xkb::NamesNotifyEvent),
8563    #[cfg(feature = "xkb")]
8564    XkbNewKeyboardNotify(xkb::NewKeyboardNotifyEvent),
8565    #[cfg(feature = "xkb")]
8566    XkbStateNotify(xkb::StateNotifyEvent),
8567    #[cfg(feature = "xprint")]
8568    XprintAttributNotify(xprint::AttributNotifyEvent),
8569    #[cfg(feature = "xprint")]
8570    XprintNotify(xprint::NotifyEvent),
8571    #[cfg(feature = "xv")]
8572    XvPortNotify(xv::PortNotifyEvent),
8573    #[cfg(feature = "xv")]
8574    XvVideoNotify(xv::VideoNotifyEvent),
8575}
8576
8577impl Event {
8578    /// Parse a generic X11 event into a concrete event type.
8579    #[allow(clippy::cognitive_complexity, clippy::match_single_binding)]
8580    pub fn parse(
8581        event: &[u8],
8582        ext_info_provider: &dyn ExtInfoProvider,
8583    ) -> Result<Self, ParseError> {
8584        let event_code = response_type(event)?;
8585
8586        // Check if this is a core protocol event or error, or from the generic event extension
8587        match event_code {
8588            0 => return Ok(Self::Error(X11Error::try_parse(event, ext_info_provider)?)),
8589            xproto::BUTTON_PRESS_EVENT => return Ok(Self::ButtonPress(TryParse::try_parse(event)?.0)),
8590            xproto::BUTTON_RELEASE_EVENT => return Ok(Self::ButtonRelease(TryParse::try_parse(event)?.0)),
8591            xproto::CIRCULATE_NOTIFY_EVENT => return Ok(Self::CirculateNotify(TryParse::try_parse(event)?.0)),
8592            xproto::CIRCULATE_REQUEST_EVENT => return Ok(Self::CirculateRequest(TryParse::try_parse(event)?.0)),
8593            xproto::CLIENT_MESSAGE_EVENT => return Ok(Self::ClientMessage(TryParse::try_parse(event)?.0)),
8594            xproto::COLORMAP_NOTIFY_EVENT => return Ok(Self::ColormapNotify(TryParse::try_parse(event)?.0)),
8595            xproto::CONFIGURE_NOTIFY_EVENT => return Ok(Self::ConfigureNotify(TryParse::try_parse(event)?.0)),
8596            xproto::CONFIGURE_REQUEST_EVENT => return Ok(Self::ConfigureRequest(TryParse::try_parse(event)?.0)),
8597            xproto::CREATE_NOTIFY_EVENT => return Ok(Self::CreateNotify(TryParse::try_parse(event)?.0)),
8598            xproto::DESTROY_NOTIFY_EVENT => return Ok(Self::DestroyNotify(TryParse::try_parse(event)?.0)),
8599            xproto::ENTER_NOTIFY_EVENT => return Ok(Self::EnterNotify(TryParse::try_parse(event)?.0)),
8600            xproto::EXPOSE_EVENT => return Ok(Self::Expose(TryParse::try_parse(event)?.0)),
8601            xproto::FOCUS_IN_EVENT => return Ok(Self::FocusIn(TryParse::try_parse(event)?.0)),
8602            xproto::FOCUS_OUT_EVENT => return Ok(Self::FocusOut(TryParse::try_parse(event)?.0)),
8603            xproto::GRAPHICS_EXPOSURE_EVENT => return Ok(Self::GraphicsExposure(TryParse::try_parse(event)?.0)),
8604            xproto::GRAVITY_NOTIFY_EVENT => return Ok(Self::GravityNotify(TryParse::try_parse(event)?.0)),
8605            xproto::KEY_PRESS_EVENT => return Ok(Self::KeyPress(TryParse::try_parse(event)?.0)),
8606            xproto::KEY_RELEASE_EVENT => return Ok(Self::KeyRelease(TryParse::try_parse(event)?.0)),
8607            xproto::KEYMAP_NOTIFY_EVENT => return Ok(Self::KeymapNotify(TryParse::try_parse(event)?.0)),
8608            xproto::LEAVE_NOTIFY_EVENT => return Ok(Self::LeaveNotify(TryParse::try_parse(event)?.0)),
8609            xproto::MAP_NOTIFY_EVENT => return Ok(Self::MapNotify(TryParse::try_parse(event)?.0)),
8610            xproto::MAP_REQUEST_EVENT => return Ok(Self::MapRequest(TryParse::try_parse(event)?.0)),
8611            xproto::MAPPING_NOTIFY_EVENT => return Ok(Self::MappingNotify(TryParse::try_parse(event)?.0)),
8612            xproto::MOTION_NOTIFY_EVENT => return Ok(Self::MotionNotify(TryParse::try_parse(event)?.0)),
8613            xproto::NO_EXPOSURE_EVENT => return Ok(Self::NoExposure(TryParse::try_parse(event)?.0)),
8614            xproto::PROPERTY_NOTIFY_EVENT => return Ok(Self::PropertyNotify(TryParse::try_parse(event)?.0)),
8615            xproto::REPARENT_NOTIFY_EVENT => return Ok(Self::ReparentNotify(TryParse::try_parse(event)?.0)),
8616            xproto::RESIZE_REQUEST_EVENT => return Ok(Self::ResizeRequest(TryParse::try_parse(event)?.0)),
8617            xproto::SELECTION_CLEAR_EVENT => return Ok(Self::SelectionClear(TryParse::try_parse(event)?.0)),
8618            xproto::SELECTION_NOTIFY_EVENT => return Ok(Self::SelectionNotify(TryParse::try_parse(event)?.0)),
8619            xproto::SELECTION_REQUEST_EVENT => return Ok(Self::SelectionRequest(TryParse::try_parse(event)?.0)),
8620            xproto::UNMAP_NOTIFY_EVENT => return Ok(Self::UnmapNotify(TryParse::try_parse(event)?.0)),
8621            xproto::VISIBILITY_NOTIFY_EVENT => return Ok(Self::VisibilityNotify(TryParse::try_parse(event)?.0)),
8622            xproto::GE_GENERIC_EVENT => return Self::from_generic_event(event, ext_info_provider),
8623            _ => {}
8624        }
8625        // Find the extension that this event could belong to
8626        let ext_info = ext_info_provider.get_from_event_code(event_code);
8627        match ext_info {
8628            #[cfg(feature = "damage")]
8629            Some((damage::X11_EXTENSION_NAME, ext_info)) => {
8630                match event_code - ext_info.first_event {
8631                    damage::NOTIFY_EVENT => Ok(Self::DamageNotify(TryParse::try_parse(event)?.0)),
8632                    _ => Ok(Self::Unknown(event.to_vec())),
8633                }
8634            }
8635            #[cfg(feature = "dri2")]
8636            Some((dri2::X11_EXTENSION_NAME, ext_info)) => {
8637                match event_code - ext_info.first_event {
8638                    dri2::BUFFER_SWAP_COMPLETE_EVENT => Ok(Self::Dri2BufferSwapComplete(TryParse::try_parse(event)?.0)),
8639                    dri2::INVALIDATE_BUFFERS_EVENT => Ok(Self::Dri2InvalidateBuffers(TryParse::try_parse(event)?.0)),
8640                    _ => Ok(Self::Unknown(event.to_vec())),
8641                }
8642            }
8643            #[cfg(feature = "glx")]
8644            Some((glx::X11_EXTENSION_NAME, ext_info)) => {
8645                match event_code - ext_info.first_event {
8646                    glx::BUFFER_SWAP_COMPLETE_EVENT => Ok(Self::GlxBufferSwapComplete(TryParse::try_parse(event)?.0)),
8647                    glx::PBUFFER_CLOBBER_EVENT => Ok(Self::GlxPbufferClobber(TryParse::try_parse(event)?.0)),
8648                    _ => Ok(Self::Unknown(event.to_vec())),
8649                }
8650            }
8651            #[cfg(feature = "present")]
8652            Some((present::X11_EXTENSION_NAME, ext_info)) => {
8653                match event_code - ext_info.first_event {
8654                    present::GENERIC_EVENT => Ok(Self::PresentGeneric(TryParse::try_parse(event)?.0)),
8655                    _ => Ok(Self::Unknown(event.to_vec())),
8656                }
8657            }
8658            #[cfg(feature = "randr")]
8659            Some((randr::X11_EXTENSION_NAME, ext_info)) => {
8660                match event_code - ext_info.first_event {
8661                    randr::NOTIFY_EVENT => Ok(Self::RandrNotify(TryParse::try_parse(event)?.0)),
8662                    randr::SCREEN_CHANGE_NOTIFY_EVENT => Ok(Self::RandrScreenChangeNotify(TryParse::try_parse(event)?.0)),
8663                    _ => Ok(Self::Unknown(event.to_vec())),
8664                }
8665            }
8666            #[cfg(feature = "screensaver")]
8667            Some((screensaver::X11_EXTENSION_NAME, ext_info)) => {
8668                match event_code - ext_info.first_event {
8669                    screensaver::NOTIFY_EVENT => Ok(Self::ScreensaverNotify(TryParse::try_parse(event)?.0)),
8670                    _ => Ok(Self::Unknown(event.to_vec())),
8671                }
8672            }
8673            #[cfg(feature = "shape")]
8674            Some((shape::X11_EXTENSION_NAME, ext_info)) => {
8675                match event_code - ext_info.first_event {
8676                    shape::NOTIFY_EVENT => Ok(Self::ShapeNotify(TryParse::try_parse(event)?.0)),
8677                    _ => Ok(Self::Unknown(event.to_vec())),
8678                }
8679            }
8680            #[cfg(feature = "shm")]
8681            Some((shm::X11_EXTENSION_NAME, ext_info)) => {
8682                match event_code - ext_info.first_event {
8683                    shm::COMPLETION_EVENT => Ok(Self::ShmCompletion(TryParse::try_parse(event)?.0)),
8684                    _ => Ok(Self::Unknown(event.to_vec())),
8685                }
8686            }
8687            #[cfg(feature = "sync")]
8688            Some((sync::X11_EXTENSION_NAME, ext_info)) => {
8689                match event_code - ext_info.first_event {
8690                    sync::ALARM_NOTIFY_EVENT => Ok(Self::SyncAlarmNotify(TryParse::try_parse(event)?.0)),
8691                    sync::COUNTER_NOTIFY_EVENT => Ok(Self::SyncCounterNotify(TryParse::try_parse(event)?.0)),
8692                    _ => Ok(Self::Unknown(event.to_vec())),
8693                }
8694            }
8695            #[cfg(feature = "xfixes")]
8696            Some((xfixes::X11_EXTENSION_NAME, ext_info)) => {
8697                match event_code - ext_info.first_event {
8698                    xfixes::CURSOR_NOTIFY_EVENT => Ok(Self::XfixesCursorNotify(TryParse::try_parse(event)?.0)),
8699                    xfixes::SELECTION_NOTIFY_EVENT => Ok(Self::XfixesSelectionNotify(TryParse::try_parse(event)?.0)),
8700                    _ => Ok(Self::Unknown(event.to_vec())),
8701                }
8702            }
8703            #[cfg(feature = "xinput")]
8704            Some((xinput::X11_EXTENSION_NAME, ext_info)) => {
8705                match event_code - ext_info.first_event {
8706                    xinput::CHANGE_DEVICE_NOTIFY_EVENT => Ok(Self::XinputChangeDeviceNotify(TryParse::try_parse(event)?.0)),
8707                    xinput::DEVICE_BUTTON_PRESS_EVENT => Ok(Self::XinputDeviceButtonPress(TryParse::try_parse(event)?.0)),
8708                    xinput::DEVICE_BUTTON_RELEASE_EVENT => Ok(Self::XinputDeviceButtonRelease(TryParse::try_parse(event)?.0)),
8709                    xinput::DEVICE_BUTTON_STATE_NOTIFY_EVENT => Ok(Self::XinputDeviceButtonStateNotify(TryParse::try_parse(event)?.0)),
8710                    xinput::DEVICE_FOCUS_IN_EVENT => Ok(Self::XinputDeviceFocusIn(TryParse::try_parse(event)?.0)),
8711                    xinput::DEVICE_FOCUS_OUT_EVENT => Ok(Self::XinputDeviceFocusOut(TryParse::try_parse(event)?.0)),
8712                    xinput::DEVICE_KEY_PRESS_EVENT => Ok(Self::XinputDeviceKeyPress(TryParse::try_parse(event)?.0)),
8713                    xinput::DEVICE_KEY_RELEASE_EVENT => Ok(Self::XinputDeviceKeyRelease(TryParse::try_parse(event)?.0)),
8714                    xinput::DEVICE_KEY_STATE_NOTIFY_EVENT => Ok(Self::XinputDeviceKeyStateNotify(TryParse::try_parse(event)?.0)),
8715                    xinput::DEVICE_MAPPING_NOTIFY_EVENT => Ok(Self::XinputDeviceMappingNotify(TryParse::try_parse(event)?.0)),
8716                    xinput::DEVICE_MOTION_NOTIFY_EVENT => Ok(Self::XinputDeviceMotionNotify(TryParse::try_parse(event)?.0)),
8717                    xinput::DEVICE_PRESENCE_NOTIFY_EVENT => Ok(Self::XinputDevicePresenceNotify(TryParse::try_parse(event)?.0)),
8718                    xinput::DEVICE_PROPERTY_NOTIFY_EVENT => Ok(Self::XinputDevicePropertyNotify(TryParse::try_parse(event)?.0)),
8719                    xinput::DEVICE_STATE_NOTIFY_EVENT => Ok(Self::XinputDeviceStateNotify(TryParse::try_parse(event)?.0)),
8720                    xinput::DEVICE_VALUATOR_EVENT => Ok(Self::XinputDeviceValuator(TryParse::try_parse(event)?.0)),
8721                    xinput::PROXIMITY_IN_EVENT => Ok(Self::XinputProximityIn(TryParse::try_parse(event)?.0)),
8722                    xinput::PROXIMITY_OUT_EVENT => Ok(Self::XinputProximityOut(TryParse::try_parse(event)?.0)),
8723                    _ => Ok(Self::Unknown(event.to_vec())),
8724                }
8725            }
8726            #[cfg(feature = "xkb")]
8727            Some((xkb::X11_EXTENSION_NAME, ext_info)) => {
8728                if event_code != ext_info.first_event {
8729                    return Ok(Self::Unknown(event.to_vec()));
8730                }
8731                match *event.get(1).ok_or(ParseError::InsufficientData)? {
8732                    xkb::ACCESS_X_NOTIFY_EVENT => Ok(Self::XkbAccessXNotify(TryParse::try_parse(event)?.0)),
8733                    xkb::ACTION_MESSAGE_EVENT => Ok(Self::XkbActionMessage(TryParse::try_parse(event)?.0)),
8734                    xkb::BELL_NOTIFY_EVENT => Ok(Self::XkbBellNotify(TryParse::try_parse(event)?.0)),
8735                    xkb::COMPAT_MAP_NOTIFY_EVENT => Ok(Self::XkbCompatMapNotify(TryParse::try_parse(event)?.0)),
8736                    xkb::CONTROLS_NOTIFY_EVENT => Ok(Self::XkbControlsNotify(TryParse::try_parse(event)?.0)),
8737                    xkb::EXTENSION_DEVICE_NOTIFY_EVENT => Ok(Self::XkbExtensionDeviceNotify(TryParse::try_parse(event)?.0)),
8738                    xkb::INDICATOR_MAP_NOTIFY_EVENT => Ok(Self::XkbIndicatorMapNotify(TryParse::try_parse(event)?.0)),
8739                    xkb::INDICATOR_STATE_NOTIFY_EVENT => Ok(Self::XkbIndicatorStateNotify(TryParse::try_parse(event)?.0)),
8740                    xkb::MAP_NOTIFY_EVENT => Ok(Self::XkbMapNotify(TryParse::try_parse(event)?.0)),
8741                    xkb::NAMES_NOTIFY_EVENT => Ok(Self::XkbNamesNotify(TryParse::try_parse(event)?.0)),
8742                    xkb::NEW_KEYBOARD_NOTIFY_EVENT => Ok(Self::XkbNewKeyboardNotify(TryParse::try_parse(event)?.0)),
8743                    xkb::STATE_NOTIFY_EVENT => Ok(Self::XkbStateNotify(TryParse::try_parse(event)?.0)),
8744                    _ => Ok(Self::Unknown(event.to_vec())),
8745                }
8746            }
8747            #[cfg(feature = "xprint")]
8748            Some((xprint::X11_EXTENSION_NAME, ext_info)) => {
8749                match event_code - ext_info.first_event {
8750                    xprint::ATTRIBUT_NOTIFY_EVENT => Ok(Self::XprintAttributNotify(TryParse::try_parse(event)?.0)),
8751                    xprint::NOTIFY_EVENT => Ok(Self::XprintNotify(TryParse::try_parse(event)?.0)),
8752                    _ => Ok(Self::Unknown(event.to_vec())),
8753                }
8754            }
8755            #[cfg(feature = "xv")]
8756            Some((xv::X11_EXTENSION_NAME, ext_info)) => {
8757                match event_code - ext_info.first_event {
8758                    xv::PORT_NOTIFY_EVENT => Ok(Self::XvPortNotify(TryParse::try_parse(event)?.0)),
8759                    xv::VIDEO_NOTIFY_EVENT => Ok(Self::XvVideoNotify(TryParse::try_parse(event)?.0)),
8760                    _ => Ok(Self::Unknown(event.to_vec())),
8761                }
8762            }
8763            _ => Ok(Self::Unknown(event.to_vec())),
8764        }
8765    }
8766
8767    #[allow(clippy::match_single_binding)]
8768    fn from_generic_event(
8769        event: &[u8],
8770        ext_info_provider: &dyn ExtInfoProvider,
8771    ) -> Result<Self, ParseError> {
8772        let ge_event = xproto::GeGenericEvent::try_parse(event)?.0;
8773        let ext_name = ext_info_provider
8774            .get_from_major_opcode(ge_event.extension)
8775            .map(|(name, _)| name);
8776        match ext_name {
8777            #[cfg(feature = "dpms")]
8778            Some(dpms::X11_EXTENSION_NAME) => {
8779                match ge_event.event_type {
8780                    dpms::INFO_NOTIFY_EVENT => Ok(Self::DpmsInfoNotify(TryParse::try_parse(event)?.0)),
8781                    _ => Ok(Self::Unknown(event.to_vec())),
8782                }
8783            }
8784            #[cfg(feature = "present")]
8785            Some(present::X11_EXTENSION_NAME) => {
8786                match ge_event.event_type {
8787                    present::COMPLETE_NOTIFY_EVENT => Ok(Self::PresentCompleteNotify(TryParse::try_parse(event)?.0)),
8788                    present::CONFIGURE_NOTIFY_EVENT => Ok(Self::PresentConfigureNotify(TryParse::try_parse(event)?.0)),
8789                    present::IDLE_NOTIFY_EVENT => Ok(Self::PresentIdleNotify(TryParse::try_parse(event)?.0)),
8790                    present::REDIRECT_NOTIFY_EVENT => Ok(Self::PresentRedirectNotify(TryParse::try_parse(event)?.0)),
8791                    _ => Ok(Self::Unknown(event.to_vec())),
8792                }
8793            }
8794            #[cfg(feature = "xinput")]
8795            Some(xinput::X11_EXTENSION_NAME) => {
8796                match ge_event.event_type {
8797                    xinput::BARRIER_HIT_EVENT => Ok(Self::XinputBarrierHit(TryParse::try_parse(event)?.0)),
8798                    xinput::BARRIER_LEAVE_EVENT => Ok(Self::XinputBarrierLeave(TryParse::try_parse(event)?.0)),
8799                    xinput::BUTTON_PRESS_EVENT => Ok(Self::XinputButtonPress(TryParse::try_parse(event)?.0)),
8800                    xinput::BUTTON_RELEASE_EVENT => Ok(Self::XinputButtonRelease(TryParse::try_parse(event)?.0)),
8801                    xinput::DEVICE_CHANGED_EVENT => Ok(Self::XinputDeviceChanged(TryParse::try_parse(event)?.0)),
8802                    xinput::ENTER_EVENT => Ok(Self::XinputEnter(TryParse::try_parse(event)?.0)),
8803                    xinput::FOCUS_IN_EVENT => Ok(Self::XinputFocusIn(TryParse::try_parse(event)?.0)),
8804                    xinput::FOCUS_OUT_EVENT => Ok(Self::XinputFocusOut(TryParse::try_parse(event)?.0)),
8805                    xinput::GESTURE_PINCH_BEGIN_EVENT => Ok(Self::XinputGesturePinchBegin(TryParse::try_parse(event)?.0)),
8806                    xinput::GESTURE_PINCH_END_EVENT => Ok(Self::XinputGesturePinchEnd(TryParse::try_parse(event)?.0)),
8807                    xinput::GESTURE_PINCH_UPDATE_EVENT => Ok(Self::XinputGesturePinchUpdate(TryParse::try_parse(event)?.0)),
8808                    xinput::GESTURE_SWIPE_BEGIN_EVENT => Ok(Self::XinputGestureSwipeBegin(TryParse::try_parse(event)?.0)),
8809                    xinput::GESTURE_SWIPE_END_EVENT => Ok(Self::XinputGestureSwipeEnd(TryParse::try_parse(event)?.0)),
8810                    xinput::GESTURE_SWIPE_UPDATE_EVENT => Ok(Self::XinputGestureSwipeUpdate(TryParse::try_parse(event)?.0)),
8811                    xinput::HIERARCHY_EVENT => Ok(Self::XinputHierarchy(TryParse::try_parse(event)?.0)),
8812                    xinput::KEY_PRESS_EVENT => Ok(Self::XinputKeyPress(TryParse::try_parse(event)?.0)),
8813                    xinput::KEY_RELEASE_EVENT => Ok(Self::XinputKeyRelease(TryParse::try_parse(event)?.0)),
8814                    xinput::LEAVE_EVENT => Ok(Self::XinputLeave(TryParse::try_parse(event)?.0)),
8815                    xinput::MOTION_EVENT => Ok(Self::XinputMotion(TryParse::try_parse(event)?.0)),
8816                    xinput::PROPERTY_EVENT => Ok(Self::XinputProperty(TryParse::try_parse(event)?.0)),
8817                    xinput::RAW_BUTTON_PRESS_EVENT => Ok(Self::XinputRawButtonPress(TryParse::try_parse(event)?.0)),
8818                    xinput::RAW_BUTTON_RELEASE_EVENT => Ok(Self::XinputRawButtonRelease(TryParse::try_parse(event)?.0)),
8819                    xinput::RAW_KEY_PRESS_EVENT => Ok(Self::XinputRawKeyPress(TryParse::try_parse(event)?.0)),
8820                    xinput::RAW_KEY_RELEASE_EVENT => Ok(Self::XinputRawKeyRelease(TryParse::try_parse(event)?.0)),
8821                    xinput::RAW_MOTION_EVENT => Ok(Self::XinputRawMotion(TryParse::try_parse(event)?.0)),
8822                    xinput::RAW_TOUCH_BEGIN_EVENT => Ok(Self::XinputRawTouchBegin(TryParse::try_parse(event)?.0)),
8823                    xinput::RAW_TOUCH_END_EVENT => Ok(Self::XinputRawTouchEnd(TryParse::try_parse(event)?.0)),
8824                    xinput::RAW_TOUCH_UPDATE_EVENT => Ok(Self::XinputRawTouchUpdate(TryParse::try_parse(event)?.0)),
8825                    xinput::TOUCH_BEGIN_EVENT => Ok(Self::XinputTouchBegin(TryParse::try_parse(event)?.0)),
8826                    xinput::TOUCH_END_EVENT => Ok(Self::XinputTouchEnd(TryParse::try_parse(event)?.0)),
8827                    xinput::TOUCH_OWNERSHIP_EVENT => Ok(Self::XinputTouchOwnership(TryParse::try_parse(event)?.0)),
8828                    xinput::TOUCH_UPDATE_EVENT => Ok(Self::XinputTouchUpdate(TryParse::try_parse(event)?.0)),
8829                    _ => Ok(Self::Unknown(event.to_vec())),
8830                }
8831            }
8832            _ => Ok(Self::Unknown(event.to_vec())),
8833        }
8834    }
8835
8836    /// Get the sequence number contained in this X11 event
8837    pub fn wire_sequence_number(&self) -> Option<u16> {
8838        match self {
8839            Event::Unknown(value) => sequence_number(value).ok(),
8840            Event::Error(value) => Some(value.sequence),
8841            Event::ButtonPress(value) => Some(value.sequence),
8842            Event::ButtonRelease(value) => Some(value.sequence),
8843            Event::CirculateNotify(value) => Some(value.sequence),
8844            Event::CirculateRequest(value) => Some(value.sequence),
8845            Event::ClientMessage(value) => Some(value.sequence),
8846            Event::ColormapNotify(value) => Some(value.sequence),
8847            Event::ConfigureNotify(value) => Some(value.sequence),
8848            Event::ConfigureRequest(value) => Some(value.sequence),
8849            Event::CreateNotify(value) => Some(value.sequence),
8850            Event::DestroyNotify(value) => Some(value.sequence),
8851            Event::EnterNotify(value) => Some(value.sequence),
8852            Event::Expose(value) => Some(value.sequence),
8853            Event::FocusIn(value) => Some(value.sequence),
8854            Event::FocusOut(value) => Some(value.sequence),
8855            Event::GeGeneric(value) => Some(value.sequence),
8856            Event::GraphicsExposure(value) => Some(value.sequence),
8857            Event::GravityNotify(value) => Some(value.sequence),
8858            Event::KeyPress(value) => Some(value.sequence),
8859            Event::KeyRelease(value) => Some(value.sequence),
8860            Event::KeymapNotify(_) => None,
8861            Event::LeaveNotify(value) => Some(value.sequence),
8862            Event::MapNotify(value) => Some(value.sequence),
8863            Event::MapRequest(value) => Some(value.sequence),
8864            Event::MappingNotify(value) => Some(value.sequence),
8865            Event::MotionNotify(value) => Some(value.sequence),
8866            Event::NoExposure(value) => Some(value.sequence),
8867            Event::PropertyNotify(value) => Some(value.sequence),
8868            Event::ReparentNotify(value) => Some(value.sequence),
8869            Event::ResizeRequest(value) => Some(value.sequence),
8870            Event::SelectionClear(value) => Some(value.sequence),
8871            Event::SelectionNotify(value) => Some(value.sequence),
8872            Event::SelectionRequest(value) => Some(value.sequence),
8873            Event::UnmapNotify(value) => Some(value.sequence),
8874            Event::VisibilityNotify(value) => Some(value.sequence),
8875            #[cfg(feature = "damage")]
8876            Event::DamageNotify(value) => Some(value.sequence),
8877            #[cfg(feature = "dpms")]
8878            Event::DpmsInfoNotify(value) => Some(value.sequence),
8879            #[cfg(feature = "dri2")]
8880            Event::Dri2BufferSwapComplete(value) => Some(value.sequence),
8881            #[cfg(feature = "dri2")]
8882            Event::Dri2InvalidateBuffers(value) => Some(value.sequence),
8883            #[cfg(feature = "glx")]
8884            Event::GlxBufferSwapComplete(value) => Some(value.sequence),
8885            #[cfg(feature = "glx")]
8886            Event::GlxPbufferClobber(value) => Some(value.sequence),
8887            #[cfg(feature = "present")]
8888            Event::PresentCompleteNotify(value) => Some(value.sequence),
8889            #[cfg(feature = "present")]
8890            Event::PresentConfigureNotify(value) => Some(value.sequence),
8891            #[cfg(feature = "present")]
8892            Event::PresentGeneric(value) => Some(value.sequence),
8893            #[cfg(feature = "present")]
8894            Event::PresentIdleNotify(value) => Some(value.sequence),
8895            #[cfg(feature = "present")]
8896            Event::PresentRedirectNotify(value) => Some(value.sequence),
8897            #[cfg(feature = "randr")]
8898            Event::RandrNotify(value) => Some(value.sequence),
8899            #[cfg(feature = "randr")]
8900            Event::RandrScreenChangeNotify(value) => Some(value.sequence),
8901            #[cfg(feature = "screensaver")]
8902            Event::ScreensaverNotify(value) => Some(value.sequence),
8903            #[cfg(feature = "shape")]
8904            Event::ShapeNotify(value) => Some(value.sequence),
8905            #[cfg(feature = "shm")]
8906            Event::ShmCompletion(value) => Some(value.sequence),
8907            #[cfg(feature = "sync")]
8908            Event::SyncAlarmNotify(value) => Some(value.sequence),
8909            #[cfg(feature = "sync")]
8910            Event::SyncCounterNotify(value) => Some(value.sequence),
8911            #[cfg(feature = "xfixes")]
8912            Event::XfixesCursorNotify(value) => Some(value.sequence),
8913            #[cfg(feature = "xfixes")]
8914            Event::XfixesSelectionNotify(value) => Some(value.sequence),
8915            #[cfg(feature = "xinput")]
8916            Event::XinputBarrierHit(value) => Some(value.sequence),
8917            #[cfg(feature = "xinput")]
8918            Event::XinputBarrierLeave(value) => Some(value.sequence),
8919            #[cfg(feature = "xinput")]
8920            Event::XinputButtonPress(value) => Some(value.sequence),
8921            #[cfg(feature = "xinput")]
8922            Event::XinputButtonRelease(value) => Some(value.sequence),
8923            #[cfg(feature = "xinput")]
8924            Event::XinputChangeDeviceNotify(value) => Some(value.sequence),
8925            #[cfg(feature = "xinput")]
8926            Event::XinputDeviceButtonPress(value) => Some(value.sequence),
8927            #[cfg(feature = "xinput")]
8928            Event::XinputDeviceButtonRelease(value) => Some(value.sequence),
8929            #[cfg(feature = "xinput")]
8930            Event::XinputDeviceButtonStateNotify(value) => Some(value.sequence),
8931            #[cfg(feature = "xinput")]
8932            Event::XinputDeviceChanged(value) => Some(value.sequence),
8933            #[cfg(feature = "xinput")]
8934            Event::XinputDeviceFocusIn(value) => Some(value.sequence),
8935            #[cfg(feature = "xinput")]
8936            Event::XinputDeviceFocusOut(value) => Some(value.sequence),
8937            #[cfg(feature = "xinput")]
8938            Event::XinputDeviceKeyPress(value) => Some(value.sequence),
8939            #[cfg(feature = "xinput")]
8940            Event::XinputDeviceKeyRelease(value) => Some(value.sequence),
8941            #[cfg(feature = "xinput")]
8942            Event::XinputDeviceKeyStateNotify(value) => Some(value.sequence),
8943            #[cfg(feature = "xinput")]
8944            Event::XinputDeviceMappingNotify(value) => Some(value.sequence),
8945            #[cfg(feature = "xinput")]
8946            Event::XinputDeviceMotionNotify(value) => Some(value.sequence),
8947            #[cfg(feature = "xinput")]
8948            Event::XinputDevicePresenceNotify(value) => Some(value.sequence),
8949            #[cfg(feature = "xinput")]
8950            Event::XinputDevicePropertyNotify(value) => Some(value.sequence),
8951            #[cfg(feature = "xinput")]
8952            Event::XinputDeviceStateNotify(value) => Some(value.sequence),
8953            #[cfg(feature = "xinput")]
8954            Event::XinputDeviceValuator(value) => Some(value.sequence),
8955            #[cfg(feature = "xinput")]
8956            Event::XinputEnter(value) => Some(value.sequence),
8957            #[cfg(feature = "xinput")]
8958            Event::XinputFocusIn(value) => Some(value.sequence),
8959            #[cfg(feature = "xinput")]
8960            Event::XinputFocusOut(value) => Some(value.sequence),
8961            #[cfg(feature = "xinput")]
8962            Event::XinputGesturePinchBegin(value) => Some(value.sequence),
8963            #[cfg(feature = "xinput")]
8964            Event::XinputGesturePinchEnd(value) => Some(value.sequence),
8965            #[cfg(feature = "xinput")]
8966            Event::XinputGesturePinchUpdate(value) => Some(value.sequence),
8967            #[cfg(feature = "xinput")]
8968            Event::XinputGestureSwipeBegin(value) => Some(value.sequence),
8969            #[cfg(feature = "xinput")]
8970            Event::XinputGestureSwipeEnd(value) => Some(value.sequence),
8971            #[cfg(feature = "xinput")]
8972            Event::XinputGestureSwipeUpdate(value) => Some(value.sequence),
8973            #[cfg(feature = "xinput")]
8974            Event::XinputHierarchy(value) => Some(value.sequence),
8975            #[cfg(feature = "xinput")]
8976            Event::XinputKeyPress(value) => Some(value.sequence),
8977            #[cfg(feature = "xinput")]
8978            Event::XinputKeyRelease(value) => Some(value.sequence),
8979            #[cfg(feature = "xinput")]
8980            Event::XinputLeave(value) => Some(value.sequence),
8981            #[cfg(feature = "xinput")]
8982            Event::XinputMotion(value) => Some(value.sequence),
8983            #[cfg(feature = "xinput")]
8984            Event::XinputProperty(value) => Some(value.sequence),
8985            #[cfg(feature = "xinput")]
8986            Event::XinputProximityIn(value) => Some(value.sequence),
8987            #[cfg(feature = "xinput")]
8988            Event::XinputProximityOut(value) => Some(value.sequence),
8989            #[cfg(feature = "xinput")]
8990            Event::XinputRawButtonPress(value) => Some(value.sequence),
8991            #[cfg(feature = "xinput")]
8992            Event::XinputRawButtonRelease(value) => Some(value.sequence),
8993            #[cfg(feature = "xinput")]
8994            Event::XinputRawKeyPress(value) => Some(value.sequence),
8995            #[cfg(feature = "xinput")]
8996            Event::XinputRawKeyRelease(value) => Some(value.sequence),
8997            #[cfg(feature = "xinput")]
8998            Event::XinputRawMotion(value) => Some(value.sequence),
8999            #[cfg(feature = "xinput")]
9000            Event::XinputRawTouchBegin(value) => Some(value.sequence),
9001            #[cfg(feature = "xinput")]
9002            Event::XinputRawTouchEnd(value) => Some(value.sequence),
9003            #[cfg(feature = "xinput")]
9004            Event::XinputRawTouchUpdate(value) => Some(value.sequence),
9005            #[cfg(feature = "xinput")]
9006            Event::XinputTouchBegin(value) => Some(value.sequence),
9007            #[cfg(feature = "xinput")]
9008            Event::XinputTouchEnd(value) => Some(value.sequence),
9009            #[cfg(feature = "xinput")]
9010            Event::XinputTouchOwnership(value) => Some(value.sequence),
9011            #[cfg(feature = "xinput")]
9012            Event::XinputTouchUpdate(value) => Some(value.sequence),
9013            #[cfg(feature = "xkb")]
9014            Event::XkbAccessXNotify(value) => Some(value.sequence),
9015            #[cfg(feature = "xkb")]
9016            Event::XkbActionMessage(value) => Some(value.sequence),
9017            #[cfg(feature = "xkb")]
9018            Event::XkbBellNotify(value) => Some(value.sequence),
9019            #[cfg(feature = "xkb")]
9020            Event::XkbCompatMapNotify(value) => Some(value.sequence),
9021            #[cfg(feature = "xkb")]
9022            Event::XkbControlsNotify(value) => Some(value.sequence),
9023            #[cfg(feature = "xkb")]
9024            Event::XkbExtensionDeviceNotify(value) => Some(value.sequence),
9025            #[cfg(feature = "xkb")]
9026            Event::XkbIndicatorMapNotify(value) => Some(value.sequence),
9027            #[cfg(feature = "xkb")]
9028            Event::XkbIndicatorStateNotify(value) => Some(value.sequence),
9029            #[cfg(feature = "xkb")]
9030            Event::XkbMapNotify(value) => Some(value.sequence),
9031            #[cfg(feature = "xkb")]
9032            Event::XkbNamesNotify(value) => Some(value.sequence),
9033            #[cfg(feature = "xkb")]
9034            Event::XkbNewKeyboardNotify(value) => Some(value.sequence),
9035            #[cfg(feature = "xkb")]
9036            Event::XkbStateNotify(value) => Some(value.sequence),
9037            #[cfg(feature = "xprint")]
9038            Event::XprintAttributNotify(value) => Some(value.sequence),
9039            #[cfg(feature = "xprint")]
9040            Event::XprintNotify(value) => Some(value.sequence),
9041            #[cfg(feature = "xv")]
9042            Event::XvPortNotify(value) => Some(value.sequence),
9043            #[cfg(feature = "xv")]
9044            Event::XvVideoNotify(value) => Some(value.sequence),
9045        }
9046    }
9047
9048    /// Get the raw response type of this X11 event
9049    ///
9050    /// Response types have seven bits in X11. The eight bit indicates whether
9051    /// the packet was generated through the `SendEvent` request. This function
9052    /// returns all eight bits.
9053    ///
9054    /// See also the `response_type()`, `server_generated()` and `sent_event()` methods.
9055    pub fn raw_response_type(&self) -> u8 {
9056        match self {
9057            Event::Unknown(value) => response_type(value).unwrap(),
9058            Event::Error(_) => 0,
9059            Event::ButtonPress(value) => value.response_type,
9060            Event::ButtonRelease(value) => value.response_type,
9061            Event::CirculateNotify(value) => value.response_type,
9062            Event::CirculateRequest(value) => value.response_type,
9063            Event::ClientMessage(value) => value.response_type,
9064            Event::ColormapNotify(value) => value.response_type,
9065            Event::ConfigureNotify(value) => value.response_type,
9066            Event::ConfigureRequest(value) => value.response_type,
9067            Event::CreateNotify(value) => value.response_type,
9068            Event::DestroyNotify(value) => value.response_type,
9069            Event::EnterNotify(value) => value.response_type,
9070            Event::Expose(value) => value.response_type,
9071            Event::FocusIn(value) => value.response_type,
9072            Event::FocusOut(value) => value.response_type,
9073            Event::GeGeneric(value) => value.response_type,
9074            Event::GraphicsExposure(value) => value.response_type,
9075            Event::GravityNotify(value) => value.response_type,
9076            Event::KeyPress(value) => value.response_type,
9077            Event::KeyRelease(value) => value.response_type,
9078            Event::KeymapNotify(value) => value.response_type,
9079            Event::LeaveNotify(value) => value.response_type,
9080            Event::MapNotify(value) => value.response_type,
9081            Event::MapRequest(value) => value.response_type,
9082            Event::MappingNotify(value) => value.response_type,
9083            Event::MotionNotify(value) => value.response_type,
9084            Event::NoExposure(value) => value.response_type,
9085            Event::PropertyNotify(value) => value.response_type,
9086            Event::ReparentNotify(value) => value.response_type,
9087            Event::ResizeRequest(value) => value.response_type,
9088            Event::SelectionClear(value) => value.response_type,
9089            Event::SelectionNotify(value) => value.response_type,
9090            Event::SelectionRequest(value) => value.response_type,
9091            Event::UnmapNotify(value) => value.response_type,
9092            Event::VisibilityNotify(value) => value.response_type,
9093            #[cfg(feature = "damage")]
9094            Event::DamageNotify(value) => value.response_type,
9095            #[cfg(feature = "dpms")]
9096            Event::DpmsInfoNotify(value) => value.response_type,
9097            #[cfg(feature = "dri2")]
9098            Event::Dri2BufferSwapComplete(value) => value.response_type,
9099            #[cfg(feature = "dri2")]
9100            Event::Dri2InvalidateBuffers(value) => value.response_type,
9101            #[cfg(feature = "glx")]
9102            Event::GlxBufferSwapComplete(value) => value.response_type,
9103            #[cfg(feature = "glx")]
9104            Event::GlxPbufferClobber(value) => value.response_type,
9105            #[cfg(feature = "present")]
9106            Event::PresentCompleteNotify(value) => value.response_type,
9107            #[cfg(feature = "present")]
9108            Event::PresentConfigureNotify(value) => value.response_type,
9109            #[cfg(feature = "present")]
9110            Event::PresentGeneric(value) => value.response_type,
9111            #[cfg(feature = "present")]
9112            Event::PresentIdleNotify(value) => value.response_type,
9113            #[cfg(feature = "present")]
9114            Event::PresentRedirectNotify(value) => value.response_type,
9115            #[cfg(feature = "randr")]
9116            Event::RandrNotify(value) => value.response_type,
9117            #[cfg(feature = "randr")]
9118            Event::RandrScreenChangeNotify(value) => value.response_type,
9119            #[cfg(feature = "screensaver")]
9120            Event::ScreensaverNotify(value) => value.response_type,
9121            #[cfg(feature = "shape")]
9122            Event::ShapeNotify(value) => value.response_type,
9123            #[cfg(feature = "shm")]
9124            Event::ShmCompletion(value) => value.response_type,
9125            #[cfg(feature = "sync")]
9126            Event::SyncAlarmNotify(value) => value.response_type,
9127            #[cfg(feature = "sync")]
9128            Event::SyncCounterNotify(value) => value.response_type,
9129            #[cfg(feature = "xfixes")]
9130            Event::XfixesCursorNotify(value) => value.response_type,
9131            #[cfg(feature = "xfixes")]
9132            Event::XfixesSelectionNotify(value) => value.response_type,
9133            #[cfg(feature = "xinput")]
9134            Event::XinputBarrierHit(value) => value.response_type,
9135            #[cfg(feature = "xinput")]
9136            Event::XinputBarrierLeave(value) => value.response_type,
9137            #[cfg(feature = "xinput")]
9138            Event::XinputButtonPress(value) => value.response_type,
9139            #[cfg(feature = "xinput")]
9140            Event::XinputButtonRelease(value) => value.response_type,
9141            #[cfg(feature = "xinput")]
9142            Event::XinputChangeDeviceNotify(value) => value.response_type,
9143            #[cfg(feature = "xinput")]
9144            Event::XinputDeviceButtonPress(value) => value.response_type,
9145            #[cfg(feature = "xinput")]
9146            Event::XinputDeviceButtonRelease(value) => value.response_type,
9147            #[cfg(feature = "xinput")]
9148            Event::XinputDeviceButtonStateNotify(value) => value.response_type,
9149            #[cfg(feature = "xinput")]
9150            Event::XinputDeviceChanged(value) => value.response_type,
9151            #[cfg(feature = "xinput")]
9152            Event::XinputDeviceFocusIn(value) => value.response_type,
9153            #[cfg(feature = "xinput")]
9154            Event::XinputDeviceFocusOut(value) => value.response_type,
9155            #[cfg(feature = "xinput")]
9156            Event::XinputDeviceKeyPress(value) => value.response_type,
9157            #[cfg(feature = "xinput")]
9158            Event::XinputDeviceKeyRelease(value) => value.response_type,
9159            #[cfg(feature = "xinput")]
9160            Event::XinputDeviceKeyStateNotify(value) => value.response_type,
9161            #[cfg(feature = "xinput")]
9162            Event::XinputDeviceMappingNotify(value) => value.response_type,
9163            #[cfg(feature = "xinput")]
9164            Event::XinputDeviceMotionNotify(value) => value.response_type,
9165            #[cfg(feature = "xinput")]
9166            Event::XinputDevicePresenceNotify(value) => value.response_type,
9167            #[cfg(feature = "xinput")]
9168            Event::XinputDevicePropertyNotify(value) => value.response_type,
9169            #[cfg(feature = "xinput")]
9170            Event::XinputDeviceStateNotify(value) => value.response_type,
9171            #[cfg(feature = "xinput")]
9172            Event::XinputDeviceValuator(value) => value.response_type,
9173            #[cfg(feature = "xinput")]
9174            Event::XinputEnter(value) => value.response_type,
9175            #[cfg(feature = "xinput")]
9176            Event::XinputFocusIn(value) => value.response_type,
9177            #[cfg(feature = "xinput")]
9178            Event::XinputFocusOut(value) => value.response_type,
9179            #[cfg(feature = "xinput")]
9180            Event::XinputGesturePinchBegin(value) => value.response_type,
9181            #[cfg(feature = "xinput")]
9182            Event::XinputGesturePinchEnd(value) => value.response_type,
9183            #[cfg(feature = "xinput")]
9184            Event::XinputGesturePinchUpdate(value) => value.response_type,
9185            #[cfg(feature = "xinput")]
9186            Event::XinputGestureSwipeBegin(value) => value.response_type,
9187            #[cfg(feature = "xinput")]
9188            Event::XinputGestureSwipeEnd(value) => value.response_type,
9189            #[cfg(feature = "xinput")]
9190            Event::XinputGestureSwipeUpdate(value) => value.response_type,
9191            #[cfg(feature = "xinput")]
9192            Event::XinputHierarchy(value) => value.response_type,
9193            #[cfg(feature = "xinput")]
9194            Event::XinputKeyPress(value) => value.response_type,
9195            #[cfg(feature = "xinput")]
9196            Event::XinputKeyRelease(value) => value.response_type,
9197            #[cfg(feature = "xinput")]
9198            Event::XinputLeave(value) => value.response_type,
9199            #[cfg(feature = "xinput")]
9200            Event::XinputMotion(value) => value.response_type,
9201            #[cfg(feature = "xinput")]
9202            Event::XinputProperty(value) => value.response_type,
9203            #[cfg(feature = "xinput")]
9204            Event::XinputProximityIn(value) => value.response_type,
9205            #[cfg(feature = "xinput")]
9206            Event::XinputProximityOut(value) => value.response_type,
9207            #[cfg(feature = "xinput")]
9208            Event::XinputRawButtonPress(value) => value.response_type,
9209            #[cfg(feature = "xinput")]
9210            Event::XinputRawButtonRelease(value) => value.response_type,
9211            #[cfg(feature = "xinput")]
9212            Event::XinputRawKeyPress(value) => value.response_type,
9213            #[cfg(feature = "xinput")]
9214            Event::XinputRawKeyRelease(value) => value.response_type,
9215            #[cfg(feature = "xinput")]
9216            Event::XinputRawMotion(value) => value.response_type,
9217            #[cfg(feature = "xinput")]
9218            Event::XinputRawTouchBegin(value) => value.response_type,
9219            #[cfg(feature = "xinput")]
9220            Event::XinputRawTouchEnd(value) => value.response_type,
9221            #[cfg(feature = "xinput")]
9222            Event::XinputRawTouchUpdate(value) => value.response_type,
9223            #[cfg(feature = "xinput")]
9224            Event::XinputTouchBegin(value) => value.response_type,
9225            #[cfg(feature = "xinput")]
9226            Event::XinputTouchEnd(value) => value.response_type,
9227            #[cfg(feature = "xinput")]
9228            Event::XinputTouchOwnership(value) => value.response_type,
9229            #[cfg(feature = "xinput")]
9230            Event::XinputTouchUpdate(value) => value.response_type,
9231            #[cfg(feature = "xkb")]
9232            Event::XkbAccessXNotify(value) => value.response_type,
9233            #[cfg(feature = "xkb")]
9234            Event::XkbActionMessage(value) => value.response_type,
9235            #[cfg(feature = "xkb")]
9236            Event::XkbBellNotify(value) => value.response_type,
9237            #[cfg(feature = "xkb")]
9238            Event::XkbCompatMapNotify(value) => value.response_type,
9239            #[cfg(feature = "xkb")]
9240            Event::XkbControlsNotify(value) => value.response_type,
9241            #[cfg(feature = "xkb")]
9242            Event::XkbExtensionDeviceNotify(value) => value.response_type,
9243            #[cfg(feature = "xkb")]
9244            Event::XkbIndicatorMapNotify(value) => value.response_type,
9245            #[cfg(feature = "xkb")]
9246            Event::XkbIndicatorStateNotify(value) => value.response_type,
9247            #[cfg(feature = "xkb")]
9248            Event::XkbMapNotify(value) => value.response_type,
9249            #[cfg(feature = "xkb")]
9250            Event::XkbNamesNotify(value) => value.response_type,
9251            #[cfg(feature = "xkb")]
9252            Event::XkbNewKeyboardNotify(value) => value.response_type,
9253            #[cfg(feature = "xkb")]
9254            Event::XkbStateNotify(value) => value.response_type,
9255            #[cfg(feature = "xprint")]
9256            Event::XprintAttributNotify(value) => value.response_type,
9257            #[cfg(feature = "xprint")]
9258            Event::XprintNotify(value) => value.response_type,
9259            #[cfg(feature = "xv")]
9260            Event::XvPortNotify(value) => value.response_type,
9261            #[cfg(feature = "xv")]
9262            Event::XvVideoNotify(value) => value.response_type,
9263        }
9264    }
9265
9266    /// Get the response type of this X11 event
9267    pub fn response_type(&self) -> u8 {
9268        self.raw_response_type() & 0x7f
9269    }
9270
9271    /// Was this event generated by the X11 server?
9272    ///
9273    /// If this function returns true, then this event comes from the X11 server.
9274    /// Otherwise, it was sent from another client via the `SendEvent` request.
9275    pub fn server_generated(&self) -> bool {
9276        self.raw_response_type() & 0x80 == 0
9277    }
9278
9279    /// Was this event generated by another X11 client?
9280    ///
9281    /// If this function returns true, then this event comes from another client via
9282    /// the `SendEvent` request. Otherwise, it was generated by the X11 server.
9283    pub fn sent_event(&self) -> bool {
9284        self.raw_response_type() & 0x80 != 0
9285    }
9286}
9287
9288/// Get the response type out of the raw bytes of an X11 error or event.
9289fn response_type(raw_bytes: &[u8]) -> Result<u8, ParseError> {
9290    raw_bytes.first()
9291        .map(|x| x & 0x7f)
9292        .ok_or(ParseError::InsufficientData)
9293}
9294
9295/// Get the sequence number out of an X11 packet.
9296fn sequence_number(raw_bytes: &[u8]) -> Result<u16, ParseError> {
9297    raw_bytes.get(2..4)
9298        .map(|b| u16::from_ne_bytes(b.try_into().unwrap()))
9299        .ok_or(ParseError::InsufficientData)
9300}