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 use std::borrow::Cow;
10 use std::convert::TryInto;
11 use crate::errors::ParseError;
12 use crate::utils::RawFdContainer;
13 use crate::x11_utils::{TryParse, X11Error};
14 use crate::x11_utils::{ExtInfoProvider, ReplyParsingFunction, Request as RequestTrait, RequestHeader};
15 
16 pub mod xproto;
17 pub mod bigreq;
18 #[cfg(feature = "composite")]
19 pub mod composite;
20 #[cfg(feature = "damage")]
21 pub mod damage;
22 #[cfg(feature = "dpms")]
23 pub mod dpms;
24 #[cfg(feature = "dri2")]
25 pub mod dri2;
26 #[cfg(feature = "dri3")]
27 pub mod dri3;
28 pub mod ge;
29 #[cfg(feature = "glx")]
30 pub mod glx;
31 #[cfg(feature = "present")]
32 pub mod present;
33 #[cfg(feature = "randr")]
34 pub mod randr;
35 #[cfg(feature = "record")]
36 pub mod record;
37 #[cfg(feature = "render")]
38 pub mod render;
39 #[cfg(feature = "res")]
40 pub mod res;
41 #[cfg(feature = "screensaver")]
42 pub mod screensaver;
43 #[cfg(feature = "shape")]
44 pub mod shape;
45 #[cfg(feature = "shm")]
46 pub mod shm;
47 #[cfg(feature = "sync")]
48 pub mod sync;
49 pub mod xc_misc;
50 #[cfg(feature = "xevie")]
51 pub mod xevie;
52 #[cfg(feature = "xf86dri")]
53 pub mod xf86dri;
54 #[cfg(feature = "xf86vidmode")]
55 pub mod xf86vidmode;
56 #[cfg(feature = "xfixes")]
57 pub mod xfixes;
58 #[cfg(feature = "xinerama")]
59 pub mod xinerama;
60 #[cfg(feature = "xinput")]
61 pub mod xinput;
62 #[cfg(feature = "xkb")]
63 pub mod xkb;
64 #[cfg(feature = "xprint")]
65 pub mod xprint;
66 #[cfg(feature = "xselinux")]
67 pub mod xselinux;
68 #[cfg(feature = "xtest")]
69 pub mod xtest;
70 #[cfg(feature = "xv")]
71 pub mod xv;
72 #[cfg(feature = "xvmc")]
73 pub mod xvmc;
74 
75 /// Enumeration of all possible X11 requests.
76 #[derive(Debug)]
77 #[allow(clippy::large_enum_variant)]
78 #[non_exhaustive]
79 pub enum Request<'input> {
80     Unknown(RequestHeader, Cow<'input, [u8]>),
81     CreateWindow(xproto::CreateWindowRequest<'input>),
82     ChangeWindowAttributes(xproto::ChangeWindowAttributesRequest<'input>),
83     GetWindowAttributes(xproto::GetWindowAttributesRequest),
84     DestroyWindow(xproto::DestroyWindowRequest),
85     DestroySubwindows(xproto::DestroySubwindowsRequest),
86     ChangeSaveSet(xproto::ChangeSaveSetRequest),
87     ReparentWindow(xproto::ReparentWindowRequest),
88     MapWindow(xproto::MapWindowRequest),
89     MapSubwindows(xproto::MapSubwindowsRequest),
90     UnmapWindow(xproto::UnmapWindowRequest),
91     UnmapSubwindows(xproto::UnmapSubwindowsRequest),
92     ConfigureWindow(xproto::ConfigureWindowRequest<'input>),
93     CirculateWindow(xproto::CirculateWindowRequest),
94     GetGeometry(xproto::GetGeometryRequest),
95     QueryTree(xproto::QueryTreeRequest),
96     InternAtom(xproto::InternAtomRequest<'input>),
97     GetAtomName(xproto::GetAtomNameRequest),
98     ChangeProperty(xproto::ChangePropertyRequest<'input>),
99     DeleteProperty(xproto::DeletePropertyRequest),
100     GetProperty(xproto::GetPropertyRequest),
101     ListProperties(xproto::ListPropertiesRequest),
102     SetSelectionOwner(xproto::SetSelectionOwnerRequest),
103     GetSelectionOwner(xproto::GetSelectionOwnerRequest),
104     ConvertSelection(xproto::ConvertSelectionRequest),
105     SendEvent(xproto::SendEventRequest<'input>),
106     GrabPointer(xproto::GrabPointerRequest),
107     UngrabPointer(xproto::UngrabPointerRequest),
108     GrabButton(xproto::GrabButtonRequest),
109     UngrabButton(xproto::UngrabButtonRequest),
110     ChangeActivePointerGrab(xproto::ChangeActivePointerGrabRequest),
111     GrabKeyboard(xproto::GrabKeyboardRequest),
112     UngrabKeyboard(xproto::UngrabKeyboardRequest),
113     GrabKey(xproto::GrabKeyRequest),
114     UngrabKey(xproto::UngrabKeyRequest),
115     AllowEvents(xproto::AllowEventsRequest),
116     GrabServer(xproto::GrabServerRequest),
117     UngrabServer(xproto::UngrabServerRequest),
118     QueryPointer(xproto::QueryPointerRequest),
119     GetMotionEvents(xproto::GetMotionEventsRequest),
120     TranslateCoordinates(xproto::TranslateCoordinatesRequest),
121     WarpPointer(xproto::WarpPointerRequest),
122     SetInputFocus(xproto::SetInputFocusRequest),
123     GetInputFocus(xproto::GetInputFocusRequest),
124     QueryKeymap(xproto::QueryKeymapRequest),
125     OpenFont(xproto::OpenFontRequest<'input>),
126     CloseFont(xproto::CloseFontRequest),
127     QueryFont(xproto::QueryFontRequest),
128     QueryTextExtents(xproto::QueryTextExtentsRequest<'input>),
129     ListFonts(xproto::ListFontsRequest<'input>),
130     ListFontsWithInfo(xproto::ListFontsWithInfoRequest<'input>),
131     SetFontPath(xproto::SetFontPathRequest<'input>),
132     GetFontPath(xproto::GetFontPathRequest),
133     CreatePixmap(xproto::CreatePixmapRequest),
134     FreePixmap(xproto::FreePixmapRequest),
135     CreateGC(xproto::CreateGCRequest<'input>),
136     ChangeGC(xproto::ChangeGCRequest<'input>),
137     CopyGC(xproto::CopyGCRequest),
138     SetDashes(xproto::SetDashesRequest<'input>),
139     SetClipRectangles(xproto::SetClipRectanglesRequest<'input>),
140     FreeGC(xproto::FreeGCRequest),
141     ClearArea(xproto::ClearAreaRequest),
142     CopyArea(xproto::CopyAreaRequest),
143     CopyPlane(xproto::CopyPlaneRequest),
144     PolyPoint(xproto::PolyPointRequest<'input>),
145     PolyLine(xproto::PolyLineRequest<'input>),
146     PolySegment(xproto::PolySegmentRequest<'input>),
147     PolyRectangle(xproto::PolyRectangleRequest<'input>),
148     PolyArc(xproto::PolyArcRequest<'input>),
149     FillPoly(xproto::FillPolyRequest<'input>),
150     PolyFillRectangle(xproto::PolyFillRectangleRequest<'input>),
151     PolyFillArc(xproto::PolyFillArcRequest<'input>),
152     PutImage(xproto::PutImageRequest<'input>),
153     GetImage(xproto::GetImageRequest),
154     PolyText8(xproto::PolyText8Request<'input>),
155     PolyText16(xproto::PolyText16Request<'input>),
156     ImageText8(xproto::ImageText8Request<'input>),
157     ImageText16(xproto::ImageText16Request<'input>),
158     CreateColormap(xproto::CreateColormapRequest),
159     FreeColormap(xproto::FreeColormapRequest),
160     CopyColormapAndFree(xproto::CopyColormapAndFreeRequest),
161     InstallColormap(xproto::InstallColormapRequest),
162     UninstallColormap(xproto::UninstallColormapRequest),
163     ListInstalledColormaps(xproto::ListInstalledColormapsRequest),
164     AllocColor(xproto::AllocColorRequest),
165     AllocNamedColor(xproto::AllocNamedColorRequest<'input>),
166     AllocColorCells(xproto::AllocColorCellsRequest),
167     AllocColorPlanes(xproto::AllocColorPlanesRequest),
168     FreeColors(xproto::FreeColorsRequest<'input>),
169     StoreColors(xproto::StoreColorsRequest<'input>),
170     StoreNamedColor(xproto::StoreNamedColorRequest<'input>),
171     QueryColors(xproto::QueryColorsRequest<'input>),
172     LookupColor(xproto::LookupColorRequest<'input>),
173     CreateCursor(xproto::CreateCursorRequest),
174     CreateGlyphCursor(xproto::CreateGlyphCursorRequest),
175     FreeCursor(xproto::FreeCursorRequest),
176     RecolorCursor(xproto::RecolorCursorRequest),
177     QueryBestSize(xproto::QueryBestSizeRequest),
178     QueryExtension(xproto::QueryExtensionRequest<'input>),
179     ListExtensions(xproto::ListExtensionsRequest),
180     ChangeKeyboardMapping(xproto::ChangeKeyboardMappingRequest<'input>),
181     GetKeyboardMapping(xproto::GetKeyboardMappingRequest),
182     ChangeKeyboardControl(xproto::ChangeKeyboardControlRequest<'input>),
183     GetKeyboardControl(xproto::GetKeyboardControlRequest),
184     Bell(xproto::BellRequest),
185     ChangePointerControl(xproto::ChangePointerControlRequest),
186     GetPointerControl(xproto::GetPointerControlRequest),
187     SetScreenSaver(xproto::SetScreenSaverRequest),
188     GetScreenSaver(xproto::GetScreenSaverRequest),
189     ChangeHosts(xproto::ChangeHostsRequest<'input>),
190     ListHosts(xproto::ListHostsRequest),
191     SetAccessControl(xproto::SetAccessControlRequest),
192     SetCloseDownMode(xproto::SetCloseDownModeRequest),
193     KillClient(xproto::KillClientRequest),
194     RotateProperties(xproto::RotatePropertiesRequest<'input>),
195     ForceScreenSaver(xproto::ForceScreenSaverRequest),
196     SetPointerMapping(xproto::SetPointerMappingRequest<'input>),
197     GetPointerMapping(xproto::GetPointerMappingRequest),
198     SetModifierMapping(xproto::SetModifierMappingRequest<'input>),
199     GetModifierMapping(xproto::GetModifierMappingRequest),
200     NoOperation(xproto::NoOperationRequest),
201     BigreqEnable(bigreq::EnableRequest),
202     #[cfg(feature = "composite")]
203     CompositeQueryVersion(composite::QueryVersionRequest),
204     #[cfg(feature = "composite")]
205     CompositeRedirectWindow(composite::RedirectWindowRequest),
206     #[cfg(feature = "composite")]
207     CompositeRedirectSubwindows(composite::RedirectSubwindowsRequest),
208     #[cfg(feature = "composite")]
209     CompositeUnredirectWindow(composite::UnredirectWindowRequest),
210     #[cfg(feature = "composite")]
211     CompositeUnredirectSubwindows(composite::UnredirectSubwindowsRequest),
212     #[cfg(feature = "composite")]
213     CompositeCreateRegionFromBorderClip(composite::CreateRegionFromBorderClipRequest),
214     #[cfg(feature = "composite")]
215     CompositeNameWindowPixmap(composite::NameWindowPixmapRequest),
216     #[cfg(feature = "composite")]
217     CompositeGetOverlayWindow(composite::GetOverlayWindowRequest),
218     #[cfg(feature = "composite")]
219     CompositeReleaseOverlayWindow(composite::ReleaseOverlayWindowRequest),
220     #[cfg(feature = "damage")]
221     DamageQueryVersion(damage::QueryVersionRequest),
222     #[cfg(feature = "damage")]
223     DamageCreate(damage::CreateRequest),
224     #[cfg(feature = "damage")]
225     DamageDestroy(damage::DestroyRequest),
226     #[cfg(feature = "damage")]
227     DamageSubtract(damage::SubtractRequest),
228     #[cfg(feature = "damage")]
229     DamageAdd(damage::AddRequest),
230     #[cfg(feature = "dpms")]
231     DpmsGetVersion(dpms::GetVersionRequest),
232     #[cfg(feature = "dpms")]
233     DpmsCapable(dpms::CapableRequest),
234     #[cfg(feature = "dpms")]
235     DpmsGetTimeouts(dpms::GetTimeoutsRequest),
236     #[cfg(feature = "dpms")]
237     DpmsSetTimeouts(dpms::SetTimeoutsRequest),
238     #[cfg(feature = "dpms")]
239     DpmsEnable(dpms::EnableRequest),
240     #[cfg(feature = "dpms")]
241     DpmsDisable(dpms::DisableRequest),
242     #[cfg(feature = "dpms")]
243     DpmsForceLevel(dpms::ForceLevelRequest),
244     #[cfg(feature = "dpms")]
245     DpmsInfo(dpms::InfoRequest),
246     #[cfg(feature = "dri2")]
247     Dri2QueryVersion(dri2::QueryVersionRequest),
248     #[cfg(feature = "dri2")]
249     Dri2Connect(dri2::ConnectRequest),
250     #[cfg(feature = "dri2")]
251     Dri2Authenticate(dri2::AuthenticateRequest),
252     #[cfg(feature = "dri2")]
253     Dri2CreateDrawable(dri2::CreateDrawableRequest),
254     #[cfg(feature = "dri2")]
255     Dri2DestroyDrawable(dri2::DestroyDrawableRequest),
256     #[cfg(feature = "dri2")]
257     Dri2GetBuffers(dri2::GetBuffersRequest<'input>),
258     #[cfg(feature = "dri2")]
259     Dri2CopyRegion(dri2::CopyRegionRequest),
260     #[cfg(feature = "dri2")]
261     Dri2GetBuffersWithFormat(dri2::GetBuffersWithFormatRequest<'input>),
262     #[cfg(feature = "dri2")]
263     Dri2SwapBuffers(dri2::SwapBuffersRequest),
264     #[cfg(feature = "dri2")]
265     Dri2GetMSC(dri2::GetMSCRequest),
266     #[cfg(feature = "dri2")]
267     Dri2WaitMSC(dri2::WaitMSCRequest),
268     #[cfg(feature = "dri2")]
269     Dri2WaitSBC(dri2::WaitSBCRequest),
270     #[cfg(feature = "dri2")]
271     Dri2SwapInterval(dri2::SwapIntervalRequest),
272     #[cfg(feature = "dri2")]
273     Dri2GetParam(dri2::GetParamRequest),
274     #[cfg(feature = "dri3")]
275     Dri3QueryVersion(dri3::QueryVersionRequest),
276     #[cfg(feature = "dri3")]
277     Dri3Open(dri3::OpenRequest),
278     #[cfg(feature = "dri3")]
279     Dri3PixmapFromBuffer(dri3::PixmapFromBufferRequest),
280     #[cfg(feature = "dri3")]
281     Dri3BufferFromPixmap(dri3::BufferFromPixmapRequest),
282     #[cfg(feature = "dri3")]
283     Dri3FenceFromFD(dri3::FenceFromFDRequest),
284     #[cfg(feature = "dri3")]
285     Dri3FDFromFence(dri3::FDFromFenceRequest),
286     #[cfg(feature = "dri3")]
287     Dri3GetSupportedModifiers(dri3::GetSupportedModifiersRequest),
288     #[cfg(feature = "dri3")]
289     Dri3PixmapFromBuffers(dri3::PixmapFromBuffersRequest),
290     #[cfg(feature = "dri3")]
291     Dri3BuffersFromPixmap(dri3::BuffersFromPixmapRequest),
292     GeQueryVersion(ge::QueryVersionRequest),
293     #[cfg(feature = "glx")]
294     GlxRender(glx::RenderRequest<'input>),
295     #[cfg(feature = "glx")]
296     GlxRenderLarge(glx::RenderLargeRequest<'input>),
297     #[cfg(feature = "glx")]
298     GlxCreateContext(glx::CreateContextRequest),
299     #[cfg(feature = "glx")]
300     GlxDestroyContext(glx::DestroyContextRequest),
301     #[cfg(feature = "glx")]
302     GlxMakeCurrent(glx::MakeCurrentRequest),
303     #[cfg(feature = "glx")]
304     GlxIsDirect(glx::IsDirectRequest),
305     #[cfg(feature = "glx")]
306     GlxQueryVersion(glx::QueryVersionRequest),
307     #[cfg(feature = "glx")]
308     GlxWaitGL(glx::WaitGLRequest),
309     #[cfg(feature = "glx")]
310     GlxWaitX(glx::WaitXRequest),
311     #[cfg(feature = "glx")]
312     GlxCopyContext(glx::CopyContextRequest),
313     #[cfg(feature = "glx")]
314     GlxSwapBuffers(glx::SwapBuffersRequest),
315     #[cfg(feature = "glx")]
316     GlxUseXFont(glx::UseXFontRequest),
317     #[cfg(feature = "glx")]
318     GlxCreateGLXPixmap(glx::CreateGLXPixmapRequest),
319     #[cfg(feature = "glx")]
320     GlxGetVisualConfigs(glx::GetVisualConfigsRequest),
321     #[cfg(feature = "glx")]
322     GlxDestroyGLXPixmap(glx::DestroyGLXPixmapRequest),
323     #[cfg(feature = "glx")]
324     GlxVendorPrivate(glx::VendorPrivateRequest<'input>),
325     #[cfg(feature = "glx")]
326     GlxVendorPrivateWithReply(glx::VendorPrivateWithReplyRequest<'input>),
327     #[cfg(feature = "glx")]
328     GlxQueryExtensionsString(glx::QueryExtensionsStringRequest),
329     #[cfg(feature = "glx")]
330     GlxQueryServerString(glx::QueryServerStringRequest),
331     #[cfg(feature = "glx")]
332     GlxClientInfo(glx::ClientInfoRequest<'input>),
333     #[cfg(feature = "glx")]
334     GlxGetFBConfigs(glx::GetFBConfigsRequest),
335     #[cfg(feature = "glx")]
336     GlxCreatePixmap(glx::CreatePixmapRequest<'input>),
337     #[cfg(feature = "glx")]
338     GlxDestroyPixmap(glx::DestroyPixmapRequest),
339     #[cfg(feature = "glx")]
340     GlxCreateNewContext(glx::CreateNewContextRequest),
341     #[cfg(feature = "glx")]
342     GlxQueryContext(glx::QueryContextRequest),
343     #[cfg(feature = "glx")]
344     GlxMakeContextCurrent(glx::MakeContextCurrentRequest),
345     #[cfg(feature = "glx")]
346     GlxCreatePbuffer(glx::CreatePbufferRequest<'input>),
347     #[cfg(feature = "glx")]
348     GlxDestroyPbuffer(glx::DestroyPbufferRequest),
349     #[cfg(feature = "glx")]
350     GlxGetDrawableAttributes(glx::GetDrawableAttributesRequest),
351     #[cfg(feature = "glx")]
352     GlxChangeDrawableAttributes(glx::ChangeDrawableAttributesRequest<'input>),
353     #[cfg(feature = "glx")]
354     GlxCreateWindow(glx::CreateWindowRequest<'input>),
355     #[cfg(feature = "glx")]
356     GlxDeleteWindow(glx::DeleteWindowRequest),
357     #[cfg(feature = "glx")]
358     GlxSetClientInfoARB(glx::SetClientInfoARBRequest<'input>),
359     #[cfg(feature = "glx")]
360     GlxCreateContextAttribsARB(glx::CreateContextAttribsARBRequest<'input>),
361     #[cfg(feature = "glx")]
362     GlxSetClientInfo2ARB(glx::SetClientInfo2ARBRequest<'input>),
363     #[cfg(feature = "glx")]
364     GlxNewList(glx::NewListRequest),
365     #[cfg(feature = "glx")]
366     GlxEndList(glx::EndListRequest),
367     #[cfg(feature = "glx")]
368     GlxDeleteLists(glx::DeleteListsRequest),
369     #[cfg(feature = "glx")]
370     GlxGenLists(glx::GenListsRequest),
371     #[cfg(feature = "glx")]
372     GlxFeedbackBuffer(glx::FeedbackBufferRequest),
373     #[cfg(feature = "glx")]
374     GlxSelectBuffer(glx::SelectBufferRequest),
375     #[cfg(feature = "glx")]
376     GlxRenderMode(glx::RenderModeRequest),
377     #[cfg(feature = "glx")]
378     GlxFinish(glx::FinishRequest),
379     #[cfg(feature = "glx")]
380     GlxPixelStoref(glx::PixelStorefRequest),
381     #[cfg(feature = "glx")]
382     GlxPixelStorei(glx::PixelStoreiRequest),
383     #[cfg(feature = "glx")]
384     GlxReadPixels(glx::ReadPixelsRequest),
385     #[cfg(feature = "glx")]
386     GlxGetBooleanv(glx::GetBooleanvRequest),
387     #[cfg(feature = "glx")]
388     GlxGetClipPlane(glx::GetClipPlaneRequest),
389     #[cfg(feature = "glx")]
390     GlxGetDoublev(glx::GetDoublevRequest),
391     #[cfg(feature = "glx")]
392     GlxGetError(glx::GetErrorRequest),
393     #[cfg(feature = "glx")]
394     GlxGetFloatv(glx::GetFloatvRequest),
395     #[cfg(feature = "glx")]
396     GlxGetIntegerv(glx::GetIntegervRequest),
397     #[cfg(feature = "glx")]
398     GlxGetLightfv(glx::GetLightfvRequest),
399     #[cfg(feature = "glx")]
400     GlxGetLightiv(glx::GetLightivRequest),
401     #[cfg(feature = "glx")]
402     GlxGetMapdv(glx::GetMapdvRequest),
403     #[cfg(feature = "glx")]
404     GlxGetMapfv(glx::GetMapfvRequest),
405     #[cfg(feature = "glx")]
406     GlxGetMapiv(glx::GetMapivRequest),
407     #[cfg(feature = "glx")]
408     GlxGetMaterialfv(glx::GetMaterialfvRequest),
409     #[cfg(feature = "glx")]
410     GlxGetMaterialiv(glx::GetMaterialivRequest),
411     #[cfg(feature = "glx")]
412     GlxGetPixelMapfv(glx::GetPixelMapfvRequest),
413     #[cfg(feature = "glx")]
414     GlxGetPixelMapuiv(glx::GetPixelMapuivRequest),
415     #[cfg(feature = "glx")]
416     GlxGetPixelMapusv(glx::GetPixelMapusvRequest),
417     #[cfg(feature = "glx")]
418     GlxGetPolygonStipple(glx::GetPolygonStippleRequest),
419     #[cfg(feature = "glx")]
420     GlxGetString(glx::GetStringRequest),
421     #[cfg(feature = "glx")]
422     GlxGetTexEnvfv(glx::GetTexEnvfvRequest),
423     #[cfg(feature = "glx")]
424     GlxGetTexEnviv(glx::GetTexEnvivRequest),
425     #[cfg(feature = "glx")]
426     GlxGetTexGendv(glx::GetTexGendvRequest),
427     #[cfg(feature = "glx")]
428     GlxGetTexGenfv(glx::GetTexGenfvRequest),
429     #[cfg(feature = "glx")]
430     GlxGetTexGeniv(glx::GetTexGenivRequest),
431     #[cfg(feature = "glx")]
432     GlxGetTexImage(glx::GetTexImageRequest),
433     #[cfg(feature = "glx")]
434     GlxGetTexParameterfv(glx::GetTexParameterfvRequest),
435     #[cfg(feature = "glx")]
436     GlxGetTexParameteriv(glx::GetTexParameterivRequest),
437     #[cfg(feature = "glx")]
438     GlxGetTexLevelParameterfv(glx::GetTexLevelParameterfvRequest),
439     #[cfg(feature = "glx")]
440     GlxGetTexLevelParameteriv(glx::GetTexLevelParameterivRequest),
441     #[cfg(feature = "glx")]
442     GlxIsEnabled(glx::IsEnabledRequest),
443     #[cfg(feature = "glx")]
444     GlxIsList(glx::IsListRequest),
445     #[cfg(feature = "glx")]
446     GlxFlush(glx::FlushRequest),
447     #[cfg(feature = "glx")]
448     GlxAreTexturesResident(glx::AreTexturesResidentRequest<'input>),
449     #[cfg(feature = "glx")]
450     GlxDeleteTextures(glx::DeleteTexturesRequest<'input>),
451     #[cfg(feature = "glx")]
452     GlxGenTextures(glx::GenTexturesRequest),
453     #[cfg(feature = "glx")]
454     GlxIsTexture(glx::IsTextureRequest),
455     #[cfg(feature = "glx")]
456     GlxGetColorTable(glx::GetColorTableRequest),
457     #[cfg(feature = "glx")]
458     GlxGetColorTableParameterfv(glx::GetColorTableParameterfvRequest),
459     #[cfg(feature = "glx")]
460     GlxGetColorTableParameteriv(glx::GetColorTableParameterivRequest),
461     #[cfg(feature = "glx")]
462     GlxGetConvolutionFilter(glx::GetConvolutionFilterRequest),
463     #[cfg(feature = "glx")]
464     GlxGetConvolutionParameterfv(glx::GetConvolutionParameterfvRequest),
465     #[cfg(feature = "glx")]
466     GlxGetConvolutionParameteriv(glx::GetConvolutionParameterivRequest),
467     #[cfg(feature = "glx")]
468     GlxGetSeparableFilter(glx::GetSeparableFilterRequest),
469     #[cfg(feature = "glx")]
470     GlxGetHistogram(glx::GetHistogramRequest),
471     #[cfg(feature = "glx")]
472     GlxGetHistogramParameterfv(glx::GetHistogramParameterfvRequest),
473     #[cfg(feature = "glx")]
474     GlxGetHistogramParameteriv(glx::GetHistogramParameterivRequest),
475     #[cfg(feature = "glx")]
476     GlxGetMinmax(glx::GetMinmaxRequest),
477     #[cfg(feature = "glx")]
478     GlxGetMinmaxParameterfv(glx::GetMinmaxParameterfvRequest),
479     #[cfg(feature = "glx")]
480     GlxGetMinmaxParameteriv(glx::GetMinmaxParameterivRequest),
481     #[cfg(feature = "glx")]
482     GlxGetCompressedTexImageARB(glx::GetCompressedTexImageARBRequest),
483     #[cfg(feature = "glx")]
484     GlxDeleteQueriesARB(glx::DeleteQueriesARBRequest<'input>),
485     #[cfg(feature = "glx")]
486     GlxGenQueriesARB(glx::GenQueriesARBRequest),
487     #[cfg(feature = "glx")]
488     GlxIsQueryARB(glx::IsQueryARBRequest),
489     #[cfg(feature = "glx")]
490     GlxGetQueryivARB(glx::GetQueryivARBRequest),
491     #[cfg(feature = "glx")]
492     GlxGetQueryObjectivARB(glx::GetQueryObjectivARBRequest),
493     #[cfg(feature = "glx")]
494     GlxGetQueryObjectuivARB(glx::GetQueryObjectuivARBRequest),
495     #[cfg(feature = "present")]
496     PresentQueryVersion(present::QueryVersionRequest),
497     #[cfg(feature = "present")]
498     PresentPixmap(present::PixmapRequest<'input>),
499     #[cfg(feature = "present")]
500     PresentNotifyMSC(present::NotifyMSCRequest),
501     #[cfg(feature = "present")]
502     PresentSelectInput(present::SelectInputRequest),
503     #[cfg(feature = "present")]
504     PresentQueryCapabilities(present::QueryCapabilitiesRequest),
505     #[cfg(feature = "randr")]
506     RandrQueryVersion(randr::QueryVersionRequest),
507     #[cfg(feature = "randr")]
508     RandrSetScreenConfig(randr::SetScreenConfigRequest),
509     #[cfg(feature = "randr")]
510     RandrSelectInput(randr::SelectInputRequest),
511     #[cfg(feature = "randr")]
512     RandrGetScreenInfo(randr::GetScreenInfoRequest),
513     #[cfg(feature = "randr")]
514     RandrGetScreenSizeRange(randr::GetScreenSizeRangeRequest),
515     #[cfg(feature = "randr")]
516     RandrSetScreenSize(randr::SetScreenSizeRequest),
517     #[cfg(feature = "randr")]
518     RandrGetScreenResources(randr::GetScreenResourcesRequest),
519     #[cfg(feature = "randr")]
520     RandrGetOutputInfo(randr::GetOutputInfoRequest),
521     #[cfg(feature = "randr")]
522     RandrListOutputProperties(randr::ListOutputPropertiesRequest),
523     #[cfg(feature = "randr")]
524     RandrQueryOutputProperty(randr::QueryOutputPropertyRequest),
525     #[cfg(feature = "randr")]
526     RandrConfigureOutputProperty(randr::ConfigureOutputPropertyRequest<'input>),
527     #[cfg(feature = "randr")]
528     RandrChangeOutputProperty(randr::ChangeOutputPropertyRequest<'input>),
529     #[cfg(feature = "randr")]
530     RandrDeleteOutputProperty(randr::DeleteOutputPropertyRequest),
531     #[cfg(feature = "randr")]
532     RandrGetOutputProperty(randr::GetOutputPropertyRequest),
533     #[cfg(feature = "randr")]
534     RandrCreateMode(randr::CreateModeRequest<'input>),
535     #[cfg(feature = "randr")]
536     RandrDestroyMode(randr::DestroyModeRequest),
537     #[cfg(feature = "randr")]
538     RandrAddOutputMode(randr::AddOutputModeRequest),
539     #[cfg(feature = "randr")]
540     RandrDeleteOutputMode(randr::DeleteOutputModeRequest),
541     #[cfg(feature = "randr")]
542     RandrGetCrtcInfo(randr::GetCrtcInfoRequest),
543     #[cfg(feature = "randr")]
544     RandrSetCrtcConfig(randr::SetCrtcConfigRequest<'input>),
545     #[cfg(feature = "randr")]
546     RandrGetCrtcGammaSize(randr::GetCrtcGammaSizeRequest),
547     #[cfg(feature = "randr")]
548     RandrGetCrtcGamma(randr::GetCrtcGammaRequest),
549     #[cfg(feature = "randr")]
550     RandrSetCrtcGamma(randr::SetCrtcGammaRequest<'input>),
551     #[cfg(feature = "randr")]
552     RandrGetScreenResourcesCurrent(randr::GetScreenResourcesCurrentRequest),
553     #[cfg(feature = "randr")]
554     RandrSetCrtcTransform(randr::SetCrtcTransformRequest<'input>),
555     #[cfg(feature = "randr")]
556     RandrGetCrtcTransform(randr::GetCrtcTransformRequest),
557     #[cfg(feature = "randr")]
558     RandrGetPanning(randr::GetPanningRequest),
559     #[cfg(feature = "randr")]
560     RandrSetPanning(randr::SetPanningRequest),
561     #[cfg(feature = "randr")]
562     RandrSetOutputPrimary(randr::SetOutputPrimaryRequest),
563     #[cfg(feature = "randr")]
564     RandrGetOutputPrimary(randr::GetOutputPrimaryRequest),
565     #[cfg(feature = "randr")]
566     RandrGetProviders(randr::GetProvidersRequest),
567     #[cfg(feature = "randr")]
568     RandrGetProviderInfo(randr::GetProviderInfoRequest),
569     #[cfg(feature = "randr")]
570     RandrSetProviderOffloadSink(randr::SetProviderOffloadSinkRequest),
571     #[cfg(feature = "randr")]
572     RandrSetProviderOutputSource(randr::SetProviderOutputSourceRequest),
573     #[cfg(feature = "randr")]
574     RandrListProviderProperties(randr::ListProviderPropertiesRequest),
575     #[cfg(feature = "randr")]
576     RandrQueryProviderProperty(randr::QueryProviderPropertyRequest),
577     #[cfg(feature = "randr")]
578     RandrConfigureProviderProperty(randr::ConfigureProviderPropertyRequest<'input>),
579     #[cfg(feature = "randr")]
580     RandrChangeProviderProperty(randr::ChangeProviderPropertyRequest<'input>),
581     #[cfg(feature = "randr")]
582     RandrDeleteProviderProperty(randr::DeleteProviderPropertyRequest),
583     #[cfg(feature = "randr")]
584     RandrGetProviderProperty(randr::GetProviderPropertyRequest),
585     #[cfg(feature = "randr")]
586     RandrGetMonitors(randr::GetMonitorsRequest),
587     #[cfg(feature = "randr")]
588     RandrSetMonitor(randr::SetMonitorRequest),
589     #[cfg(feature = "randr")]
590     RandrDeleteMonitor(randr::DeleteMonitorRequest),
591     #[cfg(feature = "randr")]
592     RandrCreateLease(randr::CreateLeaseRequest<'input>),
593     #[cfg(feature = "randr")]
594     RandrFreeLease(randr::FreeLeaseRequest),
595     #[cfg(feature = "record")]
596     RecordQueryVersion(record::QueryVersionRequest),
597     #[cfg(feature = "record")]
598     RecordCreateContext(record::CreateContextRequest<'input>),
599     #[cfg(feature = "record")]
600     RecordRegisterClients(record::RegisterClientsRequest<'input>),
601     #[cfg(feature = "record")]
602     RecordUnregisterClients(record::UnregisterClientsRequest<'input>),
603     #[cfg(feature = "record")]
604     RecordGetContext(record::GetContextRequest),
605     #[cfg(feature = "record")]
606     RecordEnableContext(record::EnableContextRequest),
607     #[cfg(feature = "record")]
608     RecordDisableContext(record::DisableContextRequest),
609     #[cfg(feature = "record")]
610     RecordFreeContext(record::FreeContextRequest),
611     #[cfg(feature = "render")]
612     RenderQueryVersion(render::QueryVersionRequest),
613     #[cfg(feature = "render")]
614     RenderQueryPictFormats(render::QueryPictFormatsRequest),
615     #[cfg(feature = "render")]
616     RenderQueryPictIndexValues(render::QueryPictIndexValuesRequest),
617     #[cfg(feature = "render")]
618     RenderCreatePicture(render::CreatePictureRequest<'input>),
619     #[cfg(feature = "render")]
620     RenderChangePicture(render::ChangePictureRequest<'input>),
621     #[cfg(feature = "render")]
622     RenderSetPictureClipRectangles(render::SetPictureClipRectanglesRequest<'input>),
623     #[cfg(feature = "render")]
624     RenderFreePicture(render::FreePictureRequest),
625     #[cfg(feature = "render")]
626     RenderComposite(render::CompositeRequest),
627     #[cfg(feature = "render")]
628     RenderTrapezoids(render::TrapezoidsRequest<'input>),
629     #[cfg(feature = "render")]
630     RenderTriangles(render::TrianglesRequest<'input>),
631     #[cfg(feature = "render")]
632     RenderTriStrip(render::TriStripRequest<'input>),
633     #[cfg(feature = "render")]
634     RenderTriFan(render::TriFanRequest<'input>),
635     #[cfg(feature = "render")]
636     RenderCreateGlyphSet(render::CreateGlyphSetRequest),
637     #[cfg(feature = "render")]
638     RenderReferenceGlyphSet(render::ReferenceGlyphSetRequest),
639     #[cfg(feature = "render")]
640     RenderFreeGlyphSet(render::FreeGlyphSetRequest),
641     #[cfg(feature = "render")]
642     RenderAddGlyphs(render::AddGlyphsRequest<'input>),
643     #[cfg(feature = "render")]
644     RenderFreeGlyphs(render::FreeGlyphsRequest<'input>),
645     #[cfg(feature = "render")]
646     RenderCompositeGlyphs8(render::CompositeGlyphs8Request<'input>),
647     #[cfg(feature = "render")]
648     RenderCompositeGlyphs16(render::CompositeGlyphs16Request<'input>),
649     #[cfg(feature = "render")]
650     RenderCompositeGlyphs32(render::CompositeGlyphs32Request<'input>),
651     #[cfg(feature = "render")]
652     RenderFillRectangles(render::FillRectanglesRequest<'input>),
653     #[cfg(feature = "render")]
654     RenderCreateCursor(render::CreateCursorRequest),
655     #[cfg(feature = "render")]
656     RenderSetPictureTransform(render::SetPictureTransformRequest),
657     #[cfg(feature = "render")]
658     RenderQueryFilters(render::QueryFiltersRequest),
659     #[cfg(feature = "render")]
660     RenderSetPictureFilter(render::SetPictureFilterRequest<'input>),
661     #[cfg(feature = "render")]
662     RenderCreateAnimCursor(render::CreateAnimCursorRequest<'input>),
663     #[cfg(feature = "render")]
664     RenderAddTraps(render::AddTrapsRequest<'input>),
665     #[cfg(feature = "render")]
666     RenderCreateSolidFill(render::CreateSolidFillRequest),
667     #[cfg(feature = "render")]
668     RenderCreateLinearGradient(render::CreateLinearGradientRequest<'input>),
669     #[cfg(feature = "render")]
670     RenderCreateRadialGradient(render::CreateRadialGradientRequest<'input>),
671     #[cfg(feature = "render")]
672     RenderCreateConicalGradient(render::CreateConicalGradientRequest<'input>),
673     #[cfg(feature = "res")]
674     ResQueryVersion(res::QueryVersionRequest),
675     #[cfg(feature = "res")]
676     ResQueryClients(res::QueryClientsRequest),
677     #[cfg(feature = "res")]
678     ResQueryClientResources(res::QueryClientResourcesRequest),
679     #[cfg(feature = "res")]
680     ResQueryClientPixmapBytes(res::QueryClientPixmapBytesRequest),
681     #[cfg(feature = "res")]
682     ResQueryClientIds(res::QueryClientIdsRequest<'input>),
683     #[cfg(feature = "res")]
684     ResQueryResourceBytes(res::QueryResourceBytesRequest<'input>),
685     #[cfg(feature = "screensaver")]
686     ScreensaverQueryVersion(screensaver::QueryVersionRequest),
687     #[cfg(feature = "screensaver")]
688     ScreensaverQueryInfo(screensaver::QueryInfoRequest),
689     #[cfg(feature = "screensaver")]
690     ScreensaverSelectInput(screensaver::SelectInputRequest),
691     #[cfg(feature = "screensaver")]
692     ScreensaverSetAttributes(screensaver::SetAttributesRequest<'input>),
693     #[cfg(feature = "screensaver")]
694     ScreensaverUnsetAttributes(screensaver::UnsetAttributesRequest),
695     #[cfg(feature = "screensaver")]
696     ScreensaverSuspend(screensaver::SuspendRequest),
697     #[cfg(feature = "shape")]
698     ShapeQueryVersion(shape::QueryVersionRequest),
699     #[cfg(feature = "shape")]
700     ShapeRectangles(shape::RectanglesRequest<'input>),
701     #[cfg(feature = "shape")]
702     ShapeMask(shape::MaskRequest),
703     #[cfg(feature = "shape")]
704     ShapeCombine(shape::CombineRequest),
705     #[cfg(feature = "shape")]
706     ShapeOffset(shape::OffsetRequest),
707     #[cfg(feature = "shape")]
708     ShapeQueryExtents(shape::QueryExtentsRequest),
709     #[cfg(feature = "shape")]
710     ShapeSelectInput(shape::SelectInputRequest),
711     #[cfg(feature = "shape")]
712     ShapeInputSelected(shape::InputSelectedRequest),
713     #[cfg(feature = "shape")]
714     ShapeGetRectangles(shape::GetRectanglesRequest),
715     #[cfg(feature = "shm")]
716     ShmQueryVersion(shm::QueryVersionRequest),
717     #[cfg(feature = "shm")]
718     ShmAttach(shm::AttachRequest),
719     #[cfg(feature = "shm")]
720     ShmDetach(shm::DetachRequest),
721     #[cfg(feature = "shm")]
722     ShmPutImage(shm::PutImageRequest),
723     #[cfg(feature = "shm")]
724     ShmGetImage(shm::GetImageRequest),
725     #[cfg(feature = "shm")]
726     ShmCreatePixmap(shm::CreatePixmapRequest),
727     #[cfg(feature = "shm")]
728     ShmAttachFd(shm::AttachFdRequest),
729     #[cfg(feature = "shm")]
730     ShmCreateSegment(shm::CreateSegmentRequest),
731     #[cfg(feature = "sync")]
732     SyncInitialize(sync::InitializeRequest),
733     #[cfg(feature = "sync")]
734     SyncListSystemCounters(sync::ListSystemCountersRequest),
735     #[cfg(feature = "sync")]
736     SyncCreateCounter(sync::CreateCounterRequest),
737     #[cfg(feature = "sync")]
738     SyncDestroyCounter(sync::DestroyCounterRequest),
739     #[cfg(feature = "sync")]
740     SyncQueryCounter(sync::QueryCounterRequest),
741     #[cfg(feature = "sync")]
742     SyncAwait(sync::AwaitRequest<'input>),
743     #[cfg(feature = "sync")]
744     SyncChangeCounter(sync::ChangeCounterRequest),
745     #[cfg(feature = "sync")]
746     SyncSetCounter(sync::SetCounterRequest),
747     #[cfg(feature = "sync")]
748     SyncCreateAlarm(sync::CreateAlarmRequest<'input>),
749     #[cfg(feature = "sync")]
750     SyncChangeAlarm(sync::ChangeAlarmRequest<'input>),
751     #[cfg(feature = "sync")]
752     SyncDestroyAlarm(sync::DestroyAlarmRequest),
753     #[cfg(feature = "sync")]
754     SyncQueryAlarm(sync::QueryAlarmRequest),
755     #[cfg(feature = "sync")]
756     SyncSetPriority(sync::SetPriorityRequest),
757     #[cfg(feature = "sync")]
758     SyncGetPriority(sync::GetPriorityRequest),
759     #[cfg(feature = "sync")]
760     SyncCreateFence(sync::CreateFenceRequest),
761     #[cfg(feature = "sync")]
762     SyncTriggerFence(sync::TriggerFenceRequest),
763     #[cfg(feature = "sync")]
764     SyncResetFence(sync::ResetFenceRequest),
765     #[cfg(feature = "sync")]
766     SyncDestroyFence(sync::DestroyFenceRequest),
767     #[cfg(feature = "sync")]
768     SyncQueryFence(sync::QueryFenceRequest),
769     #[cfg(feature = "sync")]
770     SyncAwaitFence(sync::AwaitFenceRequest<'input>),
771     XcMiscGetVersion(xc_misc::GetVersionRequest),
772     XcMiscGetXIDRange(xc_misc::GetXIDRangeRequest),
773     XcMiscGetXIDList(xc_misc::GetXIDListRequest),
774     #[cfg(feature = "xevie")]
775     XevieQueryVersion(xevie::QueryVersionRequest),
776     #[cfg(feature = "xevie")]
777     XevieStart(xevie::StartRequest),
778     #[cfg(feature = "xevie")]
779     XevieEnd(xevie::EndRequest),
780     #[cfg(feature = "xevie")]
781     XevieSend(xevie::SendRequest),
782     #[cfg(feature = "xevie")]
783     XevieSelectInput(xevie::SelectInputRequest),
784     #[cfg(feature = "xf86dri")]
785     Xf86driQueryVersion(xf86dri::QueryVersionRequest),
786     #[cfg(feature = "xf86dri")]
787     Xf86driQueryDirectRenderingCapable(xf86dri::QueryDirectRenderingCapableRequest),
788     #[cfg(feature = "xf86dri")]
789     Xf86driOpenConnection(xf86dri::OpenConnectionRequest),
790     #[cfg(feature = "xf86dri")]
791     Xf86driCloseConnection(xf86dri::CloseConnectionRequest),
792     #[cfg(feature = "xf86dri")]
793     Xf86driGetClientDriverName(xf86dri::GetClientDriverNameRequest),
794     #[cfg(feature = "xf86dri")]
795     Xf86driCreateContext(xf86dri::CreateContextRequest),
796     #[cfg(feature = "xf86dri")]
797     Xf86driDestroyContext(xf86dri::DestroyContextRequest),
798     #[cfg(feature = "xf86dri")]
799     Xf86driCreateDrawable(xf86dri::CreateDrawableRequest),
800     #[cfg(feature = "xf86dri")]
801     Xf86driDestroyDrawable(xf86dri::DestroyDrawableRequest),
802     #[cfg(feature = "xf86dri")]
803     Xf86driGetDrawableInfo(xf86dri::GetDrawableInfoRequest),
804     #[cfg(feature = "xf86dri")]
805     Xf86driGetDeviceInfo(xf86dri::GetDeviceInfoRequest),
806     #[cfg(feature = "xf86dri")]
807     Xf86driAuthConnection(xf86dri::AuthConnectionRequest),
808     #[cfg(feature = "xf86vidmode")]
809     Xf86vidmodeQueryVersion(xf86vidmode::QueryVersionRequest),
810     #[cfg(feature = "xf86vidmode")]
811     Xf86vidmodeGetModeLine(xf86vidmode::GetModeLineRequest),
812     #[cfg(feature = "xf86vidmode")]
813     Xf86vidmodeModModeLine(xf86vidmode::ModModeLineRequest<'input>),
814     #[cfg(feature = "xf86vidmode")]
815     Xf86vidmodeSwitchMode(xf86vidmode::SwitchModeRequest),
816     #[cfg(feature = "xf86vidmode")]
817     Xf86vidmodeGetMonitor(xf86vidmode::GetMonitorRequest),
818     #[cfg(feature = "xf86vidmode")]
819     Xf86vidmodeLockModeSwitch(xf86vidmode::LockModeSwitchRequest),
820     #[cfg(feature = "xf86vidmode")]
821     Xf86vidmodeGetAllModeLines(xf86vidmode::GetAllModeLinesRequest),
822     #[cfg(feature = "xf86vidmode")]
823     Xf86vidmodeAddModeLine(xf86vidmode::AddModeLineRequest<'input>),
824     #[cfg(feature = "xf86vidmode")]
825     Xf86vidmodeDeleteModeLine(xf86vidmode::DeleteModeLineRequest<'input>),
826     #[cfg(feature = "xf86vidmode")]
827     Xf86vidmodeValidateModeLine(xf86vidmode::ValidateModeLineRequest<'input>),
828     #[cfg(feature = "xf86vidmode")]
829     Xf86vidmodeSwitchToMode(xf86vidmode::SwitchToModeRequest<'input>),
830     #[cfg(feature = "xf86vidmode")]
831     Xf86vidmodeGetViewPort(xf86vidmode::GetViewPortRequest),
832     #[cfg(feature = "xf86vidmode")]
833     Xf86vidmodeSetViewPort(xf86vidmode::SetViewPortRequest),
834     #[cfg(feature = "xf86vidmode")]
835     Xf86vidmodeGetDotClocks(xf86vidmode::GetDotClocksRequest),
836     #[cfg(feature = "xf86vidmode")]
837     Xf86vidmodeSetClientVersion(xf86vidmode::SetClientVersionRequest),
838     #[cfg(feature = "xf86vidmode")]
839     Xf86vidmodeSetGamma(xf86vidmode::SetGammaRequest),
840     #[cfg(feature = "xf86vidmode")]
841     Xf86vidmodeGetGamma(xf86vidmode::GetGammaRequest),
842     #[cfg(feature = "xf86vidmode")]
843     Xf86vidmodeGetGammaRamp(xf86vidmode::GetGammaRampRequest),
844     #[cfg(feature = "xf86vidmode")]
845     Xf86vidmodeSetGammaRamp(xf86vidmode::SetGammaRampRequest<'input>),
846     #[cfg(feature = "xf86vidmode")]
847     Xf86vidmodeGetGammaRampSize(xf86vidmode::GetGammaRampSizeRequest),
848     #[cfg(feature = "xf86vidmode")]
849     Xf86vidmodeGetPermissions(xf86vidmode::GetPermissionsRequest),
850     #[cfg(feature = "xfixes")]
851     XfixesQueryVersion(xfixes::QueryVersionRequest),
852     #[cfg(feature = "xfixes")]
853     XfixesChangeSaveSet(xfixes::ChangeSaveSetRequest),
854     #[cfg(feature = "xfixes")]
855     XfixesSelectSelectionInput(xfixes::SelectSelectionInputRequest),
856     #[cfg(feature = "xfixes")]
857     XfixesSelectCursorInput(xfixes::SelectCursorInputRequest),
858     #[cfg(feature = "xfixes")]
859     XfixesGetCursorImage(xfixes::GetCursorImageRequest),
860     #[cfg(feature = "xfixes")]
861     XfixesCreateRegion(xfixes::CreateRegionRequest<'input>),
862     #[cfg(feature = "xfixes")]
863     XfixesCreateRegionFromBitmap(xfixes::CreateRegionFromBitmapRequest),
864     #[cfg(feature = "xfixes")]
865     XfixesCreateRegionFromWindow(xfixes::CreateRegionFromWindowRequest),
866     #[cfg(feature = "xfixes")]
867     XfixesCreateRegionFromGC(xfixes::CreateRegionFromGCRequest),
868     #[cfg(feature = "xfixes")]
869     XfixesCreateRegionFromPicture(xfixes::CreateRegionFromPictureRequest),
870     #[cfg(feature = "xfixes")]
871     XfixesDestroyRegion(xfixes::DestroyRegionRequest),
872     #[cfg(feature = "xfixes")]
873     XfixesSetRegion(xfixes::SetRegionRequest<'input>),
874     #[cfg(feature = "xfixes")]
875     XfixesCopyRegion(xfixes::CopyRegionRequest),
876     #[cfg(feature = "xfixes")]
877     XfixesUnionRegion(xfixes::UnionRegionRequest),
878     #[cfg(feature = "xfixes")]
879     XfixesIntersectRegion(xfixes::IntersectRegionRequest),
880     #[cfg(feature = "xfixes")]
881     XfixesSubtractRegion(xfixes::SubtractRegionRequest),
882     #[cfg(feature = "xfixes")]
883     XfixesInvertRegion(xfixes::InvertRegionRequest),
884     #[cfg(feature = "xfixes")]
885     XfixesTranslateRegion(xfixes::TranslateRegionRequest),
886     #[cfg(feature = "xfixes")]
887     XfixesRegionExtents(xfixes::RegionExtentsRequest),
888     #[cfg(feature = "xfixes")]
889     XfixesFetchRegion(xfixes::FetchRegionRequest),
890     #[cfg(feature = "xfixes")]
891     XfixesSetGCClipRegion(xfixes::SetGCClipRegionRequest),
892     #[cfg(feature = "xfixes")]
893     XfixesSetWindowShapeRegion(xfixes::SetWindowShapeRegionRequest),
894     #[cfg(feature = "xfixes")]
895     XfixesSetPictureClipRegion(xfixes::SetPictureClipRegionRequest),
896     #[cfg(feature = "xfixes")]
897     XfixesSetCursorName(xfixes::SetCursorNameRequest<'input>),
898     #[cfg(feature = "xfixes")]
899     XfixesGetCursorName(xfixes::GetCursorNameRequest),
900     #[cfg(feature = "xfixes")]
901     XfixesGetCursorImageAndName(xfixes::GetCursorImageAndNameRequest),
902     #[cfg(feature = "xfixes")]
903     XfixesChangeCursor(xfixes::ChangeCursorRequest),
904     #[cfg(feature = "xfixes")]
905     XfixesChangeCursorByName(xfixes::ChangeCursorByNameRequest<'input>),
906     #[cfg(feature = "xfixes")]
907     XfixesExpandRegion(xfixes::ExpandRegionRequest),
908     #[cfg(feature = "xfixes")]
909     XfixesHideCursor(xfixes::HideCursorRequest),
910     #[cfg(feature = "xfixes")]
911     XfixesShowCursor(xfixes::ShowCursorRequest),
912     #[cfg(feature = "xfixes")]
913     XfixesCreatePointerBarrier(xfixes::CreatePointerBarrierRequest<'input>),
914     #[cfg(feature = "xfixes")]
915     XfixesDeletePointerBarrier(xfixes::DeletePointerBarrierRequest),
916     #[cfg(feature = "xinerama")]
917     XineramaQueryVersion(xinerama::QueryVersionRequest),
918     #[cfg(feature = "xinerama")]
919     XineramaGetState(xinerama::GetStateRequest),
920     #[cfg(feature = "xinerama")]
921     XineramaGetScreenCount(xinerama::GetScreenCountRequest),
922     #[cfg(feature = "xinerama")]
923     XineramaGetScreenSize(xinerama::GetScreenSizeRequest),
924     #[cfg(feature = "xinerama")]
925     XineramaIsActive(xinerama::IsActiveRequest),
926     #[cfg(feature = "xinerama")]
927     XineramaQueryScreens(xinerama::QueryScreensRequest),
928     #[cfg(feature = "xinput")]
929     XinputGetExtensionVersion(xinput::GetExtensionVersionRequest<'input>),
930     #[cfg(feature = "xinput")]
931     XinputListInputDevices(xinput::ListInputDevicesRequest),
932     #[cfg(feature = "xinput")]
933     XinputOpenDevice(xinput::OpenDeviceRequest),
934     #[cfg(feature = "xinput")]
935     XinputCloseDevice(xinput::CloseDeviceRequest),
936     #[cfg(feature = "xinput")]
937     XinputSetDeviceMode(xinput::SetDeviceModeRequest),
938     #[cfg(feature = "xinput")]
939     XinputSelectExtensionEvent(xinput::SelectExtensionEventRequest<'input>),
940     #[cfg(feature = "xinput")]
941     XinputGetSelectedExtensionEvents(xinput::GetSelectedExtensionEventsRequest),
942     #[cfg(feature = "xinput")]
943     XinputChangeDeviceDontPropagateList(xinput::ChangeDeviceDontPropagateListRequest<'input>),
944     #[cfg(feature = "xinput")]
945     XinputGetDeviceDontPropagateList(xinput::GetDeviceDontPropagateListRequest),
946     #[cfg(feature = "xinput")]
947     XinputGetDeviceMotionEvents(xinput::GetDeviceMotionEventsRequest),
948     #[cfg(feature = "xinput")]
949     XinputChangeKeyboardDevice(xinput::ChangeKeyboardDeviceRequest),
950     #[cfg(feature = "xinput")]
951     XinputChangePointerDevice(xinput::ChangePointerDeviceRequest),
952     #[cfg(feature = "xinput")]
953     XinputGrabDevice(xinput::GrabDeviceRequest<'input>),
954     #[cfg(feature = "xinput")]
955     XinputUngrabDevice(xinput::UngrabDeviceRequest),
956     #[cfg(feature = "xinput")]
957     XinputGrabDeviceKey(xinput::GrabDeviceKeyRequest<'input>),
958     #[cfg(feature = "xinput")]
959     XinputUngrabDeviceKey(xinput::UngrabDeviceKeyRequest),
960     #[cfg(feature = "xinput")]
961     XinputGrabDeviceButton(xinput::GrabDeviceButtonRequest<'input>),
962     #[cfg(feature = "xinput")]
963     XinputUngrabDeviceButton(xinput::UngrabDeviceButtonRequest),
964     #[cfg(feature = "xinput")]
965     XinputAllowDeviceEvents(xinput::AllowDeviceEventsRequest),
966     #[cfg(feature = "xinput")]
967     XinputGetDeviceFocus(xinput::GetDeviceFocusRequest),
968     #[cfg(feature = "xinput")]
969     XinputSetDeviceFocus(xinput::SetDeviceFocusRequest),
970     #[cfg(feature = "xinput")]
971     XinputGetFeedbackControl(xinput::GetFeedbackControlRequest),
972     #[cfg(feature = "xinput")]
973     XinputChangeFeedbackControl(xinput::ChangeFeedbackControlRequest),
974     #[cfg(feature = "xinput")]
975     XinputGetDeviceKeyMapping(xinput::GetDeviceKeyMappingRequest),
976     #[cfg(feature = "xinput")]
977     XinputChangeDeviceKeyMapping(xinput::ChangeDeviceKeyMappingRequest<'input>),
978     #[cfg(feature = "xinput")]
979     XinputGetDeviceModifierMapping(xinput::GetDeviceModifierMappingRequest),
980     #[cfg(feature = "xinput")]
981     XinputSetDeviceModifierMapping(xinput::SetDeviceModifierMappingRequest<'input>),
982     #[cfg(feature = "xinput")]
983     XinputGetDeviceButtonMapping(xinput::GetDeviceButtonMappingRequest),
984     #[cfg(feature = "xinput")]
985     XinputSetDeviceButtonMapping(xinput::SetDeviceButtonMappingRequest<'input>),
986     #[cfg(feature = "xinput")]
987     XinputQueryDeviceState(xinput::QueryDeviceStateRequest),
988     #[cfg(feature = "xinput")]
989     XinputDeviceBell(xinput::DeviceBellRequest),
990     #[cfg(feature = "xinput")]
991     XinputSetDeviceValuators(xinput::SetDeviceValuatorsRequest<'input>),
992     #[cfg(feature = "xinput")]
993     XinputGetDeviceControl(xinput::GetDeviceControlRequest),
994     #[cfg(feature = "xinput")]
995     XinputChangeDeviceControl(xinput::ChangeDeviceControlRequest),
996     #[cfg(feature = "xinput")]
997     XinputListDeviceProperties(xinput::ListDevicePropertiesRequest),
998     #[cfg(feature = "xinput")]
999     XinputChangeDeviceProperty(xinput::ChangeDevicePropertyRequest<'input>),
1000     #[cfg(feature = "xinput")]
1001     XinputDeleteDeviceProperty(xinput::DeleteDevicePropertyRequest),
1002     #[cfg(feature = "xinput")]
1003     XinputGetDeviceProperty(xinput::GetDevicePropertyRequest),
1004     #[cfg(feature = "xinput")]
1005     XinputXIQueryPointer(xinput::XIQueryPointerRequest),
1006     #[cfg(feature = "xinput")]
1007     XinputXIWarpPointer(xinput::XIWarpPointerRequest),
1008     #[cfg(feature = "xinput")]
1009     XinputXIChangeCursor(xinput::XIChangeCursorRequest),
1010     #[cfg(feature = "xinput")]
1011     XinputXIChangeHierarchy(xinput::XIChangeHierarchyRequest<'input>),
1012     #[cfg(feature = "xinput")]
1013     XinputXISetClientPointer(xinput::XISetClientPointerRequest),
1014     #[cfg(feature = "xinput")]
1015     XinputXIGetClientPointer(xinput::XIGetClientPointerRequest),
1016     #[cfg(feature = "xinput")]
1017     XinputXISelectEvents(xinput::XISelectEventsRequest<'input>),
1018     #[cfg(feature = "xinput")]
1019     XinputXIQueryVersion(xinput::XIQueryVersionRequest),
1020     #[cfg(feature = "xinput")]
1021     XinputXIQueryDevice(xinput::XIQueryDeviceRequest),
1022     #[cfg(feature = "xinput")]
1023     XinputXISetFocus(xinput::XISetFocusRequest),
1024     #[cfg(feature = "xinput")]
1025     XinputXIGetFocus(xinput::XIGetFocusRequest),
1026     #[cfg(feature = "xinput")]
1027     XinputXIGrabDevice(xinput::XIGrabDeviceRequest<'input>),
1028     #[cfg(feature = "xinput")]
1029     XinputXIUngrabDevice(xinput::XIUngrabDeviceRequest),
1030     #[cfg(feature = "xinput")]
1031     XinputXIAllowEvents(xinput::XIAllowEventsRequest),
1032     #[cfg(feature = "xinput")]
1033     XinputXIPassiveGrabDevice(xinput::XIPassiveGrabDeviceRequest<'input>),
1034     #[cfg(feature = "xinput")]
1035     XinputXIPassiveUngrabDevice(xinput::XIPassiveUngrabDeviceRequest<'input>),
1036     #[cfg(feature = "xinput")]
1037     XinputXIListProperties(xinput::XIListPropertiesRequest),
1038     #[cfg(feature = "xinput")]
1039     XinputXIChangeProperty(xinput::XIChangePropertyRequest<'input>),
1040     #[cfg(feature = "xinput")]
1041     XinputXIDeleteProperty(xinput::XIDeletePropertyRequest),
1042     #[cfg(feature = "xinput")]
1043     XinputXIGetProperty(xinput::XIGetPropertyRequest),
1044     #[cfg(feature = "xinput")]
1045     XinputXIGetSelectedEvents(xinput::XIGetSelectedEventsRequest),
1046     #[cfg(feature = "xinput")]
1047     XinputXIBarrierReleasePointer(xinput::XIBarrierReleasePointerRequest<'input>),
1048     #[cfg(feature = "xinput")]
1049     XinputSendExtensionEvent(xinput::SendExtensionEventRequest<'input>),
1050     #[cfg(feature = "xkb")]
1051     XkbUseExtension(xkb::UseExtensionRequest),
1052     #[cfg(feature = "xkb")]
1053     XkbSelectEvents(xkb::SelectEventsRequest<'input>),
1054     #[cfg(feature = "xkb")]
1055     XkbBell(xkb::BellRequest),
1056     #[cfg(feature = "xkb")]
1057     XkbGetState(xkb::GetStateRequest),
1058     #[cfg(feature = "xkb")]
1059     XkbLatchLockState(xkb::LatchLockStateRequest),
1060     #[cfg(feature = "xkb")]
1061     XkbGetControls(xkb::GetControlsRequest),
1062     #[cfg(feature = "xkb")]
1063     XkbSetControls(xkb::SetControlsRequest<'input>),
1064     #[cfg(feature = "xkb")]
1065     XkbGetMap(xkb::GetMapRequest),
1066     #[cfg(feature = "xkb")]
1067     XkbSetMap(xkb::SetMapRequest<'input>),
1068     #[cfg(feature = "xkb")]
1069     XkbGetCompatMap(xkb::GetCompatMapRequest),
1070     #[cfg(feature = "xkb")]
1071     XkbSetCompatMap(xkb::SetCompatMapRequest<'input>),
1072     #[cfg(feature = "xkb")]
1073     XkbGetIndicatorState(xkb::GetIndicatorStateRequest),
1074     #[cfg(feature = "xkb")]
1075     XkbGetIndicatorMap(xkb::GetIndicatorMapRequest),
1076     #[cfg(feature = "xkb")]
1077     XkbSetIndicatorMap(xkb::SetIndicatorMapRequest<'input>),
1078     #[cfg(feature = "xkb")]
1079     XkbGetNamedIndicator(xkb::GetNamedIndicatorRequest),
1080     #[cfg(feature = "xkb")]
1081     XkbSetNamedIndicator(xkb::SetNamedIndicatorRequest),
1082     #[cfg(feature = "xkb")]
1083     XkbGetNames(xkb::GetNamesRequest),
1084     #[cfg(feature = "xkb")]
1085     XkbSetNames(xkb::SetNamesRequest<'input>),
1086     #[cfg(feature = "xkb")]
1087     XkbPerClientFlags(xkb::PerClientFlagsRequest),
1088     #[cfg(feature = "xkb")]
1089     XkbListComponents(xkb::ListComponentsRequest),
1090     #[cfg(feature = "xkb")]
1091     XkbGetKbdByName(xkb::GetKbdByNameRequest),
1092     #[cfg(feature = "xkb")]
1093     XkbGetDeviceInfo(xkb::GetDeviceInfoRequest),
1094     #[cfg(feature = "xkb")]
1095     XkbSetDeviceInfo(xkb::SetDeviceInfoRequest<'input>),
1096     #[cfg(feature = "xkb")]
1097     XkbSetDebuggingFlags(xkb::SetDebuggingFlagsRequest<'input>),
1098     #[cfg(feature = "xprint")]
1099     XprintPrintQueryVersion(xprint::PrintQueryVersionRequest),
1100     #[cfg(feature = "xprint")]
1101     XprintPrintGetPrinterList(xprint::PrintGetPrinterListRequest<'input>),
1102     #[cfg(feature = "xprint")]
1103     XprintPrintRehashPrinterList(xprint::PrintRehashPrinterListRequest),
1104     #[cfg(feature = "xprint")]
1105     XprintCreateContext(xprint::CreateContextRequest<'input>),
1106     #[cfg(feature = "xprint")]
1107     XprintPrintSetContext(xprint::PrintSetContextRequest),
1108     #[cfg(feature = "xprint")]
1109     XprintPrintGetContext(xprint::PrintGetContextRequest),
1110     #[cfg(feature = "xprint")]
1111     XprintPrintDestroyContext(xprint::PrintDestroyContextRequest),
1112     #[cfg(feature = "xprint")]
1113     XprintPrintGetScreenOfContext(xprint::PrintGetScreenOfContextRequest),
1114     #[cfg(feature = "xprint")]
1115     XprintPrintStartJob(xprint::PrintStartJobRequest),
1116     #[cfg(feature = "xprint")]
1117     XprintPrintEndJob(xprint::PrintEndJobRequest),
1118     #[cfg(feature = "xprint")]
1119     XprintPrintStartDoc(xprint::PrintStartDocRequest),
1120     #[cfg(feature = "xprint")]
1121     XprintPrintEndDoc(xprint::PrintEndDocRequest),
1122     #[cfg(feature = "xprint")]
1123     XprintPrintPutDocumentData(xprint::PrintPutDocumentDataRequest<'input>),
1124     #[cfg(feature = "xprint")]
1125     XprintPrintGetDocumentData(xprint::PrintGetDocumentDataRequest),
1126     #[cfg(feature = "xprint")]
1127     XprintPrintStartPage(xprint::PrintStartPageRequest),
1128     #[cfg(feature = "xprint")]
1129     XprintPrintEndPage(xprint::PrintEndPageRequest),
1130     #[cfg(feature = "xprint")]
1131     XprintPrintSelectInput(xprint::PrintSelectInputRequest),
1132     #[cfg(feature = "xprint")]
1133     XprintPrintInputSelected(xprint::PrintInputSelectedRequest),
1134     #[cfg(feature = "xprint")]
1135     XprintPrintGetAttributes(xprint::PrintGetAttributesRequest),
1136     #[cfg(feature = "xprint")]
1137     XprintPrintGetOneAttributes(xprint::PrintGetOneAttributesRequest<'input>),
1138     #[cfg(feature = "xprint")]
1139     XprintPrintSetAttributes(xprint::PrintSetAttributesRequest<'input>),
1140     #[cfg(feature = "xprint")]
1141     XprintPrintGetPageDimensions(xprint::PrintGetPageDimensionsRequest),
1142     #[cfg(feature = "xprint")]
1143     XprintPrintQueryScreens(xprint::PrintQueryScreensRequest),
1144     #[cfg(feature = "xprint")]
1145     XprintPrintSetImageResolution(xprint::PrintSetImageResolutionRequest),
1146     #[cfg(feature = "xprint")]
1147     XprintPrintGetImageResolution(xprint::PrintGetImageResolutionRequest),
1148     #[cfg(feature = "xselinux")]
1149     XselinuxQueryVersion(xselinux::QueryVersionRequest),
1150     #[cfg(feature = "xselinux")]
1151     XselinuxSetDeviceCreateContext(xselinux::SetDeviceCreateContextRequest<'input>),
1152     #[cfg(feature = "xselinux")]
1153     XselinuxGetDeviceCreateContext(xselinux::GetDeviceCreateContextRequest),
1154     #[cfg(feature = "xselinux")]
1155     XselinuxSetDeviceContext(xselinux::SetDeviceContextRequest<'input>),
1156     #[cfg(feature = "xselinux")]
1157     XselinuxGetDeviceContext(xselinux::GetDeviceContextRequest),
1158     #[cfg(feature = "xselinux")]
1159     XselinuxSetWindowCreateContext(xselinux::SetWindowCreateContextRequest<'input>),
1160     #[cfg(feature = "xselinux")]
1161     XselinuxGetWindowCreateContext(xselinux::GetWindowCreateContextRequest),
1162     #[cfg(feature = "xselinux")]
1163     XselinuxGetWindowContext(xselinux::GetWindowContextRequest),
1164     #[cfg(feature = "xselinux")]
1165     XselinuxSetPropertyCreateContext(xselinux::SetPropertyCreateContextRequest<'input>),
1166     #[cfg(feature = "xselinux")]
1167     XselinuxGetPropertyCreateContext(xselinux::GetPropertyCreateContextRequest),
1168     #[cfg(feature = "xselinux")]
1169     XselinuxSetPropertyUseContext(xselinux::SetPropertyUseContextRequest<'input>),
1170     #[cfg(feature = "xselinux")]
1171     XselinuxGetPropertyUseContext(xselinux::GetPropertyUseContextRequest),
1172     #[cfg(feature = "xselinux")]
1173     XselinuxGetPropertyContext(xselinux::GetPropertyContextRequest),
1174     #[cfg(feature = "xselinux")]
1175     XselinuxGetPropertyDataContext(xselinux::GetPropertyDataContextRequest),
1176     #[cfg(feature = "xselinux")]
1177     XselinuxListProperties(xselinux::ListPropertiesRequest),
1178     #[cfg(feature = "xselinux")]
1179     XselinuxSetSelectionCreateContext(xselinux::SetSelectionCreateContextRequest<'input>),
1180     #[cfg(feature = "xselinux")]
1181     XselinuxGetSelectionCreateContext(xselinux::GetSelectionCreateContextRequest),
1182     #[cfg(feature = "xselinux")]
1183     XselinuxSetSelectionUseContext(xselinux::SetSelectionUseContextRequest<'input>),
1184     #[cfg(feature = "xselinux")]
1185     XselinuxGetSelectionUseContext(xselinux::GetSelectionUseContextRequest),
1186     #[cfg(feature = "xselinux")]
1187     XselinuxGetSelectionContext(xselinux::GetSelectionContextRequest),
1188     #[cfg(feature = "xselinux")]
1189     XselinuxGetSelectionDataContext(xselinux::GetSelectionDataContextRequest),
1190     #[cfg(feature = "xselinux")]
1191     XselinuxListSelections(xselinux::ListSelectionsRequest),
1192     #[cfg(feature = "xselinux")]
1193     XselinuxGetClientContext(xselinux::GetClientContextRequest),
1194     #[cfg(feature = "xtest")]
1195     XtestGetVersion(xtest::GetVersionRequest),
1196     #[cfg(feature = "xtest")]
1197     XtestCompareCursor(xtest::CompareCursorRequest),
1198     #[cfg(feature = "xtest")]
1199     XtestFakeInput(xtest::FakeInputRequest),
1200     #[cfg(feature = "xtest")]
1201     XtestGrabControl(xtest::GrabControlRequest),
1202     #[cfg(feature = "xv")]
1203     XvQueryExtension(xv::QueryExtensionRequest),
1204     #[cfg(feature = "xv")]
1205     XvQueryAdaptors(xv::QueryAdaptorsRequest),
1206     #[cfg(feature = "xv")]
1207     XvQueryEncodings(xv::QueryEncodingsRequest),
1208     #[cfg(feature = "xv")]
1209     XvGrabPort(xv::GrabPortRequest),
1210     #[cfg(feature = "xv")]
1211     XvUngrabPort(xv::UngrabPortRequest),
1212     #[cfg(feature = "xv")]
1213     XvPutVideo(xv::PutVideoRequest),
1214     #[cfg(feature = "xv")]
1215     XvPutStill(xv::PutStillRequest),
1216     #[cfg(feature = "xv")]
1217     XvGetVideo(xv::GetVideoRequest),
1218     #[cfg(feature = "xv")]
1219     XvGetStill(xv::GetStillRequest),
1220     #[cfg(feature = "xv")]
1221     XvStopVideo(xv::StopVideoRequest),
1222     #[cfg(feature = "xv")]
1223     XvSelectVideoNotify(xv::SelectVideoNotifyRequest),
1224     #[cfg(feature = "xv")]
1225     XvSelectPortNotify(xv::SelectPortNotifyRequest),
1226     #[cfg(feature = "xv")]
1227     XvQueryBestSize(xv::QueryBestSizeRequest),
1228     #[cfg(feature = "xv")]
1229     XvSetPortAttribute(xv::SetPortAttributeRequest),
1230     #[cfg(feature = "xv")]
1231     XvGetPortAttribute(xv::GetPortAttributeRequest),
1232     #[cfg(feature = "xv")]
1233     XvQueryPortAttributes(xv::QueryPortAttributesRequest),
1234     #[cfg(feature = "xv")]
1235     XvListImageFormats(xv::ListImageFormatsRequest),
1236     #[cfg(feature = "xv")]
1237     XvQueryImageAttributes(xv::QueryImageAttributesRequest),
1238     #[cfg(feature = "xv")]
1239     XvPutImage(xv::PutImageRequest<'input>),
1240     #[cfg(feature = "xv")]
1241     XvShmPutImage(xv::ShmPutImageRequest),
1242     #[cfg(feature = "xvmc")]
1243     XvmcQueryVersion(xvmc::QueryVersionRequest),
1244     #[cfg(feature = "xvmc")]
1245     XvmcListSurfaceTypes(xvmc::ListSurfaceTypesRequest),
1246     #[cfg(feature = "xvmc")]
1247     XvmcCreateContext(xvmc::CreateContextRequest),
1248     #[cfg(feature = "xvmc")]
1249     XvmcDestroyContext(xvmc::DestroyContextRequest),
1250     #[cfg(feature = "xvmc")]
1251     XvmcCreateSurface(xvmc::CreateSurfaceRequest),
1252     #[cfg(feature = "xvmc")]
1253     XvmcDestroySurface(xvmc::DestroySurfaceRequest),
1254     #[cfg(feature = "xvmc")]
1255     XvmcCreateSubpicture(xvmc::CreateSubpictureRequest),
1256     #[cfg(feature = "xvmc")]
1257     XvmcDestroySubpicture(xvmc::DestroySubpictureRequest),
1258     #[cfg(feature = "xvmc")]
1259     XvmcListSubpictureTypes(xvmc::ListSubpictureTypesRequest),
1260 }
1261 
1262 impl<'input> Request<'input> {
1263     // Parse a X11 request into a concrete type
1264     #[allow(clippy::cognitive_complexity, clippy::single_match)]
parse( header: RequestHeader, body: &'input [u8], #[allow(unused_variables)] fds: &mut Vec<RawFdContainer>, ext_info_provider: &dyn ExtInfoProvider, ) -> Result<Self, ParseError>1265     pub fn parse(
1266         header: RequestHeader,
1267         body: &'input [u8],
1268         // Might not be used if none of the extensions that use FD passing is enabled
1269         #[allow(unused_variables)]
1270         fds: &mut Vec<RawFdContainer>,
1271         ext_info_provider: &dyn ExtInfoProvider,
1272     ) -> Result<Self, ParseError> {
1273         let remaining = body;
1274         // Check if this is a core protocol request.
1275         match header.major_opcode {
1276             xproto::CREATE_WINDOW_REQUEST => return Ok(Request::CreateWindow(xproto::CreateWindowRequest::try_parse_request(header, remaining)?)),
1277             xproto::CHANGE_WINDOW_ATTRIBUTES_REQUEST => return Ok(Request::ChangeWindowAttributes(xproto::ChangeWindowAttributesRequest::try_parse_request(header, remaining)?)),
1278             xproto::GET_WINDOW_ATTRIBUTES_REQUEST => return Ok(Request::GetWindowAttributes(xproto::GetWindowAttributesRequest::try_parse_request(header, remaining)?)),
1279             xproto::DESTROY_WINDOW_REQUEST => return Ok(Request::DestroyWindow(xproto::DestroyWindowRequest::try_parse_request(header, remaining)?)),
1280             xproto::DESTROY_SUBWINDOWS_REQUEST => return Ok(Request::DestroySubwindows(xproto::DestroySubwindowsRequest::try_parse_request(header, remaining)?)),
1281             xproto::CHANGE_SAVE_SET_REQUEST => return Ok(Request::ChangeSaveSet(xproto::ChangeSaveSetRequest::try_parse_request(header, remaining)?)),
1282             xproto::REPARENT_WINDOW_REQUEST => return Ok(Request::ReparentWindow(xproto::ReparentWindowRequest::try_parse_request(header, remaining)?)),
1283             xproto::MAP_WINDOW_REQUEST => return Ok(Request::MapWindow(xproto::MapWindowRequest::try_parse_request(header, remaining)?)),
1284             xproto::MAP_SUBWINDOWS_REQUEST => return Ok(Request::MapSubwindows(xproto::MapSubwindowsRequest::try_parse_request(header, remaining)?)),
1285             xproto::UNMAP_WINDOW_REQUEST => return Ok(Request::UnmapWindow(xproto::UnmapWindowRequest::try_parse_request(header, remaining)?)),
1286             xproto::UNMAP_SUBWINDOWS_REQUEST => return Ok(Request::UnmapSubwindows(xproto::UnmapSubwindowsRequest::try_parse_request(header, remaining)?)),
1287             xproto::CONFIGURE_WINDOW_REQUEST => return Ok(Request::ConfigureWindow(xproto::ConfigureWindowRequest::try_parse_request(header, remaining)?)),
1288             xproto::CIRCULATE_WINDOW_REQUEST => return Ok(Request::CirculateWindow(xproto::CirculateWindowRequest::try_parse_request(header, remaining)?)),
1289             xproto::GET_GEOMETRY_REQUEST => return Ok(Request::GetGeometry(xproto::GetGeometryRequest::try_parse_request(header, remaining)?)),
1290             xproto::QUERY_TREE_REQUEST => return Ok(Request::QueryTree(xproto::QueryTreeRequest::try_parse_request(header, remaining)?)),
1291             xproto::INTERN_ATOM_REQUEST => return Ok(Request::InternAtom(xproto::InternAtomRequest::try_parse_request(header, remaining)?)),
1292             xproto::GET_ATOM_NAME_REQUEST => return Ok(Request::GetAtomName(xproto::GetAtomNameRequest::try_parse_request(header, remaining)?)),
1293             xproto::CHANGE_PROPERTY_REQUEST => return Ok(Request::ChangeProperty(xproto::ChangePropertyRequest::try_parse_request(header, remaining)?)),
1294             xproto::DELETE_PROPERTY_REQUEST => return Ok(Request::DeleteProperty(xproto::DeletePropertyRequest::try_parse_request(header, remaining)?)),
1295             xproto::GET_PROPERTY_REQUEST => return Ok(Request::GetProperty(xproto::GetPropertyRequest::try_parse_request(header, remaining)?)),
1296             xproto::LIST_PROPERTIES_REQUEST => return Ok(Request::ListProperties(xproto::ListPropertiesRequest::try_parse_request(header, remaining)?)),
1297             xproto::SET_SELECTION_OWNER_REQUEST => return Ok(Request::SetSelectionOwner(xproto::SetSelectionOwnerRequest::try_parse_request(header, remaining)?)),
1298             xproto::GET_SELECTION_OWNER_REQUEST => return Ok(Request::GetSelectionOwner(xproto::GetSelectionOwnerRequest::try_parse_request(header, remaining)?)),
1299             xproto::CONVERT_SELECTION_REQUEST => return Ok(Request::ConvertSelection(xproto::ConvertSelectionRequest::try_parse_request(header, remaining)?)),
1300             xproto::SEND_EVENT_REQUEST => return Ok(Request::SendEvent(xproto::SendEventRequest::try_parse_request(header, remaining)?)),
1301             xproto::GRAB_POINTER_REQUEST => return Ok(Request::GrabPointer(xproto::GrabPointerRequest::try_parse_request(header, remaining)?)),
1302             xproto::UNGRAB_POINTER_REQUEST => return Ok(Request::UngrabPointer(xproto::UngrabPointerRequest::try_parse_request(header, remaining)?)),
1303             xproto::GRAB_BUTTON_REQUEST => return Ok(Request::GrabButton(xproto::GrabButtonRequest::try_parse_request(header, remaining)?)),
1304             xproto::UNGRAB_BUTTON_REQUEST => return Ok(Request::UngrabButton(xproto::UngrabButtonRequest::try_parse_request(header, remaining)?)),
1305             xproto::CHANGE_ACTIVE_POINTER_GRAB_REQUEST => return Ok(Request::ChangeActivePointerGrab(xproto::ChangeActivePointerGrabRequest::try_parse_request(header, remaining)?)),
1306             xproto::GRAB_KEYBOARD_REQUEST => return Ok(Request::GrabKeyboard(xproto::GrabKeyboardRequest::try_parse_request(header, remaining)?)),
1307             xproto::UNGRAB_KEYBOARD_REQUEST => return Ok(Request::UngrabKeyboard(xproto::UngrabKeyboardRequest::try_parse_request(header, remaining)?)),
1308             xproto::GRAB_KEY_REQUEST => return Ok(Request::GrabKey(xproto::GrabKeyRequest::try_parse_request(header, remaining)?)),
1309             xproto::UNGRAB_KEY_REQUEST => return Ok(Request::UngrabKey(xproto::UngrabKeyRequest::try_parse_request(header, remaining)?)),
1310             xproto::ALLOW_EVENTS_REQUEST => return Ok(Request::AllowEvents(xproto::AllowEventsRequest::try_parse_request(header, remaining)?)),
1311             xproto::GRAB_SERVER_REQUEST => return Ok(Request::GrabServer(xproto::GrabServerRequest::try_parse_request(header, remaining)?)),
1312             xproto::UNGRAB_SERVER_REQUEST => return Ok(Request::UngrabServer(xproto::UngrabServerRequest::try_parse_request(header, remaining)?)),
1313             xproto::QUERY_POINTER_REQUEST => return Ok(Request::QueryPointer(xproto::QueryPointerRequest::try_parse_request(header, remaining)?)),
1314             xproto::GET_MOTION_EVENTS_REQUEST => return Ok(Request::GetMotionEvents(xproto::GetMotionEventsRequest::try_parse_request(header, remaining)?)),
1315             xproto::TRANSLATE_COORDINATES_REQUEST => return Ok(Request::TranslateCoordinates(xproto::TranslateCoordinatesRequest::try_parse_request(header, remaining)?)),
1316             xproto::WARP_POINTER_REQUEST => return Ok(Request::WarpPointer(xproto::WarpPointerRequest::try_parse_request(header, remaining)?)),
1317             xproto::SET_INPUT_FOCUS_REQUEST => return Ok(Request::SetInputFocus(xproto::SetInputFocusRequest::try_parse_request(header, remaining)?)),
1318             xproto::GET_INPUT_FOCUS_REQUEST => return Ok(Request::GetInputFocus(xproto::GetInputFocusRequest::try_parse_request(header, remaining)?)),
1319             xproto::QUERY_KEYMAP_REQUEST => return Ok(Request::QueryKeymap(xproto::QueryKeymapRequest::try_parse_request(header, remaining)?)),
1320             xproto::OPEN_FONT_REQUEST => return Ok(Request::OpenFont(xproto::OpenFontRequest::try_parse_request(header, remaining)?)),
1321             xproto::CLOSE_FONT_REQUEST => return Ok(Request::CloseFont(xproto::CloseFontRequest::try_parse_request(header, remaining)?)),
1322             xproto::QUERY_FONT_REQUEST => return Ok(Request::QueryFont(xproto::QueryFontRequest::try_parse_request(header, remaining)?)),
1323             xproto::QUERY_TEXT_EXTENTS_REQUEST => return Ok(Request::QueryTextExtents(xproto::QueryTextExtentsRequest::try_parse_request(header, remaining)?)),
1324             xproto::LIST_FONTS_REQUEST => return Ok(Request::ListFonts(xproto::ListFontsRequest::try_parse_request(header, remaining)?)),
1325             xproto::LIST_FONTS_WITH_INFO_REQUEST => return Ok(Request::ListFontsWithInfo(xproto::ListFontsWithInfoRequest::try_parse_request(header, remaining)?)),
1326             xproto::SET_FONT_PATH_REQUEST => return Ok(Request::SetFontPath(xproto::SetFontPathRequest::try_parse_request(header, remaining)?)),
1327             xproto::GET_FONT_PATH_REQUEST => return Ok(Request::GetFontPath(xproto::GetFontPathRequest::try_parse_request(header, remaining)?)),
1328             xproto::CREATE_PIXMAP_REQUEST => return Ok(Request::CreatePixmap(xproto::CreatePixmapRequest::try_parse_request(header, remaining)?)),
1329             xproto::FREE_PIXMAP_REQUEST => return Ok(Request::FreePixmap(xproto::FreePixmapRequest::try_parse_request(header, remaining)?)),
1330             xproto::CREATE_GC_REQUEST => return Ok(Request::CreateGC(xproto::CreateGCRequest::try_parse_request(header, remaining)?)),
1331             xproto::CHANGE_GC_REQUEST => return Ok(Request::ChangeGC(xproto::ChangeGCRequest::try_parse_request(header, remaining)?)),
1332             xproto::COPY_GC_REQUEST => return Ok(Request::CopyGC(xproto::CopyGCRequest::try_parse_request(header, remaining)?)),
1333             xproto::SET_DASHES_REQUEST => return Ok(Request::SetDashes(xproto::SetDashesRequest::try_parse_request(header, remaining)?)),
1334             xproto::SET_CLIP_RECTANGLES_REQUEST => return Ok(Request::SetClipRectangles(xproto::SetClipRectanglesRequest::try_parse_request(header, remaining)?)),
1335             xproto::FREE_GC_REQUEST => return Ok(Request::FreeGC(xproto::FreeGCRequest::try_parse_request(header, remaining)?)),
1336             xproto::CLEAR_AREA_REQUEST => return Ok(Request::ClearArea(xproto::ClearAreaRequest::try_parse_request(header, remaining)?)),
1337             xproto::COPY_AREA_REQUEST => return Ok(Request::CopyArea(xproto::CopyAreaRequest::try_parse_request(header, remaining)?)),
1338             xproto::COPY_PLANE_REQUEST => return Ok(Request::CopyPlane(xproto::CopyPlaneRequest::try_parse_request(header, remaining)?)),
1339             xproto::POLY_POINT_REQUEST => return Ok(Request::PolyPoint(xproto::PolyPointRequest::try_parse_request(header, remaining)?)),
1340             xproto::POLY_LINE_REQUEST => return Ok(Request::PolyLine(xproto::PolyLineRequest::try_parse_request(header, remaining)?)),
1341             xproto::POLY_SEGMENT_REQUEST => return Ok(Request::PolySegment(xproto::PolySegmentRequest::try_parse_request(header, remaining)?)),
1342             xproto::POLY_RECTANGLE_REQUEST => return Ok(Request::PolyRectangle(xproto::PolyRectangleRequest::try_parse_request(header, remaining)?)),
1343             xproto::POLY_ARC_REQUEST => return Ok(Request::PolyArc(xproto::PolyArcRequest::try_parse_request(header, remaining)?)),
1344             xproto::FILL_POLY_REQUEST => return Ok(Request::FillPoly(xproto::FillPolyRequest::try_parse_request(header, remaining)?)),
1345             xproto::POLY_FILL_RECTANGLE_REQUEST => return Ok(Request::PolyFillRectangle(xproto::PolyFillRectangleRequest::try_parse_request(header, remaining)?)),
1346             xproto::POLY_FILL_ARC_REQUEST => return Ok(Request::PolyFillArc(xproto::PolyFillArcRequest::try_parse_request(header, remaining)?)),
1347             xproto::PUT_IMAGE_REQUEST => return Ok(Request::PutImage(xproto::PutImageRequest::try_parse_request(header, remaining)?)),
1348             xproto::GET_IMAGE_REQUEST => return Ok(Request::GetImage(xproto::GetImageRequest::try_parse_request(header, remaining)?)),
1349             xproto::POLY_TEXT8_REQUEST => return Ok(Request::PolyText8(xproto::PolyText8Request::try_parse_request(header, remaining)?)),
1350             xproto::POLY_TEXT16_REQUEST => return Ok(Request::PolyText16(xproto::PolyText16Request::try_parse_request(header, remaining)?)),
1351             xproto::IMAGE_TEXT8_REQUEST => return Ok(Request::ImageText8(xproto::ImageText8Request::try_parse_request(header, remaining)?)),
1352             xproto::IMAGE_TEXT16_REQUEST => return Ok(Request::ImageText16(xproto::ImageText16Request::try_parse_request(header, remaining)?)),
1353             xproto::CREATE_COLORMAP_REQUEST => return Ok(Request::CreateColormap(xproto::CreateColormapRequest::try_parse_request(header, remaining)?)),
1354             xproto::FREE_COLORMAP_REQUEST => return Ok(Request::FreeColormap(xproto::FreeColormapRequest::try_parse_request(header, remaining)?)),
1355             xproto::COPY_COLORMAP_AND_FREE_REQUEST => return Ok(Request::CopyColormapAndFree(xproto::CopyColormapAndFreeRequest::try_parse_request(header, remaining)?)),
1356             xproto::INSTALL_COLORMAP_REQUEST => return Ok(Request::InstallColormap(xproto::InstallColormapRequest::try_parse_request(header, remaining)?)),
1357             xproto::UNINSTALL_COLORMAP_REQUEST => return Ok(Request::UninstallColormap(xproto::UninstallColormapRequest::try_parse_request(header, remaining)?)),
1358             xproto::LIST_INSTALLED_COLORMAPS_REQUEST => return Ok(Request::ListInstalledColormaps(xproto::ListInstalledColormapsRequest::try_parse_request(header, remaining)?)),
1359             xproto::ALLOC_COLOR_REQUEST => return Ok(Request::AllocColor(xproto::AllocColorRequest::try_parse_request(header, remaining)?)),
1360             xproto::ALLOC_NAMED_COLOR_REQUEST => return Ok(Request::AllocNamedColor(xproto::AllocNamedColorRequest::try_parse_request(header, remaining)?)),
1361             xproto::ALLOC_COLOR_CELLS_REQUEST => return Ok(Request::AllocColorCells(xproto::AllocColorCellsRequest::try_parse_request(header, remaining)?)),
1362             xproto::ALLOC_COLOR_PLANES_REQUEST => return Ok(Request::AllocColorPlanes(xproto::AllocColorPlanesRequest::try_parse_request(header, remaining)?)),
1363             xproto::FREE_COLORS_REQUEST => return Ok(Request::FreeColors(xproto::FreeColorsRequest::try_parse_request(header, remaining)?)),
1364             xproto::STORE_COLORS_REQUEST => return Ok(Request::StoreColors(xproto::StoreColorsRequest::try_parse_request(header, remaining)?)),
1365             xproto::STORE_NAMED_COLOR_REQUEST => return Ok(Request::StoreNamedColor(xproto::StoreNamedColorRequest::try_parse_request(header, remaining)?)),
1366             xproto::QUERY_COLORS_REQUEST => return Ok(Request::QueryColors(xproto::QueryColorsRequest::try_parse_request(header, remaining)?)),
1367             xproto::LOOKUP_COLOR_REQUEST => return Ok(Request::LookupColor(xproto::LookupColorRequest::try_parse_request(header, remaining)?)),
1368             xproto::CREATE_CURSOR_REQUEST => return Ok(Request::CreateCursor(xproto::CreateCursorRequest::try_parse_request(header, remaining)?)),
1369             xproto::CREATE_GLYPH_CURSOR_REQUEST => return Ok(Request::CreateGlyphCursor(xproto::CreateGlyphCursorRequest::try_parse_request(header, remaining)?)),
1370             xproto::FREE_CURSOR_REQUEST => return Ok(Request::FreeCursor(xproto::FreeCursorRequest::try_parse_request(header, remaining)?)),
1371             xproto::RECOLOR_CURSOR_REQUEST => return Ok(Request::RecolorCursor(xproto::RecolorCursorRequest::try_parse_request(header, remaining)?)),
1372             xproto::QUERY_BEST_SIZE_REQUEST => return Ok(Request::QueryBestSize(xproto::QueryBestSizeRequest::try_parse_request(header, remaining)?)),
1373             xproto::QUERY_EXTENSION_REQUEST => return Ok(Request::QueryExtension(xproto::QueryExtensionRequest::try_parse_request(header, remaining)?)),
1374             xproto::LIST_EXTENSIONS_REQUEST => return Ok(Request::ListExtensions(xproto::ListExtensionsRequest::try_parse_request(header, remaining)?)),
1375             xproto::CHANGE_KEYBOARD_MAPPING_REQUEST => return Ok(Request::ChangeKeyboardMapping(xproto::ChangeKeyboardMappingRequest::try_parse_request(header, remaining)?)),
1376             xproto::GET_KEYBOARD_MAPPING_REQUEST => return Ok(Request::GetKeyboardMapping(xproto::GetKeyboardMappingRequest::try_parse_request(header, remaining)?)),
1377             xproto::CHANGE_KEYBOARD_CONTROL_REQUEST => return Ok(Request::ChangeKeyboardControl(xproto::ChangeKeyboardControlRequest::try_parse_request(header, remaining)?)),
1378             xproto::GET_KEYBOARD_CONTROL_REQUEST => return Ok(Request::GetKeyboardControl(xproto::GetKeyboardControlRequest::try_parse_request(header, remaining)?)),
1379             xproto::BELL_REQUEST => return Ok(Request::Bell(xproto::BellRequest::try_parse_request(header, remaining)?)),
1380             xproto::CHANGE_POINTER_CONTROL_REQUEST => return Ok(Request::ChangePointerControl(xproto::ChangePointerControlRequest::try_parse_request(header, remaining)?)),
1381             xproto::GET_POINTER_CONTROL_REQUEST => return Ok(Request::GetPointerControl(xproto::GetPointerControlRequest::try_parse_request(header, remaining)?)),
1382             xproto::SET_SCREEN_SAVER_REQUEST => return Ok(Request::SetScreenSaver(xproto::SetScreenSaverRequest::try_parse_request(header, remaining)?)),
1383             xproto::GET_SCREEN_SAVER_REQUEST => return Ok(Request::GetScreenSaver(xproto::GetScreenSaverRequest::try_parse_request(header, remaining)?)),
1384             xproto::CHANGE_HOSTS_REQUEST => return Ok(Request::ChangeHosts(xproto::ChangeHostsRequest::try_parse_request(header, remaining)?)),
1385             xproto::LIST_HOSTS_REQUEST => return Ok(Request::ListHosts(xproto::ListHostsRequest::try_parse_request(header, remaining)?)),
1386             xproto::SET_ACCESS_CONTROL_REQUEST => return Ok(Request::SetAccessControl(xproto::SetAccessControlRequest::try_parse_request(header, remaining)?)),
1387             xproto::SET_CLOSE_DOWN_MODE_REQUEST => return Ok(Request::SetCloseDownMode(xproto::SetCloseDownModeRequest::try_parse_request(header, remaining)?)),
1388             xproto::KILL_CLIENT_REQUEST => return Ok(Request::KillClient(xproto::KillClientRequest::try_parse_request(header, remaining)?)),
1389             xproto::ROTATE_PROPERTIES_REQUEST => return Ok(Request::RotateProperties(xproto::RotatePropertiesRequest::try_parse_request(header, remaining)?)),
1390             xproto::FORCE_SCREEN_SAVER_REQUEST => return Ok(Request::ForceScreenSaver(xproto::ForceScreenSaverRequest::try_parse_request(header, remaining)?)),
1391             xproto::SET_POINTER_MAPPING_REQUEST => return Ok(Request::SetPointerMapping(xproto::SetPointerMappingRequest::try_parse_request(header, remaining)?)),
1392             xproto::GET_POINTER_MAPPING_REQUEST => return Ok(Request::GetPointerMapping(xproto::GetPointerMappingRequest::try_parse_request(header, remaining)?)),
1393             xproto::SET_MODIFIER_MAPPING_REQUEST => return Ok(Request::SetModifierMapping(xproto::SetModifierMappingRequest::try_parse_request(header, remaining)?)),
1394             xproto::GET_MODIFIER_MAPPING_REQUEST => return Ok(Request::GetModifierMapping(xproto::GetModifierMappingRequest::try_parse_request(header, remaining)?)),
1395             xproto::NO_OPERATION_REQUEST => return Ok(Request::NoOperation(xproto::NoOperationRequest::try_parse_request(header, remaining)?)),
1396             _ => (),
1397         }
1398         // Find the extension that this request could belong to
1399         let ext_info = ext_info_provider.get_from_major_opcode(header.major_opcode);
1400         match ext_info {
1401             Some((bigreq::X11_EXTENSION_NAME, _)) => {
1402                 match header.minor_opcode {
1403                     bigreq::ENABLE_REQUEST => return Ok(Request::BigreqEnable(bigreq::EnableRequest::try_parse_request(header, remaining)?)),
1404                     _ => (),
1405                 }
1406             }
1407             #[cfg(feature = "composite")]
1408             Some((composite::X11_EXTENSION_NAME, _)) => {
1409                 match header.minor_opcode {
1410                     composite::QUERY_VERSION_REQUEST => return Ok(Request::CompositeQueryVersion(composite::QueryVersionRequest::try_parse_request(header, remaining)?)),
1411                     composite::REDIRECT_WINDOW_REQUEST => return Ok(Request::CompositeRedirectWindow(composite::RedirectWindowRequest::try_parse_request(header, remaining)?)),
1412                     composite::REDIRECT_SUBWINDOWS_REQUEST => return Ok(Request::CompositeRedirectSubwindows(composite::RedirectSubwindowsRequest::try_parse_request(header, remaining)?)),
1413                     composite::UNREDIRECT_WINDOW_REQUEST => return Ok(Request::CompositeUnredirectWindow(composite::UnredirectWindowRequest::try_parse_request(header, remaining)?)),
1414                     composite::UNREDIRECT_SUBWINDOWS_REQUEST => return Ok(Request::CompositeUnredirectSubwindows(composite::UnredirectSubwindowsRequest::try_parse_request(header, remaining)?)),
1415                     composite::CREATE_REGION_FROM_BORDER_CLIP_REQUEST => return Ok(Request::CompositeCreateRegionFromBorderClip(composite::CreateRegionFromBorderClipRequest::try_parse_request(header, remaining)?)),
1416                     composite::NAME_WINDOW_PIXMAP_REQUEST => return Ok(Request::CompositeNameWindowPixmap(composite::NameWindowPixmapRequest::try_parse_request(header, remaining)?)),
1417                     composite::GET_OVERLAY_WINDOW_REQUEST => return Ok(Request::CompositeGetOverlayWindow(composite::GetOverlayWindowRequest::try_parse_request(header, remaining)?)),
1418                     composite::RELEASE_OVERLAY_WINDOW_REQUEST => return Ok(Request::CompositeReleaseOverlayWindow(composite::ReleaseOverlayWindowRequest::try_parse_request(header, remaining)?)),
1419                     _ => (),
1420                 }
1421             }
1422             #[cfg(feature = "damage")]
1423             Some((damage::X11_EXTENSION_NAME, _)) => {
1424                 match header.minor_opcode {
1425                     damage::QUERY_VERSION_REQUEST => return Ok(Request::DamageQueryVersion(damage::QueryVersionRequest::try_parse_request(header, remaining)?)),
1426                     damage::CREATE_REQUEST => return Ok(Request::DamageCreate(damage::CreateRequest::try_parse_request(header, remaining)?)),
1427                     damage::DESTROY_REQUEST => return Ok(Request::DamageDestroy(damage::DestroyRequest::try_parse_request(header, remaining)?)),
1428                     damage::SUBTRACT_REQUEST => return Ok(Request::DamageSubtract(damage::SubtractRequest::try_parse_request(header, remaining)?)),
1429                     damage::ADD_REQUEST => return Ok(Request::DamageAdd(damage::AddRequest::try_parse_request(header, remaining)?)),
1430                     _ => (),
1431                 }
1432             }
1433             #[cfg(feature = "dpms")]
1434             Some((dpms::X11_EXTENSION_NAME, _)) => {
1435                 match header.minor_opcode {
1436                     dpms::GET_VERSION_REQUEST => return Ok(Request::DpmsGetVersion(dpms::GetVersionRequest::try_parse_request(header, remaining)?)),
1437                     dpms::CAPABLE_REQUEST => return Ok(Request::DpmsCapable(dpms::CapableRequest::try_parse_request(header, remaining)?)),
1438                     dpms::GET_TIMEOUTS_REQUEST => return Ok(Request::DpmsGetTimeouts(dpms::GetTimeoutsRequest::try_parse_request(header, remaining)?)),
1439                     dpms::SET_TIMEOUTS_REQUEST => return Ok(Request::DpmsSetTimeouts(dpms::SetTimeoutsRequest::try_parse_request(header, remaining)?)),
1440                     dpms::ENABLE_REQUEST => return Ok(Request::DpmsEnable(dpms::EnableRequest::try_parse_request(header, remaining)?)),
1441                     dpms::DISABLE_REQUEST => return Ok(Request::DpmsDisable(dpms::DisableRequest::try_parse_request(header, remaining)?)),
1442                     dpms::FORCE_LEVEL_REQUEST => return Ok(Request::DpmsForceLevel(dpms::ForceLevelRequest::try_parse_request(header, remaining)?)),
1443                     dpms::INFO_REQUEST => return Ok(Request::DpmsInfo(dpms::InfoRequest::try_parse_request(header, remaining)?)),
1444                     _ => (),
1445                 }
1446             }
1447             #[cfg(feature = "dri2")]
1448             Some((dri2::X11_EXTENSION_NAME, _)) => {
1449                 match header.minor_opcode {
1450                     dri2::QUERY_VERSION_REQUEST => return Ok(Request::Dri2QueryVersion(dri2::QueryVersionRequest::try_parse_request(header, remaining)?)),
1451                     dri2::CONNECT_REQUEST => return Ok(Request::Dri2Connect(dri2::ConnectRequest::try_parse_request(header, remaining)?)),
1452                     dri2::AUTHENTICATE_REQUEST => return Ok(Request::Dri2Authenticate(dri2::AuthenticateRequest::try_parse_request(header, remaining)?)),
1453                     dri2::CREATE_DRAWABLE_REQUEST => return Ok(Request::Dri2CreateDrawable(dri2::CreateDrawableRequest::try_parse_request(header, remaining)?)),
1454                     dri2::DESTROY_DRAWABLE_REQUEST => return Ok(Request::Dri2DestroyDrawable(dri2::DestroyDrawableRequest::try_parse_request(header, remaining)?)),
1455                     dri2::GET_BUFFERS_REQUEST => return Ok(Request::Dri2GetBuffers(dri2::GetBuffersRequest::try_parse_request(header, remaining)?)),
1456                     dri2::COPY_REGION_REQUEST => return Ok(Request::Dri2CopyRegion(dri2::CopyRegionRequest::try_parse_request(header, remaining)?)),
1457                     dri2::GET_BUFFERS_WITH_FORMAT_REQUEST => return Ok(Request::Dri2GetBuffersWithFormat(dri2::GetBuffersWithFormatRequest::try_parse_request(header, remaining)?)),
1458                     dri2::SWAP_BUFFERS_REQUEST => return Ok(Request::Dri2SwapBuffers(dri2::SwapBuffersRequest::try_parse_request(header, remaining)?)),
1459                     dri2::GET_MSC_REQUEST => return Ok(Request::Dri2GetMSC(dri2::GetMSCRequest::try_parse_request(header, remaining)?)),
1460                     dri2::WAIT_MSC_REQUEST => return Ok(Request::Dri2WaitMSC(dri2::WaitMSCRequest::try_parse_request(header, remaining)?)),
1461                     dri2::WAIT_SBC_REQUEST => return Ok(Request::Dri2WaitSBC(dri2::WaitSBCRequest::try_parse_request(header, remaining)?)),
1462                     dri2::SWAP_INTERVAL_REQUEST => return Ok(Request::Dri2SwapInterval(dri2::SwapIntervalRequest::try_parse_request(header, remaining)?)),
1463                     dri2::GET_PARAM_REQUEST => return Ok(Request::Dri2GetParam(dri2::GetParamRequest::try_parse_request(header, remaining)?)),
1464                     _ => (),
1465                 }
1466             }
1467             #[cfg(feature = "dri3")]
1468             Some((dri3::X11_EXTENSION_NAME, _)) => {
1469                 match header.minor_opcode {
1470                     dri3::QUERY_VERSION_REQUEST => return Ok(Request::Dri3QueryVersion(dri3::QueryVersionRequest::try_parse_request(header, remaining)?)),
1471                     dri3::OPEN_REQUEST => return Ok(Request::Dri3Open(dri3::OpenRequest::try_parse_request(header, remaining)?)),
1472                     dri3::PIXMAP_FROM_BUFFER_REQUEST => return Ok(Request::Dri3PixmapFromBuffer(dri3::PixmapFromBufferRequest::try_parse_request_fd(header, remaining, fds)?)),
1473                     dri3::BUFFER_FROM_PIXMAP_REQUEST => return Ok(Request::Dri3BufferFromPixmap(dri3::BufferFromPixmapRequest::try_parse_request(header, remaining)?)),
1474                     dri3::FENCE_FROM_FD_REQUEST => return Ok(Request::Dri3FenceFromFD(dri3::FenceFromFDRequest::try_parse_request_fd(header, remaining, fds)?)),
1475                     dri3::FD_FROM_FENCE_REQUEST => return Ok(Request::Dri3FDFromFence(dri3::FDFromFenceRequest::try_parse_request(header, remaining)?)),
1476                     dri3::GET_SUPPORTED_MODIFIERS_REQUEST => return Ok(Request::Dri3GetSupportedModifiers(dri3::GetSupportedModifiersRequest::try_parse_request(header, remaining)?)),
1477                     dri3::PIXMAP_FROM_BUFFERS_REQUEST => return Ok(Request::Dri3PixmapFromBuffers(dri3::PixmapFromBuffersRequest::try_parse_request_fd(header, remaining, fds)?)),
1478                     dri3::BUFFERS_FROM_PIXMAP_REQUEST => return Ok(Request::Dri3BuffersFromPixmap(dri3::BuffersFromPixmapRequest::try_parse_request(header, remaining)?)),
1479                     _ => (),
1480                 }
1481             }
1482             Some((ge::X11_EXTENSION_NAME, _)) => {
1483                 match header.minor_opcode {
1484                     ge::QUERY_VERSION_REQUEST => return Ok(Request::GeQueryVersion(ge::QueryVersionRequest::try_parse_request(header, remaining)?)),
1485                     _ => (),
1486                 }
1487             }
1488             #[cfg(feature = "glx")]
1489             Some((glx::X11_EXTENSION_NAME, _)) => {
1490                 match header.minor_opcode {
1491                     glx::RENDER_REQUEST => return Ok(Request::GlxRender(glx::RenderRequest::try_parse_request(header, remaining)?)),
1492                     glx::RENDER_LARGE_REQUEST => return Ok(Request::GlxRenderLarge(glx::RenderLargeRequest::try_parse_request(header, remaining)?)),
1493                     glx::CREATE_CONTEXT_REQUEST => return Ok(Request::GlxCreateContext(glx::CreateContextRequest::try_parse_request(header, remaining)?)),
1494                     glx::DESTROY_CONTEXT_REQUEST => return Ok(Request::GlxDestroyContext(glx::DestroyContextRequest::try_parse_request(header, remaining)?)),
1495                     glx::MAKE_CURRENT_REQUEST => return Ok(Request::GlxMakeCurrent(glx::MakeCurrentRequest::try_parse_request(header, remaining)?)),
1496                     glx::IS_DIRECT_REQUEST => return Ok(Request::GlxIsDirect(glx::IsDirectRequest::try_parse_request(header, remaining)?)),
1497                     glx::QUERY_VERSION_REQUEST => return Ok(Request::GlxQueryVersion(glx::QueryVersionRequest::try_parse_request(header, remaining)?)),
1498                     glx::WAIT_GL_REQUEST => return Ok(Request::GlxWaitGL(glx::WaitGLRequest::try_parse_request(header, remaining)?)),
1499                     glx::WAIT_X_REQUEST => return Ok(Request::GlxWaitX(glx::WaitXRequest::try_parse_request(header, remaining)?)),
1500                     glx::COPY_CONTEXT_REQUEST => return Ok(Request::GlxCopyContext(glx::CopyContextRequest::try_parse_request(header, remaining)?)),
1501                     glx::SWAP_BUFFERS_REQUEST => return Ok(Request::GlxSwapBuffers(glx::SwapBuffersRequest::try_parse_request(header, remaining)?)),
1502                     glx::USE_X_FONT_REQUEST => return Ok(Request::GlxUseXFont(glx::UseXFontRequest::try_parse_request(header, remaining)?)),
1503                     glx::CREATE_GLX_PIXMAP_REQUEST => return Ok(Request::GlxCreateGLXPixmap(glx::CreateGLXPixmapRequest::try_parse_request(header, remaining)?)),
1504                     glx::GET_VISUAL_CONFIGS_REQUEST => return Ok(Request::GlxGetVisualConfigs(glx::GetVisualConfigsRequest::try_parse_request(header, remaining)?)),
1505                     glx::DESTROY_GLX_PIXMAP_REQUEST => return Ok(Request::GlxDestroyGLXPixmap(glx::DestroyGLXPixmapRequest::try_parse_request(header, remaining)?)),
1506                     glx::VENDOR_PRIVATE_REQUEST => return Ok(Request::GlxVendorPrivate(glx::VendorPrivateRequest::try_parse_request(header, remaining)?)),
1507                     glx::VENDOR_PRIVATE_WITH_REPLY_REQUEST => return Ok(Request::GlxVendorPrivateWithReply(glx::VendorPrivateWithReplyRequest::try_parse_request(header, remaining)?)),
1508                     glx::QUERY_EXTENSIONS_STRING_REQUEST => return Ok(Request::GlxQueryExtensionsString(glx::QueryExtensionsStringRequest::try_parse_request(header, remaining)?)),
1509                     glx::QUERY_SERVER_STRING_REQUEST => return Ok(Request::GlxQueryServerString(glx::QueryServerStringRequest::try_parse_request(header, remaining)?)),
1510                     glx::CLIENT_INFO_REQUEST => return Ok(Request::GlxClientInfo(glx::ClientInfoRequest::try_parse_request(header, remaining)?)),
1511                     glx::GET_FB_CONFIGS_REQUEST => return Ok(Request::GlxGetFBConfigs(glx::GetFBConfigsRequest::try_parse_request(header, remaining)?)),
1512                     glx::CREATE_PIXMAP_REQUEST => return Ok(Request::GlxCreatePixmap(glx::CreatePixmapRequest::try_parse_request(header, remaining)?)),
1513                     glx::DESTROY_PIXMAP_REQUEST => return Ok(Request::GlxDestroyPixmap(glx::DestroyPixmapRequest::try_parse_request(header, remaining)?)),
1514                     glx::CREATE_NEW_CONTEXT_REQUEST => return Ok(Request::GlxCreateNewContext(glx::CreateNewContextRequest::try_parse_request(header, remaining)?)),
1515                     glx::QUERY_CONTEXT_REQUEST => return Ok(Request::GlxQueryContext(glx::QueryContextRequest::try_parse_request(header, remaining)?)),
1516                     glx::MAKE_CONTEXT_CURRENT_REQUEST => return Ok(Request::GlxMakeContextCurrent(glx::MakeContextCurrentRequest::try_parse_request(header, remaining)?)),
1517                     glx::CREATE_PBUFFER_REQUEST => return Ok(Request::GlxCreatePbuffer(glx::CreatePbufferRequest::try_parse_request(header, remaining)?)),
1518                     glx::DESTROY_PBUFFER_REQUEST => return Ok(Request::GlxDestroyPbuffer(glx::DestroyPbufferRequest::try_parse_request(header, remaining)?)),
1519                     glx::GET_DRAWABLE_ATTRIBUTES_REQUEST => return Ok(Request::GlxGetDrawableAttributes(glx::GetDrawableAttributesRequest::try_parse_request(header, remaining)?)),
1520                     glx::CHANGE_DRAWABLE_ATTRIBUTES_REQUEST => return Ok(Request::GlxChangeDrawableAttributes(glx::ChangeDrawableAttributesRequest::try_parse_request(header, remaining)?)),
1521                     glx::CREATE_WINDOW_REQUEST => return Ok(Request::GlxCreateWindow(glx::CreateWindowRequest::try_parse_request(header, remaining)?)),
1522                     glx::DELETE_WINDOW_REQUEST => return Ok(Request::GlxDeleteWindow(glx::DeleteWindowRequest::try_parse_request(header, remaining)?)),
1523                     glx::SET_CLIENT_INFO_ARB_REQUEST => return Ok(Request::GlxSetClientInfoARB(glx::SetClientInfoARBRequest::try_parse_request(header, remaining)?)),
1524                     glx::CREATE_CONTEXT_ATTRIBS_ARB_REQUEST => return Ok(Request::GlxCreateContextAttribsARB(glx::CreateContextAttribsARBRequest::try_parse_request(header, remaining)?)),
1525                     glx::SET_CLIENT_INFO2_ARB_REQUEST => return Ok(Request::GlxSetClientInfo2ARB(glx::SetClientInfo2ARBRequest::try_parse_request(header, remaining)?)),
1526                     glx::NEW_LIST_REQUEST => return Ok(Request::GlxNewList(glx::NewListRequest::try_parse_request(header, remaining)?)),
1527                     glx::END_LIST_REQUEST => return Ok(Request::GlxEndList(glx::EndListRequest::try_parse_request(header, remaining)?)),
1528                     glx::DELETE_LISTS_REQUEST => return Ok(Request::GlxDeleteLists(glx::DeleteListsRequest::try_parse_request(header, remaining)?)),
1529                     glx::GEN_LISTS_REQUEST => return Ok(Request::GlxGenLists(glx::GenListsRequest::try_parse_request(header, remaining)?)),
1530                     glx::FEEDBACK_BUFFER_REQUEST => return Ok(Request::GlxFeedbackBuffer(glx::FeedbackBufferRequest::try_parse_request(header, remaining)?)),
1531                     glx::SELECT_BUFFER_REQUEST => return Ok(Request::GlxSelectBuffer(glx::SelectBufferRequest::try_parse_request(header, remaining)?)),
1532                     glx::RENDER_MODE_REQUEST => return Ok(Request::GlxRenderMode(glx::RenderModeRequest::try_parse_request(header, remaining)?)),
1533                     glx::FINISH_REQUEST => return Ok(Request::GlxFinish(glx::FinishRequest::try_parse_request(header, remaining)?)),
1534                     glx::PIXEL_STOREF_REQUEST => return Ok(Request::GlxPixelStoref(glx::PixelStorefRequest::try_parse_request(header, remaining)?)),
1535                     glx::PIXEL_STOREI_REQUEST => return Ok(Request::GlxPixelStorei(glx::PixelStoreiRequest::try_parse_request(header, remaining)?)),
1536                     glx::READ_PIXELS_REQUEST => return Ok(Request::GlxReadPixels(glx::ReadPixelsRequest::try_parse_request(header, remaining)?)),
1537                     glx::GET_BOOLEANV_REQUEST => return Ok(Request::GlxGetBooleanv(glx::GetBooleanvRequest::try_parse_request(header, remaining)?)),
1538                     glx::GET_CLIP_PLANE_REQUEST => return Ok(Request::GlxGetClipPlane(glx::GetClipPlaneRequest::try_parse_request(header, remaining)?)),
1539                     glx::GET_DOUBLEV_REQUEST => return Ok(Request::GlxGetDoublev(glx::GetDoublevRequest::try_parse_request(header, remaining)?)),
1540                     glx::GET_ERROR_REQUEST => return Ok(Request::GlxGetError(glx::GetErrorRequest::try_parse_request(header, remaining)?)),
1541                     glx::GET_FLOATV_REQUEST => return Ok(Request::GlxGetFloatv(glx::GetFloatvRequest::try_parse_request(header, remaining)?)),
1542                     glx::GET_INTEGERV_REQUEST => return Ok(Request::GlxGetIntegerv(glx::GetIntegervRequest::try_parse_request(header, remaining)?)),
1543                     glx::GET_LIGHTFV_REQUEST => return Ok(Request::GlxGetLightfv(glx::GetLightfvRequest::try_parse_request(header, remaining)?)),
1544                     glx::GET_LIGHTIV_REQUEST => return Ok(Request::GlxGetLightiv(glx::GetLightivRequest::try_parse_request(header, remaining)?)),
1545                     glx::GET_MAPDV_REQUEST => return Ok(Request::GlxGetMapdv(glx::GetMapdvRequest::try_parse_request(header, remaining)?)),
1546                     glx::GET_MAPFV_REQUEST => return Ok(Request::GlxGetMapfv(glx::GetMapfvRequest::try_parse_request(header, remaining)?)),
1547                     glx::GET_MAPIV_REQUEST => return Ok(Request::GlxGetMapiv(glx::GetMapivRequest::try_parse_request(header, remaining)?)),
1548                     glx::GET_MATERIALFV_REQUEST => return Ok(Request::GlxGetMaterialfv(glx::GetMaterialfvRequest::try_parse_request(header, remaining)?)),
1549                     glx::GET_MATERIALIV_REQUEST => return Ok(Request::GlxGetMaterialiv(glx::GetMaterialivRequest::try_parse_request(header, remaining)?)),
1550                     glx::GET_PIXEL_MAPFV_REQUEST => return Ok(Request::GlxGetPixelMapfv(glx::GetPixelMapfvRequest::try_parse_request(header, remaining)?)),
1551                     glx::GET_PIXEL_MAPUIV_REQUEST => return Ok(Request::GlxGetPixelMapuiv(glx::GetPixelMapuivRequest::try_parse_request(header, remaining)?)),
1552                     glx::GET_PIXEL_MAPUSV_REQUEST => return Ok(Request::GlxGetPixelMapusv(glx::GetPixelMapusvRequest::try_parse_request(header, remaining)?)),
1553                     glx::GET_POLYGON_STIPPLE_REQUEST => return Ok(Request::GlxGetPolygonStipple(glx::GetPolygonStippleRequest::try_parse_request(header, remaining)?)),
1554                     glx::GET_STRING_REQUEST => return Ok(Request::GlxGetString(glx::GetStringRequest::try_parse_request(header, remaining)?)),
1555                     glx::GET_TEX_ENVFV_REQUEST => return Ok(Request::GlxGetTexEnvfv(glx::GetTexEnvfvRequest::try_parse_request(header, remaining)?)),
1556                     glx::GET_TEX_ENVIV_REQUEST => return Ok(Request::GlxGetTexEnviv(glx::GetTexEnvivRequest::try_parse_request(header, remaining)?)),
1557                     glx::GET_TEX_GENDV_REQUEST => return Ok(Request::GlxGetTexGendv(glx::GetTexGendvRequest::try_parse_request(header, remaining)?)),
1558                     glx::GET_TEX_GENFV_REQUEST => return Ok(Request::GlxGetTexGenfv(glx::GetTexGenfvRequest::try_parse_request(header, remaining)?)),
1559                     glx::GET_TEX_GENIV_REQUEST => return Ok(Request::GlxGetTexGeniv(glx::GetTexGenivRequest::try_parse_request(header, remaining)?)),
1560                     glx::GET_TEX_IMAGE_REQUEST => return Ok(Request::GlxGetTexImage(glx::GetTexImageRequest::try_parse_request(header, remaining)?)),
1561                     glx::GET_TEX_PARAMETERFV_REQUEST => return Ok(Request::GlxGetTexParameterfv(glx::GetTexParameterfvRequest::try_parse_request(header, remaining)?)),
1562                     glx::GET_TEX_PARAMETERIV_REQUEST => return Ok(Request::GlxGetTexParameteriv(glx::GetTexParameterivRequest::try_parse_request(header, remaining)?)),
1563                     glx::GET_TEX_LEVEL_PARAMETERFV_REQUEST => return Ok(Request::GlxGetTexLevelParameterfv(glx::GetTexLevelParameterfvRequest::try_parse_request(header, remaining)?)),
1564                     glx::GET_TEX_LEVEL_PARAMETERIV_REQUEST => return Ok(Request::GlxGetTexLevelParameteriv(glx::GetTexLevelParameterivRequest::try_parse_request(header, remaining)?)),
1565                     glx::IS_ENABLED_REQUEST => return Ok(Request::GlxIsEnabled(glx::IsEnabledRequest::try_parse_request(header, remaining)?)),
1566                     glx::IS_LIST_REQUEST => return Ok(Request::GlxIsList(glx::IsListRequest::try_parse_request(header, remaining)?)),
1567                     glx::FLUSH_REQUEST => return Ok(Request::GlxFlush(glx::FlushRequest::try_parse_request(header, remaining)?)),
1568                     glx::ARE_TEXTURES_RESIDENT_REQUEST => return Ok(Request::GlxAreTexturesResident(glx::AreTexturesResidentRequest::try_parse_request(header, remaining)?)),
1569                     glx::DELETE_TEXTURES_REQUEST => return Ok(Request::GlxDeleteTextures(glx::DeleteTexturesRequest::try_parse_request(header, remaining)?)),
1570                     glx::GEN_TEXTURES_REQUEST => return Ok(Request::GlxGenTextures(glx::GenTexturesRequest::try_parse_request(header, remaining)?)),
1571                     glx::IS_TEXTURE_REQUEST => return Ok(Request::GlxIsTexture(glx::IsTextureRequest::try_parse_request(header, remaining)?)),
1572                     glx::GET_COLOR_TABLE_REQUEST => return Ok(Request::GlxGetColorTable(glx::GetColorTableRequest::try_parse_request(header, remaining)?)),
1573                     glx::GET_COLOR_TABLE_PARAMETERFV_REQUEST => return Ok(Request::GlxGetColorTableParameterfv(glx::GetColorTableParameterfvRequest::try_parse_request(header, remaining)?)),
1574                     glx::GET_COLOR_TABLE_PARAMETERIV_REQUEST => return Ok(Request::GlxGetColorTableParameteriv(glx::GetColorTableParameterivRequest::try_parse_request(header, remaining)?)),
1575                     glx::GET_CONVOLUTION_FILTER_REQUEST => return Ok(Request::GlxGetConvolutionFilter(glx::GetConvolutionFilterRequest::try_parse_request(header, remaining)?)),
1576                     glx::GET_CONVOLUTION_PARAMETERFV_REQUEST => return Ok(Request::GlxGetConvolutionParameterfv(glx::GetConvolutionParameterfvRequest::try_parse_request(header, remaining)?)),
1577                     glx::GET_CONVOLUTION_PARAMETERIV_REQUEST => return Ok(Request::GlxGetConvolutionParameteriv(glx::GetConvolutionParameterivRequest::try_parse_request(header, remaining)?)),
1578                     glx::GET_SEPARABLE_FILTER_REQUEST => return Ok(Request::GlxGetSeparableFilter(glx::GetSeparableFilterRequest::try_parse_request(header, remaining)?)),
1579                     glx::GET_HISTOGRAM_REQUEST => return Ok(Request::GlxGetHistogram(glx::GetHistogramRequest::try_parse_request(header, remaining)?)),
1580                     glx::GET_HISTOGRAM_PARAMETERFV_REQUEST => return Ok(Request::GlxGetHistogramParameterfv(glx::GetHistogramParameterfvRequest::try_parse_request(header, remaining)?)),
1581                     glx::GET_HISTOGRAM_PARAMETERIV_REQUEST => return Ok(Request::GlxGetHistogramParameteriv(glx::GetHistogramParameterivRequest::try_parse_request(header, remaining)?)),
1582                     glx::GET_MINMAX_REQUEST => return Ok(Request::GlxGetMinmax(glx::GetMinmaxRequest::try_parse_request(header, remaining)?)),
1583                     glx::GET_MINMAX_PARAMETERFV_REQUEST => return Ok(Request::GlxGetMinmaxParameterfv(glx::GetMinmaxParameterfvRequest::try_parse_request(header, remaining)?)),
1584                     glx::GET_MINMAX_PARAMETERIV_REQUEST => return Ok(Request::GlxGetMinmaxParameteriv(glx::GetMinmaxParameterivRequest::try_parse_request(header, remaining)?)),
1585                     glx::GET_COMPRESSED_TEX_IMAGE_ARB_REQUEST => return Ok(Request::GlxGetCompressedTexImageARB(glx::GetCompressedTexImageARBRequest::try_parse_request(header, remaining)?)),
1586                     glx::DELETE_QUERIES_ARB_REQUEST => return Ok(Request::GlxDeleteQueriesARB(glx::DeleteQueriesARBRequest::try_parse_request(header, remaining)?)),
1587                     glx::GEN_QUERIES_ARB_REQUEST => return Ok(Request::GlxGenQueriesARB(glx::GenQueriesARBRequest::try_parse_request(header, remaining)?)),
1588                     glx::IS_QUERY_ARB_REQUEST => return Ok(Request::GlxIsQueryARB(glx::IsQueryARBRequest::try_parse_request(header, remaining)?)),
1589                     glx::GET_QUERYIV_ARB_REQUEST => return Ok(Request::GlxGetQueryivARB(glx::GetQueryivARBRequest::try_parse_request(header, remaining)?)),
1590                     glx::GET_QUERY_OBJECTIV_ARB_REQUEST => return Ok(Request::GlxGetQueryObjectivARB(glx::GetQueryObjectivARBRequest::try_parse_request(header, remaining)?)),
1591                     glx::GET_QUERY_OBJECTUIV_ARB_REQUEST => return Ok(Request::GlxGetQueryObjectuivARB(glx::GetQueryObjectuivARBRequest::try_parse_request(header, remaining)?)),
1592                     _ => (),
1593                 }
1594             }
1595             #[cfg(feature = "present")]
1596             Some((present::X11_EXTENSION_NAME, _)) => {
1597                 match header.minor_opcode {
1598                     present::QUERY_VERSION_REQUEST => return Ok(Request::PresentQueryVersion(present::QueryVersionRequest::try_parse_request(header, remaining)?)),
1599                     present::PIXMAP_REQUEST => return Ok(Request::PresentPixmap(present::PixmapRequest::try_parse_request(header, remaining)?)),
1600                     present::NOTIFY_MSC_REQUEST => return Ok(Request::PresentNotifyMSC(present::NotifyMSCRequest::try_parse_request(header, remaining)?)),
1601                     present::SELECT_INPUT_REQUEST => return Ok(Request::PresentSelectInput(present::SelectInputRequest::try_parse_request(header, remaining)?)),
1602                     present::QUERY_CAPABILITIES_REQUEST => return Ok(Request::PresentQueryCapabilities(present::QueryCapabilitiesRequest::try_parse_request(header, remaining)?)),
1603                     _ => (),
1604                 }
1605             }
1606             #[cfg(feature = "randr")]
1607             Some((randr::X11_EXTENSION_NAME, _)) => {
1608                 match header.minor_opcode {
1609                     randr::QUERY_VERSION_REQUEST => return Ok(Request::RandrQueryVersion(randr::QueryVersionRequest::try_parse_request(header, remaining)?)),
1610                     randr::SET_SCREEN_CONFIG_REQUEST => return Ok(Request::RandrSetScreenConfig(randr::SetScreenConfigRequest::try_parse_request(header, remaining)?)),
1611                     randr::SELECT_INPUT_REQUEST => return Ok(Request::RandrSelectInput(randr::SelectInputRequest::try_parse_request(header, remaining)?)),
1612                     randr::GET_SCREEN_INFO_REQUEST => return Ok(Request::RandrGetScreenInfo(randr::GetScreenInfoRequest::try_parse_request(header, remaining)?)),
1613                     randr::GET_SCREEN_SIZE_RANGE_REQUEST => return Ok(Request::RandrGetScreenSizeRange(randr::GetScreenSizeRangeRequest::try_parse_request(header, remaining)?)),
1614                     randr::SET_SCREEN_SIZE_REQUEST => return Ok(Request::RandrSetScreenSize(randr::SetScreenSizeRequest::try_parse_request(header, remaining)?)),
1615                     randr::GET_SCREEN_RESOURCES_REQUEST => return Ok(Request::RandrGetScreenResources(randr::GetScreenResourcesRequest::try_parse_request(header, remaining)?)),
1616                     randr::GET_OUTPUT_INFO_REQUEST => return Ok(Request::RandrGetOutputInfo(randr::GetOutputInfoRequest::try_parse_request(header, remaining)?)),
1617                     randr::LIST_OUTPUT_PROPERTIES_REQUEST => return Ok(Request::RandrListOutputProperties(randr::ListOutputPropertiesRequest::try_parse_request(header, remaining)?)),
1618                     randr::QUERY_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrQueryOutputProperty(randr::QueryOutputPropertyRequest::try_parse_request(header, remaining)?)),
1619                     randr::CONFIGURE_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrConfigureOutputProperty(randr::ConfigureOutputPropertyRequest::try_parse_request(header, remaining)?)),
1620                     randr::CHANGE_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrChangeOutputProperty(randr::ChangeOutputPropertyRequest::try_parse_request(header, remaining)?)),
1621                     randr::DELETE_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrDeleteOutputProperty(randr::DeleteOutputPropertyRequest::try_parse_request(header, remaining)?)),
1622                     randr::GET_OUTPUT_PROPERTY_REQUEST => return Ok(Request::RandrGetOutputProperty(randr::GetOutputPropertyRequest::try_parse_request(header, remaining)?)),
1623                     randr::CREATE_MODE_REQUEST => return Ok(Request::RandrCreateMode(randr::CreateModeRequest::try_parse_request(header, remaining)?)),
1624                     randr::DESTROY_MODE_REQUEST => return Ok(Request::RandrDestroyMode(randr::DestroyModeRequest::try_parse_request(header, remaining)?)),
1625                     randr::ADD_OUTPUT_MODE_REQUEST => return Ok(Request::RandrAddOutputMode(randr::AddOutputModeRequest::try_parse_request(header, remaining)?)),
1626                     randr::DELETE_OUTPUT_MODE_REQUEST => return Ok(Request::RandrDeleteOutputMode(randr::DeleteOutputModeRequest::try_parse_request(header, remaining)?)),
1627                     randr::GET_CRTC_INFO_REQUEST => return Ok(Request::RandrGetCrtcInfo(randr::GetCrtcInfoRequest::try_parse_request(header, remaining)?)),
1628                     randr::SET_CRTC_CONFIG_REQUEST => return Ok(Request::RandrSetCrtcConfig(randr::SetCrtcConfigRequest::try_parse_request(header, remaining)?)),
1629                     randr::GET_CRTC_GAMMA_SIZE_REQUEST => return Ok(Request::RandrGetCrtcGammaSize(randr::GetCrtcGammaSizeRequest::try_parse_request(header, remaining)?)),
1630                     randr::GET_CRTC_GAMMA_REQUEST => return Ok(Request::RandrGetCrtcGamma(randr::GetCrtcGammaRequest::try_parse_request(header, remaining)?)),
1631                     randr::SET_CRTC_GAMMA_REQUEST => return Ok(Request::RandrSetCrtcGamma(randr::SetCrtcGammaRequest::try_parse_request(header, remaining)?)),
1632                     randr::GET_SCREEN_RESOURCES_CURRENT_REQUEST => return Ok(Request::RandrGetScreenResourcesCurrent(randr::GetScreenResourcesCurrentRequest::try_parse_request(header, remaining)?)),
1633                     randr::SET_CRTC_TRANSFORM_REQUEST => return Ok(Request::RandrSetCrtcTransform(randr::SetCrtcTransformRequest::try_parse_request(header, remaining)?)),
1634                     randr::GET_CRTC_TRANSFORM_REQUEST => return Ok(Request::RandrGetCrtcTransform(randr::GetCrtcTransformRequest::try_parse_request(header, remaining)?)),
1635                     randr::GET_PANNING_REQUEST => return Ok(Request::RandrGetPanning(randr::GetPanningRequest::try_parse_request(header, remaining)?)),
1636                     randr::SET_PANNING_REQUEST => return Ok(Request::RandrSetPanning(randr::SetPanningRequest::try_parse_request(header, remaining)?)),
1637                     randr::SET_OUTPUT_PRIMARY_REQUEST => return Ok(Request::RandrSetOutputPrimary(randr::SetOutputPrimaryRequest::try_parse_request(header, remaining)?)),
1638                     randr::GET_OUTPUT_PRIMARY_REQUEST => return Ok(Request::RandrGetOutputPrimary(randr::GetOutputPrimaryRequest::try_parse_request(header, remaining)?)),
1639                     randr::GET_PROVIDERS_REQUEST => return Ok(Request::RandrGetProviders(randr::GetProvidersRequest::try_parse_request(header, remaining)?)),
1640                     randr::GET_PROVIDER_INFO_REQUEST => return Ok(Request::RandrGetProviderInfo(randr::GetProviderInfoRequest::try_parse_request(header, remaining)?)),
1641                     randr::SET_PROVIDER_OFFLOAD_SINK_REQUEST => return Ok(Request::RandrSetProviderOffloadSink(randr::SetProviderOffloadSinkRequest::try_parse_request(header, remaining)?)),
1642                     randr::SET_PROVIDER_OUTPUT_SOURCE_REQUEST => return Ok(Request::RandrSetProviderOutputSource(randr::SetProviderOutputSourceRequest::try_parse_request(header, remaining)?)),
1643                     randr::LIST_PROVIDER_PROPERTIES_REQUEST => return Ok(Request::RandrListProviderProperties(randr::ListProviderPropertiesRequest::try_parse_request(header, remaining)?)),
1644                     randr::QUERY_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrQueryProviderProperty(randr::QueryProviderPropertyRequest::try_parse_request(header, remaining)?)),
1645                     randr::CONFIGURE_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrConfigureProviderProperty(randr::ConfigureProviderPropertyRequest::try_parse_request(header, remaining)?)),
1646                     randr::CHANGE_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrChangeProviderProperty(randr::ChangeProviderPropertyRequest::try_parse_request(header, remaining)?)),
1647                     randr::DELETE_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrDeleteProviderProperty(randr::DeleteProviderPropertyRequest::try_parse_request(header, remaining)?)),
1648                     randr::GET_PROVIDER_PROPERTY_REQUEST => return Ok(Request::RandrGetProviderProperty(randr::GetProviderPropertyRequest::try_parse_request(header, remaining)?)),
1649                     randr::GET_MONITORS_REQUEST => return Ok(Request::RandrGetMonitors(randr::GetMonitorsRequest::try_parse_request(header, remaining)?)),
1650                     randr::SET_MONITOR_REQUEST => return Ok(Request::RandrSetMonitor(randr::SetMonitorRequest::try_parse_request(header, remaining)?)),
1651                     randr::DELETE_MONITOR_REQUEST => return Ok(Request::RandrDeleteMonitor(randr::DeleteMonitorRequest::try_parse_request(header, remaining)?)),
1652                     randr::CREATE_LEASE_REQUEST => return Ok(Request::RandrCreateLease(randr::CreateLeaseRequest::try_parse_request(header, remaining)?)),
1653                     randr::FREE_LEASE_REQUEST => return Ok(Request::RandrFreeLease(randr::FreeLeaseRequest::try_parse_request(header, remaining)?)),
1654                     _ => (),
1655                 }
1656             }
1657             #[cfg(feature = "record")]
1658             Some((record::X11_EXTENSION_NAME, _)) => {
1659                 match header.minor_opcode {
1660                     record::QUERY_VERSION_REQUEST => return Ok(Request::RecordQueryVersion(record::QueryVersionRequest::try_parse_request(header, remaining)?)),
1661                     record::CREATE_CONTEXT_REQUEST => return Ok(Request::RecordCreateContext(record::CreateContextRequest::try_parse_request(header, remaining)?)),
1662                     record::REGISTER_CLIENTS_REQUEST => return Ok(Request::RecordRegisterClients(record::RegisterClientsRequest::try_parse_request(header, remaining)?)),
1663                     record::UNREGISTER_CLIENTS_REQUEST => return Ok(Request::RecordUnregisterClients(record::UnregisterClientsRequest::try_parse_request(header, remaining)?)),
1664                     record::GET_CONTEXT_REQUEST => return Ok(Request::RecordGetContext(record::GetContextRequest::try_parse_request(header, remaining)?)),
1665                     record::ENABLE_CONTEXT_REQUEST => return Ok(Request::RecordEnableContext(record::EnableContextRequest::try_parse_request(header, remaining)?)),
1666                     record::DISABLE_CONTEXT_REQUEST => return Ok(Request::RecordDisableContext(record::DisableContextRequest::try_parse_request(header, remaining)?)),
1667                     record::FREE_CONTEXT_REQUEST => return Ok(Request::RecordFreeContext(record::FreeContextRequest::try_parse_request(header, remaining)?)),
1668                     _ => (),
1669                 }
1670             }
1671             #[cfg(feature = "render")]
1672             Some((render::X11_EXTENSION_NAME, _)) => {
1673                 match header.minor_opcode {
1674                     render::QUERY_VERSION_REQUEST => return Ok(Request::RenderQueryVersion(render::QueryVersionRequest::try_parse_request(header, remaining)?)),
1675                     render::QUERY_PICT_FORMATS_REQUEST => return Ok(Request::RenderQueryPictFormats(render::QueryPictFormatsRequest::try_parse_request(header, remaining)?)),
1676                     render::QUERY_PICT_INDEX_VALUES_REQUEST => return Ok(Request::RenderQueryPictIndexValues(render::QueryPictIndexValuesRequest::try_parse_request(header, remaining)?)),
1677                     render::CREATE_PICTURE_REQUEST => return Ok(Request::RenderCreatePicture(render::CreatePictureRequest::try_parse_request(header, remaining)?)),
1678                     render::CHANGE_PICTURE_REQUEST => return Ok(Request::RenderChangePicture(render::ChangePictureRequest::try_parse_request(header, remaining)?)),
1679                     render::SET_PICTURE_CLIP_RECTANGLES_REQUEST => return Ok(Request::RenderSetPictureClipRectangles(render::SetPictureClipRectanglesRequest::try_parse_request(header, remaining)?)),
1680                     render::FREE_PICTURE_REQUEST => return Ok(Request::RenderFreePicture(render::FreePictureRequest::try_parse_request(header, remaining)?)),
1681                     render::COMPOSITE_REQUEST => return Ok(Request::RenderComposite(render::CompositeRequest::try_parse_request(header, remaining)?)),
1682                     render::TRAPEZOIDS_REQUEST => return Ok(Request::RenderTrapezoids(render::TrapezoidsRequest::try_parse_request(header, remaining)?)),
1683                     render::TRIANGLES_REQUEST => return Ok(Request::RenderTriangles(render::TrianglesRequest::try_parse_request(header, remaining)?)),
1684                     render::TRI_STRIP_REQUEST => return Ok(Request::RenderTriStrip(render::TriStripRequest::try_parse_request(header, remaining)?)),
1685                     render::TRI_FAN_REQUEST => return Ok(Request::RenderTriFan(render::TriFanRequest::try_parse_request(header, remaining)?)),
1686                     render::CREATE_GLYPH_SET_REQUEST => return Ok(Request::RenderCreateGlyphSet(render::CreateGlyphSetRequest::try_parse_request(header, remaining)?)),
1687                     render::REFERENCE_GLYPH_SET_REQUEST => return Ok(Request::RenderReferenceGlyphSet(render::ReferenceGlyphSetRequest::try_parse_request(header, remaining)?)),
1688                     render::FREE_GLYPH_SET_REQUEST => return Ok(Request::RenderFreeGlyphSet(render::FreeGlyphSetRequest::try_parse_request(header, remaining)?)),
1689                     render::ADD_GLYPHS_REQUEST => return Ok(Request::RenderAddGlyphs(render::AddGlyphsRequest::try_parse_request(header, remaining)?)),
1690                     render::FREE_GLYPHS_REQUEST => return Ok(Request::RenderFreeGlyphs(render::FreeGlyphsRequest::try_parse_request(header, remaining)?)),
1691                     render::COMPOSITE_GLYPHS8_REQUEST => return Ok(Request::RenderCompositeGlyphs8(render::CompositeGlyphs8Request::try_parse_request(header, remaining)?)),
1692                     render::COMPOSITE_GLYPHS16_REQUEST => return Ok(Request::RenderCompositeGlyphs16(render::CompositeGlyphs16Request::try_parse_request(header, remaining)?)),
1693                     render::COMPOSITE_GLYPHS32_REQUEST => return Ok(Request::RenderCompositeGlyphs32(render::CompositeGlyphs32Request::try_parse_request(header, remaining)?)),
1694                     render::FILL_RECTANGLES_REQUEST => return Ok(Request::RenderFillRectangles(render::FillRectanglesRequest::try_parse_request(header, remaining)?)),
1695                     render::CREATE_CURSOR_REQUEST => return Ok(Request::RenderCreateCursor(render::CreateCursorRequest::try_parse_request(header, remaining)?)),
1696                     render::SET_PICTURE_TRANSFORM_REQUEST => return Ok(Request::RenderSetPictureTransform(render::SetPictureTransformRequest::try_parse_request(header, remaining)?)),
1697                     render::QUERY_FILTERS_REQUEST => return Ok(Request::RenderQueryFilters(render::QueryFiltersRequest::try_parse_request(header, remaining)?)),
1698                     render::SET_PICTURE_FILTER_REQUEST => return Ok(Request::RenderSetPictureFilter(render::SetPictureFilterRequest::try_parse_request(header, remaining)?)),
1699                     render::CREATE_ANIM_CURSOR_REQUEST => return Ok(Request::RenderCreateAnimCursor(render::CreateAnimCursorRequest::try_parse_request(header, remaining)?)),
1700                     render::ADD_TRAPS_REQUEST => return Ok(Request::RenderAddTraps(render::AddTrapsRequest::try_parse_request(header, remaining)?)),
1701                     render::CREATE_SOLID_FILL_REQUEST => return Ok(Request::RenderCreateSolidFill(render::CreateSolidFillRequest::try_parse_request(header, remaining)?)),
1702                     render::CREATE_LINEAR_GRADIENT_REQUEST => return Ok(Request::RenderCreateLinearGradient(render::CreateLinearGradientRequest::try_parse_request(header, remaining)?)),
1703                     render::CREATE_RADIAL_GRADIENT_REQUEST => return Ok(Request::RenderCreateRadialGradient(render::CreateRadialGradientRequest::try_parse_request(header, remaining)?)),
1704                     render::CREATE_CONICAL_GRADIENT_REQUEST => return Ok(Request::RenderCreateConicalGradient(render::CreateConicalGradientRequest::try_parse_request(header, remaining)?)),
1705                     _ => (),
1706                 }
1707             }
1708             #[cfg(feature = "res")]
1709             Some((res::X11_EXTENSION_NAME, _)) => {
1710                 match header.minor_opcode {
1711                     res::QUERY_VERSION_REQUEST => return Ok(Request::ResQueryVersion(res::QueryVersionRequest::try_parse_request(header, remaining)?)),
1712                     res::QUERY_CLIENTS_REQUEST => return Ok(Request::ResQueryClients(res::QueryClientsRequest::try_parse_request(header, remaining)?)),
1713                     res::QUERY_CLIENT_RESOURCES_REQUEST => return Ok(Request::ResQueryClientResources(res::QueryClientResourcesRequest::try_parse_request(header, remaining)?)),
1714                     res::QUERY_CLIENT_PIXMAP_BYTES_REQUEST => return Ok(Request::ResQueryClientPixmapBytes(res::QueryClientPixmapBytesRequest::try_parse_request(header, remaining)?)),
1715                     res::QUERY_CLIENT_IDS_REQUEST => return Ok(Request::ResQueryClientIds(res::QueryClientIdsRequest::try_parse_request(header, remaining)?)),
1716                     res::QUERY_RESOURCE_BYTES_REQUEST => return Ok(Request::ResQueryResourceBytes(res::QueryResourceBytesRequest::try_parse_request(header, remaining)?)),
1717                     _ => (),
1718                 }
1719             }
1720             #[cfg(feature = "screensaver")]
1721             Some((screensaver::X11_EXTENSION_NAME, _)) => {
1722                 match header.minor_opcode {
1723                     screensaver::QUERY_VERSION_REQUEST => return Ok(Request::ScreensaverQueryVersion(screensaver::QueryVersionRequest::try_parse_request(header, remaining)?)),
1724                     screensaver::QUERY_INFO_REQUEST => return Ok(Request::ScreensaverQueryInfo(screensaver::QueryInfoRequest::try_parse_request(header, remaining)?)),
1725                     screensaver::SELECT_INPUT_REQUEST => return Ok(Request::ScreensaverSelectInput(screensaver::SelectInputRequest::try_parse_request(header, remaining)?)),
1726                     screensaver::SET_ATTRIBUTES_REQUEST => return Ok(Request::ScreensaverSetAttributes(screensaver::SetAttributesRequest::try_parse_request(header, remaining)?)),
1727                     screensaver::UNSET_ATTRIBUTES_REQUEST => return Ok(Request::ScreensaverUnsetAttributes(screensaver::UnsetAttributesRequest::try_parse_request(header, remaining)?)),
1728                     screensaver::SUSPEND_REQUEST => return Ok(Request::ScreensaverSuspend(screensaver::SuspendRequest::try_parse_request(header, remaining)?)),
1729                     _ => (),
1730                 }
1731             }
1732             #[cfg(feature = "shape")]
1733             Some((shape::X11_EXTENSION_NAME, _)) => {
1734                 match header.minor_opcode {
1735                     shape::QUERY_VERSION_REQUEST => return Ok(Request::ShapeQueryVersion(shape::QueryVersionRequest::try_parse_request(header, remaining)?)),
1736                     shape::RECTANGLES_REQUEST => return Ok(Request::ShapeRectangles(shape::RectanglesRequest::try_parse_request(header, remaining)?)),
1737                     shape::MASK_REQUEST => return Ok(Request::ShapeMask(shape::MaskRequest::try_parse_request(header, remaining)?)),
1738                     shape::COMBINE_REQUEST => return Ok(Request::ShapeCombine(shape::CombineRequest::try_parse_request(header, remaining)?)),
1739                     shape::OFFSET_REQUEST => return Ok(Request::ShapeOffset(shape::OffsetRequest::try_parse_request(header, remaining)?)),
1740                     shape::QUERY_EXTENTS_REQUEST => return Ok(Request::ShapeQueryExtents(shape::QueryExtentsRequest::try_parse_request(header, remaining)?)),
1741                     shape::SELECT_INPUT_REQUEST => return Ok(Request::ShapeSelectInput(shape::SelectInputRequest::try_parse_request(header, remaining)?)),
1742                     shape::INPUT_SELECTED_REQUEST => return Ok(Request::ShapeInputSelected(shape::InputSelectedRequest::try_parse_request(header, remaining)?)),
1743                     shape::GET_RECTANGLES_REQUEST => return Ok(Request::ShapeGetRectangles(shape::GetRectanglesRequest::try_parse_request(header, remaining)?)),
1744                     _ => (),
1745                 }
1746             }
1747             #[cfg(feature = "shm")]
1748             Some((shm::X11_EXTENSION_NAME, _)) => {
1749                 match header.minor_opcode {
1750                     shm::QUERY_VERSION_REQUEST => return Ok(Request::ShmQueryVersion(shm::QueryVersionRequest::try_parse_request(header, remaining)?)),
1751                     shm::ATTACH_REQUEST => return Ok(Request::ShmAttach(shm::AttachRequest::try_parse_request(header, remaining)?)),
1752                     shm::DETACH_REQUEST => return Ok(Request::ShmDetach(shm::DetachRequest::try_parse_request(header, remaining)?)),
1753                     shm::PUT_IMAGE_REQUEST => return Ok(Request::ShmPutImage(shm::PutImageRequest::try_parse_request(header, remaining)?)),
1754                     shm::GET_IMAGE_REQUEST => return Ok(Request::ShmGetImage(shm::GetImageRequest::try_parse_request(header, remaining)?)),
1755                     shm::CREATE_PIXMAP_REQUEST => return Ok(Request::ShmCreatePixmap(shm::CreatePixmapRequest::try_parse_request(header, remaining)?)),
1756                     shm::ATTACH_FD_REQUEST => return Ok(Request::ShmAttachFd(shm::AttachFdRequest::try_parse_request_fd(header, remaining, fds)?)),
1757                     shm::CREATE_SEGMENT_REQUEST => return Ok(Request::ShmCreateSegment(shm::CreateSegmentRequest::try_parse_request(header, remaining)?)),
1758                     _ => (),
1759                 }
1760             }
1761             #[cfg(feature = "sync")]
1762             Some((sync::X11_EXTENSION_NAME, _)) => {
1763                 match header.minor_opcode {
1764                     sync::INITIALIZE_REQUEST => return Ok(Request::SyncInitialize(sync::InitializeRequest::try_parse_request(header, remaining)?)),
1765                     sync::LIST_SYSTEM_COUNTERS_REQUEST => return Ok(Request::SyncListSystemCounters(sync::ListSystemCountersRequest::try_parse_request(header, remaining)?)),
1766                     sync::CREATE_COUNTER_REQUEST => return Ok(Request::SyncCreateCounter(sync::CreateCounterRequest::try_parse_request(header, remaining)?)),
1767                     sync::DESTROY_COUNTER_REQUEST => return Ok(Request::SyncDestroyCounter(sync::DestroyCounterRequest::try_parse_request(header, remaining)?)),
1768                     sync::QUERY_COUNTER_REQUEST => return Ok(Request::SyncQueryCounter(sync::QueryCounterRequest::try_parse_request(header, remaining)?)),
1769                     sync::AWAIT_REQUEST => return Ok(Request::SyncAwait(sync::AwaitRequest::try_parse_request(header, remaining)?)),
1770                     sync::CHANGE_COUNTER_REQUEST => return Ok(Request::SyncChangeCounter(sync::ChangeCounterRequest::try_parse_request(header, remaining)?)),
1771                     sync::SET_COUNTER_REQUEST => return Ok(Request::SyncSetCounter(sync::SetCounterRequest::try_parse_request(header, remaining)?)),
1772                     sync::CREATE_ALARM_REQUEST => return Ok(Request::SyncCreateAlarm(sync::CreateAlarmRequest::try_parse_request(header, remaining)?)),
1773                     sync::CHANGE_ALARM_REQUEST => return Ok(Request::SyncChangeAlarm(sync::ChangeAlarmRequest::try_parse_request(header, remaining)?)),
1774                     sync::DESTROY_ALARM_REQUEST => return Ok(Request::SyncDestroyAlarm(sync::DestroyAlarmRequest::try_parse_request(header, remaining)?)),
1775                     sync::QUERY_ALARM_REQUEST => return Ok(Request::SyncQueryAlarm(sync::QueryAlarmRequest::try_parse_request(header, remaining)?)),
1776                     sync::SET_PRIORITY_REQUEST => return Ok(Request::SyncSetPriority(sync::SetPriorityRequest::try_parse_request(header, remaining)?)),
1777                     sync::GET_PRIORITY_REQUEST => return Ok(Request::SyncGetPriority(sync::GetPriorityRequest::try_parse_request(header, remaining)?)),
1778                     sync::CREATE_FENCE_REQUEST => return Ok(Request::SyncCreateFence(sync::CreateFenceRequest::try_parse_request(header, remaining)?)),
1779                     sync::TRIGGER_FENCE_REQUEST => return Ok(Request::SyncTriggerFence(sync::TriggerFenceRequest::try_parse_request(header, remaining)?)),
1780                     sync::RESET_FENCE_REQUEST => return Ok(Request::SyncResetFence(sync::ResetFenceRequest::try_parse_request(header, remaining)?)),
1781                     sync::DESTROY_FENCE_REQUEST => return Ok(Request::SyncDestroyFence(sync::DestroyFenceRequest::try_parse_request(header, remaining)?)),
1782                     sync::QUERY_FENCE_REQUEST => return Ok(Request::SyncQueryFence(sync::QueryFenceRequest::try_parse_request(header, remaining)?)),
1783                     sync::AWAIT_FENCE_REQUEST => return Ok(Request::SyncAwaitFence(sync::AwaitFenceRequest::try_parse_request(header, remaining)?)),
1784                     _ => (),
1785                 }
1786             }
1787             Some((xc_misc::X11_EXTENSION_NAME, _)) => {
1788                 match header.minor_opcode {
1789                     xc_misc::GET_VERSION_REQUEST => return Ok(Request::XcMiscGetVersion(xc_misc::GetVersionRequest::try_parse_request(header, remaining)?)),
1790                     xc_misc::GET_XID_RANGE_REQUEST => return Ok(Request::XcMiscGetXIDRange(xc_misc::GetXIDRangeRequest::try_parse_request(header, remaining)?)),
1791                     xc_misc::GET_XID_LIST_REQUEST => return Ok(Request::XcMiscGetXIDList(xc_misc::GetXIDListRequest::try_parse_request(header, remaining)?)),
1792                     _ => (),
1793                 }
1794             }
1795             #[cfg(feature = "xevie")]
1796             Some((xevie::X11_EXTENSION_NAME, _)) => {
1797                 match header.minor_opcode {
1798                     xevie::QUERY_VERSION_REQUEST => return Ok(Request::XevieQueryVersion(xevie::QueryVersionRequest::try_parse_request(header, remaining)?)),
1799                     xevie::START_REQUEST => return Ok(Request::XevieStart(xevie::StartRequest::try_parse_request(header, remaining)?)),
1800                     xevie::END_REQUEST => return Ok(Request::XevieEnd(xevie::EndRequest::try_parse_request(header, remaining)?)),
1801                     xevie::SEND_REQUEST => return Ok(Request::XevieSend(xevie::SendRequest::try_parse_request(header, remaining)?)),
1802                     xevie::SELECT_INPUT_REQUEST => return Ok(Request::XevieSelectInput(xevie::SelectInputRequest::try_parse_request(header, remaining)?)),
1803                     _ => (),
1804                 }
1805             }
1806             #[cfg(feature = "xf86dri")]
1807             Some((xf86dri::X11_EXTENSION_NAME, _)) => {
1808                 match header.minor_opcode {
1809                     xf86dri::QUERY_VERSION_REQUEST => return Ok(Request::Xf86driQueryVersion(xf86dri::QueryVersionRequest::try_parse_request(header, remaining)?)),
1810                     xf86dri::QUERY_DIRECT_RENDERING_CAPABLE_REQUEST => return Ok(Request::Xf86driQueryDirectRenderingCapable(xf86dri::QueryDirectRenderingCapableRequest::try_parse_request(header, remaining)?)),
1811                     xf86dri::OPEN_CONNECTION_REQUEST => return Ok(Request::Xf86driOpenConnection(xf86dri::OpenConnectionRequest::try_parse_request(header, remaining)?)),
1812                     xf86dri::CLOSE_CONNECTION_REQUEST => return Ok(Request::Xf86driCloseConnection(xf86dri::CloseConnectionRequest::try_parse_request(header, remaining)?)),
1813                     xf86dri::GET_CLIENT_DRIVER_NAME_REQUEST => return Ok(Request::Xf86driGetClientDriverName(xf86dri::GetClientDriverNameRequest::try_parse_request(header, remaining)?)),
1814                     xf86dri::CREATE_CONTEXT_REQUEST => return Ok(Request::Xf86driCreateContext(xf86dri::CreateContextRequest::try_parse_request(header, remaining)?)),
1815                     xf86dri::DESTROY_CONTEXT_REQUEST => return Ok(Request::Xf86driDestroyContext(xf86dri::DestroyContextRequest::try_parse_request(header, remaining)?)),
1816                     xf86dri::CREATE_DRAWABLE_REQUEST => return Ok(Request::Xf86driCreateDrawable(xf86dri::CreateDrawableRequest::try_parse_request(header, remaining)?)),
1817                     xf86dri::DESTROY_DRAWABLE_REQUEST => return Ok(Request::Xf86driDestroyDrawable(xf86dri::DestroyDrawableRequest::try_parse_request(header, remaining)?)),
1818                     xf86dri::GET_DRAWABLE_INFO_REQUEST => return Ok(Request::Xf86driGetDrawableInfo(xf86dri::GetDrawableInfoRequest::try_parse_request(header, remaining)?)),
1819                     xf86dri::GET_DEVICE_INFO_REQUEST => return Ok(Request::Xf86driGetDeviceInfo(xf86dri::GetDeviceInfoRequest::try_parse_request(header, remaining)?)),
1820                     xf86dri::AUTH_CONNECTION_REQUEST => return Ok(Request::Xf86driAuthConnection(xf86dri::AuthConnectionRequest::try_parse_request(header, remaining)?)),
1821                     _ => (),
1822                 }
1823             }
1824             #[cfg(feature = "xf86vidmode")]
1825             Some((xf86vidmode::X11_EXTENSION_NAME, _)) => {
1826                 match header.minor_opcode {
1827                     xf86vidmode::QUERY_VERSION_REQUEST => return Ok(Request::Xf86vidmodeQueryVersion(xf86vidmode::QueryVersionRequest::try_parse_request(header, remaining)?)),
1828                     xf86vidmode::GET_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeGetModeLine(xf86vidmode::GetModeLineRequest::try_parse_request(header, remaining)?)),
1829                     xf86vidmode::MOD_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeModModeLine(xf86vidmode::ModModeLineRequest::try_parse_request(header, remaining)?)),
1830                     xf86vidmode::SWITCH_MODE_REQUEST => return Ok(Request::Xf86vidmodeSwitchMode(xf86vidmode::SwitchModeRequest::try_parse_request(header, remaining)?)),
1831                     xf86vidmode::GET_MONITOR_REQUEST => return Ok(Request::Xf86vidmodeGetMonitor(xf86vidmode::GetMonitorRequest::try_parse_request(header, remaining)?)),
1832                     xf86vidmode::LOCK_MODE_SWITCH_REQUEST => return Ok(Request::Xf86vidmodeLockModeSwitch(xf86vidmode::LockModeSwitchRequest::try_parse_request(header, remaining)?)),
1833                     xf86vidmode::GET_ALL_MODE_LINES_REQUEST => return Ok(Request::Xf86vidmodeGetAllModeLines(xf86vidmode::GetAllModeLinesRequest::try_parse_request(header, remaining)?)),
1834                     xf86vidmode::ADD_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeAddModeLine(xf86vidmode::AddModeLineRequest::try_parse_request(header, remaining)?)),
1835                     xf86vidmode::DELETE_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeDeleteModeLine(xf86vidmode::DeleteModeLineRequest::try_parse_request(header, remaining)?)),
1836                     xf86vidmode::VALIDATE_MODE_LINE_REQUEST => return Ok(Request::Xf86vidmodeValidateModeLine(xf86vidmode::ValidateModeLineRequest::try_parse_request(header, remaining)?)),
1837                     xf86vidmode::SWITCH_TO_MODE_REQUEST => return Ok(Request::Xf86vidmodeSwitchToMode(xf86vidmode::SwitchToModeRequest::try_parse_request(header, remaining)?)),
1838                     xf86vidmode::GET_VIEW_PORT_REQUEST => return Ok(Request::Xf86vidmodeGetViewPort(xf86vidmode::GetViewPortRequest::try_parse_request(header, remaining)?)),
1839                     xf86vidmode::SET_VIEW_PORT_REQUEST => return Ok(Request::Xf86vidmodeSetViewPort(xf86vidmode::SetViewPortRequest::try_parse_request(header, remaining)?)),
1840                     xf86vidmode::GET_DOT_CLOCKS_REQUEST => return Ok(Request::Xf86vidmodeGetDotClocks(xf86vidmode::GetDotClocksRequest::try_parse_request(header, remaining)?)),
1841                     xf86vidmode::SET_CLIENT_VERSION_REQUEST => return Ok(Request::Xf86vidmodeSetClientVersion(xf86vidmode::SetClientVersionRequest::try_parse_request(header, remaining)?)),
1842                     xf86vidmode::SET_GAMMA_REQUEST => return Ok(Request::Xf86vidmodeSetGamma(xf86vidmode::SetGammaRequest::try_parse_request(header, remaining)?)),
1843                     xf86vidmode::GET_GAMMA_REQUEST => return Ok(Request::Xf86vidmodeGetGamma(xf86vidmode::GetGammaRequest::try_parse_request(header, remaining)?)),
1844                     xf86vidmode::GET_GAMMA_RAMP_REQUEST => return Ok(Request::Xf86vidmodeGetGammaRamp(xf86vidmode::GetGammaRampRequest::try_parse_request(header, remaining)?)),
1845                     xf86vidmode::SET_GAMMA_RAMP_REQUEST => return Ok(Request::Xf86vidmodeSetGammaRamp(xf86vidmode::SetGammaRampRequest::try_parse_request(header, remaining)?)),
1846                     xf86vidmode::GET_GAMMA_RAMP_SIZE_REQUEST => return Ok(Request::Xf86vidmodeGetGammaRampSize(xf86vidmode::GetGammaRampSizeRequest::try_parse_request(header, remaining)?)),
1847                     xf86vidmode::GET_PERMISSIONS_REQUEST => return Ok(Request::Xf86vidmodeGetPermissions(xf86vidmode::GetPermissionsRequest::try_parse_request(header, remaining)?)),
1848                     _ => (),
1849                 }
1850             }
1851             #[cfg(feature = "xfixes")]
1852             Some((xfixes::X11_EXTENSION_NAME, _)) => {
1853                 match header.minor_opcode {
1854                     xfixes::QUERY_VERSION_REQUEST => return Ok(Request::XfixesQueryVersion(xfixes::QueryVersionRequest::try_parse_request(header, remaining)?)),
1855                     xfixes::CHANGE_SAVE_SET_REQUEST => return Ok(Request::XfixesChangeSaveSet(xfixes::ChangeSaveSetRequest::try_parse_request(header, remaining)?)),
1856                     xfixes::SELECT_SELECTION_INPUT_REQUEST => return Ok(Request::XfixesSelectSelectionInput(xfixes::SelectSelectionInputRequest::try_parse_request(header, remaining)?)),
1857                     xfixes::SELECT_CURSOR_INPUT_REQUEST => return Ok(Request::XfixesSelectCursorInput(xfixes::SelectCursorInputRequest::try_parse_request(header, remaining)?)),
1858                     xfixes::GET_CURSOR_IMAGE_REQUEST => return Ok(Request::XfixesGetCursorImage(xfixes::GetCursorImageRequest::try_parse_request(header, remaining)?)),
1859                     xfixes::CREATE_REGION_REQUEST => return Ok(Request::XfixesCreateRegion(xfixes::CreateRegionRequest::try_parse_request(header, remaining)?)),
1860                     xfixes::CREATE_REGION_FROM_BITMAP_REQUEST => return Ok(Request::XfixesCreateRegionFromBitmap(xfixes::CreateRegionFromBitmapRequest::try_parse_request(header, remaining)?)),
1861                     xfixes::CREATE_REGION_FROM_WINDOW_REQUEST => return Ok(Request::XfixesCreateRegionFromWindow(xfixes::CreateRegionFromWindowRequest::try_parse_request(header, remaining)?)),
1862                     xfixes::CREATE_REGION_FROM_GC_REQUEST => return Ok(Request::XfixesCreateRegionFromGC(xfixes::CreateRegionFromGCRequest::try_parse_request(header, remaining)?)),
1863                     xfixes::CREATE_REGION_FROM_PICTURE_REQUEST => return Ok(Request::XfixesCreateRegionFromPicture(xfixes::CreateRegionFromPictureRequest::try_parse_request(header, remaining)?)),
1864                     xfixes::DESTROY_REGION_REQUEST => return Ok(Request::XfixesDestroyRegion(xfixes::DestroyRegionRequest::try_parse_request(header, remaining)?)),
1865                     xfixes::SET_REGION_REQUEST => return Ok(Request::XfixesSetRegion(xfixes::SetRegionRequest::try_parse_request(header, remaining)?)),
1866                     xfixes::COPY_REGION_REQUEST => return Ok(Request::XfixesCopyRegion(xfixes::CopyRegionRequest::try_parse_request(header, remaining)?)),
1867                     xfixes::UNION_REGION_REQUEST => return Ok(Request::XfixesUnionRegion(xfixes::UnionRegionRequest::try_parse_request(header, remaining)?)),
1868                     xfixes::INTERSECT_REGION_REQUEST => return Ok(Request::XfixesIntersectRegion(xfixes::IntersectRegionRequest::try_parse_request(header, remaining)?)),
1869                     xfixes::SUBTRACT_REGION_REQUEST => return Ok(Request::XfixesSubtractRegion(xfixes::SubtractRegionRequest::try_parse_request(header, remaining)?)),
1870                     xfixes::INVERT_REGION_REQUEST => return Ok(Request::XfixesInvertRegion(xfixes::InvertRegionRequest::try_parse_request(header, remaining)?)),
1871                     xfixes::TRANSLATE_REGION_REQUEST => return Ok(Request::XfixesTranslateRegion(xfixes::TranslateRegionRequest::try_parse_request(header, remaining)?)),
1872                     xfixes::REGION_EXTENTS_REQUEST => return Ok(Request::XfixesRegionExtents(xfixes::RegionExtentsRequest::try_parse_request(header, remaining)?)),
1873                     xfixes::FETCH_REGION_REQUEST => return Ok(Request::XfixesFetchRegion(xfixes::FetchRegionRequest::try_parse_request(header, remaining)?)),
1874                     xfixes::SET_GC_CLIP_REGION_REQUEST => return Ok(Request::XfixesSetGCClipRegion(xfixes::SetGCClipRegionRequest::try_parse_request(header, remaining)?)),
1875                     xfixes::SET_WINDOW_SHAPE_REGION_REQUEST => return Ok(Request::XfixesSetWindowShapeRegion(xfixes::SetWindowShapeRegionRequest::try_parse_request(header, remaining)?)),
1876                     xfixes::SET_PICTURE_CLIP_REGION_REQUEST => return Ok(Request::XfixesSetPictureClipRegion(xfixes::SetPictureClipRegionRequest::try_parse_request(header, remaining)?)),
1877                     xfixes::SET_CURSOR_NAME_REQUEST => return Ok(Request::XfixesSetCursorName(xfixes::SetCursorNameRequest::try_parse_request(header, remaining)?)),
1878                     xfixes::GET_CURSOR_NAME_REQUEST => return Ok(Request::XfixesGetCursorName(xfixes::GetCursorNameRequest::try_parse_request(header, remaining)?)),
1879                     xfixes::GET_CURSOR_IMAGE_AND_NAME_REQUEST => return Ok(Request::XfixesGetCursorImageAndName(xfixes::GetCursorImageAndNameRequest::try_parse_request(header, remaining)?)),
1880                     xfixes::CHANGE_CURSOR_REQUEST => return Ok(Request::XfixesChangeCursor(xfixes::ChangeCursorRequest::try_parse_request(header, remaining)?)),
1881                     xfixes::CHANGE_CURSOR_BY_NAME_REQUEST => return Ok(Request::XfixesChangeCursorByName(xfixes::ChangeCursorByNameRequest::try_parse_request(header, remaining)?)),
1882                     xfixes::EXPAND_REGION_REQUEST => return Ok(Request::XfixesExpandRegion(xfixes::ExpandRegionRequest::try_parse_request(header, remaining)?)),
1883                     xfixes::HIDE_CURSOR_REQUEST => return Ok(Request::XfixesHideCursor(xfixes::HideCursorRequest::try_parse_request(header, remaining)?)),
1884                     xfixes::SHOW_CURSOR_REQUEST => return Ok(Request::XfixesShowCursor(xfixes::ShowCursorRequest::try_parse_request(header, remaining)?)),
1885                     xfixes::CREATE_POINTER_BARRIER_REQUEST => return Ok(Request::XfixesCreatePointerBarrier(xfixes::CreatePointerBarrierRequest::try_parse_request(header, remaining)?)),
1886                     xfixes::DELETE_POINTER_BARRIER_REQUEST => return Ok(Request::XfixesDeletePointerBarrier(xfixes::DeletePointerBarrierRequest::try_parse_request(header, remaining)?)),
1887                     _ => (),
1888                 }
1889             }
1890             #[cfg(feature = "xinerama")]
1891             Some((xinerama::X11_EXTENSION_NAME, _)) => {
1892                 match header.minor_opcode {
1893                     xinerama::QUERY_VERSION_REQUEST => return Ok(Request::XineramaQueryVersion(xinerama::QueryVersionRequest::try_parse_request(header, remaining)?)),
1894                     xinerama::GET_STATE_REQUEST => return Ok(Request::XineramaGetState(xinerama::GetStateRequest::try_parse_request(header, remaining)?)),
1895                     xinerama::GET_SCREEN_COUNT_REQUEST => return Ok(Request::XineramaGetScreenCount(xinerama::GetScreenCountRequest::try_parse_request(header, remaining)?)),
1896                     xinerama::GET_SCREEN_SIZE_REQUEST => return Ok(Request::XineramaGetScreenSize(xinerama::GetScreenSizeRequest::try_parse_request(header, remaining)?)),
1897                     xinerama::IS_ACTIVE_REQUEST => return Ok(Request::XineramaIsActive(xinerama::IsActiveRequest::try_parse_request(header, remaining)?)),
1898                     xinerama::QUERY_SCREENS_REQUEST => return Ok(Request::XineramaQueryScreens(xinerama::QueryScreensRequest::try_parse_request(header, remaining)?)),
1899                     _ => (),
1900                 }
1901             }
1902             #[cfg(feature = "xinput")]
1903             Some((xinput::X11_EXTENSION_NAME, _)) => {
1904                 match header.minor_opcode {
1905                     xinput::GET_EXTENSION_VERSION_REQUEST => return Ok(Request::XinputGetExtensionVersion(xinput::GetExtensionVersionRequest::try_parse_request(header, remaining)?)),
1906                     xinput::LIST_INPUT_DEVICES_REQUEST => return Ok(Request::XinputListInputDevices(xinput::ListInputDevicesRequest::try_parse_request(header, remaining)?)),
1907                     xinput::OPEN_DEVICE_REQUEST => return Ok(Request::XinputOpenDevice(xinput::OpenDeviceRequest::try_parse_request(header, remaining)?)),
1908                     xinput::CLOSE_DEVICE_REQUEST => return Ok(Request::XinputCloseDevice(xinput::CloseDeviceRequest::try_parse_request(header, remaining)?)),
1909                     xinput::SET_DEVICE_MODE_REQUEST => return Ok(Request::XinputSetDeviceMode(xinput::SetDeviceModeRequest::try_parse_request(header, remaining)?)),
1910                     xinput::SELECT_EXTENSION_EVENT_REQUEST => return Ok(Request::XinputSelectExtensionEvent(xinput::SelectExtensionEventRequest::try_parse_request(header, remaining)?)),
1911                     xinput::GET_SELECTED_EXTENSION_EVENTS_REQUEST => return Ok(Request::XinputGetSelectedExtensionEvents(xinput::GetSelectedExtensionEventsRequest::try_parse_request(header, remaining)?)),
1912                     xinput::CHANGE_DEVICE_DONT_PROPAGATE_LIST_REQUEST => return Ok(Request::XinputChangeDeviceDontPropagateList(xinput::ChangeDeviceDontPropagateListRequest::try_parse_request(header, remaining)?)),
1913                     xinput::GET_DEVICE_DONT_PROPAGATE_LIST_REQUEST => return Ok(Request::XinputGetDeviceDontPropagateList(xinput::GetDeviceDontPropagateListRequest::try_parse_request(header, remaining)?)),
1914                     xinput::GET_DEVICE_MOTION_EVENTS_REQUEST => return Ok(Request::XinputGetDeviceMotionEvents(xinput::GetDeviceMotionEventsRequest::try_parse_request(header, remaining)?)),
1915                     xinput::CHANGE_KEYBOARD_DEVICE_REQUEST => return Ok(Request::XinputChangeKeyboardDevice(xinput::ChangeKeyboardDeviceRequest::try_parse_request(header, remaining)?)),
1916                     xinput::CHANGE_POINTER_DEVICE_REQUEST => return Ok(Request::XinputChangePointerDevice(xinput::ChangePointerDeviceRequest::try_parse_request(header, remaining)?)),
1917                     xinput::GRAB_DEVICE_REQUEST => return Ok(Request::XinputGrabDevice(xinput::GrabDeviceRequest::try_parse_request(header, remaining)?)),
1918                     xinput::UNGRAB_DEVICE_REQUEST => return Ok(Request::XinputUngrabDevice(xinput::UngrabDeviceRequest::try_parse_request(header, remaining)?)),
1919                     xinput::GRAB_DEVICE_KEY_REQUEST => return Ok(Request::XinputGrabDeviceKey(xinput::GrabDeviceKeyRequest::try_parse_request(header, remaining)?)),
1920                     xinput::UNGRAB_DEVICE_KEY_REQUEST => return Ok(Request::XinputUngrabDeviceKey(xinput::UngrabDeviceKeyRequest::try_parse_request(header, remaining)?)),
1921                     xinput::GRAB_DEVICE_BUTTON_REQUEST => return Ok(Request::XinputGrabDeviceButton(xinput::GrabDeviceButtonRequest::try_parse_request(header, remaining)?)),
1922                     xinput::UNGRAB_DEVICE_BUTTON_REQUEST => return Ok(Request::XinputUngrabDeviceButton(xinput::UngrabDeviceButtonRequest::try_parse_request(header, remaining)?)),
1923                     xinput::ALLOW_DEVICE_EVENTS_REQUEST => return Ok(Request::XinputAllowDeviceEvents(xinput::AllowDeviceEventsRequest::try_parse_request(header, remaining)?)),
1924                     xinput::GET_DEVICE_FOCUS_REQUEST => return Ok(Request::XinputGetDeviceFocus(xinput::GetDeviceFocusRequest::try_parse_request(header, remaining)?)),
1925                     xinput::SET_DEVICE_FOCUS_REQUEST => return Ok(Request::XinputSetDeviceFocus(xinput::SetDeviceFocusRequest::try_parse_request(header, remaining)?)),
1926                     xinput::GET_FEEDBACK_CONTROL_REQUEST => return Ok(Request::XinputGetFeedbackControl(xinput::GetFeedbackControlRequest::try_parse_request(header, remaining)?)),
1927                     xinput::CHANGE_FEEDBACK_CONTROL_REQUEST => return Ok(Request::XinputChangeFeedbackControl(xinput::ChangeFeedbackControlRequest::try_parse_request(header, remaining)?)),
1928                     xinput::GET_DEVICE_KEY_MAPPING_REQUEST => return Ok(Request::XinputGetDeviceKeyMapping(xinput::GetDeviceKeyMappingRequest::try_parse_request(header, remaining)?)),
1929                     xinput::CHANGE_DEVICE_KEY_MAPPING_REQUEST => return Ok(Request::XinputChangeDeviceKeyMapping(xinput::ChangeDeviceKeyMappingRequest::try_parse_request(header, remaining)?)),
1930                     xinput::GET_DEVICE_MODIFIER_MAPPING_REQUEST => return Ok(Request::XinputGetDeviceModifierMapping(xinput::GetDeviceModifierMappingRequest::try_parse_request(header, remaining)?)),
1931                     xinput::SET_DEVICE_MODIFIER_MAPPING_REQUEST => return Ok(Request::XinputSetDeviceModifierMapping(xinput::SetDeviceModifierMappingRequest::try_parse_request(header, remaining)?)),
1932                     xinput::GET_DEVICE_BUTTON_MAPPING_REQUEST => return Ok(Request::XinputGetDeviceButtonMapping(xinput::GetDeviceButtonMappingRequest::try_parse_request(header, remaining)?)),
1933                     xinput::SET_DEVICE_BUTTON_MAPPING_REQUEST => return Ok(Request::XinputSetDeviceButtonMapping(xinput::SetDeviceButtonMappingRequest::try_parse_request(header, remaining)?)),
1934                     xinput::QUERY_DEVICE_STATE_REQUEST => return Ok(Request::XinputQueryDeviceState(xinput::QueryDeviceStateRequest::try_parse_request(header, remaining)?)),
1935                     xinput::DEVICE_BELL_REQUEST => return Ok(Request::XinputDeviceBell(xinput::DeviceBellRequest::try_parse_request(header, remaining)?)),
1936                     xinput::SET_DEVICE_VALUATORS_REQUEST => return Ok(Request::XinputSetDeviceValuators(xinput::SetDeviceValuatorsRequest::try_parse_request(header, remaining)?)),
1937                     xinput::GET_DEVICE_CONTROL_REQUEST => return Ok(Request::XinputGetDeviceControl(xinput::GetDeviceControlRequest::try_parse_request(header, remaining)?)),
1938                     xinput::CHANGE_DEVICE_CONTROL_REQUEST => return Ok(Request::XinputChangeDeviceControl(xinput::ChangeDeviceControlRequest::try_parse_request(header, remaining)?)),
1939                     xinput::LIST_DEVICE_PROPERTIES_REQUEST => return Ok(Request::XinputListDeviceProperties(xinput::ListDevicePropertiesRequest::try_parse_request(header, remaining)?)),
1940                     xinput::CHANGE_DEVICE_PROPERTY_REQUEST => return Ok(Request::XinputChangeDeviceProperty(xinput::ChangeDevicePropertyRequest::try_parse_request(header, remaining)?)),
1941                     xinput::DELETE_DEVICE_PROPERTY_REQUEST => return Ok(Request::XinputDeleteDeviceProperty(xinput::DeleteDevicePropertyRequest::try_parse_request(header, remaining)?)),
1942                     xinput::GET_DEVICE_PROPERTY_REQUEST => return Ok(Request::XinputGetDeviceProperty(xinput::GetDevicePropertyRequest::try_parse_request(header, remaining)?)),
1943                     xinput::XI_QUERY_POINTER_REQUEST => return Ok(Request::XinputXIQueryPointer(xinput::XIQueryPointerRequest::try_parse_request(header, remaining)?)),
1944                     xinput::XI_WARP_POINTER_REQUEST => return Ok(Request::XinputXIWarpPointer(xinput::XIWarpPointerRequest::try_parse_request(header, remaining)?)),
1945                     xinput::XI_CHANGE_CURSOR_REQUEST => return Ok(Request::XinputXIChangeCursor(xinput::XIChangeCursorRequest::try_parse_request(header, remaining)?)),
1946                     xinput::XI_CHANGE_HIERARCHY_REQUEST => return Ok(Request::XinputXIChangeHierarchy(xinput::XIChangeHierarchyRequest::try_parse_request(header, remaining)?)),
1947                     xinput::XI_SET_CLIENT_POINTER_REQUEST => return Ok(Request::XinputXISetClientPointer(xinput::XISetClientPointerRequest::try_parse_request(header, remaining)?)),
1948                     xinput::XI_GET_CLIENT_POINTER_REQUEST => return Ok(Request::XinputXIGetClientPointer(xinput::XIGetClientPointerRequest::try_parse_request(header, remaining)?)),
1949                     xinput::XI_SELECT_EVENTS_REQUEST => return Ok(Request::XinputXISelectEvents(xinput::XISelectEventsRequest::try_parse_request(header, remaining)?)),
1950                     xinput::XI_QUERY_VERSION_REQUEST => return Ok(Request::XinputXIQueryVersion(xinput::XIQueryVersionRequest::try_parse_request(header, remaining)?)),
1951                     xinput::XI_QUERY_DEVICE_REQUEST => return Ok(Request::XinputXIQueryDevice(xinput::XIQueryDeviceRequest::try_parse_request(header, remaining)?)),
1952                     xinput::XI_SET_FOCUS_REQUEST => return Ok(Request::XinputXISetFocus(xinput::XISetFocusRequest::try_parse_request(header, remaining)?)),
1953                     xinput::XI_GET_FOCUS_REQUEST => return Ok(Request::XinputXIGetFocus(xinput::XIGetFocusRequest::try_parse_request(header, remaining)?)),
1954                     xinput::XI_GRAB_DEVICE_REQUEST => return Ok(Request::XinputXIGrabDevice(xinput::XIGrabDeviceRequest::try_parse_request(header, remaining)?)),
1955                     xinput::XI_UNGRAB_DEVICE_REQUEST => return Ok(Request::XinputXIUngrabDevice(xinput::XIUngrabDeviceRequest::try_parse_request(header, remaining)?)),
1956                     xinput::XI_ALLOW_EVENTS_REQUEST => return Ok(Request::XinputXIAllowEvents(xinput::XIAllowEventsRequest::try_parse_request(header, remaining)?)),
1957                     xinput::XI_PASSIVE_GRAB_DEVICE_REQUEST => return Ok(Request::XinputXIPassiveGrabDevice(xinput::XIPassiveGrabDeviceRequest::try_parse_request(header, remaining)?)),
1958                     xinput::XI_PASSIVE_UNGRAB_DEVICE_REQUEST => return Ok(Request::XinputXIPassiveUngrabDevice(xinput::XIPassiveUngrabDeviceRequest::try_parse_request(header, remaining)?)),
1959                     xinput::XI_LIST_PROPERTIES_REQUEST => return Ok(Request::XinputXIListProperties(xinput::XIListPropertiesRequest::try_parse_request(header, remaining)?)),
1960                     xinput::XI_CHANGE_PROPERTY_REQUEST => return Ok(Request::XinputXIChangeProperty(xinput::XIChangePropertyRequest::try_parse_request(header, remaining)?)),
1961                     xinput::XI_DELETE_PROPERTY_REQUEST => return Ok(Request::XinputXIDeleteProperty(xinput::XIDeletePropertyRequest::try_parse_request(header, remaining)?)),
1962                     xinput::XI_GET_PROPERTY_REQUEST => return Ok(Request::XinputXIGetProperty(xinput::XIGetPropertyRequest::try_parse_request(header, remaining)?)),
1963                     xinput::XI_GET_SELECTED_EVENTS_REQUEST => return Ok(Request::XinputXIGetSelectedEvents(xinput::XIGetSelectedEventsRequest::try_parse_request(header, remaining)?)),
1964                     xinput::XI_BARRIER_RELEASE_POINTER_REQUEST => return Ok(Request::XinputXIBarrierReleasePointer(xinput::XIBarrierReleasePointerRequest::try_parse_request(header, remaining)?)),
1965                     xinput::SEND_EXTENSION_EVENT_REQUEST => return Ok(Request::XinputSendExtensionEvent(xinput::SendExtensionEventRequest::try_parse_request(header, remaining)?)),
1966                     _ => (),
1967                 }
1968             }
1969             #[cfg(feature = "xkb")]
1970             Some((xkb::X11_EXTENSION_NAME, _)) => {
1971                 match header.minor_opcode {
1972                     xkb::USE_EXTENSION_REQUEST => return Ok(Request::XkbUseExtension(xkb::UseExtensionRequest::try_parse_request(header, remaining)?)),
1973                     xkb::SELECT_EVENTS_REQUEST => return Ok(Request::XkbSelectEvents(xkb::SelectEventsRequest::try_parse_request(header, remaining)?)),
1974                     xkb::BELL_REQUEST => return Ok(Request::XkbBell(xkb::BellRequest::try_parse_request(header, remaining)?)),
1975                     xkb::GET_STATE_REQUEST => return Ok(Request::XkbGetState(xkb::GetStateRequest::try_parse_request(header, remaining)?)),
1976                     xkb::LATCH_LOCK_STATE_REQUEST => return Ok(Request::XkbLatchLockState(xkb::LatchLockStateRequest::try_parse_request(header, remaining)?)),
1977                     xkb::GET_CONTROLS_REQUEST => return Ok(Request::XkbGetControls(xkb::GetControlsRequest::try_parse_request(header, remaining)?)),
1978                     xkb::SET_CONTROLS_REQUEST => return Ok(Request::XkbSetControls(xkb::SetControlsRequest::try_parse_request(header, remaining)?)),
1979                     xkb::GET_MAP_REQUEST => return Ok(Request::XkbGetMap(xkb::GetMapRequest::try_parse_request(header, remaining)?)),
1980                     xkb::SET_MAP_REQUEST => return Ok(Request::XkbSetMap(xkb::SetMapRequest::try_parse_request(header, remaining)?)),
1981                     xkb::GET_COMPAT_MAP_REQUEST => return Ok(Request::XkbGetCompatMap(xkb::GetCompatMapRequest::try_parse_request(header, remaining)?)),
1982                     xkb::SET_COMPAT_MAP_REQUEST => return Ok(Request::XkbSetCompatMap(xkb::SetCompatMapRequest::try_parse_request(header, remaining)?)),
1983                     xkb::GET_INDICATOR_STATE_REQUEST => return Ok(Request::XkbGetIndicatorState(xkb::GetIndicatorStateRequest::try_parse_request(header, remaining)?)),
1984                     xkb::GET_INDICATOR_MAP_REQUEST => return Ok(Request::XkbGetIndicatorMap(xkb::GetIndicatorMapRequest::try_parse_request(header, remaining)?)),
1985                     xkb::SET_INDICATOR_MAP_REQUEST => return Ok(Request::XkbSetIndicatorMap(xkb::SetIndicatorMapRequest::try_parse_request(header, remaining)?)),
1986                     xkb::GET_NAMED_INDICATOR_REQUEST => return Ok(Request::XkbGetNamedIndicator(xkb::GetNamedIndicatorRequest::try_parse_request(header, remaining)?)),
1987                     xkb::SET_NAMED_INDICATOR_REQUEST => return Ok(Request::XkbSetNamedIndicator(xkb::SetNamedIndicatorRequest::try_parse_request(header, remaining)?)),
1988                     xkb::GET_NAMES_REQUEST => return Ok(Request::XkbGetNames(xkb::GetNamesRequest::try_parse_request(header, remaining)?)),
1989                     xkb::SET_NAMES_REQUEST => return Ok(Request::XkbSetNames(xkb::SetNamesRequest::try_parse_request(header, remaining)?)),
1990                     xkb::PER_CLIENT_FLAGS_REQUEST => return Ok(Request::XkbPerClientFlags(xkb::PerClientFlagsRequest::try_parse_request(header, remaining)?)),
1991                     xkb::LIST_COMPONENTS_REQUEST => return Ok(Request::XkbListComponents(xkb::ListComponentsRequest::try_parse_request(header, remaining)?)),
1992                     xkb::GET_KBD_BY_NAME_REQUEST => return Ok(Request::XkbGetKbdByName(xkb::GetKbdByNameRequest::try_parse_request(header, remaining)?)),
1993                     xkb::GET_DEVICE_INFO_REQUEST => return Ok(Request::XkbGetDeviceInfo(xkb::GetDeviceInfoRequest::try_parse_request(header, remaining)?)),
1994                     xkb::SET_DEVICE_INFO_REQUEST => return Ok(Request::XkbSetDeviceInfo(xkb::SetDeviceInfoRequest::try_parse_request(header, remaining)?)),
1995                     xkb::SET_DEBUGGING_FLAGS_REQUEST => return Ok(Request::XkbSetDebuggingFlags(xkb::SetDebuggingFlagsRequest::try_parse_request(header, remaining)?)),
1996                     _ => (),
1997                 }
1998             }
1999             #[cfg(feature = "xprint")]
2000             Some((xprint::X11_EXTENSION_NAME, _)) => {
2001                 match header.minor_opcode {
2002                     xprint::PRINT_QUERY_VERSION_REQUEST => return Ok(Request::XprintPrintQueryVersion(xprint::PrintQueryVersionRequest::try_parse_request(header, remaining)?)),
2003                     xprint::PRINT_GET_PRINTER_LIST_REQUEST => return Ok(Request::XprintPrintGetPrinterList(xprint::PrintGetPrinterListRequest::try_parse_request(header, remaining)?)),
2004                     xprint::PRINT_REHASH_PRINTER_LIST_REQUEST => return Ok(Request::XprintPrintRehashPrinterList(xprint::PrintRehashPrinterListRequest::try_parse_request(header, remaining)?)),
2005                     xprint::CREATE_CONTEXT_REQUEST => return Ok(Request::XprintCreateContext(xprint::CreateContextRequest::try_parse_request(header, remaining)?)),
2006                     xprint::PRINT_SET_CONTEXT_REQUEST => return Ok(Request::XprintPrintSetContext(xprint::PrintSetContextRequest::try_parse_request(header, remaining)?)),
2007                     xprint::PRINT_GET_CONTEXT_REQUEST => return Ok(Request::XprintPrintGetContext(xprint::PrintGetContextRequest::try_parse_request(header, remaining)?)),
2008                     xprint::PRINT_DESTROY_CONTEXT_REQUEST => return Ok(Request::XprintPrintDestroyContext(xprint::PrintDestroyContextRequest::try_parse_request(header, remaining)?)),
2009                     xprint::PRINT_GET_SCREEN_OF_CONTEXT_REQUEST => return Ok(Request::XprintPrintGetScreenOfContext(xprint::PrintGetScreenOfContextRequest::try_parse_request(header, remaining)?)),
2010                     xprint::PRINT_START_JOB_REQUEST => return Ok(Request::XprintPrintStartJob(xprint::PrintStartJobRequest::try_parse_request(header, remaining)?)),
2011                     xprint::PRINT_END_JOB_REQUEST => return Ok(Request::XprintPrintEndJob(xprint::PrintEndJobRequest::try_parse_request(header, remaining)?)),
2012                     xprint::PRINT_START_DOC_REQUEST => return Ok(Request::XprintPrintStartDoc(xprint::PrintStartDocRequest::try_parse_request(header, remaining)?)),
2013                     xprint::PRINT_END_DOC_REQUEST => return Ok(Request::XprintPrintEndDoc(xprint::PrintEndDocRequest::try_parse_request(header, remaining)?)),
2014                     xprint::PRINT_PUT_DOCUMENT_DATA_REQUEST => return Ok(Request::XprintPrintPutDocumentData(xprint::PrintPutDocumentDataRequest::try_parse_request(header, remaining)?)),
2015                     xprint::PRINT_GET_DOCUMENT_DATA_REQUEST => return Ok(Request::XprintPrintGetDocumentData(xprint::PrintGetDocumentDataRequest::try_parse_request(header, remaining)?)),
2016                     xprint::PRINT_START_PAGE_REQUEST => return Ok(Request::XprintPrintStartPage(xprint::PrintStartPageRequest::try_parse_request(header, remaining)?)),
2017                     xprint::PRINT_END_PAGE_REQUEST => return Ok(Request::XprintPrintEndPage(xprint::PrintEndPageRequest::try_parse_request(header, remaining)?)),
2018                     xprint::PRINT_SELECT_INPUT_REQUEST => return Ok(Request::XprintPrintSelectInput(xprint::PrintSelectInputRequest::try_parse_request(header, remaining)?)),
2019                     xprint::PRINT_INPUT_SELECTED_REQUEST => return Ok(Request::XprintPrintInputSelected(xprint::PrintInputSelectedRequest::try_parse_request(header, remaining)?)),
2020                     xprint::PRINT_GET_ATTRIBUTES_REQUEST => return Ok(Request::XprintPrintGetAttributes(xprint::PrintGetAttributesRequest::try_parse_request(header, remaining)?)),
2021                     xprint::PRINT_GET_ONE_ATTRIBUTES_REQUEST => return Ok(Request::XprintPrintGetOneAttributes(xprint::PrintGetOneAttributesRequest::try_parse_request(header, remaining)?)),
2022                     xprint::PRINT_SET_ATTRIBUTES_REQUEST => return Ok(Request::XprintPrintSetAttributes(xprint::PrintSetAttributesRequest::try_parse_request(header, remaining)?)),
2023                     xprint::PRINT_GET_PAGE_DIMENSIONS_REQUEST => return Ok(Request::XprintPrintGetPageDimensions(xprint::PrintGetPageDimensionsRequest::try_parse_request(header, remaining)?)),
2024                     xprint::PRINT_QUERY_SCREENS_REQUEST => return Ok(Request::XprintPrintQueryScreens(xprint::PrintQueryScreensRequest::try_parse_request(header, remaining)?)),
2025                     xprint::PRINT_SET_IMAGE_RESOLUTION_REQUEST => return Ok(Request::XprintPrintSetImageResolution(xprint::PrintSetImageResolutionRequest::try_parse_request(header, remaining)?)),
2026                     xprint::PRINT_GET_IMAGE_RESOLUTION_REQUEST => return Ok(Request::XprintPrintGetImageResolution(xprint::PrintGetImageResolutionRequest::try_parse_request(header, remaining)?)),
2027                     _ => (),
2028                 }
2029             }
2030             #[cfg(feature = "xselinux")]
2031             Some((xselinux::X11_EXTENSION_NAME, _)) => {
2032                 match header.minor_opcode {
2033                     xselinux::QUERY_VERSION_REQUEST => return Ok(Request::XselinuxQueryVersion(xselinux::QueryVersionRequest::try_parse_request(header, remaining)?)),
2034                     xselinux::SET_DEVICE_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetDeviceCreateContext(xselinux::SetDeviceCreateContextRequest::try_parse_request(header, remaining)?)),
2035                     xselinux::GET_DEVICE_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetDeviceCreateContext(xselinux::GetDeviceCreateContextRequest::try_parse_request(header, remaining)?)),
2036                     xselinux::SET_DEVICE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetDeviceContext(xselinux::SetDeviceContextRequest::try_parse_request(header, remaining)?)),
2037                     xselinux::GET_DEVICE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetDeviceContext(xselinux::GetDeviceContextRequest::try_parse_request(header, remaining)?)),
2038                     xselinux::SET_WINDOW_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetWindowCreateContext(xselinux::SetWindowCreateContextRequest::try_parse_request(header, remaining)?)),
2039                     xselinux::GET_WINDOW_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetWindowCreateContext(xselinux::GetWindowCreateContextRequest::try_parse_request(header, remaining)?)),
2040                     xselinux::GET_WINDOW_CONTEXT_REQUEST => return Ok(Request::XselinuxGetWindowContext(xselinux::GetWindowContextRequest::try_parse_request(header, remaining)?)),
2041                     xselinux::SET_PROPERTY_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetPropertyCreateContext(xselinux::SetPropertyCreateContextRequest::try_parse_request(header, remaining)?)),
2042                     xselinux::GET_PROPERTY_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetPropertyCreateContext(xselinux::GetPropertyCreateContextRequest::try_parse_request(header, remaining)?)),
2043                     xselinux::SET_PROPERTY_USE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetPropertyUseContext(xselinux::SetPropertyUseContextRequest::try_parse_request(header, remaining)?)),
2044                     xselinux::GET_PROPERTY_USE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetPropertyUseContext(xselinux::GetPropertyUseContextRequest::try_parse_request(header, remaining)?)),
2045                     xselinux::GET_PROPERTY_CONTEXT_REQUEST => return Ok(Request::XselinuxGetPropertyContext(xselinux::GetPropertyContextRequest::try_parse_request(header, remaining)?)),
2046                     xselinux::GET_PROPERTY_DATA_CONTEXT_REQUEST => return Ok(Request::XselinuxGetPropertyDataContext(xselinux::GetPropertyDataContextRequest::try_parse_request(header, remaining)?)),
2047                     xselinux::LIST_PROPERTIES_REQUEST => return Ok(Request::XselinuxListProperties(xselinux::ListPropertiesRequest::try_parse_request(header, remaining)?)),
2048                     xselinux::SET_SELECTION_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetSelectionCreateContext(xselinux::SetSelectionCreateContextRequest::try_parse_request(header, remaining)?)),
2049                     xselinux::GET_SELECTION_CREATE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetSelectionCreateContext(xselinux::GetSelectionCreateContextRequest::try_parse_request(header, remaining)?)),
2050                     xselinux::SET_SELECTION_USE_CONTEXT_REQUEST => return Ok(Request::XselinuxSetSelectionUseContext(xselinux::SetSelectionUseContextRequest::try_parse_request(header, remaining)?)),
2051                     xselinux::GET_SELECTION_USE_CONTEXT_REQUEST => return Ok(Request::XselinuxGetSelectionUseContext(xselinux::GetSelectionUseContextRequest::try_parse_request(header, remaining)?)),
2052                     xselinux::GET_SELECTION_CONTEXT_REQUEST => return Ok(Request::XselinuxGetSelectionContext(xselinux::GetSelectionContextRequest::try_parse_request(header, remaining)?)),
2053                     xselinux::GET_SELECTION_DATA_CONTEXT_REQUEST => return Ok(Request::XselinuxGetSelectionDataContext(xselinux::GetSelectionDataContextRequest::try_parse_request(header, remaining)?)),
2054                     xselinux::LIST_SELECTIONS_REQUEST => return Ok(Request::XselinuxListSelections(xselinux::ListSelectionsRequest::try_parse_request(header, remaining)?)),
2055                     xselinux::GET_CLIENT_CONTEXT_REQUEST => return Ok(Request::XselinuxGetClientContext(xselinux::GetClientContextRequest::try_parse_request(header, remaining)?)),
2056                     _ => (),
2057                 }
2058             }
2059             #[cfg(feature = "xtest")]
2060             Some((xtest::X11_EXTENSION_NAME, _)) => {
2061                 match header.minor_opcode {
2062                     xtest::GET_VERSION_REQUEST => return Ok(Request::XtestGetVersion(xtest::GetVersionRequest::try_parse_request(header, remaining)?)),
2063                     xtest::COMPARE_CURSOR_REQUEST => return Ok(Request::XtestCompareCursor(xtest::CompareCursorRequest::try_parse_request(header, remaining)?)),
2064                     xtest::FAKE_INPUT_REQUEST => return Ok(Request::XtestFakeInput(xtest::FakeInputRequest::try_parse_request(header, remaining)?)),
2065                     xtest::GRAB_CONTROL_REQUEST => return Ok(Request::XtestGrabControl(xtest::GrabControlRequest::try_parse_request(header, remaining)?)),
2066                     _ => (),
2067                 }
2068             }
2069             #[cfg(feature = "xv")]
2070             Some((xv::X11_EXTENSION_NAME, _)) => {
2071                 match header.minor_opcode {
2072                     xv::QUERY_EXTENSION_REQUEST => return Ok(Request::XvQueryExtension(xv::QueryExtensionRequest::try_parse_request(header, remaining)?)),
2073                     xv::QUERY_ADAPTORS_REQUEST => return Ok(Request::XvQueryAdaptors(xv::QueryAdaptorsRequest::try_parse_request(header, remaining)?)),
2074                     xv::QUERY_ENCODINGS_REQUEST => return Ok(Request::XvQueryEncodings(xv::QueryEncodingsRequest::try_parse_request(header, remaining)?)),
2075                     xv::GRAB_PORT_REQUEST => return Ok(Request::XvGrabPort(xv::GrabPortRequest::try_parse_request(header, remaining)?)),
2076                     xv::UNGRAB_PORT_REQUEST => return Ok(Request::XvUngrabPort(xv::UngrabPortRequest::try_parse_request(header, remaining)?)),
2077                     xv::PUT_VIDEO_REQUEST => return Ok(Request::XvPutVideo(xv::PutVideoRequest::try_parse_request(header, remaining)?)),
2078                     xv::PUT_STILL_REQUEST => return Ok(Request::XvPutStill(xv::PutStillRequest::try_parse_request(header, remaining)?)),
2079                     xv::GET_VIDEO_REQUEST => return Ok(Request::XvGetVideo(xv::GetVideoRequest::try_parse_request(header, remaining)?)),
2080                     xv::GET_STILL_REQUEST => return Ok(Request::XvGetStill(xv::GetStillRequest::try_parse_request(header, remaining)?)),
2081                     xv::STOP_VIDEO_REQUEST => return Ok(Request::XvStopVideo(xv::StopVideoRequest::try_parse_request(header, remaining)?)),
2082                     xv::SELECT_VIDEO_NOTIFY_REQUEST => return Ok(Request::XvSelectVideoNotify(xv::SelectVideoNotifyRequest::try_parse_request(header, remaining)?)),
2083                     xv::SELECT_PORT_NOTIFY_REQUEST => return Ok(Request::XvSelectPortNotify(xv::SelectPortNotifyRequest::try_parse_request(header, remaining)?)),
2084                     xv::QUERY_BEST_SIZE_REQUEST => return Ok(Request::XvQueryBestSize(xv::QueryBestSizeRequest::try_parse_request(header, remaining)?)),
2085                     xv::SET_PORT_ATTRIBUTE_REQUEST => return Ok(Request::XvSetPortAttribute(xv::SetPortAttributeRequest::try_parse_request(header, remaining)?)),
2086                     xv::GET_PORT_ATTRIBUTE_REQUEST => return Ok(Request::XvGetPortAttribute(xv::GetPortAttributeRequest::try_parse_request(header, remaining)?)),
2087                     xv::QUERY_PORT_ATTRIBUTES_REQUEST => return Ok(Request::XvQueryPortAttributes(xv::QueryPortAttributesRequest::try_parse_request(header, remaining)?)),
2088                     xv::LIST_IMAGE_FORMATS_REQUEST => return Ok(Request::XvListImageFormats(xv::ListImageFormatsRequest::try_parse_request(header, remaining)?)),
2089                     xv::QUERY_IMAGE_ATTRIBUTES_REQUEST => return Ok(Request::XvQueryImageAttributes(xv::QueryImageAttributesRequest::try_parse_request(header, remaining)?)),
2090                     xv::PUT_IMAGE_REQUEST => return Ok(Request::XvPutImage(xv::PutImageRequest::try_parse_request(header, remaining)?)),
2091                     xv::SHM_PUT_IMAGE_REQUEST => return Ok(Request::XvShmPutImage(xv::ShmPutImageRequest::try_parse_request(header, remaining)?)),
2092                     _ => (),
2093                 }
2094             }
2095             #[cfg(feature = "xvmc")]
2096             Some((xvmc::X11_EXTENSION_NAME, _)) => {
2097                 match header.minor_opcode {
2098                     xvmc::QUERY_VERSION_REQUEST => return Ok(Request::XvmcQueryVersion(xvmc::QueryVersionRequest::try_parse_request(header, remaining)?)),
2099                     xvmc::LIST_SURFACE_TYPES_REQUEST => return Ok(Request::XvmcListSurfaceTypes(xvmc::ListSurfaceTypesRequest::try_parse_request(header, remaining)?)),
2100                     xvmc::CREATE_CONTEXT_REQUEST => return Ok(Request::XvmcCreateContext(xvmc::CreateContextRequest::try_parse_request(header, remaining)?)),
2101                     xvmc::DESTROY_CONTEXT_REQUEST => return Ok(Request::XvmcDestroyContext(xvmc::DestroyContextRequest::try_parse_request(header, remaining)?)),
2102                     xvmc::CREATE_SURFACE_REQUEST => return Ok(Request::XvmcCreateSurface(xvmc::CreateSurfaceRequest::try_parse_request(header, remaining)?)),
2103                     xvmc::DESTROY_SURFACE_REQUEST => return Ok(Request::XvmcDestroySurface(xvmc::DestroySurfaceRequest::try_parse_request(header, remaining)?)),
2104                     xvmc::CREATE_SUBPICTURE_REQUEST => return Ok(Request::XvmcCreateSubpicture(xvmc::CreateSubpictureRequest::try_parse_request(header, remaining)?)),
2105                     xvmc::DESTROY_SUBPICTURE_REQUEST => return Ok(Request::XvmcDestroySubpicture(xvmc::DestroySubpictureRequest::try_parse_request(header, remaining)?)),
2106                     xvmc::LIST_SUBPICTURE_TYPES_REQUEST => return Ok(Request::XvmcListSubpictureTypes(xvmc::ListSubpictureTypesRequest::try_parse_request(header, remaining)?)),
2107                     _ => (),
2108                 }
2109             }
2110             _ => (),
2111         }
2112         Ok(Request::Unknown(header, Cow::Borrowed(remaining)))
2113     }
2114     /// Get the matching reply parser (if any) for this request.
2115     /// For `Request::Unknown`, `None` is also returned.
reply_parser(&self) -> Option<ReplyParsingFunction>2116     pub fn reply_parser(&self) -> Option<ReplyParsingFunction> {
2117         match self {
2118             Request::Unknown(_, _) => None,
2119             Request::CreateWindow(_) => None,
2120             Request::ChangeWindowAttributes(_) => None,
2121             Request::GetWindowAttributes(_) => Some(xproto::GetWindowAttributesRequest::parse_reply),
2122             Request::DestroyWindow(_) => None,
2123             Request::DestroySubwindows(_) => None,
2124             Request::ChangeSaveSet(_) => None,
2125             Request::ReparentWindow(_) => None,
2126             Request::MapWindow(_) => None,
2127             Request::MapSubwindows(_) => None,
2128             Request::UnmapWindow(_) => None,
2129             Request::UnmapSubwindows(_) => None,
2130             Request::ConfigureWindow(_) => None,
2131             Request::CirculateWindow(_) => None,
2132             Request::GetGeometry(_) => Some(xproto::GetGeometryRequest::parse_reply),
2133             Request::QueryTree(_) => Some(xproto::QueryTreeRequest::parse_reply),
2134             Request::InternAtom(_) => Some(xproto::InternAtomRequest::parse_reply),
2135             Request::GetAtomName(_) => Some(xproto::GetAtomNameRequest::parse_reply),
2136             Request::ChangeProperty(_) => None,
2137             Request::DeleteProperty(_) => None,
2138             Request::GetProperty(_) => Some(xproto::GetPropertyRequest::parse_reply),
2139             Request::ListProperties(_) => Some(xproto::ListPropertiesRequest::parse_reply),
2140             Request::SetSelectionOwner(_) => None,
2141             Request::GetSelectionOwner(_) => Some(xproto::GetSelectionOwnerRequest::parse_reply),
2142             Request::ConvertSelection(_) => None,
2143             Request::SendEvent(_) => None,
2144             Request::GrabPointer(_) => Some(xproto::GrabPointerRequest::parse_reply),
2145             Request::UngrabPointer(_) => None,
2146             Request::GrabButton(_) => None,
2147             Request::UngrabButton(_) => None,
2148             Request::ChangeActivePointerGrab(_) => None,
2149             Request::GrabKeyboard(_) => Some(xproto::GrabKeyboardRequest::parse_reply),
2150             Request::UngrabKeyboard(_) => None,
2151             Request::GrabKey(_) => None,
2152             Request::UngrabKey(_) => None,
2153             Request::AllowEvents(_) => None,
2154             Request::GrabServer(_) => None,
2155             Request::UngrabServer(_) => None,
2156             Request::QueryPointer(_) => Some(xproto::QueryPointerRequest::parse_reply),
2157             Request::GetMotionEvents(_) => Some(xproto::GetMotionEventsRequest::parse_reply),
2158             Request::TranslateCoordinates(_) => Some(xproto::TranslateCoordinatesRequest::parse_reply),
2159             Request::WarpPointer(_) => None,
2160             Request::SetInputFocus(_) => None,
2161             Request::GetInputFocus(_) => Some(xproto::GetInputFocusRequest::parse_reply),
2162             Request::QueryKeymap(_) => Some(xproto::QueryKeymapRequest::parse_reply),
2163             Request::OpenFont(_) => None,
2164             Request::CloseFont(_) => None,
2165             Request::QueryFont(_) => Some(xproto::QueryFontRequest::parse_reply),
2166             Request::QueryTextExtents(_) => Some(xproto::QueryTextExtentsRequest::parse_reply),
2167             Request::ListFonts(_) => Some(xproto::ListFontsRequest::parse_reply),
2168             Request::ListFontsWithInfo(_) => Some(xproto::ListFontsWithInfoRequest::parse_reply),
2169             Request::SetFontPath(_) => None,
2170             Request::GetFontPath(_) => Some(xproto::GetFontPathRequest::parse_reply),
2171             Request::CreatePixmap(_) => None,
2172             Request::FreePixmap(_) => None,
2173             Request::CreateGC(_) => None,
2174             Request::ChangeGC(_) => None,
2175             Request::CopyGC(_) => None,
2176             Request::SetDashes(_) => None,
2177             Request::SetClipRectangles(_) => None,
2178             Request::FreeGC(_) => None,
2179             Request::ClearArea(_) => None,
2180             Request::CopyArea(_) => None,
2181             Request::CopyPlane(_) => None,
2182             Request::PolyPoint(_) => None,
2183             Request::PolyLine(_) => None,
2184             Request::PolySegment(_) => None,
2185             Request::PolyRectangle(_) => None,
2186             Request::PolyArc(_) => None,
2187             Request::FillPoly(_) => None,
2188             Request::PolyFillRectangle(_) => None,
2189             Request::PolyFillArc(_) => None,
2190             Request::PutImage(_) => None,
2191             Request::GetImage(_) => Some(xproto::GetImageRequest::parse_reply),
2192             Request::PolyText8(_) => None,
2193             Request::PolyText16(_) => None,
2194             Request::ImageText8(_) => None,
2195             Request::ImageText16(_) => None,
2196             Request::CreateColormap(_) => None,
2197             Request::FreeColormap(_) => None,
2198             Request::CopyColormapAndFree(_) => None,
2199             Request::InstallColormap(_) => None,
2200             Request::UninstallColormap(_) => None,
2201             Request::ListInstalledColormaps(_) => Some(xproto::ListInstalledColormapsRequest::parse_reply),
2202             Request::AllocColor(_) => Some(xproto::AllocColorRequest::parse_reply),
2203             Request::AllocNamedColor(_) => Some(xproto::AllocNamedColorRequest::parse_reply),
2204             Request::AllocColorCells(_) => Some(xproto::AllocColorCellsRequest::parse_reply),
2205             Request::AllocColorPlanes(_) => Some(xproto::AllocColorPlanesRequest::parse_reply),
2206             Request::FreeColors(_) => None,
2207             Request::StoreColors(_) => None,
2208             Request::StoreNamedColor(_) => None,
2209             Request::QueryColors(_) => Some(xproto::QueryColorsRequest::parse_reply),
2210             Request::LookupColor(_) => Some(xproto::LookupColorRequest::parse_reply),
2211             Request::CreateCursor(_) => None,
2212             Request::CreateGlyphCursor(_) => None,
2213             Request::FreeCursor(_) => None,
2214             Request::RecolorCursor(_) => None,
2215             Request::QueryBestSize(_) => Some(xproto::QueryBestSizeRequest::parse_reply),
2216             Request::QueryExtension(_) => Some(xproto::QueryExtensionRequest::parse_reply),
2217             Request::ListExtensions(_) => Some(xproto::ListExtensionsRequest::parse_reply),
2218             Request::ChangeKeyboardMapping(_) => None,
2219             Request::GetKeyboardMapping(_) => Some(xproto::GetKeyboardMappingRequest::parse_reply),
2220             Request::ChangeKeyboardControl(_) => None,
2221             Request::GetKeyboardControl(_) => Some(xproto::GetKeyboardControlRequest::parse_reply),
2222             Request::Bell(_) => None,
2223             Request::ChangePointerControl(_) => None,
2224             Request::GetPointerControl(_) => Some(xproto::GetPointerControlRequest::parse_reply),
2225             Request::SetScreenSaver(_) => None,
2226             Request::GetScreenSaver(_) => Some(xproto::GetScreenSaverRequest::parse_reply),
2227             Request::ChangeHosts(_) => None,
2228             Request::ListHosts(_) => Some(xproto::ListHostsRequest::parse_reply),
2229             Request::SetAccessControl(_) => None,
2230             Request::SetCloseDownMode(_) => None,
2231             Request::KillClient(_) => None,
2232             Request::RotateProperties(_) => None,
2233             Request::ForceScreenSaver(_) => None,
2234             Request::SetPointerMapping(_) => Some(xproto::SetPointerMappingRequest::parse_reply),
2235             Request::GetPointerMapping(_) => Some(xproto::GetPointerMappingRequest::parse_reply),
2236             Request::SetModifierMapping(_) => Some(xproto::SetModifierMappingRequest::parse_reply),
2237             Request::GetModifierMapping(_) => Some(xproto::GetModifierMappingRequest::parse_reply),
2238             Request::NoOperation(_) => None,
2239             Request::BigreqEnable(_) => Some(bigreq::EnableRequest::parse_reply),
2240             #[cfg(feature = "composite")]
2241             Request::CompositeQueryVersion(_) => Some(composite::QueryVersionRequest::parse_reply),
2242             #[cfg(feature = "composite")]
2243             Request::CompositeRedirectWindow(_) => None,
2244             #[cfg(feature = "composite")]
2245             Request::CompositeRedirectSubwindows(_) => None,
2246             #[cfg(feature = "composite")]
2247             Request::CompositeUnredirectWindow(_) => None,
2248             #[cfg(feature = "composite")]
2249             Request::CompositeUnredirectSubwindows(_) => None,
2250             #[cfg(feature = "composite")]
2251             Request::CompositeCreateRegionFromBorderClip(_) => None,
2252             #[cfg(feature = "composite")]
2253             Request::CompositeNameWindowPixmap(_) => None,
2254             #[cfg(feature = "composite")]
2255             Request::CompositeGetOverlayWindow(_) => Some(composite::GetOverlayWindowRequest::parse_reply),
2256             #[cfg(feature = "composite")]
2257             Request::CompositeReleaseOverlayWindow(_) => None,
2258             #[cfg(feature = "damage")]
2259             Request::DamageQueryVersion(_) => Some(damage::QueryVersionRequest::parse_reply),
2260             #[cfg(feature = "damage")]
2261             Request::DamageCreate(_) => None,
2262             #[cfg(feature = "damage")]
2263             Request::DamageDestroy(_) => None,
2264             #[cfg(feature = "damage")]
2265             Request::DamageSubtract(_) => None,
2266             #[cfg(feature = "damage")]
2267             Request::DamageAdd(_) => None,
2268             #[cfg(feature = "dpms")]
2269             Request::DpmsGetVersion(_) => Some(dpms::GetVersionRequest::parse_reply),
2270             #[cfg(feature = "dpms")]
2271             Request::DpmsCapable(_) => Some(dpms::CapableRequest::parse_reply),
2272             #[cfg(feature = "dpms")]
2273             Request::DpmsGetTimeouts(_) => Some(dpms::GetTimeoutsRequest::parse_reply),
2274             #[cfg(feature = "dpms")]
2275             Request::DpmsSetTimeouts(_) => None,
2276             #[cfg(feature = "dpms")]
2277             Request::DpmsEnable(_) => None,
2278             #[cfg(feature = "dpms")]
2279             Request::DpmsDisable(_) => None,
2280             #[cfg(feature = "dpms")]
2281             Request::DpmsForceLevel(_) => None,
2282             #[cfg(feature = "dpms")]
2283             Request::DpmsInfo(_) => Some(dpms::InfoRequest::parse_reply),
2284             #[cfg(feature = "dri2")]
2285             Request::Dri2QueryVersion(_) => Some(dri2::QueryVersionRequest::parse_reply),
2286             #[cfg(feature = "dri2")]
2287             Request::Dri2Connect(_) => Some(dri2::ConnectRequest::parse_reply),
2288             #[cfg(feature = "dri2")]
2289             Request::Dri2Authenticate(_) => Some(dri2::AuthenticateRequest::parse_reply),
2290             #[cfg(feature = "dri2")]
2291             Request::Dri2CreateDrawable(_) => None,
2292             #[cfg(feature = "dri2")]
2293             Request::Dri2DestroyDrawable(_) => None,
2294             #[cfg(feature = "dri2")]
2295             Request::Dri2GetBuffers(_) => Some(dri2::GetBuffersRequest::parse_reply),
2296             #[cfg(feature = "dri2")]
2297             Request::Dri2CopyRegion(_) => Some(dri2::CopyRegionRequest::parse_reply),
2298             #[cfg(feature = "dri2")]
2299             Request::Dri2GetBuffersWithFormat(_) => Some(dri2::GetBuffersWithFormatRequest::parse_reply),
2300             #[cfg(feature = "dri2")]
2301             Request::Dri2SwapBuffers(_) => Some(dri2::SwapBuffersRequest::parse_reply),
2302             #[cfg(feature = "dri2")]
2303             Request::Dri2GetMSC(_) => Some(dri2::GetMSCRequest::parse_reply),
2304             #[cfg(feature = "dri2")]
2305             Request::Dri2WaitMSC(_) => Some(dri2::WaitMSCRequest::parse_reply),
2306             #[cfg(feature = "dri2")]
2307             Request::Dri2WaitSBC(_) => Some(dri2::WaitSBCRequest::parse_reply),
2308             #[cfg(feature = "dri2")]
2309             Request::Dri2SwapInterval(_) => None,
2310             #[cfg(feature = "dri2")]
2311             Request::Dri2GetParam(_) => Some(dri2::GetParamRequest::parse_reply),
2312             #[cfg(feature = "dri3")]
2313             Request::Dri3QueryVersion(_) => Some(dri3::QueryVersionRequest::parse_reply),
2314             #[cfg(feature = "dri3")]
2315             Request::Dri3Open(_) => Some(dri3::OpenRequest::parse_reply),
2316             #[cfg(feature = "dri3")]
2317             Request::Dri3PixmapFromBuffer(_) => None,
2318             #[cfg(feature = "dri3")]
2319             Request::Dri3BufferFromPixmap(_) => Some(dri3::BufferFromPixmapRequest::parse_reply),
2320             #[cfg(feature = "dri3")]
2321             Request::Dri3FenceFromFD(_) => None,
2322             #[cfg(feature = "dri3")]
2323             Request::Dri3FDFromFence(_) => Some(dri3::FDFromFenceRequest::parse_reply),
2324             #[cfg(feature = "dri3")]
2325             Request::Dri3GetSupportedModifiers(_) => Some(dri3::GetSupportedModifiersRequest::parse_reply),
2326             #[cfg(feature = "dri3")]
2327             Request::Dri3PixmapFromBuffers(_) => None,
2328             #[cfg(feature = "dri3")]
2329             Request::Dri3BuffersFromPixmap(_) => Some(dri3::BuffersFromPixmapRequest::parse_reply),
2330             Request::GeQueryVersion(_) => Some(ge::QueryVersionRequest::parse_reply),
2331             #[cfg(feature = "glx")]
2332             Request::GlxRender(_) => None,
2333             #[cfg(feature = "glx")]
2334             Request::GlxRenderLarge(_) => None,
2335             #[cfg(feature = "glx")]
2336             Request::GlxCreateContext(_) => None,
2337             #[cfg(feature = "glx")]
2338             Request::GlxDestroyContext(_) => None,
2339             #[cfg(feature = "glx")]
2340             Request::GlxMakeCurrent(_) => Some(glx::MakeCurrentRequest::parse_reply),
2341             #[cfg(feature = "glx")]
2342             Request::GlxIsDirect(_) => Some(glx::IsDirectRequest::parse_reply),
2343             #[cfg(feature = "glx")]
2344             Request::GlxQueryVersion(_) => Some(glx::QueryVersionRequest::parse_reply),
2345             #[cfg(feature = "glx")]
2346             Request::GlxWaitGL(_) => None,
2347             #[cfg(feature = "glx")]
2348             Request::GlxWaitX(_) => None,
2349             #[cfg(feature = "glx")]
2350             Request::GlxCopyContext(_) => None,
2351             #[cfg(feature = "glx")]
2352             Request::GlxSwapBuffers(_) => None,
2353             #[cfg(feature = "glx")]
2354             Request::GlxUseXFont(_) => None,
2355             #[cfg(feature = "glx")]
2356             Request::GlxCreateGLXPixmap(_) => None,
2357             #[cfg(feature = "glx")]
2358             Request::GlxGetVisualConfigs(_) => Some(glx::GetVisualConfigsRequest::parse_reply),
2359             #[cfg(feature = "glx")]
2360             Request::GlxDestroyGLXPixmap(_) => None,
2361             #[cfg(feature = "glx")]
2362             Request::GlxVendorPrivate(_) => None,
2363             #[cfg(feature = "glx")]
2364             Request::GlxVendorPrivateWithReply(_) => Some(glx::VendorPrivateWithReplyRequest::parse_reply),
2365             #[cfg(feature = "glx")]
2366             Request::GlxQueryExtensionsString(_) => Some(glx::QueryExtensionsStringRequest::parse_reply),
2367             #[cfg(feature = "glx")]
2368             Request::GlxQueryServerString(_) => Some(glx::QueryServerStringRequest::parse_reply),
2369             #[cfg(feature = "glx")]
2370             Request::GlxClientInfo(_) => None,
2371             #[cfg(feature = "glx")]
2372             Request::GlxGetFBConfigs(_) => Some(glx::GetFBConfigsRequest::parse_reply),
2373             #[cfg(feature = "glx")]
2374             Request::GlxCreatePixmap(_) => None,
2375             #[cfg(feature = "glx")]
2376             Request::GlxDestroyPixmap(_) => None,
2377             #[cfg(feature = "glx")]
2378             Request::GlxCreateNewContext(_) => None,
2379             #[cfg(feature = "glx")]
2380             Request::GlxQueryContext(_) => Some(glx::QueryContextRequest::parse_reply),
2381             #[cfg(feature = "glx")]
2382             Request::GlxMakeContextCurrent(_) => Some(glx::MakeContextCurrentRequest::parse_reply),
2383             #[cfg(feature = "glx")]
2384             Request::GlxCreatePbuffer(_) => None,
2385             #[cfg(feature = "glx")]
2386             Request::GlxDestroyPbuffer(_) => None,
2387             #[cfg(feature = "glx")]
2388             Request::GlxGetDrawableAttributes(_) => Some(glx::GetDrawableAttributesRequest::parse_reply),
2389             #[cfg(feature = "glx")]
2390             Request::GlxChangeDrawableAttributes(_) => None,
2391             #[cfg(feature = "glx")]
2392             Request::GlxCreateWindow(_) => None,
2393             #[cfg(feature = "glx")]
2394             Request::GlxDeleteWindow(_) => None,
2395             #[cfg(feature = "glx")]
2396             Request::GlxSetClientInfoARB(_) => None,
2397             #[cfg(feature = "glx")]
2398             Request::GlxCreateContextAttribsARB(_) => None,
2399             #[cfg(feature = "glx")]
2400             Request::GlxSetClientInfo2ARB(_) => None,
2401             #[cfg(feature = "glx")]
2402             Request::GlxNewList(_) => None,
2403             #[cfg(feature = "glx")]
2404             Request::GlxEndList(_) => None,
2405             #[cfg(feature = "glx")]
2406             Request::GlxDeleteLists(_) => None,
2407             #[cfg(feature = "glx")]
2408             Request::GlxGenLists(_) => Some(glx::GenListsRequest::parse_reply),
2409             #[cfg(feature = "glx")]
2410             Request::GlxFeedbackBuffer(_) => None,
2411             #[cfg(feature = "glx")]
2412             Request::GlxSelectBuffer(_) => None,
2413             #[cfg(feature = "glx")]
2414             Request::GlxRenderMode(_) => Some(glx::RenderModeRequest::parse_reply),
2415             #[cfg(feature = "glx")]
2416             Request::GlxFinish(_) => Some(glx::FinishRequest::parse_reply),
2417             #[cfg(feature = "glx")]
2418             Request::GlxPixelStoref(_) => None,
2419             #[cfg(feature = "glx")]
2420             Request::GlxPixelStorei(_) => None,
2421             #[cfg(feature = "glx")]
2422             Request::GlxReadPixels(_) => Some(glx::ReadPixelsRequest::parse_reply),
2423             #[cfg(feature = "glx")]
2424             Request::GlxGetBooleanv(_) => Some(glx::GetBooleanvRequest::parse_reply),
2425             #[cfg(feature = "glx")]
2426             Request::GlxGetClipPlane(_) => Some(glx::GetClipPlaneRequest::parse_reply),
2427             #[cfg(feature = "glx")]
2428             Request::GlxGetDoublev(_) => Some(glx::GetDoublevRequest::parse_reply),
2429             #[cfg(feature = "glx")]
2430             Request::GlxGetError(_) => Some(glx::GetErrorRequest::parse_reply),
2431             #[cfg(feature = "glx")]
2432             Request::GlxGetFloatv(_) => Some(glx::GetFloatvRequest::parse_reply),
2433             #[cfg(feature = "glx")]
2434             Request::GlxGetIntegerv(_) => Some(glx::GetIntegervRequest::parse_reply),
2435             #[cfg(feature = "glx")]
2436             Request::GlxGetLightfv(_) => Some(glx::GetLightfvRequest::parse_reply),
2437             #[cfg(feature = "glx")]
2438             Request::GlxGetLightiv(_) => Some(glx::GetLightivRequest::parse_reply),
2439             #[cfg(feature = "glx")]
2440             Request::GlxGetMapdv(_) => Some(glx::GetMapdvRequest::parse_reply),
2441             #[cfg(feature = "glx")]
2442             Request::GlxGetMapfv(_) => Some(glx::GetMapfvRequest::parse_reply),
2443             #[cfg(feature = "glx")]
2444             Request::GlxGetMapiv(_) => Some(glx::GetMapivRequest::parse_reply),
2445             #[cfg(feature = "glx")]
2446             Request::GlxGetMaterialfv(_) => Some(glx::GetMaterialfvRequest::parse_reply),
2447             #[cfg(feature = "glx")]
2448             Request::GlxGetMaterialiv(_) => Some(glx::GetMaterialivRequest::parse_reply),
2449             #[cfg(feature = "glx")]
2450             Request::GlxGetPixelMapfv(_) => Some(glx::GetPixelMapfvRequest::parse_reply),
2451             #[cfg(feature = "glx")]
2452             Request::GlxGetPixelMapuiv(_) => Some(glx::GetPixelMapuivRequest::parse_reply),
2453             #[cfg(feature = "glx")]
2454             Request::GlxGetPixelMapusv(_) => Some(glx::GetPixelMapusvRequest::parse_reply),
2455             #[cfg(feature = "glx")]
2456             Request::GlxGetPolygonStipple(_) => Some(glx::GetPolygonStippleRequest::parse_reply),
2457             #[cfg(feature = "glx")]
2458             Request::GlxGetString(_) => Some(glx::GetStringRequest::parse_reply),
2459             #[cfg(feature = "glx")]
2460             Request::GlxGetTexEnvfv(_) => Some(glx::GetTexEnvfvRequest::parse_reply),
2461             #[cfg(feature = "glx")]
2462             Request::GlxGetTexEnviv(_) => Some(glx::GetTexEnvivRequest::parse_reply),
2463             #[cfg(feature = "glx")]
2464             Request::GlxGetTexGendv(_) => Some(glx::GetTexGendvRequest::parse_reply),
2465             #[cfg(feature = "glx")]
2466             Request::GlxGetTexGenfv(_) => Some(glx::GetTexGenfvRequest::parse_reply),
2467             #[cfg(feature = "glx")]
2468             Request::GlxGetTexGeniv(_) => Some(glx::GetTexGenivRequest::parse_reply),
2469             #[cfg(feature = "glx")]
2470             Request::GlxGetTexImage(_) => Some(glx::GetTexImageRequest::parse_reply),
2471             #[cfg(feature = "glx")]
2472             Request::GlxGetTexParameterfv(_) => Some(glx::GetTexParameterfvRequest::parse_reply),
2473             #[cfg(feature = "glx")]
2474             Request::GlxGetTexParameteriv(_) => Some(glx::GetTexParameterivRequest::parse_reply),
2475             #[cfg(feature = "glx")]
2476             Request::GlxGetTexLevelParameterfv(_) => Some(glx::GetTexLevelParameterfvRequest::parse_reply),
2477             #[cfg(feature = "glx")]
2478             Request::GlxGetTexLevelParameteriv(_) => Some(glx::GetTexLevelParameterivRequest::parse_reply),
2479             #[cfg(feature = "glx")]
2480             Request::GlxIsEnabled(_) => Some(glx::IsEnabledRequest::parse_reply),
2481             #[cfg(feature = "glx")]
2482             Request::GlxIsList(_) => Some(glx::IsListRequest::parse_reply),
2483             #[cfg(feature = "glx")]
2484             Request::GlxFlush(_) => None,
2485             #[cfg(feature = "glx")]
2486             Request::GlxAreTexturesResident(_) => Some(glx::AreTexturesResidentRequest::parse_reply),
2487             #[cfg(feature = "glx")]
2488             Request::GlxDeleteTextures(_) => None,
2489             #[cfg(feature = "glx")]
2490             Request::GlxGenTextures(_) => Some(glx::GenTexturesRequest::parse_reply),
2491             #[cfg(feature = "glx")]
2492             Request::GlxIsTexture(_) => Some(glx::IsTextureRequest::parse_reply),
2493             #[cfg(feature = "glx")]
2494             Request::GlxGetColorTable(_) => Some(glx::GetColorTableRequest::parse_reply),
2495             #[cfg(feature = "glx")]
2496             Request::GlxGetColorTableParameterfv(_) => Some(glx::GetColorTableParameterfvRequest::parse_reply),
2497             #[cfg(feature = "glx")]
2498             Request::GlxGetColorTableParameteriv(_) => Some(glx::GetColorTableParameterivRequest::parse_reply),
2499             #[cfg(feature = "glx")]
2500             Request::GlxGetConvolutionFilter(_) => Some(glx::GetConvolutionFilterRequest::parse_reply),
2501             #[cfg(feature = "glx")]
2502             Request::GlxGetConvolutionParameterfv(_) => Some(glx::GetConvolutionParameterfvRequest::parse_reply),
2503             #[cfg(feature = "glx")]
2504             Request::GlxGetConvolutionParameteriv(_) => Some(glx::GetConvolutionParameterivRequest::parse_reply),
2505             #[cfg(feature = "glx")]
2506             Request::GlxGetSeparableFilter(_) => Some(glx::GetSeparableFilterRequest::parse_reply),
2507             #[cfg(feature = "glx")]
2508             Request::GlxGetHistogram(_) => Some(glx::GetHistogramRequest::parse_reply),
2509             #[cfg(feature = "glx")]
2510             Request::GlxGetHistogramParameterfv(_) => Some(glx::GetHistogramParameterfvRequest::parse_reply),
2511             #[cfg(feature = "glx")]
2512             Request::GlxGetHistogramParameteriv(_) => Some(glx::GetHistogramParameterivRequest::parse_reply),
2513             #[cfg(feature = "glx")]
2514             Request::GlxGetMinmax(_) => Some(glx::GetMinmaxRequest::parse_reply),
2515             #[cfg(feature = "glx")]
2516             Request::GlxGetMinmaxParameterfv(_) => Some(glx::GetMinmaxParameterfvRequest::parse_reply),
2517             #[cfg(feature = "glx")]
2518             Request::GlxGetMinmaxParameteriv(_) => Some(glx::GetMinmaxParameterivRequest::parse_reply),
2519             #[cfg(feature = "glx")]
2520             Request::GlxGetCompressedTexImageARB(_) => Some(glx::GetCompressedTexImageARBRequest::parse_reply),
2521             #[cfg(feature = "glx")]
2522             Request::GlxDeleteQueriesARB(_) => None,
2523             #[cfg(feature = "glx")]
2524             Request::GlxGenQueriesARB(_) => Some(glx::GenQueriesARBRequest::parse_reply),
2525             #[cfg(feature = "glx")]
2526             Request::GlxIsQueryARB(_) => Some(glx::IsQueryARBRequest::parse_reply),
2527             #[cfg(feature = "glx")]
2528             Request::GlxGetQueryivARB(_) => Some(glx::GetQueryivARBRequest::parse_reply),
2529             #[cfg(feature = "glx")]
2530             Request::GlxGetQueryObjectivARB(_) => Some(glx::GetQueryObjectivARBRequest::parse_reply),
2531             #[cfg(feature = "glx")]
2532             Request::GlxGetQueryObjectuivARB(_) => Some(glx::GetQueryObjectuivARBRequest::parse_reply),
2533             #[cfg(feature = "present")]
2534             Request::PresentQueryVersion(_) => Some(present::QueryVersionRequest::parse_reply),
2535             #[cfg(feature = "present")]
2536             Request::PresentPixmap(_) => None,
2537             #[cfg(feature = "present")]
2538             Request::PresentNotifyMSC(_) => None,
2539             #[cfg(feature = "present")]
2540             Request::PresentSelectInput(_) => None,
2541             #[cfg(feature = "present")]
2542             Request::PresentQueryCapabilities(_) => Some(present::QueryCapabilitiesRequest::parse_reply),
2543             #[cfg(feature = "randr")]
2544             Request::RandrQueryVersion(_) => Some(randr::QueryVersionRequest::parse_reply),
2545             #[cfg(feature = "randr")]
2546             Request::RandrSetScreenConfig(_) => Some(randr::SetScreenConfigRequest::parse_reply),
2547             #[cfg(feature = "randr")]
2548             Request::RandrSelectInput(_) => None,
2549             #[cfg(feature = "randr")]
2550             Request::RandrGetScreenInfo(_) => Some(randr::GetScreenInfoRequest::parse_reply),
2551             #[cfg(feature = "randr")]
2552             Request::RandrGetScreenSizeRange(_) => Some(randr::GetScreenSizeRangeRequest::parse_reply),
2553             #[cfg(feature = "randr")]
2554             Request::RandrSetScreenSize(_) => None,
2555             #[cfg(feature = "randr")]
2556             Request::RandrGetScreenResources(_) => Some(randr::GetScreenResourcesRequest::parse_reply),
2557             #[cfg(feature = "randr")]
2558             Request::RandrGetOutputInfo(_) => Some(randr::GetOutputInfoRequest::parse_reply),
2559             #[cfg(feature = "randr")]
2560             Request::RandrListOutputProperties(_) => Some(randr::ListOutputPropertiesRequest::parse_reply),
2561             #[cfg(feature = "randr")]
2562             Request::RandrQueryOutputProperty(_) => Some(randr::QueryOutputPropertyRequest::parse_reply),
2563             #[cfg(feature = "randr")]
2564             Request::RandrConfigureOutputProperty(_) => None,
2565             #[cfg(feature = "randr")]
2566             Request::RandrChangeOutputProperty(_) => None,
2567             #[cfg(feature = "randr")]
2568             Request::RandrDeleteOutputProperty(_) => None,
2569             #[cfg(feature = "randr")]
2570             Request::RandrGetOutputProperty(_) => Some(randr::GetOutputPropertyRequest::parse_reply),
2571             #[cfg(feature = "randr")]
2572             Request::RandrCreateMode(_) => Some(randr::CreateModeRequest::parse_reply),
2573             #[cfg(feature = "randr")]
2574             Request::RandrDestroyMode(_) => None,
2575             #[cfg(feature = "randr")]
2576             Request::RandrAddOutputMode(_) => None,
2577             #[cfg(feature = "randr")]
2578             Request::RandrDeleteOutputMode(_) => None,
2579             #[cfg(feature = "randr")]
2580             Request::RandrGetCrtcInfo(_) => Some(randr::GetCrtcInfoRequest::parse_reply),
2581             #[cfg(feature = "randr")]
2582             Request::RandrSetCrtcConfig(_) => Some(randr::SetCrtcConfigRequest::parse_reply),
2583             #[cfg(feature = "randr")]
2584             Request::RandrGetCrtcGammaSize(_) => Some(randr::GetCrtcGammaSizeRequest::parse_reply),
2585             #[cfg(feature = "randr")]
2586             Request::RandrGetCrtcGamma(_) => Some(randr::GetCrtcGammaRequest::parse_reply),
2587             #[cfg(feature = "randr")]
2588             Request::RandrSetCrtcGamma(_) => None,
2589             #[cfg(feature = "randr")]
2590             Request::RandrGetScreenResourcesCurrent(_) => Some(randr::GetScreenResourcesCurrentRequest::parse_reply),
2591             #[cfg(feature = "randr")]
2592             Request::RandrSetCrtcTransform(_) => None,
2593             #[cfg(feature = "randr")]
2594             Request::RandrGetCrtcTransform(_) => Some(randr::GetCrtcTransformRequest::parse_reply),
2595             #[cfg(feature = "randr")]
2596             Request::RandrGetPanning(_) => Some(randr::GetPanningRequest::parse_reply),
2597             #[cfg(feature = "randr")]
2598             Request::RandrSetPanning(_) => Some(randr::SetPanningRequest::parse_reply),
2599             #[cfg(feature = "randr")]
2600             Request::RandrSetOutputPrimary(_) => None,
2601             #[cfg(feature = "randr")]
2602             Request::RandrGetOutputPrimary(_) => Some(randr::GetOutputPrimaryRequest::parse_reply),
2603             #[cfg(feature = "randr")]
2604             Request::RandrGetProviders(_) => Some(randr::GetProvidersRequest::parse_reply),
2605             #[cfg(feature = "randr")]
2606             Request::RandrGetProviderInfo(_) => Some(randr::GetProviderInfoRequest::parse_reply),
2607             #[cfg(feature = "randr")]
2608             Request::RandrSetProviderOffloadSink(_) => None,
2609             #[cfg(feature = "randr")]
2610             Request::RandrSetProviderOutputSource(_) => None,
2611             #[cfg(feature = "randr")]
2612             Request::RandrListProviderProperties(_) => Some(randr::ListProviderPropertiesRequest::parse_reply),
2613             #[cfg(feature = "randr")]
2614             Request::RandrQueryProviderProperty(_) => Some(randr::QueryProviderPropertyRequest::parse_reply),
2615             #[cfg(feature = "randr")]
2616             Request::RandrConfigureProviderProperty(_) => None,
2617             #[cfg(feature = "randr")]
2618             Request::RandrChangeProviderProperty(_) => None,
2619             #[cfg(feature = "randr")]
2620             Request::RandrDeleteProviderProperty(_) => None,
2621             #[cfg(feature = "randr")]
2622             Request::RandrGetProviderProperty(_) => Some(randr::GetProviderPropertyRequest::parse_reply),
2623             #[cfg(feature = "randr")]
2624             Request::RandrGetMonitors(_) => Some(randr::GetMonitorsRequest::parse_reply),
2625             #[cfg(feature = "randr")]
2626             Request::RandrSetMonitor(_) => None,
2627             #[cfg(feature = "randr")]
2628             Request::RandrDeleteMonitor(_) => None,
2629             #[cfg(feature = "randr")]
2630             Request::RandrCreateLease(_) => Some(randr::CreateLeaseRequest::parse_reply),
2631             #[cfg(feature = "randr")]
2632             Request::RandrFreeLease(_) => None,
2633             #[cfg(feature = "record")]
2634             Request::RecordQueryVersion(_) => Some(record::QueryVersionRequest::parse_reply),
2635             #[cfg(feature = "record")]
2636             Request::RecordCreateContext(_) => None,
2637             #[cfg(feature = "record")]
2638             Request::RecordRegisterClients(_) => None,
2639             #[cfg(feature = "record")]
2640             Request::RecordUnregisterClients(_) => None,
2641             #[cfg(feature = "record")]
2642             Request::RecordGetContext(_) => Some(record::GetContextRequest::parse_reply),
2643             #[cfg(feature = "record")]
2644             Request::RecordEnableContext(_) => Some(record::EnableContextRequest::parse_reply),
2645             #[cfg(feature = "record")]
2646             Request::RecordDisableContext(_) => None,
2647             #[cfg(feature = "record")]
2648             Request::RecordFreeContext(_) => None,
2649             #[cfg(feature = "render")]
2650             Request::RenderQueryVersion(_) => Some(render::QueryVersionRequest::parse_reply),
2651             #[cfg(feature = "render")]
2652             Request::RenderQueryPictFormats(_) => Some(render::QueryPictFormatsRequest::parse_reply),
2653             #[cfg(feature = "render")]
2654             Request::RenderQueryPictIndexValues(_) => Some(render::QueryPictIndexValuesRequest::parse_reply),
2655             #[cfg(feature = "render")]
2656             Request::RenderCreatePicture(_) => None,
2657             #[cfg(feature = "render")]
2658             Request::RenderChangePicture(_) => None,
2659             #[cfg(feature = "render")]
2660             Request::RenderSetPictureClipRectangles(_) => None,
2661             #[cfg(feature = "render")]
2662             Request::RenderFreePicture(_) => None,
2663             #[cfg(feature = "render")]
2664             Request::RenderComposite(_) => None,
2665             #[cfg(feature = "render")]
2666             Request::RenderTrapezoids(_) => None,
2667             #[cfg(feature = "render")]
2668             Request::RenderTriangles(_) => None,
2669             #[cfg(feature = "render")]
2670             Request::RenderTriStrip(_) => None,
2671             #[cfg(feature = "render")]
2672             Request::RenderTriFan(_) => None,
2673             #[cfg(feature = "render")]
2674             Request::RenderCreateGlyphSet(_) => None,
2675             #[cfg(feature = "render")]
2676             Request::RenderReferenceGlyphSet(_) => None,
2677             #[cfg(feature = "render")]
2678             Request::RenderFreeGlyphSet(_) => None,
2679             #[cfg(feature = "render")]
2680             Request::RenderAddGlyphs(_) => None,
2681             #[cfg(feature = "render")]
2682             Request::RenderFreeGlyphs(_) => None,
2683             #[cfg(feature = "render")]
2684             Request::RenderCompositeGlyphs8(_) => None,
2685             #[cfg(feature = "render")]
2686             Request::RenderCompositeGlyphs16(_) => None,
2687             #[cfg(feature = "render")]
2688             Request::RenderCompositeGlyphs32(_) => None,
2689             #[cfg(feature = "render")]
2690             Request::RenderFillRectangles(_) => None,
2691             #[cfg(feature = "render")]
2692             Request::RenderCreateCursor(_) => None,
2693             #[cfg(feature = "render")]
2694             Request::RenderSetPictureTransform(_) => None,
2695             #[cfg(feature = "render")]
2696             Request::RenderQueryFilters(_) => Some(render::QueryFiltersRequest::parse_reply),
2697             #[cfg(feature = "render")]
2698             Request::RenderSetPictureFilter(_) => None,
2699             #[cfg(feature = "render")]
2700             Request::RenderCreateAnimCursor(_) => None,
2701             #[cfg(feature = "render")]
2702             Request::RenderAddTraps(_) => None,
2703             #[cfg(feature = "render")]
2704             Request::RenderCreateSolidFill(_) => None,
2705             #[cfg(feature = "render")]
2706             Request::RenderCreateLinearGradient(_) => None,
2707             #[cfg(feature = "render")]
2708             Request::RenderCreateRadialGradient(_) => None,
2709             #[cfg(feature = "render")]
2710             Request::RenderCreateConicalGradient(_) => None,
2711             #[cfg(feature = "res")]
2712             Request::ResQueryVersion(_) => Some(res::QueryVersionRequest::parse_reply),
2713             #[cfg(feature = "res")]
2714             Request::ResQueryClients(_) => Some(res::QueryClientsRequest::parse_reply),
2715             #[cfg(feature = "res")]
2716             Request::ResQueryClientResources(_) => Some(res::QueryClientResourcesRequest::parse_reply),
2717             #[cfg(feature = "res")]
2718             Request::ResQueryClientPixmapBytes(_) => Some(res::QueryClientPixmapBytesRequest::parse_reply),
2719             #[cfg(feature = "res")]
2720             Request::ResQueryClientIds(_) => Some(res::QueryClientIdsRequest::parse_reply),
2721             #[cfg(feature = "res")]
2722             Request::ResQueryResourceBytes(_) => Some(res::QueryResourceBytesRequest::parse_reply),
2723             #[cfg(feature = "screensaver")]
2724             Request::ScreensaverQueryVersion(_) => Some(screensaver::QueryVersionRequest::parse_reply),
2725             #[cfg(feature = "screensaver")]
2726             Request::ScreensaverQueryInfo(_) => Some(screensaver::QueryInfoRequest::parse_reply),
2727             #[cfg(feature = "screensaver")]
2728             Request::ScreensaverSelectInput(_) => None,
2729             #[cfg(feature = "screensaver")]
2730             Request::ScreensaverSetAttributes(_) => None,
2731             #[cfg(feature = "screensaver")]
2732             Request::ScreensaverUnsetAttributes(_) => None,
2733             #[cfg(feature = "screensaver")]
2734             Request::ScreensaverSuspend(_) => None,
2735             #[cfg(feature = "shape")]
2736             Request::ShapeQueryVersion(_) => Some(shape::QueryVersionRequest::parse_reply),
2737             #[cfg(feature = "shape")]
2738             Request::ShapeRectangles(_) => None,
2739             #[cfg(feature = "shape")]
2740             Request::ShapeMask(_) => None,
2741             #[cfg(feature = "shape")]
2742             Request::ShapeCombine(_) => None,
2743             #[cfg(feature = "shape")]
2744             Request::ShapeOffset(_) => None,
2745             #[cfg(feature = "shape")]
2746             Request::ShapeQueryExtents(_) => Some(shape::QueryExtentsRequest::parse_reply),
2747             #[cfg(feature = "shape")]
2748             Request::ShapeSelectInput(_) => None,
2749             #[cfg(feature = "shape")]
2750             Request::ShapeInputSelected(_) => Some(shape::InputSelectedRequest::parse_reply),
2751             #[cfg(feature = "shape")]
2752             Request::ShapeGetRectangles(_) => Some(shape::GetRectanglesRequest::parse_reply),
2753             #[cfg(feature = "shm")]
2754             Request::ShmQueryVersion(_) => Some(shm::QueryVersionRequest::parse_reply),
2755             #[cfg(feature = "shm")]
2756             Request::ShmAttach(_) => None,
2757             #[cfg(feature = "shm")]
2758             Request::ShmDetach(_) => None,
2759             #[cfg(feature = "shm")]
2760             Request::ShmPutImage(_) => None,
2761             #[cfg(feature = "shm")]
2762             Request::ShmGetImage(_) => Some(shm::GetImageRequest::parse_reply),
2763             #[cfg(feature = "shm")]
2764             Request::ShmCreatePixmap(_) => None,
2765             #[cfg(feature = "shm")]
2766             Request::ShmAttachFd(_) => None,
2767             #[cfg(feature = "shm")]
2768             Request::ShmCreateSegment(_) => Some(shm::CreateSegmentRequest::parse_reply),
2769             #[cfg(feature = "sync")]
2770             Request::SyncInitialize(_) => Some(sync::InitializeRequest::parse_reply),
2771             #[cfg(feature = "sync")]
2772             Request::SyncListSystemCounters(_) => Some(sync::ListSystemCountersRequest::parse_reply),
2773             #[cfg(feature = "sync")]
2774             Request::SyncCreateCounter(_) => None,
2775             #[cfg(feature = "sync")]
2776             Request::SyncDestroyCounter(_) => None,
2777             #[cfg(feature = "sync")]
2778             Request::SyncQueryCounter(_) => Some(sync::QueryCounterRequest::parse_reply),
2779             #[cfg(feature = "sync")]
2780             Request::SyncAwait(_) => None,
2781             #[cfg(feature = "sync")]
2782             Request::SyncChangeCounter(_) => None,
2783             #[cfg(feature = "sync")]
2784             Request::SyncSetCounter(_) => None,
2785             #[cfg(feature = "sync")]
2786             Request::SyncCreateAlarm(_) => None,
2787             #[cfg(feature = "sync")]
2788             Request::SyncChangeAlarm(_) => None,
2789             #[cfg(feature = "sync")]
2790             Request::SyncDestroyAlarm(_) => None,
2791             #[cfg(feature = "sync")]
2792             Request::SyncQueryAlarm(_) => Some(sync::QueryAlarmRequest::parse_reply),
2793             #[cfg(feature = "sync")]
2794             Request::SyncSetPriority(_) => None,
2795             #[cfg(feature = "sync")]
2796             Request::SyncGetPriority(_) => Some(sync::GetPriorityRequest::parse_reply),
2797             #[cfg(feature = "sync")]
2798             Request::SyncCreateFence(_) => None,
2799             #[cfg(feature = "sync")]
2800             Request::SyncTriggerFence(_) => None,
2801             #[cfg(feature = "sync")]
2802             Request::SyncResetFence(_) => None,
2803             #[cfg(feature = "sync")]
2804             Request::SyncDestroyFence(_) => None,
2805             #[cfg(feature = "sync")]
2806             Request::SyncQueryFence(_) => Some(sync::QueryFenceRequest::parse_reply),
2807             #[cfg(feature = "sync")]
2808             Request::SyncAwaitFence(_) => None,
2809             Request::XcMiscGetVersion(_) => Some(xc_misc::GetVersionRequest::parse_reply),
2810             Request::XcMiscGetXIDRange(_) => Some(xc_misc::GetXIDRangeRequest::parse_reply),
2811             Request::XcMiscGetXIDList(_) => Some(xc_misc::GetXIDListRequest::parse_reply),
2812             #[cfg(feature = "xevie")]
2813             Request::XevieQueryVersion(_) => Some(xevie::QueryVersionRequest::parse_reply),
2814             #[cfg(feature = "xevie")]
2815             Request::XevieStart(_) => Some(xevie::StartRequest::parse_reply),
2816             #[cfg(feature = "xevie")]
2817             Request::XevieEnd(_) => Some(xevie::EndRequest::parse_reply),
2818             #[cfg(feature = "xevie")]
2819             Request::XevieSend(_) => Some(xevie::SendRequest::parse_reply),
2820             #[cfg(feature = "xevie")]
2821             Request::XevieSelectInput(_) => Some(xevie::SelectInputRequest::parse_reply),
2822             #[cfg(feature = "xf86dri")]
2823             Request::Xf86driQueryVersion(_) => Some(xf86dri::QueryVersionRequest::parse_reply),
2824             #[cfg(feature = "xf86dri")]
2825             Request::Xf86driQueryDirectRenderingCapable(_) => Some(xf86dri::QueryDirectRenderingCapableRequest::parse_reply),
2826             #[cfg(feature = "xf86dri")]
2827             Request::Xf86driOpenConnection(_) => Some(xf86dri::OpenConnectionRequest::parse_reply),
2828             #[cfg(feature = "xf86dri")]
2829             Request::Xf86driCloseConnection(_) => None,
2830             #[cfg(feature = "xf86dri")]
2831             Request::Xf86driGetClientDriverName(_) => Some(xf86dri::GetClientDriverNameRequest::parse_reply),
2832             #[cfg(feature = "xf86dri")]
2833             Request::Xf86driCreateContext(_) => Some(xf86dri::CreateContextRequest::parse_reply),
2834             #[cfg(feature = "xf86dri")]
2835             Request::Xf86driDestroyContext(_) => None,
2836             #[cfg(feature = "xf86dri")]
2837             Request::Xf86driCreateDrawable(_) => Some(xf86dri::CreateDrawableRequest::parse_reply),
2838             #[cfg(feature = "xf86dri")]
2839             Request::Xf86driDestroyDrawable(_) => None,
2840             #[cfg(feature = "xf86dri")]
2841             Request::Xf86driGetDrawableInfo(_) => Some(xf86dri::GetDrawableInfoRequest::parse_reply),
2842             #[cfg(feature = "xf86dri")]
2843             Request::Xf86driGetDeviceInfo(_) => Some(xf86dri::GetDeviceInfoRequest::parse_reply),
2844             #[cfg(feature = "xf86dri")]
2845             Request::Xf86driAuthConnection(_) => Some(xf86dri::AuthConnectionRequest::parse_reply),
2846             #[cfg(feature = "xf86vidmode")]
2847             Request::Xf86vidmodeQueryVersion(_) => Some(xf86vidmode::QueryVersionRequest::parse_reply),
2848             #[cfg(feature = "xf86vidmode")]
2849             Request::Xf86vidmodeGetModeLine(_) => Some(xf86vidmode::GetModeLineRequest::parse_reply),
2850             #[cfg(feature = "xf86vidmode")]
2851             Request::Xf86vidmodeModModeLine(_) => None,
2852             #[cfg(feature = "xf86vidmode")]
2853             Request::Xf86vidmodeSwitchMode(_) => None,
2854             #[cfg(feature = "xf86vidmode")]
2855             Request::Xf86vidmodeGetMonitor(_) => Some(xf86vidmode::GetMonitorRequest::parse_reply),
2856             #[cfg(feature = "xf86vidmode")]
2857             Request::Xf86vidmodeLockModeSwitch(_) => None,
2858             #[cfg(feature = "xf86vidmode")]
2859             Request::Xf86vidmodeGetAllModeLines(_) => Some(xf86vidmode::GetAllModeLinesRequest::parse_reply),
2860             #[cfg(feature = "xf86vidmode")]
2861             Request::Xf86vidmodeAddModeLine(_) => None,
2862             #[cfg(feature = "xf86vidmode")]
2863             Request::Xf86vidmodeDeleteModeLine(_) => None,
2864             #[cfg(feature = "xf86vidmode")]
2865             Request::Xf86vidmodeValidateModeLine(_) => Some(xf86vidmode::ValidateModeLineRequest::parse_reply),
2866             #[cfg(feature = "xf86vidmode")]
2867             Request::Xf86vidmodeSwitchToMode(_) => None,
2868             #[cfg(feature = "xf86vidmode")]
2869             Request::Xf86vidmodeGetViewPort(_) => Some(xf86vidmode::GetViewPortRequest::parse_reply),
2870             #[cfg(feature = "xf86vidmode")]
2871             Request::Xf86vidmodeSetViewPort(_) => None,
2872             #[cfg(feature = "xf86vidmode")]
2873             Request::Xf86vidmodeGetDotClocks(_) => Some(xf86vidmode::GetDotClocksRequest::parse_reply),
2874             #[cfg(feature = "xf86vidmode")]
2875             Request::Xf86vidmodeSetClientVersion(_) => None,
2876             #[cfg(feature = "xf86vidmode")]
2877             Request::Xf86vidmodeSetGamma(_) => None,
2878             #[cfg(feature = "xf86vidmode")]
2879             Request::Xf86vidmodeGetGamma(_) => Some(xf86vidmode::GetGammaRequest::parse_reply),
2880             #[cfg(feature = "xf86vidmode")]
2881             Request::Xf86vidmodeGetGammaRamp(_) => Some(xf86vidmode::GetGammaRampRequest::parse_reply),
2882             #[cfg(feature = "xf86vidmode")]
2883             Request::Xf86vidmodeSetGammaRamp(_) => None,
2884             #[cfg(feature = "xf86vidmode")]
2885             Request::Xf86vidmodeGetGammaRampSize(_) => Some(xf86vidmode::GetGammaRampSizeRequest::parse_reply),
2886             #[cfg(feature = "xf86vidmode")]
2887             Request::Xf86vidmodeGetPermissions(_) => Some(xf86vidmode::GetPermissionsRequest::parse_reply),
2888             #[cfg(feature = "xfixes")]
2889             Request::XfixesQueryVersion(_) => Some(xfixes::QueryVersionRequest::parse_reply),
2890             #[cfg(feature = "xfixes")]
2891             Request::XfixesChangeSaveSet(_) => None,
2892             #[cfg(feature = "xfixes")]
2893             Request::XfixesSelectSelectionInput(_) => None,
2894             #[cfg(feature = "xfixes")]
2895             Request::XfixesSelectCursorInput(_) => None,
2896             #[cfg(feature = "xfixes")]
2897             Request::XfixesGetCursorImage(_) => Some(xfixes::GetCursorImageRequest::parse_reply),
2898             #[cfg(feature = "xfixes")]
2899             Request::XfixesCreateRegion(_) => None,
2900             #[cfg(feature = "xfixes")]
2901             Request::XfixesCreateRegionFromBitmap(_) => None,
2902             #[cfg(feature = "xfixes")]
2903             Request::XfixesCreateRegionFromWindow(_) => None,
2904             #[cfg(feature = "xfixes")]
2905             Request::XfixesCreateRegionFromGC(_) => None,
2906             #[cfg(feature = "xfixes")]
2907             Request::XfixesCreateRegionFromPicture(_) => None,
2908             #[cfg(feature = "xfixes")]
2909             Request::XfixesDestroyRegion(_) => None,
2910             #[cfg(feature = "xfixes")]
2911             Request::XfixesSetRegion(_) => None,
2912             #[cfg(feature = "xfixes")]
2913             Request::XfixesCopyRegion(_) => None,
2914             #[cfg(feature = "xfixes")]
2915             Request::XfixesUnionRegion(_) => None,
2916             #[cfg(feature = "xfixes")]
2917             Request::XfixesIntersectRegion(_) => None,
2918             #[cfg(feature = "xfixes")]
2919             Request::XfixesSubtractRegion(_) => None,
2920             #[cfg(feature = "xfixes")]
2921             Request::XfixesInvertRegion(_) => None,
2922             #[cfg(feature = "xfixes")]
2923             Request::XfixesTranslateRegion(_) => None,
2924             #[cfg(feature = "xfixes")]
2925             Request::XfixesRegionExtents(_) => None,
2926             #[cfg(feature = "xfixes")]
2927             Request::XfixesFetchRegion(_) => Some(xfixes::FetchRegionRequest::parse_reply),
2928             #[cfg(feature = "xfixes")]
2929             Request::XfixesSetGCClipRegion(_) => None,
2930             #[cfg(feature = "xfixes")]
2931             Request::XfixesSetWindowShapeRegion(_) => None,
2932             #[cfg(feature = "xfixes")]
2933             Request::XfixesSetPictureClipRegion(_) => None,
2934             #[cfg(feature = "xfixes")]
2935             Request::XfixesSetCursorName(_) => None,
2936             #[cfg(feature = "xfixes")]
2937             Request::XfixesGetCursorName(_) => Some(xfixes::GetCursorNameRequest::parse_reply),
2938             #[cfg(feature = "xfixes")]
2939             Request::XfixesGetCursorImageAndName(_) => Some(xfixes::GetCursorImageAndNameRequest::parse_reply),
2940             #[cfg(feature = "xfixes")]
2941             Request::XfixesChangeCursor(_) => None,
2942             #[cfg(feature = "xfixes")]
2943             Request::XfixesChangeCursorByName(_) => None,
2944             #[cfg(feature = "xfixes")]
2945             Request::XfixesExpandRegion(_) => None,
2946             #[cfg(feature = "xfixes")]
2947             Request::XfixesHideCursor(_) => None,
2948             #[cfg(feature = "xfixes")]
2949             Request::XfixesShowCursor(_) => None,
2950             #[cfg(feature = "xfixes")]
2951             Request::XfixesCreatePointerBarrier(_) => None,
2952             #[cfg(feature = "xfixes")]
2953             Request::XfixesDeletePointerBarrier(_) => None,
2954             #[cfg(feature = "xinerama")]
2955             Request::XineramaQueryVersion(_) => Some(xinerama::QueryVersionRequest::parse_reply),
2956             #[cfg(feature = "xinerama")]
2957             Request::XineramaGetState(_) => Some(xinerama::GetStateRequest::parse_reply),
2958             #[cfg(feature = "xinerama")]
2959             Request::XineramaGetScreenCount(_) => Some(xinerama::GetScreenCountRequest::parse_reply),
2960             #[cfg(feature = "xinerama")]
2961             Request::XineramaGetScreenSize(_) => Some(xinerama::GetScreenSizeRequest::parse_reply),
2962             #[cfg(feature = "xinerama")]
2963             Request::XineramaIsActive(_) => Some(xinerama::IsActiveRequest::parse_reply),
2964             #[cfg(feature = "xinerama")]
2965             Request::XineramaQueryScreens(_) => Some(xinerama::QueryScreensRequest::parse_reply),
2966             #[cfg(feature = "xinput")]
2967             Request::XinputGetExtensionVersion(_) => Some(xinput::GetExtensionVersionRequest::parse_reply),
2968             #[cfg(feature = "xinput")]
2969             Request::XinputListInputDevices(_) => Some(xinput::ListInputDevicesRequest::parse_reply),
2970             #[cfg(feature = "xinput")]
2971             Request::XinputOpenDevice(_) => Some(xinput::OpenDeviceRequest::parse_reply),
2972             #[cfg(feature = "xinput")]
2973             Request::XinputCloseDevice(_) => None,
2974             #[cfg(feature = "xinput")]
2975             Request::XinputSetDeviceMode(_) => Some(xinput::SetDeviceModeRequest::parse_reply),
2976             #[cfg(feature = "xinput")]
2977             Request::XinputSelectExtensionEvent(_) => None,
2978             #[cfg(feature = "xinput")]
2979             Request::XinputGetSelectedExtensionEvents(_) => Some(xinput::GetSelectedExtensionEventsRequest::parse_reply),
2980             #[cfg(feature = "xinput")]
2981             Request::XinputChangeDeviceDontPropagateList(_) => None,
2982             #[cfg(feature = "xinput")]
2983             Request::XinputGetDeviceDontPropagateList(_) => Some(xinput::GetDeviceDontPropagateListRequest::parse_reply),
2984             #[cfg(feature = "xinput")]
2985             Request::XinputGetDeviceMotionEvents(_) => Some(xinput::GetDeviceMotionEventsRequest::parse_reply),
2986             #[cfg(feature = "xinput")]
2987             Request::XinputChangeKeyboardDevice(_) => Some(xinput::ChangeKeyboardDeviceRequest::parse_reply),
2988             #[cfg(feature = "xinput")]
2989             Request::XinputChangePointerDevice(_) => Some(xinput::ChangePointerDeviceRequest::parse_reply),
2990             #[cfg(feature = "xinput")]
2991             Request::XinputGrabDevice(_) => Some(xinput::GrabDeviceRequest::parse_reply),
2992             #[cfg(feature = "xinput")]
2993             Request::XinputUngrabDevice(_) => None,
2994             #[cfg(feature = "xinput")]
2995             Request::XinputGrabDeviceKey(_) => None,
2996             #[cfg(feature = "xinput")]
2997             Request::XinputUngrabDeviceKey(_) => None,
2998             #[cfg(feature = "xinput")]
2999             Request::XinputGrabDeviceButton(_) => None,
3000             #[cfg(feature = "xinput")]
3001             Request::XinputUngrabDeviceButton(_) => None,
3002             #[cfg(feature = "xinput")]
3003             Request::XinputAllowDeviceEvents(_) => None,
3004             #[cfg(feature = "xinput")]
3005             Request::XinputGetDeviceFocus(_) => Some(xinput::GetDeviceFocusRequest::parse_reply),
3006             #[cfg(feature = "xinput")]
3007             Request::XinputSetDeviceFocus(_) => None,
3008             #[cfg(feature = "xinput")]
3009             Request::XinputGetFeedbackControl(_) => Some(xinput::GetFeedbackControlRequest::parse_reply),
3010             #[cfg(feature = "xinput")]
3011             Request::XinputChangeFeedbackControl(_) => None,
3012             #[cfg(feature = "xinput")]
3013             Request::XinputGetDeviceKeyMapping(_) => Some(xinput::GetDeviceKeyMappingRequest::parse_reply),
3014             #[cfg(feature = "xinput")]
3015             Request::XinputChangeDeviceKeyMapping(_) => None,
3016             #[cfg(feature = "xinput")]
3017             Request::XinputGetDeviceModifierMapping(_) => Some(xinput::GetDeviceModifierMappingRequest::parse_reply),
3018             #[cfg(feature = "xinput")]
3019             Request::XinputSetDeviceModifierMapping(_) => Some(xinput::SetDeviceModifierMappingRequest::parse_reply),
3020             #[cfg(feature = "xinput")]
3021             Request::XinputGetDeviceButtonMapping(_) => Some(xinput::GetDeviceButtonMappingRequest::parse_reply),
3022             #[cfg(feature = "xinput")]
3023             Request::XinputSetDeviceButtonMapping(_) => Some(xinput::SetDeviceButtonMappingRequest::parse_reply),
3024             #[cfg(feature = "xinput")]
3025             Request::XinputQueryDeviceState(_) => Some(xinput::QueryDeviceStateRequest::parse_reply),
3026             #[cfg(feature = "xinput")]
3027             Request::XinputDeviceBell(_) => None,
3028             #[cfg(feature = "xinput")]
3029             Request::XinputSetDeviceValuators(_) => Some(xinput::SetDeviceValuatorsRequest::parse_reply),
3030             #[cfg(feature = "xinput")]
3031             Request::XinputGetDeviceControl(_) => Some(xinput::GetDeviceControlRequest::parse_reply),
3032             #[cfg(feature = "xinput")]
3033             Request::XinputChangeDeviceControl(_) => Some(xinput::ChangeDeviceControlRequest::parse_reply),
3034             #[cfg(feature = "xinput")]
3035             Request::XinputListDeviceProperties(_) => Some(xinput::ListDevicePropertiesRequest::parse_reply),
3036             #[cfg(feature = "xinput")]
3037             Request::XinputChangeDeviceProperty(_) => None,
3038             #[cfg(feature = "xinput")]
3039             Request::XinputDeleteDeviceProperty(_) => None,
3040             #[cfg(feature = "xinput")]
3041             Request::XinputGetDeviceProperty(_) => Some(xinput::GetDevicePropertyRequest::parse_reply),
3042             #[cfg(feature = "xinput")]
3043             Request::XinputXIQueryPointer(_) => Some(xinput::XIQueryPointerRequest::parse_reply),
3044             #[cfg(feature = "xinput")]
3045             Request::XinputXIWarpPointer(_) => None,
3046             #[cfg(feature = "xinput")]
3047             Request::XinputXIChangeCursor(_) => None,
3048             #[cfg(feature = "xinput")]
3049             Request::XinputXIChangeHierarchy(_) => None,
3050             #[cfg(feature = "xinput")]
3051             Request::XinputXISetClientPointer(_) => None,
3052             #[cfg(feature = "xinput")]
3053             Request::XinputXIGetClientPointer(_) => Some(xinput::XIGetClientPointerRequest::parse_reply),
3054             #[cfg(feature = "xinput")]
3055             Request::XinputXISelectEvents(_) => None,
3056             #[cfg(feature = "xinput")]
3057             Request::XinputXIQueryVersion(_) => Some(xinput::XIQueryVersionRequest::parse_reply),
3058             #[cfg(feature = "xinput")]
3059             Request::XinputXIQueryDevice(_) => Some(xinput::XIQueryDeviceRequest::parse_reply),
3060             #[cfg(feature = "xinput")]
3061             Request::XinputXISetFocus(_) => None,
3062             #[cfg(feature = "xinput")]
3063             Request::XinputXIGetFocus(_) => Some(xinput::XIGetFocusRequest::parse_reply),
3064             #[cfg(feature = "xinput")]
3065             Request::XinputXIGrabDevice(_) => Some(xinput::XIGrabDeviceRequest::parse_reply),
3066             #[cfg(feature = "xinput")]
3067             Request::XinputXIUngrabDevice(_) => None,
3068             #[cfg(feature = "xinput")]
3069             Request::XinputXIAllowEvents(_) => None,
3070             #[cfg(feature = "xinput")]
3071             Request::XinputXIPassiveGrabDevice(_) => Some(xinput::XIPassiveGrabDeviceRequest::parse_reply),
3072             #[cfg(feature = "xinput")]
3073             Request::XinputXIPassiveUngrabDevice(_) => None,
3074             #[cfg(feature = "xinput")]
3075             Request::XinputXIListProperties(_) => Some(xinput::XIListPropertiesRequest::parse_reply),
3076             #[cfg(feature = "xinput")]
3077             Request::XinputXIChangeProperty(_) => None,
3078             #[cfg(feature = "xinput")]
3079             Request::XinputXIDeleteProperty(_) => None,
3080             #[cfg(feature = "xinput")]
3081             Request::XinputXIGetProperty(_) => Some(xinput::XIGetPropertyRequest::parse_reply),
3082             #[cfg(feature = "xinput")]
3083             Request::XinputXIGetSelectedEvents(_) => Some(xinput::XIGetSelectedEventsRequest::parse_reply),
3084             #[cfg(feature = "xinput")]
3085             Request::XinputXIBarrierReleasePointer(_) => None,
3086             #[cfg(feature = "xinput")]
3087             Request::XinputSendExtensionEvent(_) => None,
3088             #[cfg(feature = "xkb")]
3089             Request::XkbUseExtension(_) => Some(xkb::UseExtensionRequest::parse_reply),
3090             #[cfg(feature = "xkb")]
3091             Request::XkbSelectEvents(_) => None,
3092             #[cfg(feature = "xkb")]
3093             Request::XkbBell(_) => None,
3094             #[cfg(feature = "xkb")]
3095             Request::XkbGetState(_) => Some(xkb::GetStateRequest::parse_reply),
3096             #[cfg(feature = "xkb")]
3097             Request::XkbLatchLockState(_) => None,
3098             #[cfg(feature = "xkb")]
3099             Request::XkbGetControls(_) => Some(xkb::GetControlsRequest::parse_reply),
3100             #[cfg(feature = "xkb")]
3101             Request::XkbSetControls(_) => None,
3102             #[cfg(feature = "xkb")]
3103             Request::XkbGetMap(_) => Some(xkb::GetMapRequest::parse_reply),
3104             #[cfg(feature = "xkb")]
3105             Request::XkbSetMap(_) => None,
3106             #[cfg(feature = "xkb")]
3107             Request::XkbGetCompatMap(_) => Some(xkb::GetCompatMapRequest::parse_reply),
3108             #[cfg(feature = "xkb")]
3109             Request::XkbSetCompatMap(_) => None,
3110             #[cfg(feature = "xkb")]
3111             Request::XkbGetIndicatorState(_) => Some(xkb::GetIndicatorStateRequest::parse_reply),
3112             #[cfg(feature = "xkb")]
3113             Request::XkbGetIndicatorMap(_) => Some(xkb::GetIndicatorMapRequest::parse_reply),
3114             #[cfg(feature = "xkb")]
3115             Request::XkbSetIndicatorMap(_) => None,
3116             #[cfg(feature = "xkb")]
3117             Request::XkbGetNamedIndicator(_) => Some(xkb::GetNamedIndicatorRequest::parse_reply),
3118             #[cfg(feature = "xkb")]
3119             Request::XkbSetNamedIndicator(_) => None,
3120             #[cfg(feature = "xkb")]
3121             Request::XkbGetNames(_) => Some(xkb::GetNamesRequest::parse_reply),
3122             #[cfg(feature = "xkb")]
3123             Request::XkbSetNames(_) => None,
3124             #[cfg(feature = "xkb")]
3125             Request::XkbPerClientFlags(_) => Some(xkb::PerClientFlagsRequest::parse_reply),
3126             #[cfg(feature = "xkb")]
3127             Request::XkbListComponents(_) => Some(xkb::ListComponentsRequest::parse_reply),
3128             #[cfg(feature = "xkb")]
3129             Request::XkbGetKbdByName(_) => Some(xkb::GetKbdByNameRequest::parse_reply),
3130             #[cfg(feature = "xkb")]
3131             Request::XkbGetDeviceInfo(_) => Some(xkb::GetDeviceInfoRequest::parse_reply),
3132             #[cfg(feature = "xkb")]
3133             Request::XkbSetDeviceInfo(_) => None,
3134             #[cfg(feature = "xkb")]
3135             Request::XkbSetDebuggingFlags(_) => Some(xkb::SetDebuggingFlagsRequest::parse_reply),
3136             #[cfg(feature = "xprint")]
3137             Request::XprintPrintQueryVersion(_) => Some(xprint::PrintQueryVersionRequest::parse_reply),
3138             #[cfg(feature = "xprint")]
3139             Request::XprintPrintGetPrinterList(_) => Some(xprint::PrintGetPrinterListRequest::parse_reply),
3140             #[cfg(feature = "xprint")]
3141             Request::XprintPrintRehashPrinterList(_) => None,
3142             #[cfg(feature = "xprint")]
3143             Request::XprintCreateContext(_) => None,
3144             #[cfg(feature = "xprint")]
3145             Request::XprintPrintSetContext(_) => None,
3146             #[cfg(feature = "xprint")]
3147             Request::XprintPrintGetContext(_) => Some(xprint::PrintGetContextRequest::parse_reply),
3148             #[cfg(feature = "xprint")]
3149             Request::XprintPrintDestroyContext(_) => None,
3150             #[cfg(feature = "xprint")]
3151             Request::XprintPrintGetScreenOfContext(_) => Some(xprint::PrintGetScreenOfContextRequest::parse_reply),
3152             #[cfg(feature = "xprint")]
3153             Request::XprintPrintStartJob(_) => None,
3154             #[cfg(feature = "xprint")]
3155             Request::XprintPrintEndJob(_) => None,
3156             #[cfg(feature = "xprint")]
3157             Request::XprintPrintStartDoc(_) => None,
3158             #[cfg(feature = "xprint")]
3159             Request::XprintPrintEndDoc(_) => None,
3160             #[cfg(feature = "xprint")]
3161             Request::XprintPrintPutDocumentData(_) => None,
3162             #[cfg(feature = "xprint")]
3163             Request::XprintPrintGetDocumentData(_) => Some(xprint::PrintGetDocumentDataRequest::parse_reply),
3164             #[cfg(feature = "xprint")]
3165             Request::XprintPrintStartPage(_) => None,
3166             #[cfg(feature = "xprint")]
3167             Request::XprintPrintEndPage(_) => None,
3168             #[cfg(feature = "xprint")]
3169             Request::XprintPrintSelectInput(_) => None,
3170             #[cfg(feature = "xprint")]
3171             Request::XprintPrintInputSelected(_) => Some(xprint::PrintInputSelectedRequest::parse_reply),
3172             #[cfg(feature = "xprint")]
3173             Request::XprintPrintGetAttributes(_) => Some(xprint::PrintGetAttributesRequest::parse_reply),
3174             #[cfg(feature = "xprint")]
3175             Request::XprintPrintGetOneAttributes(_) => Some(xprint::PrintGetOneAttributesRequest::parse_reply),
3176             #[cfg(feature = "xprint")]
3177             Request::XprintPrintSetAttributes(_) => None,
3178             #[cfg(feature = "xprint")]
3179             Request::XprintPrintGetPageDimensions(_) => Some(xprint::PrintGetPageDimensionsRequest::parse_reply),
3180             #[cfg(feature = "xprint")]
3181             Request::XprintPrintQueryScreens(_) => Some(xprint::PrintQueryScreensRequest::parse_reply),
3182             #[cfg(feature = "xprint")]
3183             Request::XprintPrintSetImageResolution(_) => Some(xprint::PrintSetImageResolutionRequest::parse_reply),
3184             #[cfg(feature = "xprint")]
3185             Request::XprintPrintGetImageResolution(_) => Some(xprint::PrintGetImageResolutionRequest::parse_reply),
3186             #[cfg(feature = "xselinux")]
3187             Request::XselinuxQueryVersion(_) => Some(xselinux::QueryVersionRequest::parse_reply),
3188             #[cfg(feature = "xselinux")]
3189             Request::XselinuxSetDeviceCreateContext(_) => None,
3190             #[cfg(feature = "xselinux")]
3191             Request::XselinuxGetDeviceCreateContext(_) => Some(xselinux::GetDeviceCreateContextRequest::parse_reply),
3192             #[cfg(feature = "xselinux")]
3193             Request::XselinuxSetDeviceContext(_) => None,
3194             #[cfg(feature = "xselinux")]
3195             Request::XselinuxGetDeviceContext(_) => Some(xselinux::GetDeviceContextRequest::parse_reply),
3196             #[cfg(feature = "xselinux")]
3197             Request::XselinuxSetWindowCreateContext(_) => None,
3198             #[cfg(feature = "xselinux")]
3199             Request::XselinuxGetWindowCreateContext(_) => Some(xselinux::GetWindowCreateContextRequest::parse_reply),
3200             #[cfg(feature = "xselinux")]
3201             Request::XselinuxGetWindowContext(_) => Some(xselinux::GetWindowContextRequest::parse_reply),
3202             #[cfg(feature = "xselinux")]
3203             Request::XselinuxSetPropertyCreateContext(_) => None,
3204             #[cfg(feature = "xselinux")]
3205             Request::XselinuxGetPropertyCreateContext(_) => Some(xselinux::GetPropertyCreateContextRequest::parse_reply),
3206             #[cfg(feature = "xselinux")]
3207             Request::XselinuxSetPropertyUseContext(_) => None,
3208             #[cfg(feature = "xselinux")]
3209             Request::XselinuxGetPropertyUseContext(_) => Some(xselinux::GetPropertyUseContextRequest::parse_reply),
3210             #[cfg(feature = "xselinux")]
3211             Request::XselinuxGetPropertyContext(_) => Some(xselinux::GetPropertyContextRequest::parse_reply),
3212             #[cfg(feature = "xselinux")]
3213             Request::XselinuxGetPropertyDataContext(_) => Some(xselinux::GetPropertyDataContextRequest::parse_reply),
3214             #[cfg(feature = "xselinux")]
3215             Request::XselinuxListProperties(_) => Some(xselinux::ListPropertiesRequest::parse_reply),
3216             #[cfg(feature = "xselinux")]
3217             Request::XselinuxSetSelectionCreateContext(_) => None,
3218             #[cfg(feature = "xselinux")]
3219             Request::XselinuxGetSelectionCreateContext(_) => Some(xselinux::GetSelectionCreateContextRequest::parse_reply),
3220             #[cfg(feature = "xselinux")]
3221             Request::XselinuxSetSelectionUseContext(_) => None,
3222             #[cfg(feature = "xselinux")]
3223             Request::XselinuxGetSelectionUseContext(_) => Some(xselinux::GetSelectionUseContextRequest::parse_reply),
3224             #[cfg(feature = "xselinux")]
3225             Request::XselinuxGetSelectionContext(_) => Some(xselinux::GetSelectionContextRequest::parse_reply),
3226             #[cfg(feature = "xselinux")]
3227             Request::XselinuxGetSelectionDataContext(_) => Some(xselinux::GetSelectionDataContextRequest::parse_reply),
3228             #[cfg(feature = "xselinux")]
3229             Request::XselinuxListSelections(_) => Some(xselinux::ListSelectionsRequest::parse_reply),
3230             #[cfg(feature = "xselinux")]
3231             Request::XselinuxGetClientContext(_) => Some(xselinux::GetClientContextRequest::parse_reply),
3232             #[cfg(feature = "xtest")]
3233             Request::XtestGetVersion(_) => Some(xtest::GetVersionRequest::parse_reply),
3234             #[cfg(feature = "xtest")]
3235             Request::XtestCompareCursor(_) => Some(xtest::CompareCursorRequest::parse_reply),
3236             #[cfg(feature = "xtest")]
3237             Request::XtestFakeInput(_) => None,
3238             #[cfg(feature = "xtest")]
3239             Request::XtestGrabControl(_) => None,
3240             #[cfg(feature = "xv")]
3241             Request::XvQueryExtension(_) => Some(xv::QueryExtensionRequest::parse_reply),
3242             #[cfg(feature = "xv")]
3243             Request::XvQueryAdaptors(_) => Some(xv::QueryAdaptorsRequest::parse_reply),
3244             #[cfg(feature = "xv")]
3245             Request::XvQueryEncodings(_) => Some(xv::QueryEncodingsRequest::parse_reply),
3246             #[cfg(feature = "xv")]
3247             Request::XvGrabPort(_) => Some(xv::GrabPortRequest::parse_reply),
3248             #[cfg(feature = "xv")]
3249             Request::XvUngrabPort(_) => None,
3250             #[cfg(feature = "xv")]
3251             Request::XvPutVideo(_) => None,
3252             #[cfg(feature = "xv")]
3253             Request::XvPutStill(_) => None,
3254             #[cfg(feature = "xv")]
3255             Request::XvGetVideo(_) => None,
3256             #[cfg(feature = "xv")]
3257             Request::XvGetStill(_) => None,
3258             #[cfg(feature = "xv")]
3259             Request::XvStopVideo(_) => None,
3260             #[cfg(feature = "xv")]
3261             Request::XvSelectVideoNotify(_) => None,
3262             #[cfg(feature = "xv")]
3263             Request::XvSelectPortNotify(_) => None,
3264             #[cfg(feature = "xv")]
3265             Request::XvQueryBestSize(_) => Some(xv::QueryBestSizeRequest::parse_reply),
3266             #[cfg(feature = "xv")]
3267             Request::XvSetPortAttribute(_) => None,
3268             #[cfg(feature = "xv")]
3269             Request::XvGetPortAttribute(_) => Some(xv::GetPortAttributeRequest::parse_reply),
3270             #[cfg(feature = "xv")]
3271             Request::XvQueryPortAttributes(_) => Some(xv::QueryPortAttributesRequest::parse_reply),
3272             #[cfg(feature = "xv")]
3273             Request::XvListImageFormats(_) => Some(xv::ListImageFormatsRequest::parse_reply),
3274             #[cfg(feature = "xv")]
3275             Request::XvQueryImageAttributes(_) => Some(xv::QueryImageAttributesRequest::parse_reply),
3276             #[cfg(feature = "xv")]
3277             Request::XvPutImage(_) => None,
3278             #[cfg(feature = "xv")]
3279             Request::XvShmPutImage(_) => None,
3280             #[cfg(feature = "xvmc")]
3281             Request::XvmcQueryVersion(_) => Some(xvmc::QueryVersionRequest::parse_reply),
3282             #[cfg(feature = "xvmc")]
3283             Request::XvmcListSurfaceTypes(_) => Some(xvmc::ListSurfaceTypesRequest::parse_reply),
3284             #[cfg(feature = "xvmc")]
3285             Request::XvmcCreateContext(_) => Some(xvmc::CreateContextRequest::parse_reply),
3286             #[cfg(feature = "xvmc")]
3287             Request::XvmcDestroyContext(_) => None,
3288             #[cfg(feature = "xvmc")]
3289             Request::XvmcCreateSurface(_) => Some(xvmc::CreateSurfaceRequest::parse_reply),
3290             #[cfg(feature = "xvmc")]
3291             Request::XvmcDestroySurface(_) => None,
3292             #[cfg(feature = "xvmc")]
3293             Request::XvmcCreateSubpicture(_) => Some(xvmc::CreateSubpictureRequest::parse_reply),
3294             #[cfg(feature = "xvmc")]
3295             Request::XvmcDestroySubpicture(_) => None,
3296             #[cfg(feature = "xvmc")]
3297             Request::XvmcListSubpictureTypes(_) => Some(xvmc::ListSubpictureTypesRequest::parse_reply),
3298         }
3299     }
3300     /// Convert this Request into an owned version with no borrows.
into_owned(self) -> Request<'static>3301     pub fn into_owned(self) -> Request<'static> {
3302         match self {
3303             Request::Unknown(header, body) => Request::Unknown(header, Cow::Owned(body.into_owned())),
3304             Request::CreateWindow(req) => Request::CreateWindow(req.into_owned()),
3305             Request::ChangeWindowAttributes(req) => Request::ChangeWindowAttributes(req.into_owned()),
3306             Request::GetWindowAttributes(req) => Request::GetWindowAttributes(req),
3307             Request::DestroyWindow(req) => Request::DestroyWindow(req),
3308             Request::DestroySubwindows(req) => Request::DestroySubwindows(req),
3309             Request::ChangeSaveSet(req) => Request::ChangeSaveSet(req),
3310             Request::ReparentWindow(req) => Request::ReparentWindow(req),
3311             Request::MapWindow(req) => Request::MapWindow(req),
3312             Request::MapSubwindows(req) => Request::MapSubwindows(req),
3313             Request::UnmapWindow(req) => Request::UnmapWindow(req),
3314             Request::UnmapSubwindows(req) => Request::UnmapSubwindows(req),
3315             Request::ConfigureWindow(req) => Request::ConfigureWindow(req.into_owned()),
3316             Request::CirculateWindow(req) => Request::CirculateWindow(req),
3317             Request::GetGeometry(req) => Request::GetGeometry(req),
3318             Request::QueryTree(req) => Request::QueryTree(req),
3319             Request::InternAtom(req) => Request::InternAtom(req.into_owned()),
3320             Request::GetAtomName(req) => Request::GetAtomName(req),
3321             Request::ChangeProperty(req) => Request::ChangeProperty(req.into_owned()),
3322             Request::DeleteProperty(req) => Request::DeleteProperty(req),
3323             Request::GetProperty(req) => Request::GetProperty(req),
3324             Request::ListProperties(req) => Request::ListProperties(req),
3325             Request::SetSelectionOwner(req) => Request::SetSelectionOwner(req),
3326             Request::GetSelectionOwner(req) => Request::GetSelectionOwner(req),
3327             Request::ConvertSelection(req) => Request::ConvertSelection(req),
3328             Request::SendEvent(req) => Request::SendEvent(req.into_owned()),
3329             Request::GrabPointer(req) => Request::GrabPointer(req),
3330             Request::UngrabPointer(req) => Request::UngrabPointer(req),
3331             Request::GrabButton(req) => Request::GrabButton(req),
3332             Request::UngrabButton(req) => Request::UngrabButton(req),
3333             Request::ChangeActivePointerGrab(req) => Request::ChangeActivePointerGrab(req),
3334             Request::GrabKeyboard(req) => Request::GrabKeyboard(req),
3335             Request::UngrabKeyboard(req) => Request::UngrabKeyboard(req),
3336             Request::GrabKey(req) => Request::GrabKey(req),
3337             Request::UngrabKey(req) => Request::UngrabKey(req),
3338             Request::AllowEvents(req) => Request::AllowEvents(req),
3339             Request::GrabServer(req) => Request::GrabServer(req),
3340             Request::UngrabServer(req) => Request::UngrabServer(req),
3341             Request::QueryPointer(req) => Request::QueryPointer(req),
3342             Request::GetMotionEvents(req) => Request::GetMotionEvents(req),
3343             Request::TranslateCoordinates(req) => Request::TranslateCoordinates(req),
3344             Request::WarpPointer(req) => Request::WarpPointer(req),
3345             Request::SetInputFocus(req) => Request::SetInputFocus(req),
3346             Request::GetInputFocus(req) => Request::GetInputFocus(req),
3347             Request::QueryKeymap(req) => Request::QueryKeymap(req),
3348             Request::OpenFont(req) => Request::OpenFont(req.into_owned()),
3349             Request::CloseFont(req) => Request::CloseFont(req),
3350             Request::QueryFont(req) => Request::QueryFont(req),
3351             Request::QueryTextExtents(req) => Request::QueryTextExtents(req.into_owned()),
3352             Request::ListFonts(req) => Request::ListFonts(req.into_owned()),
3353             Request::ListFontsWithInfo(req) => Request::ListFontsWithInfo(req.into_owned()),
3354             Request::SetFontPath(req) => Request::SetFontPath(req.into_owned()),
3355             Request::GetFontPath(req) => Request::GetFontPath(req),
3356             Request::CreatePixmap(req) => Request::CreatePixmap(req),
3357             Request::FreePixmap(req) => Request::FreePixmap(req),
3358             Request::CreateGC(req) => Request::CreateGC(req.into_owned()),
3359             Request::ChangeGC(req) => Request::ChangeGC(req.into_owned()),
3360             Request::CopyGC(req) => Request::CopyGC(req),
3361             Request::SetDashes(req) => Request::SetDashes(req.into_owned()),
3362             Request::SetClipRectangles(req) => Request::SetClipRectangles(req.into_owned()),
3363             Request::FreeGC(req) => Request::FreeGC(req),
3364             Request::ClearArea(req) => Request::ClearArea(req),
3365             Request::CopyArea(req) => Request::CopyArea(req),
3366             Request::CopyPlane(req) => Request::CopyPlane(req),
3367             Request::PolyPoint(req) => Request::PolyPoint(req.into_owned()),
3368             Request::PolyLine(req) => Request::PolyLine(req.into_owned()),
3369             Request::PolySegment(req) => Request::PolySegment(req.into_owned()),
3370             Request::PolyRectangle(req) => Request::PolyRectangle(req.into_owned()),
3371             Request::PolyArc(req) => Request::PolyArc(req.into_owned()),
3372             Request::FillPoly(req) => Request::FillPoly(req.into_owned()),
3373             Request::PolyFillRectangle(req) => Request::PolyFillRectangle(req.into_owned()),
3374             Request::PolyFillArc(req) => Request::PolyFillArc(req.into_owned()),
3375             Request::PutImage(req) => Request::PutImage(req.into_owned()),
3376             Request::GetImage(req) => Request::GetImage(req),
3377             Request::PolyText8(req) => Request::PolyText8(req.into_owned()),
3378             Request::PolyText16(req) => Request::PolyText16(req.into_owned()),
3379             Request::ImageText8(req) => Request::ImageText8(req.into_owned()),
3380             Request::ImageText16(req) => Request::ImageText16(req.into_owned()),
3381             Request::CreateColormap(req) => Request::CreateColormap(req),
3382             Request::FreeColormap(req) => Request::FreeColormap(req),
3383             Request::CopyColormapAndFree(req) => Request::CopyColormapAndFree(req),
3384             Request::InstallColormap(req) => Request::InstallColormap(req),
3385             Request::UninstallColormap(req) => Request::UninstallColormap(req),
3386             Request::ListInstalledColormaps(req) => Request::ListInstalledColormaps(req),
3387             Request::AllocColor(req) => Request::AllocColor(req),
3388             Request::AllocNamedColor(req) => Request::AllocNamedColor(req.into_owned()),
3389             Request::AllocColorCells(req) => Request::AllocColorCells(req),
3390             Request::AllocColorPlanes(req) => Request::AllocColorPlanes(req),
3391             Request::FreeColors(req) => Request::FreeColors(req.into_owned()),
3392             Request::StoreColors(req) => Request::StoreColors(req.into_owned()),
3393             Request::StoreNamedColor(req) => Request::StoreNamedColor(req.into_owned()),
3394             Request::QueryColors(req) => Request::QueryColors(req.into_owned()),
3395             Request::LookupColor(req) => Request::LookupColor(req.into_owned()),
3396             Request::CreateCursor(req) => Request::CreateCursor(req),
3397             Request::CreateGlyphCursor(req) => Request::CreateGlyphCursor(req),
3398             Request::FreeCursor(req) => Request::FreeCursor(req),
3399             Request::RecolorCursor(req) => Request::RecolorCursor(req),
3400             Request::QueryBestSize(req) => Request::QueryBestSize(req),
3401             Request::QueryExtension(req) => Request::QueryExtension(req.into_owned()),
3402             Request::ListExtensions(req) => Request::ListExtensions(req),
3403             Request::ChangeKeyboardMapping(req) => Request::ChangeKeyboardMapping(req.into_owned()),
3404             Request::GetKeyboardMapping(req) => Request::GetKeyboardMapping(req),
3405             Request::ChangeKeyboardControl(req) => Request::ChangeKeyboardControl(req.into_owned()),
3406             Request::GetKeyboardControl(req) => Request::GetKeyboardControl(req),
3407             Request::Bell(req) => Request::Bell(req),
3408             Request::ChangePointerControl(req) => Request::ChangePointerControl(req),
3409             Request::GetPointerControl(req) => Request::GetPointerControl(req),
3410             Request::SetScreenSaver(req) => Request::SetScreenSaver(req),
3411             Request::GetScreenSaver(req) => Request::GetScreenSaver(req),
3412             Request::ChangeHosts(req) => Request::ChangeHosts(req.into_owned()),
3413             Request::ListHosts(req) => Request::ListHosts(req),
3414             Request::SetAccessControl(req) => Request::SetAccessControl(req),
3415             Request::SetCloseDownMode(req) => Request::SetCloseDownMode(req),
3416             Request::KillClient(req) => Request::KillClient(req),
3417             Request::RotateProperties(req) => Request::RotateProperties(req.into_owned()),
3418             Request::ForceScreenSaver(req) => Request::ForceScreenSaver(req),
3419             Request::SetPointerMapping(req) => Request::SetPointerMapping(req.into_owned()),
3420             Request::GetPointerMapping(req) => Request::GetPointerMapping(req),
3421             Request::SetModifierMapping(req) => Request::SetModifierMapping(req.into_owned()),
3422             Request::GetModifierMapping(req) => Request::GetModifierMapping(req),
3423             Request::NoOperation(req) => Request::NoOperation(req),
3424             Request::BigreqEnable(req) => Request::BigreqEnable(req),
3425             #[cfg(feature = "composite")]
3426             Request::CompositeQueryVersion(req) => Request::CompositeQueryVersion(req),
3427             #[cfg(feature = "composite")]
3428             Request::CompositeRedirectWindow(req) => Request::CompositeRedirectWindow(req),
3429             #[cfg(feature = "composite")]
3430             Request::CompositeRedirectSubwindows(req) => Request::CompositeRedirectSubwindows(req),
3431             #[cfg(feature = "composite")]
3432             Request::CompositeUnredirectWindow(req) => Request::CompositeUnredirectWindow(req),
3433             #[cfg(feature = "composite")]
3434             Request::CompositeUnredirectSubwindows(req) => Request::CompositeUnredirectSubwindows(req),
3435             #[cfg(feature = "composite")]
3436             Request::CompositeCreateRegionFromBorderClip(req) => Request::CompositeCreateRegionFromBorderClip(req),
3437             #[cfg(feature = "composite")]
3438             Request::CompositeNameWindowPixmap(req) => Request::CompositeNameWindowPixmap(req),
3439             #[cfg(feature = "composite")]
3440             Request::CompositeGetOverlayWindow(req) => Request::CompositeGetOverlayWindow(req),
3441             #[cfg(feature = "composite")]
3442             Request::CompositeReleaseOverlayWindow(req) => Request::CompositeReleaseOverlayWindow(req),
3443             #[cfg(feature = "damage")]
3444             Request::DamageQueryVersion(req) => Request::DamageQueryVersion(req),
3445             #[cfg(feature = "damage")]
3446             Request::DamageCreate(req) => Request::DamageCreate(req),
3447             #[cfg(feature = "damage")]
3448             Request::DamageDestroy(req) => Request::DamageDestroy(req),
3449             #[cfg(feature = "damage")]
3450             Request::DamageSubtract(req) => Request::DamageSubtract(req),
3451             #[cfg(feature = "damage")]
3452             Request::DamageAdd(req) => Request::DamageAdd(req),
3453             #[cfg(feature = "dpms")]
3454             Request::DpmsGetVersion(req) => Request::DpmsGetVersion(req),
3455             #[cfg(feature = "dpms")]
3456             Request::DpmsCapable(req) => Request::DpmsCapable(req),
3457             #[cfg(feature = "dpms")]
3458             Request::DpmsGetTimeouts(req) => Request::DpmsGetTimeouts(req),
3459             #[cfg(feature = "dpms")]
3460             Request::DpmsSetTimeouts(req) => Request::DpmsSetTimeouts(req),
3461             #[cfg(feature = "dpms")]
3462             Request::DpmsEnable(req) => Request::DpmsEnable(req),
3463             #[cfg(feature = "dpms")]
3464             Request::DpmsDisable(req) => Request::DpmsDisable(req),
3465             #[cfg(feature = "dpms")]
3466             Request::DpmsForceLevel(req) => Request::DpmsForceLevel(req),
3467             #[cfg(feature = "dpms")]
3468             Request::DpmsInfo(req) => Request::DpmsInfo(req),
3469             #[cfg(feature = "dri2")]
3470             Request::Dri2QueryVersion(req) => Request::Dri2QueryVersion(req),
3471             #[cfg(feature = "dri2")]
3472             Request::Dri2Connect(req) => Request::Dri2Connect(req),
3473             #[cfg(feature = "dri2")]
3474             Request::Dri2Authenticate(req) => Request::Dri2Authenticate(req),
3475             #[cfg(feature = "dri2")]
3476             Request::Dri2CreateDrawable(req) => Request::Dri2CreateDrawable(req),
3477             #[cfg(feature = "dri2")]
3478             Request::Dri2DestroyDrawable(req) => Request::Dri2DestroyDrawable(req),
3479             #[cfg(feature = "dri2")]
3480             Request::Dri2GetBuffers(req) => Request::Dri2GetBuffers(req.into_owned()),
3481             #[cfg(feature = "dri2")]
3482             Request::Dri2CopyRegion(req) => Request::Dri2CopyRegion(req),
3483             #[cfg(feature = "dri2")]
3484             Request::Dri2GetBuffersWithFormat(req) => Request::Dri2GetBuffersWithFormat(req.into_owned()),
3485             #[cfg(feature = "dri2")]
3486             Request::Dri2SwapBuffers(req) => Request::Dri2SwapBuffers(req),
3487             #[cfg(feature = "dri2")]
3488             Request::Dri2GetMSC(req) => Request::Dri2GetMSC(req),
3489             #[cfg(feature = "dri2")]
3490             Request::Dri2WaitMSC(req) => Request::Dri2WaitMSC(req),
3491             #[cfg(feature = "dri2")]
3492             Request::Dri2WaitSBC(req) => Request::Dri2WaitSBC(req),
3493             #[cfg(feature = "dri2")]
3494             Request::Dri2SwapInterval(req) => Request::Dri2SwapInterval(req),
3495             #[cfg(feature = "dri2")]
3496             Request::Dri2GetParam(req) => Request::Dri2GetParam(req),
3497             #[cfg(feature = "dri3")]
3498             Request::Dri3QueryVersion(req) => Request::Dri3QueryVersion(req),
3499             #[cfg(feature = "dri3")]
3500             Request::Dri3Open(req) => Request::Dri3Open(req),
3501             #[cfg(feature = "dri3")]
3502             Request::Dri3PixmapFromBuffer(req) => Request::Dri3PixmapFromBuffer(req),
3503             #[cfg(feature = "dri3")]
3504             Request::Dri3BufferFromPixmap(req) => Request::Dri3BufferFromPixmap(req),
3505             #[cfg(feature = "dri3")]
3506             Request::Dri3FenceFromFD(req) => Request::Dri3FenceFromFD(req),
3507             #[cfg(feature = "dri3")]
3508             Request::Dri3FDFromFence(req) => Request::Dri3FDFromFence(req),
3509             #[cfg(feature = "dri3")]
3510             Request::Dri3GetSupportedModifiers(req) => Request::Dri3GetSupportedModifiers(req),
3511             #[cfg(feature = "dri3")]
3512             Request::Dri3PixmapFromBuffers(req) => Request::Dri3PixmapFromBuffers(req),
3513             #[cfg(feature = "dri3")]
3514             Request::Dri3BuffersFromPixmap(req) => Request::Dri3BuffersFromPixmap(req),
3515             Request::GeQueryVersion(req) => Request::GeQueryVersion(req),
3516             #[cfg(feature = "glx")]
3517             Request::GlxRender(req) => Request::GlxRender(req.into_owned()),
3518             #[cfg(feature = "glx")]
3519             Request::GlxRenderLarge(req) => Request::GlxRenderLarge(req.into_owned()),
3520             #[cfg(feature = "glx")]
3521             Request::GlxCreateContext(req) => Request::GlxCreateContext(req),
3522             #[cfg(feature = "glx")]
3523             Request::GlxDestroyContext(req) => Request::GlxDestroyContext(req),
3524             #[cfg(feature = "glx")]
3525             Request::GlxMakeCurrent(req) => Request::GlxMakeCurrent(req),
3526             #[cfg(feature = "glx")]
3527             Request::GlxIsDirect(req) => Request::GlxIsDirect(req),
3528             #[cfg(feature = "glx")]
3529             Request::GlxQueryVersion(req) => Request::GlxQueryVersion(req),
3530             #[cfg(feature = "glx")]
3531             Request::GlxWaitGL(req) => Request::GlxWaitGL(req),
3532             #[cfg(feature = "glx")]
3533             Request::GlxWaitX(req) => Request::GlxWaitX(req),
3534             #[cfg(feature = "glx")]
3535             Request::GlxCopyContext(req) => Request::GlxCopyContext(req),
3536             #[cfg(feature = "glx")]
3537             Request::GlxSwapBuffers(req) => Request::GlxSwapBuffers(req),
3538             #[cfg(feature = "glx")]
3539             Request::GlxUseXFont(req) => Request::GlxUseXFont(req),
3540             #[cfg(feature = "glx")]
3541             Request::GlxCreateGLXPixmap(req) => Request::GlxCreateGLXPixmap(req),
3542             #[cfg(feature = "glx")]
3543             Request::GlxGetVisualConfigs(req) => Request::GlxGetVisualConfigs(req),
3544             #[cfg(feature = "glx")]
3545             Request::GlxDestroyGLXPixmap(req) => Request::GlxDestroyGLXPixmap(req),
3546             #[cfg(feature = "glx")]
3547             Request::GlxVendorPrivate(req) => Request::GlxVendorPrivate(req.into_owned()),
3548             #[cfg(feature = "glx")]
3549             Request::GlxVendorPrivateWithReply(req) => Request::GlxVendorPrivateWithReply(req.into_owned()),
3550             #[cfg(feature = "glx")]
3551             Request::GlxQueryExtensionsString(req) => Request::GlxQueryExtensionsString(req),
3552             #[cfg(feature = "glx")]
3553             Request::GlxQueryServerString(req) => Request::GlxQueryServerString(req),
3554             #[cfg(feature = "glx")]
3555             Request::GlxClientInfo(req) => Request::GlxClientInfo(req.into_owned()),
3556             #[cfg(feature = "glx")]
3557             Request::GlxGetFBConfigs(req) => Request::GlxGetFBConfigs(req),
3558             #[cfg(feature = "glx")]
3559             Request::GlxCreatePixmap(req) => Request::GlxCreatePixmap(req.into_owned()),
3560             #[cfg(feature = "glx")]
3561             Request::GlxDestroyPixmap(req) => Request::GlxDestroyPixmap(req),
3562             #[cfg(feature = "glx")]
3563             Request::GlxCreateNewContext(req) => Request::GlxCreateNewContext(req),
3564             #[cfg(feature = "glx")]
3565             Request::GlxQueryContext(req) => Request::GlxQueryContext(req),
3566             #[cfg(feature = "glx")]
3567             Request::GlxMakeContextCurrent(req) => Request::GlxMakeContextCurrent(req),
3568             #[cfg(feature = "glx")]
3569             Request::GlxCreatePbuffer(req) => Request::GlxCreatePbuffer(req.into_owned()),
3570             #[cfg(feature = "glx")]
3571             Request::GlxDestroyPbuffer(req) => Request::GlxDestroyPbuffer(req),
3572             #[cfg(feature = "glx")]
3573             Request::GlxGetDrawableAttributes(req) => Request::GlxGetDrawableAttributes(req),
3574             #[cfg(feature = "glx")]
3575             Request::GlxChangeDrawableAttributes(req) => Request::GlxChangeDrawableAttributes(req.into_owned()),
3576             #[cfg(feature = "glx")]
3577             Request::GlxCreateWindow(req) => Request::GlxCreateWindow(req.into_owned()),
3578             #[cfg(feature = "glx")]
3579             Request::GlxDeleteWindow(req) => Request::GlxDeleteWindow(req),
3580             #[cfg(feature = "glx")]
3581             Request::GlxSetClientInfoARB(req) => Request::GlxSetClientInfoARB(req.into_owned()),
3582             #[cfg(feature = "glx")]
3583             Request::GlxCreateContextAttribsARB(req) => Request::GlxCreateContextAttribsARB(req.into_owned()),
3584             #[cfg(feature = "glx")]
3585             Request::GlxSetClientInfo2ARB(req) => Request::GlxSetClientInfo2ARB(req.into_owned()),
3586             #[cfg(feature = "glx")]
3587             Request::GlxNewList(req) => Request::GlxNewList(req),
3588             #[cfg(feature = "glx")]
3589             Request::GlxEndList(req) => Request::GlxEndList(req),
3590             #[cfg(feature = "glx")]
3591             Request::GlxDeleteLists(req) => Request::GlxDeleteLists(req),
3592             #[cfg(feature = "glx")]
3593             Request::GlxGenLists(req) => Request::GlxGenLists(req),
3594             #[cfg(feature = "glx")]
3595             Request::GlxFeedbackBuffer(req) => Request::GlxFeedbackBuffer(req),
3596             #[cfg(feature = "glx")]
3597             Request::GlxSelectBuffer(req) => Request::GlxSelectBuffer(req),
3598             #[cfg(feature = "glx")]
3599             Request::GlxRenderMode(req) => Request::GlxRenderMode(req),
3600             #[cfg(feature = "glx")]
3601             Request::GlxFinish(req) => Request::GlxFinish(req),
3602             #[cfg(feature = "glx")]
3603             Request::GlxPixelStoref(req) => Request::GlxPixelStoref(req),
3604             #[cfg(feature = "glx")]
3605             Request::GlxPixelStorei(req) => Request::GlxPixelStorei(req),
3606             #[cfg(feature = "glx")]
3607             Request::GlxReadPixels(req) => Request::GlxReadPixels(req),
3608             #[cfg(feature = "glx")]
3609             Request::GlxGetBooleanv(req) => Request::GlxGetBooleanv(req),
3610             #[cfg(feature = "glx")]
3611             Request::GlxGetClipPlane(req) => Request::GlxGetClipPlane(req),
3612             #[cfg(feature = "glx")]
3613             Request::GlxGetDoublev(req) => Request::GlxGetDoublev(req),
3614             #[cfg(feature = "glx")]
3615             Request::GlxGetError(req) => Request::GlxGetError(req),
3616             #[cfg(feature = "glx")]
3617             Request::GlxGetFloatv(req) => Request::GlxGetFloatv(req),
3618             #[cfg(feature = "glx")]
3619             Request::GlxGetIntegerv(req) => Request::GlxGetIntegerv(req),
3620             #[cfg(feature = "glx")]
3621             Request::GlxGetLightfv(req) => Request::GlxGetLightfv(req),
3622             #[cfg(feature = "glx")]
3623             Request::GlxGetLightiv(req) => Request::GlxGetLightiv(req),
3624             #[cfg(feature = "glx")]
3625             Request::GlxGetMapdv(req) => Request::GlxGetMapdv(req),
3626             #[cfg(feature = "glx")]
3627             Request::GlxGetMapfv(req) => Request::GlxGetMapfv(req),
3628             #[cfg(feature = "glx")]
3629             Request::GlxGetMapiv(req) => Request::GlxGetMapiv(req),
3630             #[cfg(feature = "glx")]
3631             Request::GlxGetMaterialfv(req) => Request::GlxGetMaterialfv(req),
3632             #[cfg(feature = "glx")]
3633             Request::GlxGetMaterialiv(req) => Request::GlxGetMaterialiv(req),
3634             #[cfg(feature = "glx")]
3635             Request::GlxGetPixelMapfv(req) => Request::GlxGetPixelMapfv(req),
3636             #[cfg(feature = "glx")]
3637             Request::GlxGetPixelMapuiv(req) => Request::GlxGetPixelMapuiv(req),
3638             #[cfg(feature = "glx")]
3639             Request::GlxGetPixelMapusv(req) => Request::GlxGetPixelMapusv(req),
3640             #[cfg(feature = "glx")]
3641             Request::GlxGetPolygonStipple(req) => Request::GlxGetPolygonStipple(req),
3642             #[cfg(feature = "glx")]
3643             Request::GlxGetString(req) => Request::GlxGetString(req),
3644             #[cfg(feature = "glx")]
3645             Request::GlxGetTexEnvfv(req) => Request::GlxGetTexEnvfv(req),
3646             #[cfg(feature = "glx")]
3647             Request::GlxGetTexEnviv(req) => Request::GlxGetTexEnviv(req),
3648             #[cfg(feature = "glx")]
3649             Request::GlxGetTexGendv(req) => Request::GlxGetTexGendv(req),
3650             #[cfg(feature = "glx")]
3651             Request::GlxGetTexGenfv(req) => Request::GlxGetTexGenfv(req),
3652             #[cfg(feature = "glx")]
3653             Request::GlxGetTexGeniv(req) => Request::GlxGetTexGeniv(req),
3654             #[cfg(feature = "glx")]
3655             Request::GlxGetTexImage(req) => Request::GlxGetTexImage(req),
3656             #[cfg(feature = "glx")]
3657             Request::GlxGetTexParameterfv(req) => Request::GlxGetTexParameterfv(req),
3658             #[cfg(feature = "glx")]
3659             Request::GlxGetTexParameteriv(req) => Request::GlxGetTexParameteriv(req),
3660             #[cfg(feature = "glx")]
3661             Request::GlxGetTexLevelParameterfv(req) => Request::GlxGetTexLevelParameterfv(req),
3662             #[cfg(feature = "glx")]
3663             Request::GlxGetTexLevelParameteriv(req) => Request::GlxGetTexLevelParameteriv(req),
3664             #[cfg(feature = "glx")]
3665             Request::GlxIsEnabled(req) => Request::GlxIsEnabled(req),
3666             #[cfg(feature = "glx")]
3667             Request::GlxIsList(req) => Request::GlxIsList(req),
3668             #[cfg(feature = "glx")]
3669             Request::GlxFlush(req) => Request::GlxFlush(req),
3670             #[cfg(feature = "glx")]
3671             Request::GlxAreTexturesResident(req) => Request::GlxAreTexturesResident(req.into_owned()),
3672             #[cfg(feature = "glx")]
3673             Request::GlxDeleteTextures(req) => Request::GlxDeleteTextures(req.into_owned()),
3674             #[cfg(feature = "glx")]
3675             Request::GlxGenTextures(req) => Request::GlxGenTextures(req),
3676             #[cfg(feature = "glx")]
3677             Request::GlxIsTexture(req) => Request::GlxIsTexture(req),
3678             #[cfg(feature = "glx")]
3679             Request::GlxGetColorTable(req) => Request::GlxGetColorTable(req),
3680             #[cfg(feature = "glx")]
3681             Request::GlxGetColorTableParameterfv(req) => Request::GlxGetColorTableParameterfv(req),
3682             #[cfg(feature = "glx")]
3683             Request::GlxGetColorTableParameteriv(req) => Request::GlxGetColorTableParameteriv(req),
3684             #[cfg(feature = "glx")]
3685             Request::GlxGetConvolutionFilter(req) => Request::GlxGetConvolutionFilter(req),
3686             #[cfg(feature = "glx")]
3687             Request::GlxGetConvolutionParameterfv(req) => Request::GlxGetConvolutionParameterfv(req),
3688             #[cfg(feature = "glx")]
3689             Request::GlxGetConvolutionParameteriv(req) => Request::GlxGetConvolutionParameteriv(req),
3690             #[cfg(feature = "glx")]
3691             Request::GlxGetSeparableFilter(req) => Request::GlxGetSeparableFilter(req),
3692             #[cfg(feature = "glx")]
3693             Request::GlxGetHistogram(req) => Request::GlxGetHistogram(req),
3694             #[cfg(feature = "glx")]
3695             Request::GlxGetHistogramParameterfv(req) => Request::GlxGetHistogramParameterfv(req),
3696             #[cfg(feature = "glx")]
3697             Request::GlxGetHistogramParameteriv(req) => Request::GlxGetHistogramParameteriv(req),
3698             #[cfg(feature = "glx")]
3699             Request::GlxGetMinmax(req) => Request::GlxGetMinmax(req),
3700             #[cfg(feature = "glx")]
3701             Request::GlxGetMinmaxParameterfv(req) => Request::GlxGetMinmaxParameterfv(req),
3702             #[cfg(feature = "glx")]
3703             Request::GlxGetMinmaxParameteriv(req) => Request::GlxGetMinmaxParameteriv(req),
3704             #[cfg(feature = "glx")]
3705             Request::GlxGetCompressedTexImageARB(req) => Request::GlxGetCompressedTexImageARB(req),
3706             #[cfg(feature = "glx")]
3707             Request::GlxDeleteQueriesARB(req) => Request::GlxDeleteQueriesARB(req.into_owned()),
3708             #[cfg(feature = "glx")]
3709             Request::GlxGenQueriesARB(req) => Request::GlxGenQueriesARB(req),
3710             #[cfg(feature = "glx")]
3711             Request::GlxIsQueryARB(req) => Request::GlxIsQueryARB(req),
3712             #[cfg(feature = "glx")]
3713             Request::GlxGetQueryivARB(req) => Request::GlxGetQueryivARB(req),
3714             #[cfg(feature = "glx")]
3715             Request::GlxGetQueryObjectivARB(req) => Request::GlxGetQueryObjectivARB(req),
3716             #[cfg(feature = "glx")]
3717             Request::GlxGetQueryObjectuivARB(req) => Request::GlxGetQueryObjectuivARB(req),
3718             #[cfg(feature = "present")]
3719             Request::PresentQueryVersion(req) => Request::PresentQueryVersion(req),
3720             #[cfg(feature = "present")]
3721             Request::PresentPixmap(req) => Request::PresentPixmap(req.into_owned()),
3722             #[cfg(feature = "present")]
3723             Request::PresentNotifyMSC(req) => Request::PresentNotifyMSC(req),
3724             #[cfg(feature = "present")]
3725             Request::PresentSelectInput(req) => Request::PresentSelectInput(req),
3726             #[cfg(feature = "present")]
3727             Request::PresentQueryCapabilities(req) => Request::PresentQueryCapabilities(req),
3728             #[cfg(feature = "randr")]
3729             Request::RandrQueryVersion(req) => Request::RandrQueryVersion(req),
3730             #[cfg(feature = "randr")]
3731             Request::RandrSetScreenConfig(req) => Request::RandrSetScreenConfig(req),
3732             #[cfg(feature = "randr")]
3733             Request::RandrSelectInput(req) => Request::RandrSelectInput(req),
3734             #[cfg(feature = "randr")]
3735             Request::RandrGetScreenInfo(req) => Request::RandrGetScreenInfo(req),
3736             #[cfg(feature = "randr")]
3737             Request::RandrGetScreenSizeRange(req) => Request::RandrGetScreenSizeRange(req),
3738             #[cfg(feature = "randr")]
3739             Request::RandrSetScreenSize(req) => Request::RandrSetScreenSize(req),
3740             #[cfg(feature = "randr")]
3741             Request::RandrGetScreenResources(req) => Request::RandrGetScreenResources(req),
3742             #[cfg(feature = "randr")]
3743             Request::RandrGetOutputInfo(req) => Request::RandrGetOutputInfo(req),
3744             #[cfg(feature = "randr")]
3745             Request::RandrListOutputProperties(req) => Request::RandrListOutputProperties(req),
3746             #[cfg(feature = "randr")]
3747             Request::RandrQueryOutputProperty(req) => Request::RandrQueryOutputProperty(req),
3748             #[cfg(feature = "randr")]
3749             Request::RandrConfigureOutputProperty(req) => Request::RandrConfigureOutputProperty(req.into_owned()),
3750             #[cfg(feature = "randr")]
3751             Request::RandrChangeOutputProperty(req) => Request::RandrChangeOutputProperty(req.into_owned()),
3752             #[cfg(feature = "randr")]
3753             Request::RandrDeleteOutputProperty(req) => Request::RandrDeleteOutputProperty(req),
3754             #[cfg(feature = "randr")]
3755             Request::RandrGetOutputProperty(req) => Request::RandrGetOutputProperty(req),
3756             #[cfg(feature = "randr")]
3757             Request::RandrCreateMode(req) => Request::RandrCreateMode(req.into_owned()),
3758             #[cfg(feature = "randr")]
3759             Request::RandrDestroyMode(req) => Request::RandrDestroyMode(req),
3760             #[cfg(feature = "randr")]
3761             Request::RandrAddOutputMode(req) => Request::RandrAddOutputMode(req),
3762             #[cfg(feature = "randr")]
3763             Request::RandrDeleteOutputMode(req) => Request::RandrDeleteOutputMode(req),
3764             #[cfg(feature = "randr")]
3765             Request::RandrGetCrtcInfo(req) => Request::RandrGetCrtcInfo(req),
3766             #[cfg(feature = "randr")]
3767             Request::RandrSetCrtcConfig(req) => Request::RandrSetCrtcConfig(req.into_owned()),
3768             #[cfg(feature = "randr")]
3769             Request::RandrGetCrtcGammaSize(req) => Request::RandrGetCrtcGammaSize(req),
3770             #[cfg(feature = "randr")]
3771             Request::RandrGetCrtcGamma(req) => Request::RandrGetCrtcGamma(req),
3772             #[cfg(feature = "randr")]
3773             Request::RandrSetCrtcGamma(req) => Request::RandrSetCrtcGamma(req.into_owned()),
3774             #[cfg(feature = "randr")]
3775             Request::RandrGetScreenResourcesCurrent(req) => Request::RandrGetScreenResourcesCurrent(req),
3776             #[cfg(feature = "randr")]
3777             Request::RandrSetCrtcTransform(req) => Request::RandrSetCrtcTransform(req.into_owned()),
3778             #[cfg(feature = "randr")]
3779             Request::RandrGetCrtcTransform(req) => Request::RandrGetCrtcTransform(req),
3780             #[cfg(feature = "randr")]
3781             Request::RandrGetPanning(req) => Request::RandrGetPanning(req),
3782             #[cfg(feature = "randr")]
3783             Request::RandrSetPanning(req) => Request::RandrSetPanning(req),
3784             #[cfg(feature = "randr")]
3785             Request::RandrSetOutputPrimary(req) => Request::RandrSetOutputPrimary(req),
3786             #[cfg(feature = "randr")]
3787             Request::RandrGetOutputPrimary(req) => Request::RandrGetOutputPrimary(req),
3788             #[cfg(feature = "randr")]
3789             Request::RandrGetProviders(req) => Request::RandrGetProviders(req),
3790             #[cfg(feature = "randr")]
3791             Request::RandrGetProviderInfo(req) => Request::RandrGetProviderInfo(req),
3792             #[cfg(feature = "randr")]
3793             Request::RandrSetProviderOffloadSink(req) => Request::RandrSetProviderOffloadSink(req),
3794             #[cfg(feature = "randr")]
3795             Request::RandrSetProviderOutputSource(req) => Request::RandrSetProviderOutputSource(req),
3796             #[cfg(feature = "randr")]
3797             Request::RandrListProviderProperties(req) => Request::RandrListProviderProperties(req),
3798             #[cfg(feature = "randr")]
3799             Request::RandrQueryProviderProperty(req) => Request::RandrQueryProviderProperty(req),
3800             #[cfg(feature = "randr")]
3801             Request::RandrConfigureProviderProperty(req) => Request::RandrConfigureProviderProperty(req.into_owned()),
3802             #[cfg(feature = "randr")]
3803             Request::RandrChangeProviderProperty(req) => Request::RandrChangeProviderProperty(req.into_owned()),
3804             #[cfg(feature = "randr")]
3805             Request::RandrDeleteProviderProperty(req) => Request::RandrDeleteProviderProperty(req),
3806             #[cfg(feature = "randr")]
3807             Request::RandrGetProviderProperty(req) => Request::RandrGetProviderProperty(req),
3808             #[cfg(feature = "randr")]
3809             Request::RandrGetMonitors(req) => Request::RandrGetMonitors(req),
3810             #[cfg(feature = "randr")]
3811             Request::RandrSetMonitor(req) => Request::RandrSetMonitor(req),
3812             #[cfg(feature = "randr")]
3813             Request::RandrDeleteMonitor(req) => Request::RandrDeleteMonitor(req),
3814             #[cfg(feature = "randr")]
3815             Request::RandrCreateLease(req) => Request::RandrCreateLease(req.into_owned()),
3816             #[cfg(feature = "randr")]
3817             Request::RandrFreeLease(req) => Request::RandrFreeLease(req),
3818             #[cfg(feature = "record")]
3819             Request::RecordQueryVersion(req) => Request::RecordQueryVersion(req),
3820             #[cfg(feature = "record")]
3821             Request::RecordCreateContext(req) => Request::RecordCreateContext(req.into_owned()),
3822             #[cfg(feature = "record")]
3823             Request::RecordRegisterClients(req) => Request::RecordRegisterClients(req.into_owned()),
3824             #[cfg(feature = "record")]
3825             Request::RecordUnregisterClients(req) => Request::RecordUnregisterClients(req.into_owned()),
3826             #[cfg(feature = "record")]
3827             Request::RecordGetContext(req) => Request::RecordGetContext(req),
3828             #[cfg(feature = "record")]
3829             Request::RecordEnableContext(req) => Request::RecordEnableContext(req),
3830             #[cfg(feature = "record")]
3831             Request::RecordDisableContext(req) => Request::RecordDisableContext(req),
3832             #[cfg(feature = "record")]
3833             Request::RecordFreeContext(req) => Request::RecordFreeContext(req),
3834             #[cfg(feature = "render")]
3835             Request::RenderQueryVersion(req) => Request::RenderQueryVersion(req),
3836             #[cfg(feature = "render")]
3837             Request::RenderQueryPictFormats(req) => Request::RenderQueryPictFormats(req),
3838             #[cfg(feature = "render")]
3839             Request::RenderQueryPictIndexValues(req) => Request::RenderQueryPictIndexValues(req),
3840             #[cfg(feature = "render")]
3841             Request::RenderCreatePicture(req) => Request::RenderCreatePicture(req.into_owned()),
3842             #[cfg(feature = "render")]
3843             Request::RenderChangePicture(req) => Request::RenderChangePicture(req.into_owned()),
3844             #[cfg(feature = "render")]
3845             Request::RenderSetPictureClipRectangles(req) => Request::RenderSetPictureClipRectangles(req.into_owned()),
3846             #[cfg(feature = "render")]
3847             Request::RenderFreePicture(req) => Request::RenderFreePicture(req),
3848             #[cfg(feature = "render")]
3849             Request::RenderComposite(req) => Request::RenderComposite(req),
3850             #[cfg(feature = "render")]
3851             Request::RenderTrapezoids(req) => Request::RenderTrapezoids(req.into_owned()),
3852             #[cfg(feature = "render")]
3853             Request::RenderTriangles(req) => Request::RenderTriangles(req.into_owned()),
3854             #[cfg(feature = "render")]
3855             Request::RenderTriStrip(req) => Request::RenderTriStrip(req.into_owned()),
3856             #[cfg(feature = "render")]
3857             Request::RenderTriFan(req) => Request::RenderTriFan(req.into_owned()),
3858             #[cfg(feature = "render")]
3859             Request::RenderCreateGlyphSet(req) => Request::RenderCreateGlyphSet(req),
3860             #[cfg(feature = "render")]
3861             Request::RenderReferenceGlyphSet(req) => Request::RenderReferenceGlyphSet(req),
3862             #[cfg(feature = "render")]
3863             Request::RenderFreeGlyphSet(req) => Request::RenderFreeGlyphSet(req),
3864             #[cfg(feature = "render")]
3865             Request::RenderAddGlyphs(req) => Request::RenderAddGlyphs(req.into_owned()),
3866             #[cfg(feature = "render")]
3867             Request::RenderFreeGlyphs(req) => Request::RenderFreeGlyphs(req.into_owned()),
3868             #[cfg(feature = "render")]
3869             Request::RenderCompositeGlyphs8(req) => Request::RenderCompositeGlyphs8(req.into_owned()),
3870             #[cfg(feature = "render")]
3871             Request::RenderCompositeGlyphs16(req) => Request::RenderCompositeGlyphs16(req.into_owned()),
3872             #[cfg(feature = "render")]
3873             Request::RenderCompositeGlyphs32(req) => Request::RenderCompositeGlyphs32(req.into_owned()),
3874             #[cfg(feature = "render")]
3875             Request::RenderFillRectangles(req) => Request::RenderFillRectangles(req.into_owned()),
3876             #[cfg(feature = "render")]
3877             Request::RenderCreateCursor(req) => Request::RenderCreateCursor(req),
3878             #[cfg(feature = "render")]
3879             Request::RenderSetPictureTransform(req) => Request::RenderSetPictureTransform(req),
3880             #[cfg(feature = "render")]
3881             Request::RenderQueryFilters(req) => Request::RenderQueryFilters(req),
3882             #[cfg(feature = "render")]
3883             Request::RenderSetPictureFilter(req) => Request::RenderSetPictureFilter(req.into_owned()),
3884             #[cfg(feature = "render")]
3885             Request::RenderCreateAnimCursor(req) => Request::RenderCreateAnimCursor(req.into_owned()),
3886             #[cfg(feature = "render")]
3887             Request::RenderAddTraps(req) => Request::RenderAddTraps(req.into_owned()),
3888             #[cfg(feature = "render")]
3889             Request::RenderCreateSolidFill(req) => Request::RenderCreateSolidFill(req),
3890             #[cfg(feature = "render")]
3891             Request::RenderCreateLinearGradient(req) => Request::RenderCreateLinearGradient(req.into_owned()),
3892             #[cfg(feature = "render")]
3893             Request::RenderCreateRadialGradient(req) => Request::RenderCreateRadialGradient(req.into_owned()),
3894             #[cfg(feature = "render")]
3895             Request::RenderCreateConicalGradient(req) => Request::RenderCreateConicalGradient(req.into_owned()),
3896             #[cfg(feature = "res")]
3897             Request::ResQueryVersion(req) => Request::ResQueryVersion(req),
3898             #[cfg(feature = "res")]
3899             Request::ResQueryClients(req) => Request::ResQueryClients(req),
3900             #[cfg(feature = "res")]
3901             Request::ResQueryClientResources(req) => Request::ResQueryClientResources(req),
3902             #[cfg(feature = "res")]
3903             Request::ResQueryClientPixmapBytes(req) => Request::ResQueryClientPixmapBytes(req),
3904             #[cfg(feature = "res")]
3905             Request::ResQueryClientIds(req) => Request::ResQueryClientIds(req.into_owned()),
3906             #[cfg(feature = "res")]
3907             Request::ResQueryResourceBytes(req) => Request::ResQueryResourceBytes(req.into_owned()),
3908             #[cfg(feature = "screensaver")]
3909             Request::ScreensaverQueryVersion(req) => Request::ScreensaverQueryVersion(req),
3910             #[cfg(feature = "screensaver")]
3911             Request::ScreensaverQueryInfo(req) => Request::ScreensaverQueryInfo(req),
3912             #[cfg(feature = "screensaver")]
3913             Request::ScreensaverSelectInput(req) => Request::ScreensaverSelectInput(req),
3914             #[cfg(feature = "screensaver")]
3915             Request::ScreensaverSetAttributes(req) => Request::ScreensaverSetAttributes(req.into_owned()),
3916             #[cfg(feature = "screensaver")]
3917             Request::ScreensaverUnsetAttributes(req) => Request::ScreensaverUnsetAttributes(req),
3918             #[cfg(feature = "screensaver")]
3919             Request::ScreensaverSuspend(req) => Request::ScreensaverSuspend(req),
3920             #[cfg(feature = "shape")]
3921             Request::ShapeQueryVersion(req) => Request::ShapeQueryVersion(req),
3922             #[cfg(feature = "shape")]
3923             Request::ShapeRectangles(req) => Request::ShapeRectangles(req.into_owned()),
3924             #[cfg(feature = "shape")]
3925             Request::ShapeMask(req) => Request::ShapeMask(req),
3926             #[cfg(feature = "shape")]
3927             Request::ShapeCombine(req) => Request::ShapeCombine(req),
3928             #[cfg(feature = "shape")]
3929             Request::ShapeOffset(req) => Request::ShapeOffset(req),
3930             #[cfg(feature = "shape")]
3931             Request::ShapeQueryExtents(req) => Request::ShapeQueryExtents(req),
3932             #[cfg(feature = "shape")]
3933             Request::ShapeSelectInput(req) => Request::ShapeSelectInput(req),
3934             #[cfg(feature = "shape")]
3935             Request::ShapeInputSelected(req) => Request::ShapeInputSelected(req),
3936             #[cfg(feature = "shape")]
3937             Request::ShapeGetRectangles(req) => Request::ShapeGetRectangles(req),
3938             #[cfg(feature = "shm")]
3939             Request::ShmQueryVersion(req) => Request::ShmQueryVersion(req),
3940             #[cfg(feature = "shm")]
3941             Request::ShmAttach(req) => Request::ShmAttach(req),
3942             #[cfg(feature = "shm")]
3943             Request::ShmDetach(req) => Request::ShmDetach(req),
3944             #[cfg(feature = "shm")]
3945             Request::ShmPutImage(req) => Request::ShmPutImage(req),
3946             #[cfg(feature = "shm")]
3947             Request::ShmGetImage(req) => Request::ShmGetImage(req),
3948             #[cfg(feature = "shm")]
3949             Request::ShmCreatePixmap(req) => Request::ShmCreatePixmap(req),
3950             #[cfg(feature = "shm")]
3951             Request::ShmAttachFd(req) => Request::ShmAttachFd(req),
3952             #[cfg(feature = "shm")]
3953             Request::ShmCreateSegment(req) => Request::ShmCreateSegment(req),
3954             #[cfg(feature = "sync")]
3955             Request::SyncInitialize(req) => Request::SyncInitialize(req),
3956             #[cfg(feature = "sync")]
3957             Request::SyncListSystemCounters(req) => Request::SyncListSystemCounters(req),
3958             #[cfg(feature = "sync")]
3959             Request::SyncCreateCounter(req) => Request::SyncCreateCounter(req),
3960             #[cfg(feature = "sync")]
3961             Request::SyncDestroyCounter(req) => Request::SyncDestroyCounter(req),
3962             #[cfg(feature = "sync")]
3963             Request::SyncQueryCounter(req) => Request::SyncQueryCounter(req),
3964             #[cfg(feature = "sync")]
3965             Request::SyncAwait(req) => Request::SyncAwait(req.into_owned()),
3966             #[cfg(feature = "sync")]
3967             Request::SyncChangeCounter(req) => Request::SyncChangeCounter(req),
3968             #[cfg(feature = "sync")]
3969             Request::SyncSetCounter(req) => Request::SyncSetCounter(req),
3970             #[cfg(feature = "sync")]
3971             Request::SyncCreateAlarm(req) => Request::SyncCreateAlarm(req.into_owned()),
3972             #[cfg(feature = "sync")]
3973             Request::SyncChangeAlarm(req) => Request::SyncChangeAlarm(req.into_owned()),
3974             #[cfg(feature = "sync")]
3975             Request::SyncDestroyAlarm(req) => Request::SyncDestroyAlarm(req),
3976             #[cfg(feature = "sync")]
3977             Request::SyncQueryAlarm(req) => Request::SyncQueryAlarm(req),
3978             #[cfg(feature = "sync")]
3979             Request::SyncSetPriority(req) => Request::SyncSetPriority(req),
3980             #[cfg(feature = "sync")]
3981             Request::SyncGetPriority(req) => Request::SyncGetPriority(req),
3982             #[cfg(feature = "sync")]
3983             Request::SyncCreateFence(req) => Request::SyncCreateFence(req),
3984             #[cfg(feature = "sync")]
3985             Request::SyncTriggerFence(req) => Request::SyncTriggerFence(req),
3986             #[cfg(feature = "sync")]
3987             Request::SyncResetFence(req) => Request::SyncResetFence(req),
3988             #[cfg(feature = "sync")]
3989             Request::SyncDestroyFence(req) => Request::SyncDestroyFence(req),
3990             #[cfg(feature = "sync")]
3991             Request::SyncQueryFence(req) => Request::SyncQueryFence(req),
3992             #[cfg(feature = "sync")]
3993             Request::SyncAwaitFence(req) => Request::SyncAwaitFence(req.into_owned()),
3994             Request::XcMiscGetVersion(req) => Request::XcMiscGetVersion(req),
3995             Request::XcMiscGetXIDRange(req) => Request::XcMiscGetXIDRange(req),
3996             Request::XcMiscGetXIDList(req) => Request::XcMiscGetXIDList(req),
3997             #[cfg(feature = "xevie")]
3998             Request::XevieQueryVersion(req) => Request::XevieQueryVersion(req),
3999             #[cfg(feature = "xevie")]
4000             Request::XevieStart(req) => Request::XevieStart(req),
4001             #[cfg(feature = "xevie")]
4002             Request::XevieEnd(req) => Request::XevieEnd(req),
4003             #[cfg(feature = "xevie")]
4004             Request::XevieSend(req) => Request::XevieSend(req),
4005             #[cfg(feature = "xevie")]
4006             Request::XevieSelectInput(req) => Request::XevieSelectInput(req),
4007             #[cfg(feature = "xf86dri")]
4008             Request::Xf86driQueryVersion(req) => Request::Xf86driQueryVersion(req),
4009             #[cfg(feature = "xf86dri")]
4010             Request::Xf86driQueryDirectRenderingCapable(req) => Request::Xf86driQueryDirectRenderingCapable(req),
4011             #[cfg(feature = "xf86dri")]
4012             Request::Xf86driOpenConnection(req) => Request::Xf86driOpenConnection(req),
4013             #[cfg(feature = "xf86dri")]
4014             Request::Xf86driCloseConnection(req) => Request::Xf86driCloseConnection(req),
4015             #[cfg(feature = "xf86dri")]
4016             Request::Xf86driGetClientDriverName(req) => Request::Xf86driGetClientDriverName(req),
4017             #[cfg(feature = "xf86dri")]
4018             Request::Xf86driCreateContext(req) => Request::Xf86driCreateContext(req),
4019             #[cfg(feature = "xf86dri")]
4020             Request::Xf86driDestroyContext(req) => Request::Xf86driDestroyContext(req),
4021             #[cfg(feature = "xf86dri")]
4022             Request::Xf86driCreateDrawable(req) => Request::Xf86driCreateDrawable(req),
4023             #[cfg(feature = "xf86dri")]
4024             Request::Xf86driDestroyDrawable(req) => Request::Xf86driDestroyDrawable(req),
4025             #[cfg(feature = "xf86dri")]
4026             Request::Xf86driGetDrawableInfo(req) => Request::Xf86driGetDrawableInfo(req),
4027             #[cfg(feature = "xf86dri")]
4028             Request::Xf86driGetDeviceInfo(req) => Request::Xf86driGetDeviceInfo(req),
4029             #[cfg(feature = "xf86dri")]
4030             Request::Xf86driAuthConnection(req) => Request::Xf86driAuthConnection(req),
4031             #[cfg(feature = "xf86vidmode")]
4032             Request::Xf86vidmodeQueryVersion(req) => Request::Xf86vidmodeQueryVersion(req),
4033             #[cfg(feature = "xf86vidmode")]
4034             Request::Xf86vidmodeGetModeLine(req) => Request::Xf86vidmodeGetModeLine(req),
4035             #[cfg(feature = "xf86vidmode")]
4036             Request::Xf86vidmodeModModeLine(req) => Request::Xf86vidmodeModModeLine(req.into_owned()),
4037             #[cfg(feature = "xf86vidmode")]
4038             Request::Xf86vidmodeSwitchMode(req) => Request::Xf86vidmodeSwitchMode(req),
4039             #[cfg(feature = "xf86vidmode")]
4040             Request::Xf86vidmodeGetMonitor(req) => Request::Xf86vidmodeGetMonitor(req),
4041             #[cfg(feature = "xf86vidmode")]
4042             Request::Xf86vidmodeLockModeSwitch(req) => Request::Xf86vidmodeLockModeSwitch(req),
4043             #[cfg(feature = "xf86vidmode")]
4044             Request::Xf86vidmodeGetAllModeLines(req) => Request::Xf86vidmodeGetAllModeLines(req),
4045             #[cfg(feature = "xf86vidmode")]
4046             Request::Xf86vidmodeAddModeLine(req) => Request::Xf86vidmodeAddModeLine(req.into_owned()),
4047             #[cfg(feature = "xf86vidmode")]
4048             Request::Xf86vidmodeDeleteModeLine(req) => Request::Xf86vidmodeDeleteModeLine(req.into_owned()),
4049             #[cfg(feature = "xf86vidmode")]
4050             Request::Xf86vidmodeValidateModeLine(req) => Request::Xf86vidmodeValidateModeLine(req.into_owned()),
4051             #[cfg(feature = "xf86vidmode")]
4052             Request::Xf86vidmodeSwitchToMode(req) => Request::Xf86vidmodeSwitchToMode(req.into_owned()),
4053             #[cfg(feature = "xf86vidmode")]
4054             Request::Xf86vidmodeGetViewPort(req) => Request::Xf86vidmodeGetViewPort(req),
4055             #[cfg(feature = "xf86vidmode")]
4056             Request::Xf86vidmodeSetViewPort(req) => Request::Xf86vidmodeSetViewPort(req),
4057             #[cfg(feature = "xf86vidmode")]
4058             Request::Xf86vidmodeGetDotClocks(req) => Request::Xf86vidmodeGetDotClocks(req),
4059             #[cfg(feature = "xf86vidmode")]
4060             Request::Xf86vidmodeSetClientVersion(req) => Request::Xf86vidmodeSetClientVersion(req),
4061             #[cfg(feature = "xf86vidmode")]
4062             Request::Xf86vidmodeSetGamma(req) => Request::Xf86vidmodeSetGamma(req),
4063             #[cfg(feature = "xf86vidmode")]
4064             Request::Xf86vidmodeGetGamma(req) => Request::Xf86vidmodeGetGamma(req),
4065             #[cfg(feature = "xf86vidmode")]
4066             Request::Xf86vidmodeGetGammaRamp(req) => Request::Xf86vidmodeGetGammaRamp(req),
4067             #[cfg(feature = "xf86vidmode")]
4068             Request::Xf86vidmodeSetGammaRamp(req) => Request::Xf86vidmodeSetGammaRamp(req.into_owned()),
4069             #[cfg(feature = "xf86vidmode")]
4070             Request::Xf86vidmodeGetGammaRampSize(req) => Request::Xf86vidmodeGetGammaRampSize(req),
4071             #[cfg(feature = "xf86vidmode")]
4072             Request::Xf86vidmodeGetPermissions(req) => Request::Xf86vidmodeGetPermissions(req),
4073             #[cfg(feature = "xfixes")]
4074             Request::XfixesQueryVersion(req) => Request::XfixesQueryVersion(req),
4075             #[cfg(feature = "xfixes")]
4076             Request::XfixesChangeSaveSet(req) => Request::XfixesChangeSaveSet(req),
4077             #[cfg(feature = "xfixes")]
4078             Request::XfixesSelectSelectionInput(req) => Request::XfixesSelectSelectionInput(req),
4079             #[cfg(feature = "xfixes")]
4080             Request::XfixesSelectCursorInput(req) => Request::XfixesSelectCursorInput(req),
4081             #[cfg(feature = "xfixes")]
4082             Request::XfixesGetCursorImage(req) => Request::XfixesGetCursorImage(req),
4083             #[cfg(feature = "xfixes")]
4084             Request::XfixesCreateRegion(req) => Request::XfixesCreateRegion(req.into_owned()),
4085             #[cfg(feature = "xfixes")]
4086             Request::XfixesCreateRegionFromBitmap(req) => Request::XfixesCreateRegionFromBitmap(req),
4087             #[cfg(feature = "xfixes")]
4088             Request::XfixesCreateRegionFromWindow(req) => Request::XfixesCreateRegionFromWindow(req),
4089             #[cfg(feature = "xfixes")]
4090             Request::XfixesCreateRegionFromGC(req) => Request::XfixesCreateRegionFromGC(req),
4091             #[cfg(feature = "xfixes")]
4092             Request::XfixesCreateRegionFromPicture(req) => Request::XfixesCreateRegionFromPicture(req),
4093             #[cfg(feature = "xfixes")]
4094             Request::XfixesDestroyRegion(req) => Request::XfixesDestroyRegion(req),
4095             #[cfg(feature = "xfixes")]
4096             Request::XfixesSetRegion(req) => Request::XfixesSetRegion(req.into_owned()),
4097             #[cfg(feature = "xfixes")]
4098             Request::XfixesCopyRegion(req) => Request::XfixesCopyRegion(req),
4099             #[cfg(feature = "xfixes")]
4100             Request::XfixesUnionRegion(req) => Request::XfixesUnionRegion(req),
4101             #[cfg(feature = "xfixes")]
4102             Request::XfixesIntersectRegion(req) => Request::XfixesIntersectRegion(req),
4103             #[cfg(feature = "xfixes")]
4104             Request::XfixesSubtractRegion(req) => Request::XfixesSubtractRegion(req),
4105             #[cfg(feature = "xfixes")]
4106             Request::XfixesInvertRegion(req) => Request::XfixesInvertRegion(req),
4107             #[cfg(feature = "xfixes")]
4108             Request::XfixesTranslateRegion(req) => Request::XfixesTranslateRegion(req),
4109             #[cfg(feature = "xfixes")]
4110             Request::XfixesRegionExtents(req) => Request::XfixesRegionExtents(req),
4111             #[cfg(feature = "xfixes")]
4112             Request::XfixesFetchRegion(req) => Request::XfixesFetchRegion(req),
4113             #[cfg(feature = "xfixes")]
4114             Request::XfixesSetGCClipRegion(req) => Request::XfixesSetGCClipRegion(req),
4115             #[cfg(feature = "xfixes")]
4116             Request::XfixesSetWindowShapeRegion(req) => Request::XfixesSetWindowShapeRegion(req),
4117             #[cfg(feature = "xfixes")]
4118             Request::XfixesSetPictureClipRegion(req) => Request::XfixesSetPictureClipRegion(req),
4119             #[cfg(feature = "xfixes")]
4120             Request::XfixesSetCursorName(req) => Request::XfixesSetCursorName(req.into_owned()),
4121             #[cfg(feature = "xfixes")]
4122             Request::XfixesGetCursorName(req) => Request::XfixesGetCursorName(req),
4123             #[cfg(feature = "xfixes")]
4124             Request::XfixesGetCursorImageAndName(req) => Request::XfixesGetCursorImageAndName(req),
4125             #[cfg(feature = "xfixes")]
4126             Request::XfixesChangeCursor(req) => Request::XfixesChangeCursor(req),
4127             #[cfg(feature = "xfixes")]
4128             Request::XfixesChangeCursorByName(req) => Request::XfixesChangeCursorByName(req.into_owned()),
4129             #[cfg(feature = "xfixes")]
4130             Request::XfixesExpandRegion(req) => Request::XfixesExpandRegion(req),
4131             #[cfg(feature = "xfixes")]
4132             Request::XfixesHideCursor(req) => Request::XfixesHideCursor(req),
4133             #[cfg(feature = "xfixes")]
4134             Request::XfixesShowCursor(req) => Request::XfixesShowCursor(req),
4135             #[cfg(feature = "xfixes")]
4136             Request::XfixesCreatePointerBarrier(req) => Request::XfixesCreatePointerBarrier(req.into_owned()),
4137             #[cfg(feature = "xfixes")]
4138             Request::XfixesDeletePointerBarrier(req) => Request::XfixesDeletePointerBarrier(req),
4139             #[cfg(feature = "xinerama")]
4140             Request::XineramaQueryVersion(req) => Request::XineramaQueryVersion(req),
4141             #[cfg(feature = "xinerama")]
4142             Request::XineramaGetState(req) => Request::XineramaGetState(req),
4143             #[cfg(feature = "xinerama")]
4144             Request::XineramaGetScreenCount(req) => Request::XineramaGetScreenCount(req),
4145             #[cfg(feature = "xinerama")]
4146             Request::XineramaGetScreenSize(req) => Request::XineramaGetScreenSize(req),
4147             #[cfg(feature = "xinerama")]
4148             Request::XineramaIsActive(req) => Request::XineramaIsActive(req),
4149             #[cfg(feature = "xinerama")]
4150             Request::XineramaQueryScreens(req) => Request::XineramaQueryScreens(req),
4151             #[cfg(feature = "xinput")]
4152             Request::XinputGetExtensionVersion(req) => Request::XinputGetExtensionVersion(req.into_owned()),
4153             #[cfg(feature = "xinput")]
4154             Request::XinputListInputDevices(req) => Request::XinputListInputDevices(req),
4155             #[cfg(feature = "xinput")]
4156             Request::XinputOpenDevice(req) => Request::XinputOpenDevice(req),
4157             #[cfg(feature = "xinput")]
4158             Request::XinputCloseDevice(req) => Request::XinputCloseDevice(req),
4159             #[cfg(feature = "xinput")]
4160             Request::XinputSetDeviceMode(req) => Request::XinputSetDeviceMode(req),
4161             #[cfg(feature = "xinput")]
4162             Request::XinputSelectExtensionEvent(req) => Request::XinputSelectExtensionEvent(req.into_owned()),
4163             #[cfg(feature = "xinput")]
4164             Request::XinputGetSelectedExtensionEvents(req) => Request::XinputGetSelectedExtensionEvents(req),
4165             #[cfg(feature = "xinput")]
4166             Request::XinputChangeDeviceDontPropagateList(req) => Request::XinputChangeDeviceDontPropagateList(req.into_owned()),
4167             #[cfg(feature = "xinput")]
4168             Request::XinputGetDeviceDontPropagateList(req) => Request::XinputGetDeviceDontPropagateList(req),
4169             #[cfg(feature = "xinput")]
4170             Request::XinputGetDeviceMotionEvents(req) => Request::XinputGetDeviceMotionEvents(req),
4171             #[cfg(feature = "xinput")]
4172             Request::XinputChangeKeyboardDevice(req) => Request::XinputChangeKeyboardDevice(req),
4173             #[cfg(feature = "xinput")]
4174             Request::XinputChangePointerDevice(req) => Request::XinputChangePointerDevice(req),
4175             #[cfg(feature = "xinput")]
4176             Request::XinputGrabDevice(req) => Request::XinputGrabDevice(req.into_owned()),
4177             #[cfg(feature = "xinput")]
4178             Request::XinputUngrabDevice(req) => Request::XinputUngrabDevice(req),
4179             #[cfg(feature = "xinput")]
4180             Request::XinputGrabDeviceKey(req) => Request::XinputGrabDeviceKey(req.into_owned()),
4181             #[cfg(feature = "xinput")]
4182             Request::XinputUngrabDeviceKey(req) => Request::XinputUngrabDeviceKey(req),
4183             #[cfg(feature = "xinput")]
4184             Request::XinputGrabDeviceButton(req) => Request::XinputGrabDeviceButton(req.into_owned()),
4185             #[cfg(feature = "xinput")]
4186             Request::XinputUngrabDeviceButton(req) => Request::XinputUngrabDeviceButton(req),
4187             #[cfg(feature = "xinput")]
4188             Request::XinputAllowDeviceEvents(req) => Request::XinputAllowDeviceEvents(req),
4189             #[cfg(feature = "xinput")]
4190             Request::XinputGetDeviceFocus(req) => Request::XinputGetDeviceFocus(req),
4191             #[cfg(feature = "xinput")]
4192             Request::XinputSetDeviceFocus(req) => Request::XinputSetDeviceFocus(req),
4193             #[cfg(feature = "xinput")]
4194             Request::XinputGetFeedbackControl(req) => Request::XinputGetFeedbackControl(req),
4195             #[cfg(feature = "xinput")]
4196             Request::XinputChangeFeedbackControl(req) => Request::XinputChangeFeedbackControl(req),
4197             #[cfg(feature = "xinput")]
4198             Request::XinputGetDeviceKeyMapping(req) => Request::XinputGetDeviceKeyMapping(req),
4199             #[cfg(feature = "xinput")]
4200             Request::XinputChangeDeviceKeyMapping(req) => Request::XinputChangeDeviceKeyMapping(req.into_owned()),
4201             #[cfg(feature = "xinput")]
4202             Request::XinputGetDeviceModifierMapping(req) => Request::XinputGetDeviceModifierMapping(req),
4203             #[cfg(feature = "xinput")]
4204             Request::XinputSetDeviceModifierMapping(req) => Request::XinputSetDeviceModifierMapping(req.into_owned()),
4205             #[cfg(feature = "xinput")]
4206             Request::XinputGetDeviceButtonMapping(req) => Request::XinputGetDeviceButtonMapping(req),
4207             #[cfg(feature = "xinput")]
4208             Request::XinputSetDeviceButtonMapping(req) => Request::XinputSetDeviceButtonMapping(req.into_owned()),
4209             #[cfg(feature = "xinput")]
4210             Request::XinputQueryDeviceState(req) => Request::XinputQueryDeviceState(req),
4211             #[cfg(feature = "xinput")]
4212             Request::XinputDeviceBell(req) => Request::XinputDeviceBell(req),
4213             #[cfg(feature = "xinput")]
4214             Request::XinputSetDeviceValuators(req) => Request::XinputSetDeviceValuators(req.into_owned()),
4215             #[cfg(feature = "xinput")]
4216             Request::XinputGetDeviceControl(req) => Request::XinputGetDeviceControl(req),
4217             #[cfg(feature = "xinput")]
4218             Request::XinputChangeDeviceControl(req) => Request::XinputChangeDeviceControl(req),
4219             #[cfg(feature = "xinput")]
4220             Request::XinputListDeviceProperties(req) => Request::XinputListDeviceProperties(req),
4221             #[cfg(feature = "xinput")]
4222             Request::XinputChangeDeviceProperty(req) => Request::XinputChangeDeviceProperty(req.into_owned()),
4223             #[cfg(feature = "xinput")]
4224             Request::XinputDeleteDeviceProperty(req) => Request::XinputDeleteDeviceProperty(req),
4225             #[cfg(feature = "xinput")]
4226             Request::XinputGetDeviceProperty(req) => Request::XinputGetDeviceProperty(req),
4227             #[cfg(feature = "xinput")]
4228             Request::XinputXIQueryPointer(req) => Request::XinputXIQueryPointer(req),
4229             #[cfg(feature = "xinput")]
4230             Request::XinputXIWarpPointer(req) => Request::XinputXIWarpPointer(req),
4231             #[cfg(feature = "xinput")]
4232             Request::XinputXIChangeCursor(req) => Request::XinputXIChangeCursor(req),
4233             #[cfg(feature = "xinput")]
4234             Request::XinputXIChangeHierarchy(req) => Request::XinputXIChangeHierarchy(req.into_owned()),
4235             #[cfg(feature = "xinput")]
4236             Request::XinputXISetClientPointer(req) => Request::XinputXISetClientPointer(req),
4237             #[cfg(feature = "xinput")]
4238             Request::XinputXIGetClientPointer(req) => Request::XinputXIGetClientPointer(req),
4239             #[cfg(feature = "xinput")]
4240             Request::XinputXISelectEvents(req) => Request::XinputXISelectEvents(req.into_owned()),
4241             #[cfg(feature = "xinput")]
4242             Request::XinputXIQueryVersion(req) => Request::XinputXIQueryVersion(req),
4243             #[cfg(feature = "xinput")]
4244             Request::XinputXIQueryDevice(req) => Request::XinputXIQueryDevice(req),
4245             #[cfg(feature = "xinput")]
4246             Request::XinputXISetFocus(req) => Request::XinputXISetFocus(req),
4247             #[cfg(feature = "xinput")]
4248             Request::XinputXIGetFocus(req) => Request::XinputXIGetFocus(req),
4249             #[cfg(feature = "xinput")]
4250             Request::XinputXIGrabDevice(req) => Request::XinputXIGrabDevice(req.into_owned()),
4251             #[cfg(feature = "xinput")]
4252             Request::XinputXIUngrabDevice(req) => Request::XinputXIUngrabDevice(req),
4253             #[cfg(feature = "xinput")]
4254             Request::XinputXIAllowEvents(req) => Request::XinputXIAllowEvents(req),
4255             #[cfg(feature = "xinput")]
4256             Request::XinputXIPassiveGrabDevice(req) => Request::XinputXIPassiveGrabDevice(req.into_owned()),
4257             #[cfg(feature = "xinput")]
4258             Request::XinputXIPassiveUngrabDevice(req) => Request::XinputXIPassiveUngrabDevice(req.into_owned()),
4259             #[cfg(feature = "xinput")]
4260             Request::XinputXIListProperties(req) => Request::XinputXIListProperties(req),
4261             #[cfg(feature = "xinput")]
4262             Request::XinputXIChangeProperty(req) => Request::XinputXIChangeProperty(req.into_owned()),
4263             #[cfg(feature = "xinput")]
4264             Request::XinputXIDeleteProperty(req) => Request::XinputXIDeleteProperty(req),
4265             #[cfg(feature = "xinput")]
4266             Request::XinputXIGetProperty(req) => Request::XinputXIGetProperty(req),
4267             #[cfg(feature = "xinput")]
4268             Request::XinputXIGetSelectedEvents(req) => Request::XinputXIGetSelectedEvents(req),
4269             #[cfg(feature = "xinput")]
4270             Request::XinputXIBarrierReleasePointer(req) => Request::XinputXIBarrierReleasePointer(req.into_owned()),
4271             #[cfg(feature = "xinput")]
4272             Request::XinputSendExtensionEvent(req) => Request::XinputSendExtensionEvent(req.into_owned()),
4273             #[cfg(feature = "xkb")]
4274             Request::XkbUseExtension(req) => Request::XkbUseExtension(req),
4275             #[cfg(feature = "xkb")]
4276             Request::XkbSelectEvents(req) => Request::XkbSelectEvents(req.into_owned()),
4277             #[cfg(feature = "xkb")]
4278             Request::XkbBell(req) => Request::XkbBell(req),
4279             #[cfg(feature = "xkb")]
4280             Request::XkbGetState(req) => Request::XkbGetState(req),
4281             #[cfg(feature = "xkb")]
4282             Request::XkbLatchLockState(req) => Request::XkbLatchLockState(req),
4283             #[cfg(feature = "xkb")]
4284             Request::XkbGetControls(req) => Request::XkbGetControls(req),
4285             #[cfg(feature = "xkb")]
4286             Request::XkbSetControls(req) => Request::XkbSetControls(req.into_owned()),
4287             #[cfg(feature = "xkb")]
4288             Request::XkbGetMap(req) => Request::XkbGetMap(req),
4289             #[cfg(feature = "xkb")]
4290             Request::XkbSetMap(req) => Request::XkbSetMap(req.into_owned()),
4291             #[cfg(feature = "xkb")]
4292             Request::XkbGetCompatMap(req) => Request::XkbGetCompatMap(req),
4293             #[cfg(feature = "xkb")]
4294             Request::XkbSetCompatMap(req) => Request::XkbSetCompatMap(req.into_owned()),
4295             #[cfg(feature = "xkb")]
4296             Request::XkbGetIndicatorState(req) => Request::XkbGetIndicatorState(req),
4297             #[cfg(feature = "xkb")]
4298             Request::XkbGetIndicatorMap(req) => Request::XkbGetIndicatorMap(req),
4299             #[cfg(feature = "xkb")]
4300             Request::XkbSetIndicatorMap(req) => Request::XkbSetIndicatorMap(req.into_owned()),
4301             #[cfg(feature = "xkb")]
4302             Request::XkbGetNamedIndicator(req) => Request::XkbGetNamedIndicator(req),
4303             #[cfg(feature = "xkb")]
4304             Request::XkbSetNamedIndicator(req) => Request::XkbSetNamedIndicator(req),
4305             #[cfg(feature = "xkb")]
4306             Request::XkbGetNames(req) => Request::XkbGetNames(req),
4307             #[cfg(feature = "xkb")]
4308             Request::XkbSetNames(req) => Request::XkbSetNames(req.into_owned()),
4309             #[cfg(feature = "xkb")]
4310             Request::XkbPerClientFlags(req) => Request::XkbPerClientFlags(req),
4311             #[cfg(feature = "xkb")]
4312             Request::XkbListComponents(req) => Request::XkbListComponents(req),
4313             #[cfg(feature = "xkb")]
4314             Request::XkbGetKbdByName(req) => Request::XkbGetKbdByName(req),
4315             #[cfg(feature = "xkb")]
4316             Request::XkbGetDeviceInfo(req) => Request::XkbGetDeviceInfo(req),
4317             #[cfg(feature = "xkb")]
4318             Request::XkbSetDeviceInfo(req) => Request::XkbSetDeviceInfo(req.into_owned()),
4319             #[cfg(feature = "xkb")]
4320             Request::XkbSetDebuggingFlags(req) => Request::XkbSetDebuggingFlags(req.into_owned()),
4321             #[cfg(feature = "xprint")]
4322             Request::XprintPrintQueryVersion(req) => Request::XprintPrintQueryVersion(req),
4323             #[cfg(feature = "xprint")]
4324             Request::XprintPrintGetPrinterList(req) => Request::XprintPrintGetPrinterList(req.into_owned()),
4325             #[cfg(feature = "xprint")]
4326             Request::XprintPrintRehashPrinterList(req) => Request::XprintPrintRehashPrinterList(req),
4327             #[cfg(feature = "xprint")]
4328             Request::XprintCreateContext(req) => Request::XprintCreateContext(req.into_owned()),
4329             #[cfg(feature = "xprint")]
4330             Request::XprintPrintSetContext(req) => Request::XprintPrintSetContext(req),
4331             #[cfg(feature = "xprint")]
4332             Request::XprintPrintGetContext(req) => Request::XprintPrintGetContext(req),
4333             #[cfg(feature = "xprint")]
4334             Request::XprintPrintDestroyContext(req) => Request::XprintPrintDestroyContext(req),
4335             #[cfg(feature = "xprint")]
4336             Request::XprintPrintGetScreenOfContext(req) => Request::XprintPrintGetScreenOfContext(req),
4337             #[cfg(feature = "xprint")]
4338             Request::XprintPrintStartJob(req) => Request::XprintPrintStartJob(req),
4339             #[cfg(feature = "xprint")]
4340             Request::XprintPrintEndJob(req) => Request::XprintPrintEndJob(req),
4341             #[cfg(feature = "xprint")]
4342             Request::XprintPrintStartDoc(req) => Request::XprintPrintStartDoc(req),
4343             #[cfg(feature = "xprint")]
4344             Request::XprintPrintEndDoc(req) => Request::XprintPrintEndDoc(req),
4345             #[cfg(feature = "xprint")]
4346             Request::XprintPrintPutDocumentData(req) => Request::XprintPrintPutDocumentData(req.into_owned()),
4347             #[cfg(feature = "xprint")]
4348             Request::XprintPrintGetDocumentData(req) => Request::XprintPrintGetDocumentData(req),
4349             #[cfg(feature = "xprint")]
4350             Request::XprintPrintStartPage(req) => Request::XprintPrintStartPage(req),
4351             #[cfg(feature = "xprint")]
4352             Request::XprintPrintEndPage(req) => Request::XprintPrintEndPage(req),
4353             #[cfg(feature = "xprint")]
4354             Request::XprintPrintSelectInput(req) => Request::XprintPrintSelectInput(req),
4355             #[cfg(feature = "xprint")]
4356             Request::XprintPrintInputSelected(req) => Request::XprintPrintInputSelected(req),
4357             #[cfg(feature = "xprint")]
4358             Request::XprintPrintGetAttributes(req) => Request::XprintPrintGetAttributes(req),
4359             #[cfg(feature = "xprint")]
4360             Request::XprintPrintGetOneAttributes(req) => Request::XprintPrintGetOneAttributes(req.into_owned()),
4361             #[cfg(feature = "xprint")]
4362             Request::XprintPrintSetAttributes(req) => Request::XprintPrintSetAttributes(req.into_owned()),
4363             #[cfg(feature = "xprint")]
4364             Request::XprintPrintGetPageDimensions(req) => Request::XprintPrintGetPageDimensions(req),
4365             #[cfg(feature = "xprint")]
4366             Request::XprintPrintQueryScreens(req) => Request::XprintPrintQueryScreens(req),
4367             #[cfg(feature = "xprint")]
4368             Request::XprintPrintSetImageResolution(req) => Request::XprintPrintSetImageResolution(req),
4369             #[cfg(feature = "xprint")]
4370             Request::XprintPrintGetImageResolution(req) => Request::XprintPrintGetImageResolution(req),
4371             #[cfg(feature = "xselinux")]
4372             Request::XselinuxQueryVersion(req) => Request::XselinuxQueryVersion(req),
4373             #[cfg(feature = "xselinux")]
4374             Request::XselinuxSetDeviceCreateContext(req) => Request::XselinuxSetDeviceCreateContext(req.into_owned()),
4375             #[cfg(feature = "xselinux")]
4376             Request::XselinuxGetDeviceCreateContext(req) => Request::XselinuxGetDeviceCreateContext(req),
4377             #[cfg(feature = "xselinux")]
4378             Request::XselinuxSetDeviceContext(req) => Request::XselinuxSetDeviceContext(req.into_owned()),
4379             #[cfg(feature = "xselinux")]
4380             Request::XselinuxGetDeviceContext(req) => Request::XselinuxGetDeviceContext(req),
4381             #[cfg(feature = "xselinux")]
4382             Request::XselinuxSetWindowCreateContext(req) => Request::XselinuxSetWindowCreateContext(req.into_owned()),
4383             #[cfg(feature = "xselinux")]
4384             Request::XselinuxGetWindowCreateContext(req) => Request::XselinuxGetWindowCreateContext(req),
4385             #[cfg(feature = "xselinux")]
4386             Request::XselinuxGetWindowContext(req) => Request::XselinuxGetWindowContext(req),
4387             #[cfg(feature = "xselinux")]
4388             Request::XselinuxSetPropertyCreateContext(req) => Request::XselinuxSetPropertyCreateContext(req.into_owned()),
4389             #[cfg(feature = "xselinux")]
4390             Request::XselinuxGetPropertyCreateContext(req) => Request::XselinuxGetPropertyCreateContext(req),
4391             #[cfg(feature = "xselinux")]
4392             Request::XselinuxSetPropertyUseContext(req) => Request::XselinuxSetPropertyUseContext(req.into_owned()),
4393             #[cfg(feature = "xselinux")]
4394             Request::XselinuxGetPropertyUseContext(req) => Request::XselinuxGetPropertyUseContext(req),
4395             #[cfg(feature = "xselinux")]
4396             Request::XselinuxGetPropertyContext(req) => Request::XselinuxGetPropertyContext(req),
4397             #[cfg(feature = "xselinux")]
4398             Request::XselinuxGetPropertyDataContext(req) => Request::XselinuxGetPropertyDataContext(req),
4399             #[cfg(feature = "xselinux")]
4400             Request::XselinuxListProperties(req) => Request::XselinuxListProperties(req),
4401             #[cfg(feature = "xselinux")]
4402             Request::XselinuxSetSelectionCreateContext(req) => Request::XselinuxSetSelectionCreateContext(req.into_owned()),
4403             #[cfg(feature = "xselinux")]
4404             Request::XselinuxGetSelectionCreateContext(req) => Request::XselinuxGetSelectionCreateContext(req),
4405             #[cfg(feature = "xselinux")]
4406             Request::XselinuxSetSelectionUseContext(req) => Request::XselinuxSetSelectionUseContext(req.into_owned()),
4407             #[cfg(feature = "xselinux")]
4408             Request::XselinuxGetSelectionUseContext(req) => Request::XselinuxGetSelectionUseContext(req),
4409             #[cfg(feature = "xselinux")]
4410             Request::XselinuxGetSelectionContext(req) => Request::XselinuxGetSelectionContext(req),
4411             #[cfg(feature = "xselinux")]
4412             Request::XselinuxGetSelectionDataContext(req) => Request::XselinuxGetSelectionDataContext(req),
4413             #[cfg(feature = "xselinux")]
4414             Request::XselinuxListSelections(req) => Request::XselinuxListSelections(req),
4415             #[cfg(feature = "xselinux")]
4416             Request::XselinuxGetClientContext(req) => Request::XselinuxGetClientContext(req),
4417             #[cfg(feature = "xtest")]
4418             Request::XtestGetVersion(req) => Request::XtestGetVersion(req),
4419             #[cfg(feature = "xtest")]
4420             Request::XtestCompareCursor(req) => Request::XtestCompareCursor(req),
4421             #[cfg(feature = "xtest")]
4422             Request::XtestFakeInput(req) => Request::XtestFakeInput(req),
4423             #[cfg(feature = "xtest")]
4424             Request::XtestGrabControl(req) => Request::XtestGrabControl(req),
4425             #[cfg(feature = "xv")]
4426             Request::XvQueryExtension(req) => Request::XvQueryExtension(req),
4427             #[cfg(feature = "xv")]
4428             Request::XvQueryAdaptors(req) => Request::XvQueryAdaptors(req),
4429             #[cfg(feature = "xv")]
4430             Request::XvQueryEncodings(req) => Request::XvQueryEncodings(req),
4431             #[cfg(feature = "xv")]
4432             Request::XvGrabPort(req) => Request::XvGrabPort(req),
4433             #[cfg(feature = "xv")]
4434             Request::XvUngrabPort(req) => Request::XvUngrabPort(req),
4435             #[cfg(feature = "xv")]
4436             Request::XvPutVideo(req) => Request::XvPutVideo(req),
4437             #[cfg(feature = "xv")]
4438             Request::XvPutStill(req) => Request::XvPutStill(req),
4439             #[cfg(feature = "xv")]
4440             Request::XvGetVideo(req) => Request::XvGetVideo(req),
4441             #[cfg(feature = "xv")]
4442             Request::XvGetStill(req) => Request::XvGetStill(req),
4443             #[cfg(feature = "xv")]
4444             Request::XvStopVideo(req) => Request::XvStopVideo(req),
4445             #[cfg(feature = "xv")]
4446             Request::XvSelectVideoNotify(req) => Request::XvSelectVideoNotify(req),
4447             #[cfg(feature = "xv")]
4448             Request::XvSelectPortNotify(req) => Request::XvSelectPortNotify(req),
4449             #[cfg(feature = "xv")]
4450             Request::XvQueryBestSize(req) => Request::XvQueryBestSize(req),
4451             #[cfg(feature = "xv")]
4452             Request::XvSetPortAttribute(req) => Request::XvSetPortAttribute(req),
4453             #[cfg(feature = "xv")]
4454             Request::XvGetPortAttribute(req) => Request::XvGetPortAttribute(req),
4455             #[cfg(feature = "xv")]
4456             Request::XvQueryPortAttributes(req) => Request::XvQueryPortAttributes(req),
4457             #[cfg(feature = "xv")]
4458             Request::XvListImageFormats(req) => Request::XvListImageFormats(req),
4459             #[cfg(feature = "xv")]
4460             Request::XvQueryImageAttributes(req) => Request::XvQueryImageAttributes(req),
4461             #[cfg(feature = "xv")]
4462             Request::XvPutImage(req) => Request::XvPutImage(req.into_owned()),
4463             #[cfg(feature = "xv")]
4464             Request::XvShmPutImage(req) => Request::XvShmPutImage(req),
4465             #[cfg(feature = "xvmc")]
4466             Request::XvmcQueryVersion(req) => Request::XvmcQueryVersion(req),
4467             #[cfg(feature = "xvmc")]
4468             Request::XvmcListSurfaceTypes(req) => Request::XvmcListSurfaceTypes(req),
4469             #[cfg(feature = "xvmc")]
4470             Request::XvmcCreateContext(req) => Request::XvmcCreateContext(req),
4471             #[cfg(feature = "xvmc")]
4472             Request::XvmcDestroyContext(req) => Request::XvmcDestroyContext(req),
4473             #[cfg(feature = "xvmc")]
4474             Request::XvmcCreateSurface(req) => Request::XvmcCreateSurface(req),
4475             #[cfg(feature = "xvmc")]
4476             Request::XvmcDestroySurface(req) => Request::XvmcDestroySurface(req),
4477             #[cfg(feature = "xvmc")]
4478             Request::XvmcCreateSubpicture(req) => Request::XvmcCreateSubpicture(req),
4479             #[cfg(feature = "xvmc")]
4480             Request::XvmcDestroySubpicture(req) => Request::XvmcDestroySubpicture(req),
4481             #[cfg(feature = "xvmc")]
4482             Request::XvmcListSubpictureTypes(req) => Request::XvmcListSubpictureTypes(req),
4483         }
4484     }
4485 }
4486 
4487 /// Enumeration of all possible X11 replies.
4488 #[derive(Debug)]
4489 #[allow(clippy::large_enum_variant)]
4490 #[non_exhaustive]
4491 pub enum Reply {
4492     Void,
4493     GetWindowAttributes(xproto::GetWindowAttributesReply),
4494     GetGeometry(xproto::GetGeometryReply),
4495     QueryTree(xproto::QueryTreeReply),
4496     InternAtom(xproto::InternAtomReply),
4497     GetAtomName(xproto::GetAtomNameReply),
4498     GetProperty(xproto::GetPropertyReply),
4499     ListProperties(xproto::ListPropertiesReply),
4500     GetSelectionOwner(xproto::GetSelectionOwnerReply),
4501     GrabPointer(xproto::GrabPointerReply),
4502     GrabKeyboard(xproto::GrabKeyboardReply),
4503     QueryPointer(xproto::QueryPointerReply),
4504     GetMotionEvents(xproto::GetMotionEventsReply),
4505     TranslateCoordinates(xproto::TranslateCoordinatesReply),
4506     GetInputFocus(xproto::GetInputFocusReply),
4507     QueryKeymap(xproto::QueryKeymapReply),
4508     QueryFont(xproto::QueryFontReply),
4509     QueryTextExtents(xproto::QueryTextExtentsReply),
4510     ListFonts(xproto::ListFontsReply),
4511     ListFontsWithInfo(xproto::ListFontsWithInfoReply),
4512     GetFontPath(xproto::GetFontPathReply),
4513     GetImage(xproto::GetImageReply),
4514     ListInstalledColormaps(xproto::ListInstalledColormapsReply),
4515     AllocColor(xproto::AllocColorReply),
4516     AllocNamedColor(xproto::AllocNamedColorReply),
4517     AllocColorCells(xproto::AllocColorCellsReply),
4518     AllocColorPlanes(xproto::AllocColorPlanesReply),
4519     QueryColors(xproto::QueryColorsReply),
4520     LookupColor(xproto::LookupColorReply),
4521     QueryBestSize(xproto::QueryBestSizeReply),
4522     QueryExtension(xproto::QueryExtensionReply),
4523     ListExtensions(xproto::ListExtensionsReply),
4524     GetKeyboardMapping(xproto::GetKeyboardMappingReply),
4525     GetKeyboardControl(xproto::GetKeyboardControlReply),
4526     GetPointerControl(xproto::GetPointerControlReply),
4527     GetScreenSaver(xproto::GetScreenSaverReply),
4528     ListHosts(xproto::ListHostsReply),
4529     SetPointerMapping(xproto::SetPointerMappingReply),
4530     GetPointerMapping(xproto::GetPointerMappingReply),
4531     SetModifierMapping(xproto::SetModifierMappingReply),
4532     GetModifierMapping(xproto::GetModifierMappingReply),
4533     BigreqEnable(bigreq::EnableReply),
4534     #[cfg(feature = "composite")]
4535     CompositeQueryVersion(composite::QueryVersionReply),
4536     #[cfg(feature = "composite")]
4537     CompositeGetOverlayWindow(composite::GetOverlayWindowReply),
4538     #[cfg(feature = "damage")]
4539     DamageQueryVersion(damage::QueryVersionReply),
4540     #[cfg(feature = "dpms")]
4541     DpmsGetVersion(dpms::GetVersionReply),
4542     #[cfg(feature = "dpms")]
4543     DpmsCapable(dpms::CapableReply),
4544     #[cfg(feature = "dpms")]
4545     DpmsGetTimeouts(dpms::GetTimeoutsReply),
4546     #[cfg(feature = "dpms")]
4547     DpmsInfo(dpms::InfoReply),
4548     #[cfg(feature = "dri2")]
4549     Dri2QueryVersion(dri2::QueryVersionReply),
4550     #[cfg(feature = "dri2")]
4551     Dri2Connect(dri2::ConnectReply),
4552     #[cfg(feature = "dri2")]
4553     Dri2Authenticate(dri2::AuthenticateReply),
4554     #[cfg(feature = "dri2")]
4555     Dri2GetBuffers(dri2::GetBuffersReply),
4556     #[cfg(feature = "dri2")]
4557     Dri2CopyRegion(dri2::CopyRegionReply),
4558     #[cfg(feature = "dri2")]
4559     Dri2GetBuffersWithFormat(dri2::GetBuffersWithFormatReply),
4560     #[cfg(feature = "dri2")]
4561     Dri2SwapBuffers(dri2::SwapBuffersReply),
4562     #[cfg(feature = "dri2")]
4563     Dri2GetMSC(dri2::GetMSCReply),
4564     #[cfg(feature = "dri2")]
4565     Dri2WaitMSC(dri2::WaitMSCReply),
4566     #[cfg(feature = "dri2")]
4567     Dri2WaitSBC(dri2::WaitSBCReply),
4568     #[cfg(feature = "dri2")]
4569     Dri2GetParam(dri2::GetParamReply),
4570     #[cfg(feature = "dri3")]
4571     Dri3QueryVersion(dri3::QueryVersionReply),
4572     #[cfg(feature = "dri3")]
4573     Dri3Open(dri3::OpenReply),
4574     #[cfg(feature = "dri3")]
4575     Dri3BufferFromPixmap(dri3::BufferFromPixmapReply),
4576     #[cfg(feature = "dri3")]
4577     Dri3FDFromFence(dri3::FDFromFenceReply),
4578     #[cfg(feature = "dri3")]
4579     Dri3GetSupportedModifiers(dri3::GetSupportedModifiersReply),
4580     #[cfg(feature = "dri3")]
4581     Dri3BuffersFromPixmap(dri3::BuffersFromPixmapReply),
4582     GeQueryVersion(ge::QueryVersionReply),
4583     #[cfg(feature = "glx")]
4584     GlxMakeCurrent(glx::MakeCurrentReply),
4585     #[cfg(feature = "glx")]
4586     GlxIsDirect(glx::IsDirectReply),
4587     #[cfg(feature = "glx")]
4588     GlxQueryVersion(glx::QueryVersionReply),
4589     #[cfg(feature = "glx")]
4590     GlxGetVisualConfigs(glx::GetVisualConfigsReply),
4591     #[cfg(feature = "glx")]
4592     GlxVendorPrivateWithReply(glx::VendorPrivateWithReplyReply),
4593     #[cfg(feature = "glx")]
4594     GlxQueryExtensionsString(glx::QueryExtensionsStringReply),
4595     #[cfg(feature = "glx")]
4596     GlxQueryServerString(glx::QueryServerStringReply),
4597     #[cfg(feature = "glx")]
4598     GlxGetFBConfigs(glx::GetFBConfigsReply),
4599     #[cfg(feature = "glx")]
4600     GlxQueryContext(glx::QueryContextReply),
4601     #[cfg(feature = "glx")]
4602     GlxMakeContextCurrent(glx::MakeContextCurrentReply),
4603     #[cfg(feature = "glx")]
4604     GlxGetDrawableAttributes(glx::GetDrawableAttributesReply),
4605     #[cfg(feature = "glx")]
4606     GlxGenLists(glx::GenListsReply),
4607     #[cfg(feature = "glx")]
4608     GlxRenderMode(glx::RenderModeReply),
4609     #[cfg(feature = "glx")]
4610     GlxFinish(glx::FinishReply),
4611     #[cfg(feature = "glx")]
4612     GlxReadPixels(glx::ReadPixelsReply),
4613     #[cfg(feature = "glx")]
4614     GlxGetBooleanv(glx::GetBooleanvReply),
4615     #[cfg(feature = "glx")]
4616     GlxGetClipPlane(glx::GetClipPlaneReply),
4617     #[cfg(feature = "glx")]
4618     GlxGetDoublev(glx::GetDoublevReply),
4619     #[cfg(feature = "glx")]
4620     GlxGetError(glx::GetErrorReply),
4621     #[cfg(feature = "glx")]
4622     GlxGetFloatv(glx::GetFloatvReply),
4623     #[cfg(feature = "glx")]
4624     GlxGetIntegerv(glx::GetIntegervReply),
4625     #[cfg(feature = "glx")]
4626     GlxGetLightfv(glx::GetLightfvReply),
4627     #[cfg(feature = "glx")]
4628     GlxGetLightiv(glx::GetLightivReply),
4629     #[cfg(feature = "glx")]
4630     GlxGetMapdv(glx::GetMapdvReply),
4631     #[cfg(feature = "glx")]
4632     GlxGetMapfv(glx::GetMapfvReply),
4633     #[cfg(feature = "glx")]
4634     GlxGetMapiv(glx::GetMapivReply),
4635     #[cfg(feature = "glx")]
4636     GlxGetMaterialfv(glx::GetMaterialfvReply),
4637     #[cfg(feature = "glx")]
4638     GlxGetMaterialiv(glx::GetMaterialivReply),
4639     #[cfg(feature = "glx")]
4640     GlxGetPixelMapfv(glx::GetPixelMapfvReply),
4641     #[cfg(feature = "glx")]
4642     GlxGetPixelMapuiv(glx::GetPixelMapuivReply),
4643     #[cfg(feature = "glx")]
4644     GlxGetPixelMapusv(glx::GetPixelMapusvReply),
4645     #[cfg(feature = "glx")]
4646     GlxGetPolygonStipple(glx::GetPolygonStippleReply),
4647     #[cfg(feature = "glx")]
4648     GlxGetString(glx::GetStringReply),
4649     #[cfg(feature = "glx")]
4650     GlxGetTexEnvfv(glx::GetTexEnvfvReply),
4651     #[cfg(feature = "glx")]
4652     GlxGetTexEnviv(glx::GetTexEnvivReply),
4653     #[cfg(feature = "glx")]
4654     GlxGetTexGendv(glx::GetTexGendvReply),
4655     #[cfg(feature = "glx")]
4656     GlxGetTexGenfv(glx::GetTexGenfvReply),
4657     #[cfg(feature = "glx")]
4658     GlxGetTexGeniv(glx::GetTexGenivReply),
4659     #[cfg(feature = "glx")]
4660     GlxGetTexImage(glx::GetTexImageReply),
4661     #[cfg(feature = "glx")]
4662     GlxGetTexParameterfv(glx::GetTexParameterfvReply),
4663     #[cfg(feature = "glx")]
4664     GlxGetTexParameteriv(glx::GetTexParameterivReply),
4665     #[cfg(feature = "glx")]
4666     GlxGetTexLevelParameterfv(glx::GetTexLevelParameterfvReply),
4667     #[cfg(feature = "glx")]
4668     GlxGetTexLevelParameteriv(glx::GetTexLevelParameterivReply),
4669     #[cfg(feature = "glx")]
4670     GlxIsEnabled(glx::IsEnabledReply),
4671     #[cfg(feature = "glx")]
4672     GlxIsList(glx::IsListReply),
4673     #[cfg(feature = "glx")]
4674     GlxAreTexturesResident(glx::AreTexturesResidentReply),
4675     #[cfg(feature = "glx")]
4676     GlxGenTextures(glx::GenTexturesReply),
4677     #[cfg(feature = "glx")]
4678     GlxIsTexture(glx::IsTextureReply),
4679     #[cfg(feature = "glx")]
4680     GlxGetColorTable(glx::GetColorTableReply),
4681     #[cfg(feature = "glx")]
4682     GlxGetColorTableParameterfv(glx::GetColorTableParameterfvReply),
4683     #[cfg(feature = "glx")]
4684     GlxGetColorTableParameteriv(glx::GetColorTableParameterivReply),
4685     #[cfg(feature = "glx")]
4686     GlxGetConvolutionFilter(glx::GetConvolutionFilterReply),
4687     #[cfg(feature = "glx")]
4688     GlxGetConvolutionParameterfv(glx::GetConvolutionParameterfvReply),
4689     #[cfg(feature = "glx")]
4690     GlxGetConvolutionParameteriv(glx::GetConvolutionParameterivReply),
4691     #[cfg(feature = "glx")]
4692     GlxGetSeparableFilter(glx::GetSeparableFilterReply),
4693     #[cfg(feature = "glx")]
4694     GlxGetHistogram(glx::GetHistogramReply),
4695     #[cfg(feature = "glx")]
4696     GlxGetHistogramParameterfv(glx::GetHistogramParameterfvReply),
4697     #[cfg(feature = "glx")]
4698     GlxGetHistogramParameteriv(glx::GetHistogramParameterivReply),
4699     #[cfg(feature = "glx")]
4700     GlxGetMinmax(glx::GetMinmaxReply),
4701     #[cfg(feature = "glx")]
4702     GlxGetMinmaxParameterfv(glx::GetMinmaxParameterfvReply),
4703     #[cfg(feature = "glx")]
4704     GlxGetMinmaxParameteriv(glx::GetMinmaxParameterivReply),
4705     #[cfg(feature = "glx")]
4706     GlxGetCompressedTexImageARB(glx::GetCompressedTexImageARBReply),
4707     #[cfg(feature = "glx")]
4708     GlxGenQueriesARB(glx::GenQueriesARBReply),
4709     #[cfg(feature = "glx")]
4710     GlxIsQueryARB(glx::IsQueryARBReply),
4711     #[cfg(feature = "glx")]
4712     GlxGetQueryivARB(glx::GetQueryivARBReply),
4713     #[cfg(feature = "glx")]
4714     GlxGetQueryObjectivARB(glx::GetQueryObjectivARBReply),
4715     #[cfg(feature = "glx")]
4716     GlxGetQueryObjectuivARB(glx::GetQueryObjectuivARBReply),
4717     #[cfg(feature = "present")]
4718     PresentQueryVersion(present::QueryVersionReply),
4719     #[cfg(feature = "present")]
4720     PresentQueryCapabilities(present::QueryCapabilitiesReply),
4721     #[cfg(feature = "randr")]
4722     RandrQueryVersion(randr::QueryVersionReply),
4723     #[cfg(feature = "randr")]
4724     RandrSetScreenConfig(randr::SetScreenConfigReply),
4725     #[cfg(feature = "randr")]
4726     RandrGetScreenInfo(randr::GetScreenInfoReply),
4727     #[cfg(feature = "randr")]
4728     RandrGetScreenSizeRange(randr::GetScreenSizeRangeReply),
4729     #[cfg(feature = "randr")]
4730     RandrGetScreenResources(randr::GetScreenResourcesReply),
4731     #[cfg(feature = "randr")]
4732     RandrGetOutputInfo(randr::GetOutputInfoReply),
4733     #[cfg(feature = "randr")]
4734     RandrListOutputProperties(randr::ListOutputPropertiesReply),
4735     #[cfg(feature = "randr")]
4736     RandrQueryOutputProperty(randr::QueryOutputPropertyReply),
4737     #[cfg(feature = "randr")]
4738     RandrGetOutputProperty(randr::GetOutputPropertyReply),
4739     #[cfg(feature = "randr")]
4740     RandrCreateMode(randr::CreateModeReply),
4741     #[cfg(feature = "randr")]
4742     RandrGetCrtcInfo(randr::GetCrtcInfoReply),
4743     #[cfg(feature = "randr")]
4744     RandrSetCrtcConfig(randr::SetCrtcConfigReply),
4745     #[cfg(feature = "randr")]
4746     RandrGetCrtcGammaSize(randr::GetCrtcGammaSizeReply),
4747     #[cfg(feature = "randr")]
4748     RandrGetCrtcGamma(randr::GetCrtcGammaReply),
4749     #[cfg(feature = "randr")]
4750     RandrGetScreenResourcesCurrent(randr::GetScreenResourcesCurrentReply),
4751     #[cfg(feature = "randr")]
4752     RandrGetCrtcTransform(randr::GetCrtcTransformReply),
4753     #[cfg(feature = "randr")]
4754     RandrGetPanning(randr::GetPanningReply),
4755     #[cfg(feature = "randr")]
4756     RandrSetPanning(randr::SetPanningReply),
4757     #[cfg(feature = "randr")]
4758     RandrGetOutputPrimary(randr::GetOutputPrimaryReply),
4759     #[cfg(feature = "randr")]
4760     RandrGetProviders(randr::GetProvidersReply),
4761     #[cfg(feature = "randr")]
4762     RandrGetProviderInfo(randr::GetProviderInfoReply),
4763     #[cfg(feature = "randr")]
4764     RandrListProviderProperties(randr::ListProviderPropertiesReply),
4765     #[cfg(feature = "randr")]
4766     RandrQueryProviderProperty(randr::QueryProviderPropertyReply),
4767     #[cfg(feature = "randr")]
4768     RandrGetProviderProperty(randr::GetProviderPropertyReply),
4769     #[cfg(feature = "randr")]
4770     RandrGetMonitors(randr::GetMonitorsReply),
4771     #[cfg(feature = "randr")]
4772     RandrCreateLease(randr::CreateLeaseReply),
4773     #[cfg(feature = "record")]
4774     RecordQueryVersion(record::QueryVersionReply),
4775     #[cfg(feature = "record")]
4776     RecordGetContext(record::GetContextReply),
4777     #[cfg(feature = "record")]
4778     RecordEnableContext(record::EnableContextReply),
4779     #[cfg(feature = "render")]
4780     RenderQueryVersion(render::QueryVersionReply),
4781     #[cfg(feature = "render")]
4782     RenderQueryPictFormats(render::QueryPictFormatsReply),
4783     #[cfg(feature = "render")]
4784     RenderQueryPictIndexValues(render::QueryPictIndexValuesReply),
4785     #[cfg(feature = "render")]
4786     RenderQueryFilters(render::QueryFiltersReply),
4787     #[cfg(feature = "res")]
4788     ResQueryVersion(res::QueryVersionReply),
4789     #[cfg(feature = "res")]
4790     ResQueryClients(res::QueryClientsReply),
4791     #[cfg(feature = "res")]
4792     ResQueryClientResources(res::QueryClientResourcesReply),
4793     #[cfg(feature = "res")]
4794     ResQueryClientPixmapBytes(res::QueryClientPixmapBytesReply),
4795     #[cfg(feature = "res")]
4796     ResQueryClientIds(res::QueryClientIdsReply),
4797     #[cfg(feature = "res")]
4798     ResQueryResourceBytes(res::QueryResourceBytesReply),
4799     #[cfg(feature = "screensaver")]
4800     ScreensaverQueryVersion(screensaver::QueryVersionReply),
4801     #[cfg(feature = "screensaver")]
4802     ScreensaverQueryInfo(screensaver::QueryInfoReply),
4803     #[cfg(feature = "shape")]
4804     ShapeQueryVersion(shape::QueryVersionReply),
4805     #[cfg(feature = "shape")]
4806     ShapeQueryExtents(shape::QueryExtentsReply),
4807     #[cfg(feature = "shape")]
4808     ShapeInputSelected(shape::InputSelectedReply),
4809     #[cfg(feature = "shape")]
4810     ShapeGetRectangles(shape::GetRectanglesReply),
4811     #[cfg(feature = "shm")]
4812     ShmQueryVersion(shm::QueryVersionReply),
4813     #[cfg(feature = "shm")]
4814     ShmGetImage(shm::GetImageReply),
4815     #[cfg(feature = "shm")]
4816     ShmCreateSegment(shm::CreateSegmentReply),
4817     #[cfg(feature = "sync")]
4818     SyncInitialize(sync::InitializeReply),
4819     #[cfg(feature = "sync")]
4820     SyncListSystemCounters(sync::ListSystemCountersReply),
4821     #[cfg(feature = "sync")]
4822     SyncQueryCounter(sync::QueryCounterReply),
4823     #[cfg(feature = "sync")]
4824     SyncQueryAlarm(sync::QueryAlarmReply),
4825     #[cfg(feature = "sync")]
4826     SyncGetPriority(sync::GetPriorityReply),
4827     #[cfg(feature = "sync")]
4828     SyncQueryFence(sync::QueryFenceReply),
4829     XcMiscGetVersion(xc_misc::GetVersionReply),
4830     XcMiscGetXIDRange(xc_misc::GetXIDRangeReply),
4831     XcMiscGetXIDList(xc_misc::GetXIDListReply),
4832     #[cfg(feature = "xevie")]
4833     XevieQueryVersion(xevie::QueryVersionReply),
4834     #[cfg(feature = "xevie")]
4835     XevieStart(xevie::StartReply),
4836     #[cfg(feature = "xevie")]
4837     XevieEnd(xevie::EndReply),
4838     #[cfg(feature = "xevie")]
4839     XevieSend(xevie::SendReply),
4840     #[cfg(feature = "xevie")]
4841     XevieSelectInput(xevie::SelectInputReply),
4842     #[cfg(feature = "xf86dri")]
4843     Xf86driQueryVersion(xf86dri::QueryVersionReply),
4844     #[cfg(feature = "xf86dri")]
4845     Xf86driQueryDirectRenderingCapable(xf86dri::QueryDirectRenderingCapableReply),
4846     #[cfg(feature = "xf86dri")]
4847     Xf86driOpenConnection(xf86dri::OpenConnectionReply),
4848     #[cfg(feature = "xf86dri")]
4849     Xf86driGetClientDriverName(xf86dri::GetClientDriverNameReply),
4850     #[cfg(feature = "xf86dri")]
4851     Xf86driCreateContext(xf86dri::CreateContextReply),
4852     #[cfg(feature = "xf86dri")]
4853     Xf86driCreateDrawable(xf86dri::CreateDrawableReply),
4854     #[cfg(feature = "xf86dri")]
4855     Xf86driGetDrawableInfo(xf86dri::GetDrawableInfoReply),
4856     #[cfg(feature = "xf86dri")]
4857     Xf86driGetDeviceInfo(xf86dri::GetDeviceInfoReply),
4858     #[cfg(feature = "xf86dri")]
4859     Xf86driAuthConnection(xf86dri::AuthConnectionReply),
4860     #[cfg(feature = "xf86vidmode")]
4861     Xf86vidmodeQueryVersion(xf86vidmode::QueryVersionReply),
4862     #[cfg(feature = "xf86vidmode")]
4863     Xf86vidmodeGetModeLine(xf86vidmode::GetModeLineReply),
4864     #[cfg(feature = "xf86vidmode")]
4865     Xf86vidmodeGetMonitor(xf86vidmode::GetMonitorReply),
4866     #[cfg(feature = "xf86vidmode")]
4867     Xf86vidmodeGetAllModeLines(xf86vidmode::GetAllModeLinesReply),
4868     #[cfg(feature = "xf86vidmode")]
4869     Xf86vidmodeValidateModeLine(xf86vidmode::ValidateModeLineReply),
4870     #[cfg(feature = "xf86vidmode")]
4871     Xf86vidmodeGetViewPort(xf86vidmode::GetViewPortReply),
4872     #[cfg(feature = "xf86vidmode")]
4873     Xf86vidmodeGetDotClocks(xf86vidmode::GetDotClocksReply),
4874     #[cfg(feature = "xf86vidmode")]
4875     Xf86vidmodeGetGamma(xf86vidmode::GetGammaReply),
4876     #[cfg(feature = "xf86vidmode")]
4877     Xf86vidmodeGetGammaRamp(xf86vidmode::GetGammaRampReply),
4878     #[cfg(feature = "xf86vidmode")]
4879     Xf86vidmodeGetGammaRampSize(xf86vidmode::GetGammaRampSizeReply),
4880     #[cfg(feature = "xf86vidmode")]
4881     Xf86vidmodeGetPermissions(xf86vidmode::GetPermissionsReply),
4882     #[cfg(feature = "xfixes")]
4883     XfixesQueryVersion(xfixes::QueryVersionReply),
4884     #[cfg(feature = "xfixes")]
4885     XfixesGetCursorImage(xfixes::GetCursorImageReply),
4886     #[cfg(feature = "xfixes")]
4887     XfixesFetchRegion(xfixes::FetchRegionReply),
4888     #[cfg(feature = "xfixes")]
4889     XfixesGetCursorName(xfixes::GetCursorNameReply),
4890     #[cfg(feature = "xfixes")]
4891     XfixesGetCursorImageAndName(xfixes::GetCursorImageAndNameReply),
4892     #[cfg(feature = "xinerama")]
4893     XineramaQueryVersion(xinerama::QueryVersionReply),
4894     #[cfg(feature = "xinerama")]
4895     XineramaGetState(xinerama::GetStateReply),
4896     #[cfg(feature = "xinerama")]
4897     XineramaGetScreenCount(xinerama::GetScreenCountReply),
4898     #[cfg(feature = "xinerama")]
4899     XineramaGetScreenSize(xinerama::GetScreenSizeReply),
4900     #[cfg(feature = "xinerama")]
4901     XineramaIsActive(xinerama::IsActiveReply),
4902     #[cfg(feature = "xinerama")]
4903     XineramaQueryScreens(xinerama::QueryScreensReply),
4904     #[cfg(feature = "xinput")]
4905     XinputGetExtensionVersion(xinput::GetExtensionVersionReply),
4906     #[cfg(feature = "xinput")]
4907     XinputListInputDevices(xinput::ListInputDevicesReply),
4908     #[cfg(feature = "xinput")]
4909     XinputOpenDevice(xinput::OpenDeviceReply),
4910     #[cfg(feature = "xinput")]
4911     XinputSetDeviceMode(xinput::SetDeviceModeReply),
4912     #[cfg(feature = "xinput")]
4913     XinputGetSelectedExtensionEvents(xinput::GetSelectedExtensionEventsReply),
4914     #[cfg(feature = "xinput")]
4915     XinputGetDeviceDontPropagateList(xinput::GetDeviceDontPropagateListReply),
4916     #[cfg(feature = "xinput")]
4917     XinputGetDeviceMotionEvents(xinput::GetDeviceMotionEventsReply),
4918     #[cfg(feature = "xinput")]
4919     XinputChangeKeyboardDevice(xinput::ChangeKeyboardDeviceReply),
4920     #[cfg(feature = "xinput")]
4921     XinputChangePointerDevice(xinput::ChangePointerDeviceReply),
4922     #[cfg(feature = "xinput")]
4923     XinputGrabDevice(xinput::GrabDeviceReply),
4924     #[cfg(feature = "xinput")]
4925     XinputGetDeviceFocus(xinput::GetDeviceFocusReply),
4926     #[cfg(feature = "xinput")]
4927     XinputGetFeedbackControl(xinput::GetFeedbackControlReply),
4928     #[cfg(feature = "xinput")]
4929     XinputGetDeviceKeyMapping(xinput::GetDeviceKeyMappingReply),
4930     #[cfg(feature = "xinput")]
4931     XinputGetDeviceModifierMapping(xinput::GetDeviceModifierMappingReply),
4932     #[cfg(feature = "xinput")]
4933     XinputSetDeviceModifierMapping(xinput::SetDeviceModifierMappingReply),
4934     #[cfg(feature = "xinput")]
4935     XinputGetDeviceButtonMapping(xinput::GetDeviceButtonMappingReply),
4936     #[cfg(feature = "xinput")]
4937     XinputSetDeviceButtonMapping(xinput::SetDeviceButtonMappingReply),
4938     #[cfg(feature = "xinput")]
4939     XinputQueryDeviceState(xinput::QueryDeviceStateReply),
4940     #[cfg(feature = "xinput")]
4941     XinputSetDeviceValuators(xinput::SetDeviceValuatorsReply),
4942     #[cfg(feature = "xinput")]
4943     XinputGetDeviceControl(xinput::GetDeviceControlReply),
4944     #[cfg(feature = "xinput")]
4945     XinputChangeDeviceControl(xinput::ChangeDeviceControlReply),
4946     #[cfg(feature = "xinput")]
4947     XinputListDeviceProperties(xinput::ListDevicePropertiesReply),
4948     #[cfg(feature = "xinput")]
4949     XinputGetDeviceProperty(xinput::GetDevicePropertyReply),
4950     #[cfg(feature = "xinput")]
4951     XinputXIQueryPointer(xinput::XIQueryPointerReply),
4952     #[cfg(feature = "xinput")]
4953     XinputXIGetClientPointer(xinput::XIGetClientPointerReply),
4954     #[cfg(feature = "xinput")]
4955     XinputXIQueryVersion(xinput::XIQueryVersionReply),
4956     #[cfg(feature = "xinput")]
4957     XinputXIQueryDevice(xinput::XIQueryDeviceReply),
4958     #[cfg(feature = "xinput")]
4959     XinputXIGetFocus(xinput::XIGetFocusReply),
4960     #[cfg(feature = "xinput")]
4961     XinputXIGrabDevice(xinput::XIGrabDeviceReply),
4962     #[cfg(feature = "xinput")]
4963     XinputXIPassiveGrabDevice(xinput::XIPassiveGrabDeviceReply),
4964     #[cfg(feature = "xinput")]
4965     XinputXIListProperties(xinput::XIListPropertiesReply),
4966     #[cfg(feature = "xinput")]
4967     XinputXIGetProperty(xinput::XIGetPropertyReply),
4968     #[cfg(feature = "xinput")]
4969     XinputXIGetSelectedEvents(xinput::XIGetSelectedEventsReply),
4970     #[cfg(feature = "xkb")]
4971     XkbUseExtension(xkb::UseExtensionReply),
4972     #[cfg(feature = "xkb")]
4973     XkbGetState(xkb::GetStateReply),
4974     #[cfg(feature = "xkb")]
4975     XkbGetControls(xkb::GetControlsReply),
4976     #[cfg(feature = "xkb")]
4977     XkbGetMap(xkb::GetMapReply),
4978     #[cfg(feature = "xkb")]
4979     XkbGetCompatMap(xkb::GetCompatMapReply),
4980     #[cfg(feature = "xkb")]
4981     XkbGetIndicatorState(xkb::GetIndicatorStateReply),
4982     #[cfg(feature = "xkb")]
4983     XkbGetIndicatorMap(xkb::GetIndicatorMapReply),
4984     #[cfg(feature = "xkb")]
4985     XkbGetNamedIndicator(xkb::GetNamedIndicatorReply),
4986     #[cfg(feature = "xkb")]
4987     XkbGetNames(xkb::GetNamesReply),
4988     #[cfg(feature = "xkb")]
4989     XkbPerClientFlags(xkb::PerClientFlagsReply),
4990     #[cfg(feature = "xkb")]
4991     XkbListComponents(xkb::ListComponentsReply),
4992     #[cfg(feature = "xkb")]
4993     XkbGetKbdByName(xkb::GetKbdByNameReply),
4994     #[cfg(feature = "xkb")]
4995     XkbGetDeviceInfo(xkb::GetDeviceInfoReply),
4996     #[cfg(feature = "xkb")]
4997     XkbSetDebuggingFlags(xkb::SetDebuggingFlagsReply),
4998     #[cfg(feature = "xprint")]
4999     XprintPrintQueryVersion(xprint::PrintQueryVersionReply),
5000     #[cfg(feature = "xprint")]
5001     XprintPrintGetPrinterList(xprint::PrintGetPrinterListReply),
5002     #[cfg(feature = "xprint")]
5003     XprintPrintGetContext(xprint::PrintGetContextReply),
5004     #[cfg(feature = "xprint")]
5005     XprintPrintGetScreenOfContext(xprint::PrintGetScreenOfContextReply),
5006     #[cfg(feature = "xprint")]
5007     XprintPrintGetDocumentData(xprint::PrintGetDocumentDataReply),
5008     #[cfg(feature = "xprint")]
5009     XprintPrintInputSelected(xprint::PrintInputSelectedReply),
5010     #[cfg(feature = "xprint")]
5011     XprintPrintGetAttributes(xprint::PrintGetAttributesReply),
5012     #[cfg(feature = "xprint")]
5013     XprintPrintGetOneAttributes(xprint::PrintGetOneAttributesReply),
5014     #[cfg(feature = "xprint")]
5015     XprintPrintGetPageDimensions(xprint::PrintGetPageDimensionsReply),
5016     #[cfg(feature = "xprint")]
5017     XprintPrintQueryScreens(xprint::PrintQueryScreensReply),
5018     #[cfg(feature = "xprint")]
5019     XprintPrintSetImageResolution(xprint::PrintSetImageResolutionReply),
5020     #[cfg(feature = "xprint")]
5021     XprintPrintGetImageResolution(xprint::PrintGetImageResolutionReply),
5022     #[cfg(feature = "xselinux")]
5023     XselinuxQueryVersion(xselinux::QueryVersionReply),
5024     #[cfg(feature = "xselinux")]
5025     XselinuxGetDeviceCreateContext(xselinux::GetDeviceCreateContextReply),
5026     #[cfg(feature = "xselinux")]
5027     XselinuxGetDeviceContext(xselinux::GetDeviceContextReply),
5028     #[cfg(feature = "xselinux")]
5029     XselinuxGetWindowCreateContext(xselinux::GetWindowCreateContextReply),
5030     #[cfg(feature = "xselinux")]
5031     XselinuxGetWindowContext(xselinux::GetWindowContextReply),
5032     #[cfg(feature = "xselinux")]
5033     XselinuxGetPropertyCreateContext(xselinux::GetPropertyCreateContextReply),
5034     #[cfg(feature = "xselinux")]
5035     XselinuxGetPropertyUseContext(xselinux::GetPropertyUseContextReply),
5036     #[cfg(feature = "xselinux")]
5037     XselinuxGetPropertyContext(xselinux::GetPropertyContextReply),
5038     #[cfg(feature = "xselinux")]
5039     XselinuxGetPropertyDataContext(xselinux::GetPropertyDataContextReply),
5040     #[cfg(feature = "xselinux")]
5041     XselinuxListProperties(xselinux::ListPropertiesReply),
5042     #[cfg(feature = "xselinux")]
5043     XselinuxGetSelectionCreateContext(xselinux::GetSelectionCreateContextReply),
5044     #[cfg(feature = "xselinux")]
5045     XselinuxGetSelectionUseContext(xselinux::GetSelectionUseContextReply),
5046     #[cfg(feature = "xselinux")]
5047     XselinuxGetSelectionContext(xselinux::GetSelectionContextReply),
5048     #[cfg(feature = "xselinux")]
5049     XselinuxGetSelectionDataContext(xselinux::GetSelectionDataContextReply),
5050     #[cfg(feature = "xselinux")]
5051     XselinuxListSelections(xselinux::ListSelectionsReply),
5052     #[cfg(feature = "xselinux")]
5053     XselinuxGetClientContext(xselinux::GetClientContextReply),
5054     #[cfg(feature = "xtest")]
5055     XtestGetVersion(xtest::GetVersionReply),
5056     #[cfg(feature = "xtest")]
5057     XtestCompareCursor(xtest::CompareCursorReply),
5058     #[cfg(feature = "xv")]
5059     XvQueryExtension(xv::QueryExtensionReply),
5060     #[cfg(feature = "xv")]
5061     XvQueryAdaptors(xv::QueryAdaptorsReply),
5062     #[cfg(feature = "xv")]
5063     XvQueryEncodings(xv::QueryEncodingsReply),
5064     #[cfg(feature = "xv")]
5065     XvGrabPort(xv::GrabPortReply),
5066     #[cfg(feature = "xv")]
5067     XvQueryBestSize(xv::QueryBestSizeReply),
5068     #[cfg(feature = "xv")]
5069     XvGetPortAttribute(xv::GetPortAttributeReply),
5070     #[cfg(feature = "xv")]
5071     XvQueryPortAttributes(xv::QueryPortAttributesReply),
5072     #[cfg(feature = "xv")]
5073     XvListImageFormats(xv::ListImageFormatsReply),
5074     #[cfg(feature = "xv")]
5075     XvQueryImageAttributes(xv::QueryImageAttributesReply),
5076     #[cfg(feature = "xvmc")]
5077     XvmcQueryVersion(xvmc::QueryVersionReply),
5078     #[cfg(feature = "xvmc")]
5079     XvmcListSurfaceTypes(xvmc::ListSurfaceTypesReply),
5080     #[cfg(feature = "xvmc")]
5081     XvmcCreateContext(xvmc::CreateContextReply),
5082     #[cfg(feature = "xvmc")]
5083     XvmcCreateSurface(xvmc::CreateSurfaceReply),
5084     #[cfg(feature = "xvmc")]
5085     XvmcCreateSubpicture(xvmc::CreateSubpictureReply),
5086     #[cfg(feature = "xvmc")]
5087     XvmcListSubpictureTypes(xvmc::ListSubpictureTypesReply),
5088 }
5089 impl From<()> for Reply {
from(_: ()) -> Reply5090     fn from(_: ()) -> Reply {
5091         Reply::Void
5092     }
5093 }
5094 impl From<xproto::GetWindowAttributesReply> for Reply {
from(reply: xproto::GetWindowAttributesReply) -> Reply5095   fn from(reply: xproto::GetWindowAttributesReply) -> Reply {
5096     Reply::GetWindowAttributes(reply)
5097   }
5098 }
5099 impl From<xproto::GetGeometryReply> for Reply {
from(reply: xproto::GetGeometryReply) -> Reply5100   fn from(reply: xproto::GetGeometryReply) -> Reply {
5101     Reply::GetGeometry(reply)
5102   }
5103 }
5104 impl From<xproto::QueryTreeReply> for Reply {
from(reply: xproto::QueryTreeReply) -> Reply5105   fn from(reply: xproto::QueryTreeReply) -> Reply {
5106     Reply::QueryTree(reply)
5107   }
5108 }
5109 impl From<xproto::InternAtomReply> for Reply {
from(reply: xproto::InternAtomReply) -> Reply5110   fn from(reply: xproto::InternAtomReply) -> Reply {
5111     Reply::InternAtom(reply)
5112   }
5113 }
5114 impl From<xproto::GetAtomNameReply> for Reply {
from(reply: xproto::GetAtomNameReply) -> Reply5115   fn from(reply: xproto::GetAtomNameReply) -> Reply {
5116     Reply::GetAtomName(reply)
5117   }
5118 }
5119 impl From<xproto::GetPropertyReply> for Reply {
from(reply: xproto::GetPropertyReply) -> Reply5120   fn from(reply: xproto::GetPropertyReply) -> Reply {
5121     Reply::GetProperty(reply)
5122   }
5123 }
5124 impl From<xproto::ListPropertiesReply> for Reply {
from(reply: xproto::ListPropertiesReply) -> Reply5125   fn from(reply: xproto::ListPropertiesReply) -> Reply {
5126     Reply::ListProperties(reply)
5127   }
5128 }
5129 impl From<xproto::GetSelectionOwnerReply> for Reply {
from(reply: xproto::GetSelectionOwnerReply) -> Reply5130   fn from(reply: xproto::GetSelectionOwnerReply) -> Reply {
5131     Reply::GetSelectionOwner(reply)
5132   }
5133 }
5134 impl From<xproto::GrabPointerReply> for Reply {
from(reply: xproto::GrabPointerReply) -> Reply5135   fn from(reply: xproto::GrabPointerReply) -> Reply {
5136     Reply::GrabPointer(reply)
5137   }
5138 }
5139 impl From<xproto::GrabKeyboardReply> for Reply {
from(reply: xproto::GrabKeyboardReply) -> Reply5140   fn from(reply: xproto::GrabKeyboardReply) -> Reply {
5141     Reply::GrabKeyboard(reply)
5142   }
5143 }
5144 impl From<xproto::QueryPointerReply> for Reply {
from(reply: xproto::QueryPointerReply) -> Reply5145   fn from(reply: xproto::QueryPointerReply) -> Reply {
5146     Reply::QueryPointer(reply)
5147   }
5148 }
5149 impl From<xproto::GetMotionEventsReply> for Reply {
from(reply: xproto::GetMotionEventsReply) -> Reply5150   fn from(reply: xproto::GetMotionEventsReply) -> Reply {
5151     Reply::GetMotionEvents(reply)
5152   }
5153 }
5154 impl From<xproto::TranslateCoordinatesReply> for Reply {
from(reply: xproto::TranslateCoordinatesReply) -> Reply5155   fn from(reply: xproto::TranslateCoordinatesReply) -> Reply {
5156     Reply::TranslateCoordinates(reply)
5157   }
5158 }
5159 impl From<xproto::GetInputFocusReply> for Reply {
from(reply: xproto::GetInputFocusReply) -> Reply5160   fn from(reply: xproto::GetInputFocusReply) -> Reply {
5161     Reply::GetInputFocus(reply)
5162   }
5163 }
5164 impl From<xproto::QueryKeymapReply> for Reply {
from(reply: xproto::QueryKeymapReply) -> Reply5165   fn from(reply: xproto::QueryKeymapReply) -> Reply {
5166     Reply::QueryKeymap(reply)
5167   }
5168 }
5169 impl From<xproto::QueryFontReply> for Reply {
from(reply: xproto::QueryFontReply) -> Reply5170   fn from(reply: xproto::QueryFontReply) -> Reply {
5171     Reply::QueryFont(reply)
5172   }
5173 }
5174 impl From<xproto::QueryTextExtentsReply> for Reply {
from(reply: xproto::QueryTextExtentsReply) -> Reply5175   fn from(reply: xproto::QueryTextExtentsReply) -> Reply {
5176     Reply::QueryTextExtents(reply)
5177   }
5178 }
5179 impl From<xproto::ListFontsReply> for Reply {
from(reply: xproto::ListFontsReply) -> Reply5180   fn from(reply: xproto::ListFontsReply) -> Reply {
5181     Reply::ListFonts(reply)
5182   }
5183 }
5184 impl From<xproto::ListFontsWithInfoReply> for Reply {
from(reply: xproto::ListFontsWithInfoReply) -> Reply5185   fn from(reply: xproto::ListFontsWithInfoReply) -> Reply {
5186     Reply::ListFontsWithInfo(reply)
5187   }
5188 }
5189 impl From<xproto::GetFontPathReply> for Reply {
from(reply: xproto::GetFontPathReply) -> Reply5190   fn from(reply: xproto::GetFontPathReply) -> Reply {
5191     Reply::GetFontPath(reply)
5192   }
5193 }
5194 impl From<xproto::GetImageReply> for Reply {
from(reply: xproto::GetImageReply) -> Reply5195   fn from(reply: xproto::GetImageReply) -> Reply {
5196     Reply::GetImage(reply)
5197   }
5198 }
5199 impl From<xproto::ListInstalledColormapsReply> for Reply {
from(reply: xproto::ListInstalledColormapsReply) -> Reply5200   fn from(reply: xproto::ListInstalledColormapsReply) -> Reply {
5201     Reply::ListInstalledColormaps(reply)
5202   }
5203 }
5204 impl From<xproto::AllocColorReply> for Reply {
from(reply: xproto::AllocColorReply) -> Reply5205   fn from(reply: xproto::AllocColorReply) -> Reply {
5206     Reply::AllocColor(reply)
5207   }
5208 }
5209 impl From<xproto::AllocNamedColorReply> for Reply {
from(reply: xproto::AllocNamedColorReply) -> Reply5210   fn from(reply: xproto::AllocNamedColorReply) -> Reply {
5211     Reply::AllocNamedColor(reply)
5212   }
5213 }
5214 impl From<xproto::AllocColorCellsReply> for Reply {
from(reply: xproto::AllocColorCellsReply) -> Reply5215   fn from(reply: xproto::AllocColorCellsReply) -> Reply {
5216     Reply::AllocColorCells(reply)
5217   }
5218 }
5219 impl From<xproto::AllocColorPlanesReply> for Reply {
from(reply: xproto::AllocColorPlanesReply) -> Reply5220   fn from(reply: xproto::AllocColorPlanesReply) -> Reply {
5221     Reply::AllocColorPlanes(reply)
5222   }
5223 }
5224 impl From<xproto::QueryColorsReply> for Reply {
from(reply: xproto::QueryColorsReply) -> Reply5225   fn from(reply: xproto::QueryColorsReply) -> Reply {
5226     Reply::QueryColors(reply)
5227   }
5228 }
5229 impl From<xproto::LookupColorReply> for Reply {
from(reply: xproto::LookupColorReply) -> Reply5230   fn from(reply: xproto::LookupColorReply) -> Reply {
5231     Reply::LookupColor(reply)
5232   }
5233 }
5234 impl From<xproto::QueryBestSizeReply> for Reply {
from(reply: xproto::QueryBestSizeReply) -> Reply5235   fn from(reply: xproto::QueryBestSizeReply) -> Reply {
5236     Reply::QueryBestSize(reply)
5237   }
5238 }
5239 impl From<xproto::QueryExtensionReply> for Reply {
from(reply: xproto::QueryExtensionReply) -> Reply5240   fn from(reply: xproto::QueryExtensionReply) -> Reply {
5241     Reply::QueryExtension(reply)
5242   }
5243 }
5244 impl From<xproto::ListExtensionsReply> for Reply {
from(reply: xproto::ListExtensionsReply) -> Reply5245   fn from(reply: xproto::ListExtensionsReply) -> Reply {
5246     Reply::ListExtensions(reply)
5247   }
5248 }
5249 impl From<xproto::GetKeyboardMappingReply> for Reply {
from(reply: xproto::GetKeyboardMappingReply) -> Reply5250   fn from(reply: xproto::GetKeyboardMappingReply) -> Reply {
5251     Reply::GetKeyboardMapping(reply)
5252   }
5253 }
5254 impl From<xproto::GetKeyboardControlReply> for Reply {
from(reply: xproto::GetKeyboardControlReply) -> Reply5255   fn from(reply: xproto::GetKeyboardControlReply) -> Reply {
5256     Reply::GetKeyboardControl(reply)
5257   }
5258 }
5259 impl From<xproto::GetPointerControlReply> for Reply {
from(reply: xproto::GetPointerControlReply) -> Reply5260   fn from(reply: xproto::GetPointerControlReply) -> Reply {
5261     Reply::GetPointerControl(reply)
5262   }
5263 }
5264 impl From<xproto::GetScreenSaverReply> for Reply {
from(reply: xproto::GetScreenSaverReply) -> Reply5265   fn from(reply: xproto::GetScreenSaverReply) -> Reply {
5266     Reply::GetScreenSaver(reply)
5267   }
5268 }
5269 impl From<xproto::ListHostsReply> for Reply {
from(reply: xproto::ListHostsReply) -> Reply5270   fn from(reply: xproto::ListHostsReply) -> Reply {
5271     Reply::ListHosts(reply)
5272   }
5273 }
5274 impl From<xproto::SetPointerMappingReply> for Reply {
from(reply: xproto::SetPointerMappingReply) -> Reply5275   fn from(reply: xproto::SetPointerMappingReply) -> Reply {
5276     Reply::SetPointerMapping(reply)
5277   }
5278 }
5279 impl From<xproto::GetPointerMappingReply> for Reply {
from(reply: xproto::GetPointerMappingReply) -> Reply5280   fn from(reply: xproto::GetPointerMappingReply) -> Reply {
5281     Reply::GetPointerMapping(reply)
5282   }
5283 }
5284 impl From<xproto::SetModifierMappingReply> for Reply {
from(reply: xproto::SetModifierMappingReply) -> Reply5285   fn from(reply: xproto::SetModifierMappingReply) -> Reply {
5286     Reply::SetModifierMapping(reply)
5287   }
5288 }
5289 impl From<xproto::GetModifierMappingReply> for Reply {
from(reply: xproto::GetModifierMappingReply) -> Reply5290   fn from(reply: xproto::GetModifierMappingReply) -> Reply {
5291     Reply::GetModifierMapping(reply)
5292   }
5293 }
5294 impl From<bigreq::EnableReply> for Reply {
from(reply: bigreq::EnableReply) -> Reply5295   fn from(reply: bigreq::EnableReply) -> Reply {
5296     Reply::BigreqEnable(reply)
5297   }
5298 }
5299 #[cfg(feature = "composite")]
5300 impl From<composite::QueryVersionReply> for Reply {
from(reply: composite::QueryVersionReply) -> Reply5301   fn from(reply: composite::QueryVersionReply) -> Reply {
5302     Reply::CompositeQueryVersion(reply)
5303   }
5304 }
5305 #[cfg(feature = "composite")]
5306 impl From<composite::GetOverlayWindowReply> for Reply {
from(reply: composite::GetOverlayWindowReply) -> Reply5307   fn from(reply: composite::GetOverlayWindowReply) -> Reply {
5308     Reply::CompositeGetOverlayWindow(reply)
5309   }
5310 }
5311 #[cfg(feature = "damage")]
5312 impl From<damage::QueryVersionReply> for Reply {
from(reply: damage::QueryVersionReply) -> Reply5313   fn from(reply: damage::QueryVersionReply) -> Reply {
5314     Reply::DamageQueryVersion(reply)
5315   }
5316 }
5317 #[cfg(feature = "dpms")]
5318 impl From<dpms::GetVersionReply> for Reply {
from(reply: dpms::GetVersionReply) -> Reply5319   fn from(reply: dpms::GetVersionReply) -> Reply {
5320     Reply::DpmsGetVersion(reply)
5321   }
5322 }
5323 #[cfg(feature = "dpms")]
5324 impl From<dpms::CapableReply> for Reply {
from(reply: dpms::CapableReply) -> Reply5325   fn from(reply: dpms::CapableReply) -> Reply {
5326     Reply::DpmsCapable(reply)
5327   }
5328 }
5329 #[cfg(feature = "dpms")]
5330 impl From<dpms::GetTimeoutsReply> for Reply {
from(reply: dpms::GetTimeoutsReply) -> Reply5331   fn from(reply: dpms::GetTimeoutsReply) -> Reply {
5332     Reply::DpmsGetTimeouts(reply)
5333   }
5334 }
5335 #[cfg(feature = "dpms")]
5336 impl From<dpms::InfoReply> for Reply {
from(reply: dpms::InfoReply) -> Reply5337   fn from(reply: dpms::InfoReply) -> Reply {
5338     Reply::DpmsInfo(reply)
5339   }
5340 }
5341 #[cfg(feature = "dri2")]
5342 impl From<dri2::QueryVersionReply> for Reply {
from(reply: dri2::QueryVersionReply) -> Reply5343   fn from(reply: dri2::QueryVersionReply) -> Reply {
5344     Reply::Dri2QueryVersion(reply)
5345   }
5346 }
5347 #[cfg(feature = "dri2")]
5348 impl From<dri2::ConnectReply> for Reply {
from(reply: dri2::ConnectReply) -> Reply5349   fn from(reply: dri2::ConnectReply) -> Reply {
5350     Reply::Dri2Connect(reply)
5351   }
5352 }
5353 #[cfg(feature = "dri2")]
5354 impl From<dri2::AuthenticateReply> for Reply {
from(reply: dri2::AuthenticateReply) -> Reply5355   fn from(reply: dri2::AuthenticateReply) -> Reply {
5356     Reply::Dri2Authenticate(reply)
5357   }
5358 }
5359 #[cfg(feature = "dri2")]
5360 impl From<dri2::GetBuffersReply> for Reply {
from(reply: dri2::GetBuffersReply) -> Reply5361   fn from(reply: dri2::GetBuffersReply) -> Reply {
5362     Reply::Dri2GetBuffers(reply)
5363   }
5364 }
5365 #[cfg(feature = "dri2")]
5366 impl From<dri2::CopyRegionReply> for Reply {
from(reply: dri2::CopyRegionReply) -> Reply5367   fn from(reply: dri2::CopyRegionReply) -> Reply {
5368     Reply::Dri2CopyRegion(reply)
5369   }
5370 }
5371 #[cfg(feature = "dri2")]
5372 impl From<dri2::GetBuffersWithFormatReply> for Reply {
from(reply: dri2::GetBuffersWithFormatReply) -> Reply5373   fn from(reply: dri2::GetBuffersWithFormatReply) -> Reply {
5374     Reply::Dri2GetBuffersWithFormat(reply)
5375   }
5376 }
5377 #[cfg(feature = "dri2")]
5378 impl From<dri2::SwapBuffersReply> for Reply {
from(reply: dri2::SwapBuffersReply) -> Reply5379   fn from(reply: dri2::SwapBuffersReply) -> Reply {
5380     Reply::Dri2SwapBuffers(reply)
5381   }
5382 }
5383 #[cfg(feature = "dri2")]
5384 impl From<dri2::GetMSCReply> for Reply {
from(reply: dri2::GetMSCReply) -> Reply5385   fn from(reply: dri2::GetMSCReply) -> Reply {
5386     Reply::Dri2GetMSC(reply)
5387   }
5388 }
5389 #[cfg(feature = "dri2")]
5390 impl From<dri2::WaitMSCReply> for Reply {
from(reply: dri2::WaitMSCReply) -> Reply5391   fn from(reply: dri2::WaitMSCReply) -> Reply {
5392     Reply::Dri2WaitMSC(reply)
5393   }
5394 }
5395 #[cfg(feature = "dri2")]
5396 impl From<dri2::WaitSBCReply> for Reply {
from(reply: dri2::WaitSBCReply) -> Reply5397   fn from(reply: dri2::WaitSBCReply) -> Reply {
5398     Reply::Dri2WaitSBC(reply)
5399   }
5400 }
5401 #[cfg(feature = "dri2")]
5402 impl From<dri2::GetParamReply> for Reply {
from(reply: dri2::GetParamReply) -> Reply5403   fn from(reply: dri2::GetParamReply) -> Reply {
5404     Reply::Dri2GetParam(reply)
5405   }
5406 }
5407 #[cfg(feature = "dri3")]
5408 impl From<dri3::QueryVersionReply> for Reply {
from(reply: dri3::QueryVersionReply) -> Reply5409   fn from(reply: dri3::QueryVersionReply) -> Reply {
5410     Reply::Dri3QueryVersion(reply)
5411   }
5412 }
5413 #[cfg(feature = "dri3")]
5414 impl From<dri3::OpenReply> for Reply {
from(reply: dri3::OpenReply) -> Reply5415   fn from(reply: dri3::OpenReply) -> Reply {
5416     Reply::Dri3Open(reply)
5417   }
5418 }
5419 #[cfg(feature = "dri3")]
5420 impl From<dri3::BufferFromPixmapReply> for Reply {
from(reply: dri3::BufferFromPixmapReply) -> Reply5421   fn from(reply: dri3::BufferFromPixmapReply) -> Reply {
5422     Reply::Dri3BufferFromPixmap(reply)
5423   }
5424 }
5425 #[cfg(feature = "dri3")]
5426 impl From<dri3::FDFromFenceReply> for Reply {
from(reply: dri3::FDFromFenceReply) -> Reply5427   fn from(reply: dri3::FDFromFenceReply) -> Reply {
5428     Reply::Dri3FDFromFence(reply)
5429   }
5430 }
5431 #[cfg(feature = "dri3")]
5432 impl From<dri3::GetSupportedModifiersReply> for Reply {
from(reply: dri3::GetSupportedModifiersReply) -> Reply5433   fn from(reply: dri3::GetSupportedModifiersReply) -> Reply {
5434     Reply::Dri3GetSupportedModifiers(reply)
5435   }
5436 }
5437 #[cfg(feature = "dri3")]
5438 impl From<dri3::BuffersFromPixmapReply> for Reply {
from(reply: dri3::BuffersFromPixmapReply) -> Reply5439   fn from(reply: dri3::BuffersFromPixmapReply) -> Reply {
5440     Reply::Dri3BuffersFromPixmap(reply)
5441   }
5442 }
5443 impl From<ge::QueryVersionReply> for Reply {
from(reply: ge::QueryVersionReply) -> Reply5444   fn from(reply: ge::QueryVersionReply) -> Reply {
5445     Reply::GeQueryVersion(reply)
5446   }
5447 }
5448 #[cfg(feature = "glx")]
5449 impl From<glx::MakeCurrentReply> for Reply {
from(reply: glx::MakeCurrentReply) -> Reply5450   fn from(reply: glx::MakeCurrentReply) -> Reply {
5451     Reply::GlxMakeCurrent(reply)
5452   }
5453 }
5454 #[cfg(feature = "glx")]
5455 impl From<glx::IsDirectReply> for Reply {
from(reply: glx::IsDirectReply) -> Reply5456   fn from(reply: glx::IsDirectReply) -> Reply {
5457     Reply::GlxIsDirect(reply)
5458   }
5459 }
5460 #[cfg(feature = "glx")]
5461 impl From<glx::QueryVersionReply> for Reply {
from(reply: glx::QueryVersionReply) -> Reply5462   fn from(reply: glx::QueryVersionReply) -> Reply {
5463     Reply::GlxQueryVersion(reply)
5464   }
5465 }
5466 #[cfg(feature = "glx")]
5467 impl From<glx::GetVisualConfigsReply> for Reply {
from(reply: glx::GetVisualConfigsReply) -> Reply5468   fn from(reply: glx::GetVisualConfigsReply) -> Reply {
5469     Reply::GlxGetVisualConfigs(reply)
5470   }
5471 }
5472 #[cfg(feature = "glx")]
5473 impl From<glx::VendorPrivateWithReplyReply> for Reply {
from(reply: glx::VendorPrivateWithReplyReply) -> Reply5474   fn from(reply: glx::VendorPrivateWithReplyReply) -> Reply {
5475     Reply::GlxVendorPrivateWithReply(reply)
5476   }
5477 }
5478 #[cfg(feature = "glx")]
5479 impl From<glx::QueryExtensionsStringReply> for Reply {
from(reply: glx::QueryExtensionsStringReply) -> Reply5480   fn from(reply: glx::QueryExtensionsStringReply) -> Reply {
5481     Reply::GlxQueryExtensionsString(reply)
5482   }
5483 }
5484 #[cfg(feature = "glx")]
5485 impl From<glx::QueryServerStringReply> for Reply {
from(reply: glx::QueryServerStringReply) -> Reply5486   fn from(reply: glx::QueryServerStringReply) -> Reply {
5487     Reply::GlxQueryServerString(reply)
5488   }
5489 }
5490 #[cfg(feature = "glx")]
5491 impl From<glx::GetFBConfigsReply> for Reply {
from(reply: glx::GetFBConfigsReply) -> Reply5492   fn from(reply: glx::GetFBConfigsReply) -> Reply {
5493     Reply::GlxGetFBConfigs(reply)
5494   }
5495 }
5496 #[cfg(feature = "glx")]
5497 impl From<glx::QueryContextReply> for Reply {
from(reply: glx::QueryContextReply) -> Reply5498   fn from(reply: glx::QueryContextReply) -> Reply {
5499     Reply::GlxQueryContext(reply)
5500   }
5501 }
5502 #[cfg(feature = "glx")]
5503 impl From<glx::MakeContextCurrentReply> for Reply {
from(reply: glx::MakeContextCurrentReply) -> Reply5504   fn from(reply: glx::MakeContextCurrentReply) -> Reply {
5505     Reply::GlxMakeContextCurrent(reply)
5506   }
5507 }
5508 #[cfg(feature = "glx")]
5509 impl From<glx::GetDrawableAttributesReply> for Reply {
from(reply: glx::GetDrawableAttributesReply) -> Reply5510   fn from(reply: glx::GetDrawableAttributesReply) -> Reply {
5511     Reply::GlxGetDrawableAttributes(reply)
5512   }
5513 }
5514 #[cfg(feature = "glx")]
5515 impl From<glx::GenListsReply> for Reply {
from(reply: glx::GenListsReply) -> Reply5516   fn from(reply: glx::GenListsReply) -> Reply {
5517     Reply::GlxGenLists(reply)
5518   }
5519 }
5520 #[cfg(feature = "glx")]
5521 impl From<glx::RenderModeReply> for Reply {
from(reply: glx::RenderModeReply) -> Reply5522   fn from(reply: glx::RenderModeReply) -> Reply {
5523     Reply::GlxRenderMode(reply)
5524   }
5525 }
5526 #[cfg(feature = "glx")]
5527 impl From<glx::FinishReply> for Reply {
from(reply: glx::FinishReply) -> Reply5528   fn from(reply: glx::FinishReply) -> Reply {
5529     Reply::GlxFinish(reply)
5530   }
5531 }
5532 #[cfg(feature = "glx")]
5533 impl From<glx::ReadPixelsReply> for Reply {
from(reply: glx::ReadPixelsReply) -> Reply5534   fn from(reply: glx::ReadPixelsReply) -> Reply {
5535     Reply::GlxReadPixels(reply)
5536   }
5537 }
5538 #[cfg(feature = "glx")]
5539 impl From<glx::GetBooleanvReply> for Reply {
from(reply: glx::GetBooleanvReply) -> Reply5540   fn from(reply: glx::GetBooleanvReply) -> Reply {
5541     Reply::GlxGetBooleanv(reply)
5542   }
5543 }
5544 #[cfg(feature = "glx")]
5545 impl From<glx::GetClipPlaneReply> for Reply {
from(reply: glx::GetClipPlaneReply) -> Reply5546   fn from(reply: glx::GetClipPlaneReply) -> Reply {
5547     Reply::GlxGetClipPlane(reply)
5548   }
5549 }
5550 #[cfg(feature = "glx")]
5551 impl From<glx::GetDoublevReply> for Reply {
from(reply: glx::GetDoublevReply) -> Reply5552   fn from(reply: glx::GetDoublevReply) -> Reply {
5553     Reply::GlxGetDoublev(reply)
5554   }
5555 }
5556 #[cfg(feature = "glx")]
5557 impl From<glx::GetErrorReply> for Reply {
from(reply: glx::GetErrorReply) -> Reply5558   fn from(reply: glx::GetErrorReply) -> Reply {
5559     Reply::GlxGetError(reply)
5560   }
5561 }
5562 #[cfg(feature = "glx")]
5563 impl From<glx::GetFloatvReply> for Reply {
from(reply: glx::GetFloatvReply) -> Reply5564   fn from(reply: glx::GetFloatvReply) -> Reply {
5565     Reply::GlxGetFloatv(reply)
5566   }
5567 }
5568 #[cfg(feature = "glx")]
5569 impl From<glx::GetIntegervReply> for Reply {
from(reply: glx::GetIntegervReply) -> Reply5570   fn from(reply: glx::GetIntegervReply) -> Reply {
5571     Reply::GlxGetIntegerv(reply)
5572   }
5573 }
5574 #[cfg(feature = "glx")]
5575 impl From<glx::GetLightfvReply> for Reply {
from(reply: glx::GetLightfvReply) -> Reply5576   fn from(reply: glx::GetLightfvReply) -> Reply {
5577     Reply::GlxGetLightfv(reply)
5578   }
5579 }
5580 #[cfg(feature = "glx")]
5581 impl From<glx::GetLightivReply> for Reply {
from(reply: glx::GetLightivReply) -> Reply5582   fn from(reply: glx::GetLightivReply) -> Reply {
5583     Reply::GlxGetLightiv(reply)
5584   }
5585 }
5586 #[cfg(feature = "glx")]
5587 impl From<glx::GetMapdvReply> for Reply {
from(reply: glx::GetMapdvReply) -> Reply5588   fn from(reply: glx::GetMapdvReply) -> Reply {
5589     Reply::GlxGetMapdv(reply)
5590   }
5591 }
5592 #[cfg(feature = "glx")]
5593 impl From<glx::GetMapfvReply> for Reply {
from(reply: glx::GetMapfvReply) -> Reply5594   fn from(reply: glx::GetMapfvReply) -> Reply {
5595     Reply::GlxGetMapfv(reply)
5596   }
5597 }
5598 #[cfg(feature = "glx")]
5599 impl From<glx::GetMapivReply> for Reply {
from(reply: glx::GetMapivReply) -> Reply5600   fn from(reply: glx::GetMapivReply) -> Reply {
5601     Reply::GlxGetMapiv(reply)
5602   }
5603 }
5604 #[cfg(feature = "glx")]
5605 impl From<glx::GetMaterialfvReply> for Reply {
from(reply: glx::GetMaterialfvReply) -> Reply5606   fn from(reply: glx::GetMaterialfvReply) -> Reply {
5607     Reply::GlxGetMaterialfv(reply)
5608   }
5609 }
5610 #[cfg(feature = "glx")]
5611 impl From<glx::GetMaterialivReply> for Reply {
from(reply: glx::GetMaterialivReply) -> Reply5612   fn from(reply: glx::GetMaterialivReply) -> Reply {
5613     Reply::GlxGetMaterialiv(reply)
5614   }
5615 }
5616 #[cfg(feature = "glx")]
5617 impl From<glx::GetPixelMapfvReply> for Reply {
from(reply: glx::GetPixelMapfvReply) -> Reply5618   fn from(reply: glx::GetPixelMapfvReply) -> Reply {
5619     Reply::GlxGetPixelMapfv(reply)
5620   }
5621 }
5622 #[cfg(feature = "glx")]
5623 impl From<glx::GetPixelMapuivReply> for Reply {
from(reply: glx::GetPixelMapuivReply) -> Reply5624   fn from(reply: glx::GetPixelMapuivReply) -> Reply {
5625     Reply::GlxGetPixelMapuiv(reply)
5626   }
5627 }
5628 #[cfg(feature = "glx")]
5629 impl From<glx::GetPixelMapusvReply> for Reply {
from(reply: glx::GetPixelMapusvReply) -> Reply5630   fn from(reply: glx::GetPixelMapusvReply) -> Reply {
5631     Reply::GlxGetPixelMapusv(reply)
5632   }
5633 }
5634 #[cfg(feature = "glx")]
5635 impl From<glx::GetPolygonStippleReply> for Reply {
from(reply: glx::GetPolygonStippleReply) -> Reply5636   fn from(reply: glx::GetPolygonStippleReply) -> Reply {
5637     Reply::GlxGetPolygonStipple(reply)
5638   }
5639 }
5640 #[cfg(feature = "glx")]
5641 impl From<glx::GetStringReply> for Reply {
from(reply: glx::GetStringReply) -> Reply5642   fn from(reply: glx::GetStringReply) -> Reply {
5643     Reply::GlxGetString(reply)
5644   }
5645 }
5646 #[cfg(feature = "glx")]
5647 impl From<glx::GetTexEnvfvReply> for Reply {
from(reply: glx::GetTexEnvfvReply) -> Reply5648   fn from(reply: glx::GetTexEnvfvReply) -> Reply {
5649     Reply::GlxGetTexEnvfv(reply)
5650   }
5651 }
5652 #[cfg(feature = "glx")]
5653 impl From<glx::GetTexEnvivReply> for Reply {
from(reply: glx::GetTexEnvivReply) -> Reply5654   fn from(reply: glx::GetTexEnvivReply) -> Reply {
5655     Reply::GlxGetTexEnviv(reply)
5656   }
5657 }
5658 #[cfg(feature = "glx")]
5659 impl From<glx::GetTexGendvReply> for Reply {
from(reply: glx::GetTexGendvReply) -> Reply5660   fn from(reply: glx::GetTexGendvReply) -> Reply {
5661     Reply::GlxGetTexGendv(reply)
5662   }
5663 }
5664 #[cfg(feature = "glx")]
5665 impl From<glx::GetTexGenfvReply> for Reply {
from(reply: glx::GetTexGenfvReply) -> Reply5666   fn from(reply: glx::GetTexGenfvReply) -> Reply {
5667     Reply::GlxGetTexGenfv(reply)
5668   }
5669 }
5670 #[cfg(feature = "glx")]
5671 impl From<glx::GetTexGenivReply> for Reply {
from(reply: glx::GetTexGenivReply) -> Reply5672   fn from(reply: glx::GetTexGenivReply) -> Reply {
5673     Reply::GlxGetTexGeniv(reply)
5674   }
5675 }
5676 #[cfg(feature = "glx")]
5677 impl From<glx::GetTexImageReply> for Reply {
from(reply: glx::GetTexImageReply) -> Reply5678   fn from(reply: glx::GetTexImageReply) -> Reply {
5679     Reply::GlxGetTexImage(reply)
5680   }
5681 }
5682 #[cfg(feature = "glx")]
5683 impl From<glx::GetTexParameterfvReply> for Reply {
from(reply: glx::GetTexParameterfvReply) -> Reply5684   fn from(reply: glx::GetTexParameterfvReply) -> Reply {
5685     Reply::GlxGetTexParameterfv(reply)
5686   }
5687 }
5688 #[cfg(feature = "glx")]
5689 impl From<glx::GetTexParameterivReply> for Reply {
from(reply: glx::GetTexParameterivReply) -> Reply5690   fn from(reply: glx::GetTexParameterivReply) -> Reply {
5691     Reply::GlxGetTexParameteriv(reply)
5692   }
5693 }
5694 #[cfg(feature = "glx")]
5695 impl From<glx::GetTexLevelParameterfvReply> for Reply {
from(reply: glx::GetTexLevelParameterfvReply) -> Reply5696   fn from(reply: glx::GetTexLevelParameterfvReply) -> Reply {
5697     Reply::GlxGetTexLevelParameterfv(reply)
5698   }
5699 }
5700 #[cfg(feature = "glx")]
5701 impl From<glx::GetTexLevelParameterivReply> for Reply {
from(reply: glx::GetTexLevelParameterivReply) -> Reply5702   fn from(reply: glx::GetTexLevelParameterivReply) -> Reply {
5703     Reply::GlxGetTexLevelParameteriv(reply)
5704   }
5705 }
5706 #[cfg(feature = "glx")]
5707 impl From<glx::IsEnabledReply> for Reply {
from(reply: glx::IsEnabledReply) -> Reply5708   fn from(reply: glx::IsEnabledReply) -> Reply {
5709     Reply::GlxIsEnabled(reply)
5710   }
5711 }
5712 #[cfg(feature = "glx")]
5713 impl From<glx::IsListReply> for Reply {
from(reply: glx::IsListReply) -> Reply5714   fn from(reply: glx::IsListReply) -> Reply {
5715     Reply::GlxIsList(reply)
5716   }
5717 }
5718 #[cfg(feature = "glx")]
5719 impl From<glx::AreTexturesResidentReply> for Reply {
from(reply: glx::AreTexturesResidentReply) -> Reply5720   fn from(reply: glx::AreTexturesResidentReply) -> Reply {
5721     Reply::GlxAreTexturesResident(reply)
5722   }
5723 }
5724 #[cfg(feature = "glx")]
5725 impl From<glx::GenTexturesReply> for Reply {
from(reply: glx::GenTexturesReply) -> Reply5726   fn from(reply: glx::GenTexturesReply) -> Reply {
5727     Reply::GlxGenTextures(reply)
5728   }
5729 }
5730 #[cfg(feature = "glx")]
5731 impl From<glx::IsTextureReply> for Reply {
from(reply: glx::IsTextureReply) -> Reply5732   fn from(reply: glx::IsTextureReply) -> Reply {
5733     Reply::GlxIsTexture(reply)
5734   }
5735 }
5736 #[cfg(feature = "glx")]
5737 impl From<glx::GetColorTableReply> for Reply {
from(reply: glx::GetColorTableReply) -> Reply5738   fn from(reply: glx::GetColorTableReply) -> Reply {
5739     Reply::GlxGetColorTable(reply)
5740   }
5741 }
5742 #[cfg(feature = "glx")]
5743 impl From<glx::GetColorTableParameterfvReply> for Reply {
from(reply: glx::GetColorTableParameterfvReply) -> Reply5744   fn from(reply: glx::GetColorTableParameterfvReply) -> Reply {
5745     Reply::GlxGetColorTableParameterfv(reply)
5746   }
5747 }
5748 #[cfg(feature = "glx")]
5749 impl From<glx::GetColorTableParameterivReply> for Reply {
from(reply: glx::GetColorTableParameterivReply) -> Reply5750   fn from(reply: glx::GetColorTableParameterivReply) -> Reply {
5751     Reply::GlxGetColorTableParameteriv(reply)
5752   }
5753 }
5754 #[cfg(feature = "glx")]
5755 impl From<glx::GetConvolutionFilterReply> for Reply {
from(reply: glx::GetConvolutionFilterReply) -> Reply5756   fn from(reply: glx::GetConvolutionFilterReply) -> Reply {
5757     Reply::GlxGetConvolutionFilter(reply)
5758   }
5759 }
5760 #[cfg(feature = "glx")]
5761 impl From<glx::GetConvolutionParameterfvReply> for Reply {
from(reply: glx::GetConvolutionParameterfvReply) -> Reply5762   fn from(reply: glx::GetConvolutionParameterfvReply) -> Reply {
5763     Reply::GlxGetConvolutionParameterfv(reply)
5764   }
5765 }
5766 #[cfg(feature = "glx")]
5767 impl From<glx::GetConvolutionParameterivReply> for Reply {
from(reply: glx::GetConvolutionParameterivReply) -> Reply5768   fn from(reply: glx::GetConvolutionParameterivReply) -> Reply {
5769     Reply::GlxGetConvolutionParameteriv(reply)
5770   }
5771 }
5772 #[cfg(feature = "glx")]
5773 impl From<glx::GetSeparableFilterReply> for Reply {
from(reply: glx::GetSeparableFilterReply) -> Reply5774   fn from(reply: glx::GetSeparableFilterReply) -> Reply {
5775     Reply::GlxGetSeparableFilter(reply)
5776   }
5777 }
5778 #[cfg(feature = "glx")]
5779 impl From<glx::GetHistogramReply> for Reply {
from(reply: glx::GetHistogramReply) -> Reply5780   fn from(reply: glx::GetHistogramReply) -> Reply {
5781     Reply::GlxGetHistogram(reply)
5782   }
5783 }
5784 #[cfg(feature = "glx")]
5785 impl From<glx::GetHistogramParameterfvReply> for Reply {
from(reply: glx::GetHistogramParameterfvReply) -> Reply5786   fn from(reply: glx::GetHistogramParameterfvReply) -> Reply {
5787     Reply::GlxGetHistogramParameterfv(reply)
5788   }
5789 }
5790 #[cfg(feature = "glx")]
5791 impl From<glx::GetHistogramParameterivReply> for Reply {
from(reply: glx::GetHistogramParameterivReply) -> Reply5792   fn from(reply: glx::GetHistogramParameterivReply) -> Reply {
5793     Reply::GlxGetHistogramParameteriv(reply)
5794   }
5795 }
5796 #[cfg(feature = "glx")]
5797 impl From<glx::GetMinmaxReply> for Reply {
from(reply: glx::GetMinmaxReply) -> Reply5798   fn from(reply: glx::GetMinmaxReply) -> Reply {
5799     Reply::GlxGetMinmax(reply)
5800   }
5801 }
5802 #[cfg(feature = "glx")]
5803 impl From<glx::GetMinmaxParameterfvReply> for Reply {
from(reply: glx::GetMinmaxParameterfvReply) -> Reply5804   fn from(reply: glx::GetMinmaxParameterfvReply) -> Reply {
5805     Reply::GlxGetMinmaxParameterfv(reply)
5806   }
5807 }
5808 #[cfg(feature = "glx")]
5809 impl From<glx::GetMinmaxParameterivReply> for Reply {
from(reply: glx::GetMinmaxParameterivReply) -> Reply5810   fn from(reply: glx::GetMinmaxParameterivReply) -> Reply {
5811     Reply::GlxGetMinmaxParameteriv(reply)
5812   }
5813 }
5814 #[cfg(feature = "glx")]
5815 impl From<glx::GetCompressedTexImageARBReply> for Reply {
from(reply: glx::GetCompressedTexImageARBReply) -> Reply5816   fn from(reply: glx::GetCompressedTexImageARBReply) -> Reply {
5817     Reply::GlxGetCompressedTexImageARB(reply)
5818   }
5819 }
5820 #[cfg(feature = "glx")]
5821 impl From<glx::GenQueriesARBReply> for Reply {
from(reply: glx::GenQueriesARBReply) -> Reply5822   fn from(reply: glx::GenQueriesARBReply) -> Reply {
5823     Reply::GlxGenQueriesARB(reply)
5824   }
5825 }
5826 #[cfg(feature = "glx")]
5827 impl From<glx::IsQueryARBReply> for Reply {
from(reply: glx::IsQueryARBReply) -> Reply5828   fn from(reply: glx::IsQueryARBReply) -> Reply {
5829     Reply::GlxIsQueryARB(reply)
5830   }
5831 }
5832 #[cfg(feature = "glx")]
5833 impl From<glx::GetQueryivARBReply> for Reply {
from(reply: glx::GetQueryivARBReply) -> Reply5834   fn from(reply: glx::GetQueryivARBReply) -> Reply {
5835     Reply::GlxGetQueryivARB(reply)
5836   }
5837 }
5838 #[cfg(feature = "glx")]
5839 impl From<glx::GetQueryObjectivARBReply> for Reply {
from(reply: glx::GetQueryObjectivARBReply) -> Reply5840   fn from(reply: glx::GetQueryObjectivARBReply) -> Reply {
5841     Reply::GlxGetQueryObjectivARB(reply)
5842   }
5843 }
5844 #[cfg(feature = "glx")]
5845 impl From<glx::GetQueryObjectuivARBReply> for Reply {
from(reply: glx::GetQueryObjectuivARBReply) -> Reply5846   fn from(reply: glx::GetQueryObjectuivARBReply) -> Reply {
5847     Reply::GlxGetQueryObjectuivARB(reply)
5848   }
5849 }
5850 #[cfg(feature = "present")]
5851 impl From<present::QueryVersionReply> for Reply {
from(reply: present::QueryVersionReply) -> Reply5852   fn from(reply: present::QueryVersionReply) -> Reply {
5853     Reply::PresentQueryVersion(reply)
5854   }
5855 }
5856 #[cfg(feature = "present")]
5857 impl From<present::QueryCapabilitiesReply> for Reply {
from(reply: present::QueryCapabilitiesReply) -> Reply5858   fn from(reply: present::QueryCapabilitiesReply) -> Reply {
5859     Reply::PresentQueryCapabilities(reply)
5860   }
5861 }
5862 #[cfg(feature = "randr")]
5863 impl From<randr::QueryVersionReply> for Reply {
from(reply: randr::QueryVersionReply) -> Reply5864   fn from(reply: randr::QueryVersionReply) -> Reply {
5865     Reply::RandrQueryVersion(reply)
5866   }
5867 }
5868 #[cfg(feature = "randr")]
5869 impl From<randr::SetScreenConfigReply> for Reply {
from(reply: randr::SetScreenConfigReply) -> Reply5870   fn from(reply: randr::SetScreenConfigReply) -> Reply {
5871     Reply::RandrSetScreenConfig(reply)
5872   }
5873 }
5874 #[cfg(feature = "randr")]
5875 impl From<randr::GetScreenInfoReply> for Reply {
from(reply: randr::GetScreenInfoReply) -> Reply5876   fn from(reply: randr::GetScreenInfoReply) -> Reply {
5877     Reply::RandrGetScreenInfo(reply)
5878   }
5879 }
5880 #[cfg(feature = "randr")]
5881 impl From<randr::GetScreenSizeRangeReply> for Reply {
from(reply: randr::GetScreenSizeRangeReply) -> Reply5882   fn from(reply: randr::GetScreenSizeRangeReply) -> Reply {
5883     Reply::RandrGetScreenSizeRange(reply)
5884   }
5885 }
5886 #[cfg(feature = "randr")]
5887 impl From<randr::GetScreenResourcesReply> for Reply {
from(reply: randr::GetScreenResourcesReply) -> Reply5888   fn from(reply: randr::GetScreenResourcesReply) -> Reply {
5889     Reply::RandrGetScreenResources(reply)
5890   }
5891 }
5892 #[cfg(feature = "randr")]
5893 impl From<randr::GetOutputInfoReply> for Reply {
from(reply: randr::GetOutputInfoReply) -> Reply5894   fn from(reply: randr::GetOutputInfoReply) -> Reply {
5895     Reply::RandrGetOutputInfo(reply)
5896   }
5897 }
5898 #[cfg(feature = "randr")]
5899 impl From<randr::ListOutputPropertiesReply> for Reply {
from(reply: randr::ListOutputPropertiesReply) -> Reply5900   fn from(reply: randr::ListOutputPropertiesReply) -> Reply {
5901     Reply::RandrListOutputProperties(reply)
5902   }
5903 }
5904 #[cfg(feature = "randr")]
5905 impl From<randr::QueryOutputPropertyReply> for Reply {
from(reply: randr::QueryOutputPropertyReply) -> Reply5906   fn from(reply: randr::QueryOutputPropertyReply) -> Reply {
5907     Reply::RandrQueryOutputProperty(reply)
5908   }
5909 }
5910 #[cfg(feature = "randr")]
5911 impl From<randr::GetOutputPropertyReply> for Reply {
from(reply: randr::GetOutputPropertyReply) -> Reply5912   fn from(reply: randr::GetOutputPropertyReply) -> Reply {
5913     Reply::RandrGetOutputProperty(reply)
5914   }
5915 }
5916 #[cfg(feature = "randr")]
5917 impl From<randr::CreateModeReply> for Reply {
from(reply: randr::CreateModeReply) -> Reply5918   fn from(reply: randr::CreateModeReply) -> Reply {
5919     Reply::RandrCreateMode(reply)
5920   }
5921 }
5922 #[cfg(feature = "randr")]
5923 impl From<randr::GetCrtcInfoReply> for Reply {
from(reply: randr::GetCrtcInfoReply) -> Reply5924   fn from(reply: randr::GetCrtcInfoReply) -> Reply {
5925     Reply::RandrGetCrtcInfo(reply)
5926   }
5927 }
5928 #[cfg(feature = "randr")]
5929 impl From<randr::SetCrtcConfigReply> for Reply {
from(reply: randr::SetCrtcConfigReply) -> Reply5930   fn from(reply: randr::SetCrtcConfigReply) -> Reply {
5931     Reply::RandrSetCrtcConfig(reply)
5932   }
5933 }
5934 #[cfg(feature = "randr")]
5935 impl From<randr::GetCrtcGammaSizeReply> for Reply {
from(reply: randr::GetCrtcGammaSizeReply) -> Reply5936   fn from(reply: randr::GetCrtcGammaSizeReply) -> Reply {
5937     Reply::RandrGetCrtcGammaSize(reply)
5938   }
5939 }
5940 #[cfg(feature = "randr")]
5941 impl From<randr::GetCrtcGammaReply> for Reply {
from(reply: randr::GetCrtcGammaReply) -> Reply5942   fn from(reply: randr::GetCrtcGammaReply) -> Reply {
5943     Reply::RandrGetCrtcGamma(reply)
5944   }
5945 }
5946 #[cfg(feature = "randr")]
5947 impl From<randr::GetScreenResourcesCurrentReply> for Reply {
from(reply: randr::GetScreenResourcesCurrentReply) -> Reply5948   fn from(reply: randr::GetScreenResourcesCurrentReply) -> Reply {
5949     Reply::RandrGetScreenResourcesCurrent(reply)
5950   }
5951 }
5952 #[cfg(feature = "randr")]
5953 impl From<randr::GetCrtcTransformReply> for Reply {
from(reply: randr::GetCrtcTransformReply) -> Reply5954   fn from(reply: randr::GetCrtcTransformReply) -> Reply {
5955     Reply::RandrGetCrtcTransform(reply)
5956   }
5957 }
5958 #[cfg(feature = "randr")]
5959 impl From<randr::GetPanningReply> for Reply {
from(reply: randr::GetPanningReply) -> Reply5960   fn from(reply: randr::GetPanningReply) -> Reply {
5961     Reply::RandrGetPanning(reply)
5962   }
5963 }
5964 #[cfg(feature = "randr")]
5965 impl From<randr::SetPanningReply> for Reply {
from(reply: randr::SetPanningReply) -> Reply5966   fn from(reply: randr::SetPanningReply) -> Reply {
5967     Reply::RandrSetPanning(reply)
5968   }
5969 }
5970 #[cfg(feature = "randr")]
5971 impl From<randr::GetOutputPrimaryReply> for Reply {
from(reply: randr::GetOutputPrimaryReply) -> Reply5972   fn from(reply: randr::GetOutputPrimaryReply) -> Reply {
5973     Reply::RandrGetOutputPrimary(reply)
5974   }
5975 }
5976 #[cfg(feature = "randr")]
5977 impl From<randr::GetProvidersReply> for Reply {
from(reply: randr::GetProvidersReply) -> Reply5978   fn from(reply: randr::GetProvidersReply) -> Reply {
5979     Reply::RandrGetProviders(reply)
5980   }
5981 }
5982 #[cfg(feature = "randr")]
5983 impl From<randr::GetProviderInfoReply> for Reply {
from(reply: randr::GetProviderInfoReply) -> Reply5984   fn from(reply: randr::GetProviderInfoReply) -> Reply {
5985     Reply::RandrGetProviderInfo(reply)
5986   }
5987 }
5988 #[cfg(feature = "randr")]
5989 impl From<randr::ListProviderPropertiesReply> for Reply {
from(reply: randr::ListProviderPropertiesReply) -> Reply5990   fn from(reply: randr::ListProviderPropertiesReply) -> Reply {
5991     Reply::RandrListProviderProperties(reply)
5992   }
5993 }
5994 #[cfg(feature = "randr")]
5995 impl From<randr::QueryProviderPropertyReply> for Reply {
from(reply: randr::QueryProviderPropertyReply) -> Reply5996   fn from(reply: randr::QueryProviderPropertyReply) -> Reply {
5997     Reply::RandrQueryProviderProperty(reply)
5998   }
5999 }
6000 #[cfg(feature = "randr")]
6001 impl From<randr::GetProviderPropertyReply> for Reply {
from(reply: randr::GetProviderPropertyReply) -> Reply6002   fn from(reply: randr::GetProviderPropertyReply) -> Reply {
6003     Reply::RandrGetProviderProperty(reply)
6004   }
6005 }
6006 #[cfg(feature = "randr")]
6007 impl From<randr::GetMonitorsReply> for Reply {
from(reply: randr::GetMonitorsReply) -> Reply6008   fn from(reply: randr::GetMonitorsReply) -> Reply {
6009     Reply::RandrGetMonitors(reply)
6010   }
6011 }
6012 #[cfg(feature = "randr")]
6013 impl From<randr::CreateLeaseReply> for Reply {
from(reply: randr::CreateLeaseReply) -> Reply6014   fn from(reply: randr::CreateLeaseReply) -> Reply {
6015     Reply::RandrCreateLease(reply)
6016   }
6017 }
6018 #[cfg(feature = "record")]
6019 impl From<record::QueryVersionReply> for Reply {
from(reply: record::QueryVersionReply) -> Reply6020   fn from(reply: record::QueryVersionReply) -> Reply {
6021     Reply::RecordQueryVersion(reply)
6022   }
6023 }
6024 #[cfg(feature = "record")]
6025 impl From<record::GetContextReply> for Reply {
from(reply: record::GetContextReply) -> Reply6026   fn from(reply: record::GetContextReply) -> Reply {
6027     Reply::RecordGetContext(reply)
6028   }
6029 }
6030 #[cfg(feature = "record")]
6031 impl From<record::EnableContextReply> for Reply {
from(reply: record::EnableContextReply) -> Reply6032   fn from(reply: record::EnableContextReply) -> Reply {
6033     Reply::RecordEnableContext(reply)
6034   }
6035 }
6036 #[cfg(feature = "render")]
6037 impl From<render::QueryVersionReply> for Reply {
from(reply: render::QueryVersionReply) -> Reply6038   fn from(reply: render::QueryVersionReply) -> Reply {
6039     Reply::RenderQueryVersion(reply)
6040   }
6041 }
6042 #[cfg(feature = "render")]
6043 impl From<render::QueryPictFormatsReply> for Reply {
from(reply: render::QueryPictFormatsReply) -> Reply6044   fn from(reply: render::QueryPictFormatsReply) -> Reply {
6045     Reply::RenderQueryPictFormats(reply)
6046   }
6047 }
6048 #[cfg(feature = "render")]
6049 impl From<render::QueryPictIndexValuesReply> for Reply {
from(reply: render::QueryPictIndexValuesReply) -> Reply6050   fn from(reply: render::QueryPictIndexValuesReply) -> Reply {
6051     Reply::RenderQueryPictIndexValues(reply)
6052   }
6053 }
6054 #[cfg(feature = "render")]
6055 impl From<render::QueryFiltersReply> for Reply {
from(reply: render::QueryFiltersReply) -> Reply6056   fn from(reply: render::QueryFiltersReply) -> Reply {
6057     Reply::RenderQueryFilters(reply)
6058   }
6059 }
6060 #[cfg(feature = "res")]
6061 impl From<res::QueryVersionReply> for Reply {
from(reply: res::QueryVersionReply) -> Reply6062   fn from(reply: res::QueryVersionReply) -> Reply {
6063     Reply::ResQueryVersion(reply)
6064   }
6065 }
6066 #[cfg(feature = "res")]
6067 impl From<res::QueryClientsReply> for Reply {
from(reply: res::QueryClientsReply) -> Reply6068   fn from(reply: res::QueryClientsReply) -> Reply {
6069     Reply::ResQueryClients(reply)
6070   }
6071 }
6072 #[cfg(feature = "res")]
6073 impl From<res::QueryClientResourcesReply> for Reply {
from(reply: res::QueryClientResourcesReply) -> Reply6074   fn from(reply: res::QueryClientResourcesReply) -> Reply {
6075     Reply::ResQueryClientResources(reply)
6076   }
6077 }
6078 #[cfg(feature = "res")]
6079 impl From<res::QueryClientPixmapBytesReply> for Reply {
from(reply: res::QueryClientPixmapBytesReply) -> Reply6080   fn from(reply: res::QueryClientPixmapBytesReply) -> Reply {
6081     Reply::ResQueryClientPixmapBytes(reply)
6082   }
6083 }
6084 #[cfg(feature = "res")]
6085 impl From<res::QueryClientIdsReply> for Reply {
from(reply: res::QueryClientIdsReply) -> Reply6086   fn from(reply: res::QueryClientIdsReply) -> Reply {
6087     Reply::ResQueryClientIds(reply)
6088   }
6089 }
6090 #[cfg(feature = "res")]
6091 impl From<res::QueryResourceBytesReply> for Reply {
from(reply: res::QueryResourceBytesReply) -> Reply6092   fn from(reply: res::QueryResourceBytesReply) -> Reply {
6093     Reply::ResQueryResourceBytes(reply)
6094   }
6095 }
6096 #[cfg(feature = "screensaver")]
6097 impl From<screensaver::QueryVersionReply> for Reply {
from(reply: screensaver::QueryVersionReply) -> Reply6098   fn from(reply: screensaver::QueryVersionReply) -> Reply {
6099     Reply::ScreensaverQueryVersion(reply)
6100   }
6101 }
6102 #[cfg(feature = "screensaver")]
6103 impl From<screensaver::QueryInfoReply> for Reply {
from(reply: screensaver::QueryInfoReply) -> Reply6104   fn from(reply: screensaver::QueryInfoReply) -> Reply {
6105     Reply::ScreensaverQueryInfo(reply)
6106   }
6107 }
6108 #[cfg(feature = "shape")]
6109 impl From<shape::QueryVersionReply> for Reply {
from(reply: shape::QueryVersionReply) -> Reply6110   fn from(reply: shape::QueryVersionReply) -> Reply {
6111     Reply::ShapeQueryVersion(reply)
6112   }
6113 }
6114 #[cfg(feature = "shape")]
6115 impl From<shape::QueryExtentsReply> for Reply {
from(reply: shape::QueryExtentsReply) -> Reply6116   fn from(reply: shape::QueryExtentsReply) -> Reply {
6117     Reply::ShapeQueryExtents(reply)
6118   }
6119 }
6120 #[cfg(feature = "shape")]
6121 impl From<shape::InputSelectedReply> for Reply {
from(reply: shape::InputSelectedReply) -> Reply6122   fn from(reply: shape::InputSelectedReply) -> Reply {
6123     Reply::ShapeInputSelected(reply)
6124   }
6125 }
6126 #[cfg(feature = "shape")]
6127 impl From<shape::GetRectanglesReply> for Reply {
from(reply: shape::GetRectanglesReply) -> Reply6128   fn from(reply: shape::GetRectanglesReply) -> Reply {
6129     Reply::ShapeGetRectangles(reply)
6130   }
6131 }
6132 #[cfg(feature = "shm")]
6133 impl From<shm::QueryVersionReply> for Reply {
from(reply: shm::QueryVersionReply) -> Reply6134   fn from(reply: shm::QueryVersionReply) -> Reply {
6135     Reply::ShmQueryVersion(reply)
6136   }
6137 }
6138 #[cfg(feature = "shm")]
6139 impl From<shm::GetImageReply> for Reply {
from(reply: shm::GetImageReply) -> Reply6140   fn from(reply: shm::GetImageReply) -> Reply {
6141     Reply::ShmGetImage(reply)
6142   }
6143 }
6144 #[cfg(feature = "shm")]
6145 impl From<shm::CreateSegmentReply> for Reply {
from(reply: shm::CreateSegmentReply) -> Reply6146   fn from(reply: shm::CreateSegmentReply) -> Reply {
6147     Reply::ShmCreateSegment(reply)
6148   }
6149 }
6150 #[cfg(feature = "sync")]
6151 impl From<sync::InitializeReply> for Reply {
from(reply: sync::InitializeReply) -> Reply6152   fn from(reply: sync::InitializeReply) -> Reply {
6153     Reply::SyncInitialize(reply)
6154   }
6155 }
6156 #[cfg(feature = "sync")]
6157 impl From<sync::ListSystemCountersReply> for Reply {
from(reply: sync::ListSystemCountersReply) -> Reply6158   fn from(reply: sync::ListSystemCountersReply) -> Reply {
6159     Reply::SyncListSystemCounters(reply)
6160   }
6161 }
6162 #[cfg(feature = "sync")]
6163 impl From<sync::QueryCounterReply> for Reply {
from(reply: sync::QueryCounterReply) -> Reply6164   fn from(reply: sync::QueryCounterReply) -> Reply {
6165     Reply::SyncQueryCounter(reply)
6166   }
6167 }
6168 #[cfg(feature = "sync")]
6169 impl From<sync::QueryAlarmReply> for Reply {
from(reply: sync::QueryAlarmReply) -> Reply6170   fn from(reply: sync::QueryAlarmReply) -> Reply {
6171     Reply::SyncQueryAlarm(reply)
6172   }
6173 }
6174 #[cfg(feature = "sync")]
6175 impl From<sync::GetPriorityReply> for Reply {
from(reply: sync::GetPriorityReply) -> Reply6176   fn from(reply: sync::GetPriorityReply) -> Reply {
6177     Reply::SyncGetPriority(reply)
6178   }
6179 }
6180 #[cfg(feature = "sync")]
6181 impl From<sync::QueryFenceReply> for Reply {
from(reply: sync::QueryFenceReply) -> Reply6182   fn from(reply: sync::QueryFenceReply) -> Reply {
6183     Reply::SyncQueryFence(reply)
6184   }
6185 }
6186 impl From<xc_misc::GetVersionReply> for Reply {
from(reply: xc_misc::GetVersionReply) -> Reply6187   fn from(reply: xc_misc::GetVersionReply) -> Reply {
6188     Reply::XcMiscGetVersion(reply)
6189   }
6190 }
6191 impl From<xc_misc::GetXIDRangeReply> for Reply {
from(reply: xc_misc::GetXIDRangeReply) -> Reply6192   fn from(reply: xc_misc::GetXIDRangeReply) -> Reply {
6193     Reply::XcMiscGetXIDRange(reply)
6194   }
6195 }
6196 impl From<xc_misc::GetXIDListReply> for Reply {
from(reply: xc_misc::GetXIDListReply) -> Reply6197   fn from(reply: xc_misc::GetXIDListReply) -> Reply {
6198     Reply::XcMiscGetXIDList(reply)
6199   }
6200 }
6201 #[cfg(feature = "xevie")]
6202 impl From<xevie::QueryVersionReply> for Reply {
from(reply: xevie::QueryVersionReply) -> Reply6203   fn from(reply: xevie::QueryVersionReply) -> Reply {
6204     Reply::XevieQueryVersion(reply)
6205   }
6206 }
6207 #[cfg(feature = "xevie")]
6208 impl From<xevie::StartReply> for Reply {
from(reply: xevie::StartReply) -> Reply6209   fn from(reply: xevie::StartReply) -> Reply {
6210     Reply::XevieStart(reply)
6211   }
6212 }
6213 #[cfg(feature = "xevie")]
6214 impl From<xevie::EndReply> for Reply {
from(reply: xevie::EndReply) -> Reply6215   fn from(reply: xevie::EndReply) -> Reply {
6216     Reply::XevieEnd(reply)
6217   }
6218 }
6219 #[cfg(feature = "xevie")]
6220 impl From<xevie::SendReply> for Reply {
from(reply: xevie::SendReply) -> Reply6221   fn from(reply: xevie::SendReply) -> Reply {
6222     Reply::XevieSend(reply)
6223   }
6224 }
6225 #[cfg(feature = "xevie")]
6226 impl From<xevie::SelectInputReply> for Reply {
from(reply: xevie::SelectInputReply) -> Reply6227   fn from(reply: xevie::SelectInputReply) -> Reply {
6228     Reply::XevieSelectInput(reply)
6229   }
6230 }
6231 #[cfg(feature = "xf86dri")]
6232 impl From<xf86dri::QueryVersionReply> for Reply {
from(reply: xf86dri::QueryVersionReply) -> Reply6233   fn from(reply: xf86dri::QueryVersionReply) -> Reply {
6234     Reply::Xf86driQueryVersion(reply)
6235   }
6236 }
6237 #[cfg(feature = "xf86dri")]
6238 impl From<xf86dri::QueryDirectRenderingCapableReply> for Reply {
from(reply: xf86dri::QueryDirectRenderingCapableReply) -> Reply6239   fn from(reply: xf86dri::QueryDirectRenderingCapableReply) -> Reply {
6240     Reply::Xf86driQueryDirectRenderingCapable(reply)
6241   }
6242 }
6243 #[cfg(feature = "xf86dri")]
6244 impl From<xf86dri::OpenConnectionReply> for Reply {
from(reply: xf86dri::OpenConnectionReply) -> Reply6245   fn from(reply: xf86dri::OpenConnectionReply) -> Reply {
6246     Reply::Xf86driOpenConnection(reply)
6247   }
6248 }
6249 #[cfg(feature = "xf86dri")]
6250 impl From<xf86dri::GetClientDriverNameReply> for Reply {
from(reply: xf86dri::GetClientDriverNameReply) -> Reply6251   fn from(reply: xf86dri::GetClientDriverNameReply) -> Reply {
6252     Reply::Xf86driGetClientDriverName(reply)
6253   }
6254 }
6255 #[cfg(feature = "xf86dri")]
6256 impl From<xf86dri::CreateContextReply> for Reply {
from(reply: xf86dri::CreateContextReply) -> Reply6257   fn from(reply: xf86dri::CreateContextReply) -> Reply {
6258     Reply::Xf86driCreateContext(reply)
6259   }
6260 }
6261 #[cfg(feature = "xf86dri")]
6262 impl From<xf86dri::CreateDrawableReply> for Reply {
from(reply: xf86dri::CreateDrawableReply) -> Reply6263   fn from(reply: xf86dri::CreateDrawableReply) -> Reply {
6264     Reply::Xf86driCreateDrawable(reply)
6265   }
6266 }
6267 #[cfg(feature = "xf86dri")]
6268 impl From<xf86dri::GetDrawableInfoReply> for Reply {
from(reply: xf86dri::GetDrawableInfoReply) -> Reply6269   fn from(reply: xf86dri::GetDrawableInfoReply) -> Reply {
6270     Reply::Xf86driGetDrawableInfo(reply)
6271   }
6272 }
6273 #[cfg(feature = "xf86dri")]
6274 impl From<xf86dri::GetDeviceInfoReply> for Reply {
from(reply: xf86dri::GetDeviceInfoReply) -> Reply6275   fn from(reply: xf86dri::GetDeviceInfoReply) -> Reply {
6276     Reply::Xf86driGetDeviceInfo(reply)
6277   }
6278 }
6279 #[cfg(feature = "xf86dri")]
6280 impl From<xf86dri::AuthConnectionReply> for Reply {
from(reply: xf86dri::AuthConnectionReply) -> Reply6281   fn from(reply: xf86dri::AuthConnectionReply) -> Reply {
6282     Reply::Xf86driAuthConnection(reply)
6283   }
6284 }
6285 #[cfg(feature = "xf86vidmode")]
6286 impl From<xf86vidmode::QueryVersionReply> for Reply {
from(reply: xf86vidmode::QueryVersionReply) -> Reply6287   fn from(reply: xf86vidmode::QueryVersionReply) -> Reply {
6288     Reply::Xf86vidmodeQueryVersion(reply)
6289   }
6290 }
6291 #[cfg(feature = "xf86vidmode")]
6292 impl From<xf86vidmode::GetModeLineReply> for Reply {
from(reply: xf86vidmode::GetModeLineReply) -> Reply6293   fn from(reply: xf86vidmode::GetModeLineReply) -> Reply {
6294     Reply::Xf86vidmodeGetModeLine(reply)
6295   }
6296 }
6297 #[cfg(feature = "xf86vidmode")]
6298 impl From<xf86vidmode::GetMonitorReply> for Reply {
from(reply: xf86vidmode::GetMonitorReply) -> Reply6299   fn from(reply: xf86vidmode::GetMonitorReply) -> Reply {
6300     Reply::Xf86vidmodeGetMonitor(reply)
6301   }
6302 }
6303 #[cfg(feature = "xf86vidmode")]
6304 impl From<xf86vidmode::GetAllModeLinesReply> for Reply {
from(reply: xf86vidmode::GetAllModeLinesReply) -> Reply6305   fn from(reply: xf86vidmode::GetAllModeLinesReply) -> Reply {
6306     Reply::Xf86vidmodeGetAllModeLines(reply)
6307   }
6308 }
6309 #[cfg(feature = "xf86vidmode")]
6310 impl From<xf86vidmode::ValidateModeLineReply> for Reply {
from(reply: xf86vidmode::ValidateModeLineReply) -> Reply6311   fn from(reply: xf86vidmode::ValidateModeLineReply) -> Reply {
6312     Reply::Xf86vidmodeValidateModeLine(reply)
6313   }
6314 }
6315 #[cfg(feature = "xf86vidmode")]
6316 impl From<xf86vidmode::GetViewPortReply> for Reply {
from(reply: xf86vidmode::GetViewPortReply) -> Reply6317   fn from(reply: xf86vidmode::GetViewPortReply) -> Reply {
6318     Reply::Xf86vidmodeGetViewPort(reply)
6319   }
6320 }
6321 #[cfg(feature = "xf86vidmode")]
6322 impl From<xf86vidmode::GetDotClocksReply> for Reply {
from(reply: xf86vidmode::GetDotClocksReply) -> Reply6323   fn from(reply: xf86vidmode::GetDotClocksReply) -> Reply {
6324     Reply::Xf86vidmodeGetDotClocks(reply)
6325   }
6326 }
6327 #[cfg(feature = "xf86vidmode")]
6328 impl From<xf86vidmode::GetGammaReply> for Reply {
from(reply: xf86vidmode::GetGammaReply) -> Reply6329   fn from(reply: xf86vidmode::GetGammaReply) -> Reply {
6330     Reply::Xf86vidmodeGetGamma(reply)
6331   }
6332 }
6333 #[cfg(feature = "xf86vidmode")]
6334 impl From<xf86vidmode::GetGammaRampReply> for Reply {
from(reply: xf86vidmode::GetGammaRampReply) -> Reply6335   fn from(reply: xf86vidmode::GetGammaRampReply) -> Reply {
6336     Reply::Xf86vidmodeGetGammaRamp(reply)
6337   }
6338 }
6339 #[cfg(feature = "xf86vidmode")]
6340 impl From<xf86vidmode::GetGammaRampSizeReply> for Reply {
from(reply: xf86vidmode::GetGammaRampSizeReply) -> Reply6341   fn from(reply: xf86vidmode::GetGammaRampSizeReply) -> Reply {
6342     Reply::Xf86vidmodeGetGammaRampSize(reply)
6343   }
6344 }
6345 #[cfg(feature = "xf86vidmode")]
6346 impl From<xf86vidmode::GetPermissionsReply> for Reply {
from(reply: xf86vidmode::GetPermissionsReply) -> Reply6347   fn from(reply: xf86vidmode::GetPermissionsReply) -> Reply {
6348     Reply::Xf86vidmodeGetPermissions(reply)
6349   }
6350 }
6351 #[cfg(feature = "xfixes")]
6352 impl From<xfixes::QueryVersionReply> for Reply {
from(reply: xfixes::QueryVersionReply) -> Reply6353   fn from(reply: xfixes::QueryVersionReply) -> Reply {
6354     Reply::XfixesQueryVersion(reply)
6355   }
6356 }
6357 #[cfg(feature = "xfixes")]
6358 impl From<xfixes::GetCursorImageReply> for Reply {
from(reply: xfixes::GetCursorImageReply) -> Reply6359   fn from(reply: xfixes::GetCursorImageReply) -> Reply {
6360     Reply::XfixesGetCursorImage(reply)
6361   }
6362 }
6363 #[cfg(feature = "xfixes")]
6364 impl From<xfixes::FetchRegionReply> for Reply {
from(reply: xfixes::FetchRegionReply) -> Reply6365   fn from(reply: xfixes::FetchRegionReply) -> Reply {
6366     Reply::XfixesFetchRegion(reply)
6367   }
6368 }
6369 #[cfg(feature = "xfixes")]
6370 impl From<xfixes::GetCursorNameReply> for Reply {
from(reply: xfixes::GetCursorNameReply) -> Reply6371   fn from(reply: xfixes::GetCursorNameReply) -> Reply {
6372     Reply::XfixesGetCursorName(reply)
6373   }
6374 }
6375 #[cfg(feature = "xfixes")]
6376 impl From<xfixes::GetCursorImageAndNameReply> for Reply {
from(reply: xfixes::GetCursorImageAndNameReply) -> Reply6377   fn from(reply: xfixes::GetCursorImageAndNameReply) -> Reply {
6378     Reply::XfixesGetCursorImageAndName(reply)
6379   }
6380 }
6381 #[cfg(feature = "xinerama")]
6382 impl From<xinerama::QueryVersionReply> for Reply {
from(reply: xinerama::QueryVersionReply) -> Reply6383   fn from(reply: xinerama::QueryVersionReply) -> Reply {
6384     Reply::XineramaQueryVersion(reply)
6385   }
6386 }
6387 #[cfg(feature = "xinerama")]
6388 impl From<xinerama::GetStateReply> for Reply {
from(reply: xinerama::GetStateReply) -> Reply6389   fn from(reply: xinerama::GetStateReply) -> Reply {
6390     Reply::XineramaGetState(reply)
6391   }
6392 }
6393 #[cfg(feature = "xinerama")]
6394 impl From<xinerama::GetScreenCountReply> for Reply {
from(reply: xinerama::GetScreenCountReply) -> Reply6395   fn from(reply: xinerama::GetScreenCountReply) -> Reply {
6396     Reply::XineramaGetScreenCount(reply)
6397   }
6398 }
6399 #[cfg(feature = "xinerama")]
6400 impl From<xinerama::GetScreenSizeReply> for Reply {
from(reply: xinerama::GetScreenSizeReply) -> Reply6401   fn from(reply: xinerama::GetScreenSizeReply) -> Reply {
6402     Reply::XineramaGetScreenSize(reply)
6403   }
6404 }
6405 #[cfg(feature = "xinerama")]
6406 impl From<xinerama::IsActiveReply> for Reply {
from(reply: xinerama::IsActiveReply) -> Reply6407   fn from(reply: xinerama::IsActiveReply) -> Reply {
6408     Reply::XineramaIsActive(reply)
6409   }
6410 }
6411 #[cfg(feature = "xinerama")]
6412 impl From<xinerama::QueryScreensReply> for Reply {
from(reply: xinerama::QueryScreensReply) -> Reply6413   fn from(reply: xinerama::QueryScreensReply) -> Reply {
6414     Reply::XineramaQueryScreens(reply)
6415   }
6416 }
6417 #[cfg(feature = "xinput")]
6418 impl From<xinput::GetExtensionVersionReply> for Reply {
from(reply: xinput::GetExtensionVersionReply) -> Reply6419   fn from(reply: xinput::GetExtensionVersionReply) -> Reply {
6420     Reply::XinputGetExtensionVersion(reply)
6421   }
6422 }
6423 #[cfg(feature = "xinput")]
6424 impl From<xinput::ListInputDevicesReply> for Reply {
from(reply: xinput::ListInputDevicesReply) -> Reply6425   fn from(reply: xinput::ListInputDevicesReply) -> Reply {
6426     Reply::XinputListInputDevices(reply)
6427   }
6428 }
6429 #[cfg(feature = "xinput")]
6430 impl From<xinput::OpenDeviceReply> for Reply {
from(reply: xinput::OpenDeviceReply) -> Reply6431   fn from(reply: xinput::OpenDeviceReply) -> Reply {
6432     Reply::XinputOpenDevice(reply)
6433   }
6434 }
6435 #[cfg(feature = "xinput")]
6436 impl From<xinput::SetDeviceModeReply> for Reply {
from(reply: xinput::SetDeviceModeReply) -> Reply6437   fn from(reply: xinput::SetDeviceModeReply) -> Reply {
6438     Reply::XinputSetDeviceMode(reply)
6439   }
6440 }
6441 #[cfg(feature = "xinput")]
6442 impl From<xinput::GetSelectedExtensionEventsReply> for Reply {
from(reply: xinput::GetSelectedExtensionEventsReply) -> Reply6443   fn from(reply: xinput::GetSelectedExtensionEventsReply) -> Reply {
6444     Reply::XinputGetSelectedExtensionEvents(reply)
6445   }
6446 }
6447 #[cfg(feature = "xinput")]
6448 impl From<xinput::GetDeviceDontPropagateListReply> for Reply {
from(reply: xinput::GetDeviceDontPropagateListReply) -> Reply6449   fn from(reply: xinput::GetDeviceDontPropagateListReply) -> Reply {
6450     Reply::XinputGetDeviceDontPropagateList(reply)
6451   }
6452 }
6453 #[cfg(feature = "xinput")]
6454 impl From<xinput::GetDeviceMotionEventsReply> for Reply {
from(reply: xinput::GetDeviceMotionEventsReply) -> Reply6455   fn from(reply: xinput::GetDeviceMotionEventsReply) -> Reply {
6456     Reply::XinputGetDeviceMotionEvents(reply)
6457   }
6458 }
6459 #[cfg(feature = "xinput")]
6460 impl From<xinput::ChangeKeyboardDeviceReply> for Reply {
from(reply: xinput::ChangeKeyboardDeviceReply) -> Reply6461   fn from(reply: xinput::ChangeKeyboardDeviceReply) -> Reply {
6462     Reply::XinputChangeKeyboardDevice(reply)
6463   }
6464 }
6465 #[cfg(feature = "xinput")]
6466 impl From<xinput::ChangePointerDeviceReply> for Reply {
from(reply: xinput::ChangePointerDeviceReply) -> Reply6467   fn from(reply: xinput::ChangePointerDeviceReply) -> Reply {
6468     Reply::XinputChangePointerDevice(reply)
6469   }
6470 }
6471 #[cfg(feature = "xinput")]
6472 impl From<xinput::GrabDeviceReply> for Reply {
from(reply: xinput::GrabDeviceReply) -> Reply6473   fn from(reply: xinput::GrabDeviceReply) -> Reply {
6474     Reply::XinputGrabDevice(reply)
6475   }
6476 }
6477 #[cfg(feature = "xinput")]
6478 impl From<xinput::GetDeviceFocusReply> for Reply {
from(reply: xinput::GetDeviceFocusReply) -> Reply6479   fn from(reply: xinput::GetDeviceFocusReply) -> Reply {
6480     Reply::XinputGetDeviceFocus(reply)
6481   }
6482 }
6483 #[cfg(feature = "xinput")]
6484 impl From<xinput::GetFeedbackControlReply> for Reply {
from(reply: xinput::GetFeedbackControlReply) -> Reply6485   fn from(reply: xinput::GetFeedbackControlReply) -> Reply {
6486     Reply::XinputGetFeedbackControl(reply)
6487   }
6488 }
6489 #[cfg(feature = "xinput")]
6490 impl From<xinput::GetDeviceKeyMappingReply> for Reply {
from(reply: xinput::GetDeviceKeyMappingReply) -> Reply6491   fn from(reply: xinput::GetDeviceKeyMappingReply) -> Reply {
6492     Reply::XinputGetDeviceKeyMapping(reply)
6493   }
6494 }
6495 #[cfg(feature = "xinput")]
6496 impl From<xinput::GetDeviceModifierMappingReply> for Reply {
from(reply: xinput::GetDeviceModifierMappingReply) -> Reply6497   fn from(reply: xinput::GetDeviceModifierMappingReply) -> Reply {
6498     Reply::XinputGetDeviceModifierMapping(reply)
6499   }
6500 }
6501 #[cfg(feature = "xinput")]
6502 impl From<xinput::SetDeviceModifierMappingReply> for Reply {
from(reply: xinput::SetDeviceModifierMappingReply) -> Reply6503   fn from(reply: xinput::SetDeviceModifierMappingReply) -> Reply {
6504     Reply::XinputSetDeviceModifierMapping(reply)
6505   }
6506 }
6507 #[cfg(feature = "xinput")]
6508 impl From<xinput::GetDeviceButtonMappingReply> for Reply {
from(reply: xinput::GetDeviceButtonMappingReply) -> Reply6509   fn from(reply: xinput::GetDeviceButtonMappingReply) -> Reply {
6510     Reply::XinputGetDeviceButtonMapping(reply)
6511   }
6512 }
6513 #[cfg(feature = "xinput")]
6514 impl From<xinput::SetDeviceButtonMappingReply> for Reply {
from(reply: xinput::SetDeviceButtonMappingReply) -> Reply6515   fn from(reply: xinput::SetDeviceButtonMappingReply) -> Reply {
6516     Reply::XinputSetDeviceButtonMapping(reply)
6517   }
6518 }
6519 #[cfg(feature = "xinput")]
6520 impl From<xinput::QueryDeviceStateReply> for Reply {
from(reply: xinput::QueryDeviceStateReply) -> Reply6521   fn from(reply: xinput::QueryDeviceStateReply) -> Reply {
6522     Reply::XinputQueryDeviceState(reply)
6523   }
6524 }
6525 #[cfg(feature = "xinput")]
6526 impl From<xinput::SetDeviceValuatorsReply> for Reply {
from(reply: xinput::SetDeviceValuatorsReply) -> Reply6527   fn from(reply: xinput::SetDeviceValuatorsReply) -> Reply {
6528     Reply::XinputSetDeviceValuators(reply)
6529   }
6530 }
6531 #[cfg(feature = "xinput")]
6532 impl From<xinput::GetDeviceControlReply> for Reply {
from(reply: xinput::GetDeviceControlReply) -> Reply6533   fn from(reply: xinput::GetDeviceControlReply) -> Reply {
6534     Reply::XinputGetDeviceControl(reply)
6535   }
6536 }
6537 #[cfg(feature = "xinput")]
6538 impl From<xinput::ChangeDeviceControlReply> for Reply {
from(reply: xinput::ChangeDeviceControlReply) -> Reply6539   fn from(reply: xinput::ChangeDeviceControlReply) -> Reply {
6540     Reply::XinputChangeDeviceControl(reply)
6541   }
6542 }
6543 #[cfg(feature = "xinput")]
6544 impl From<xinput::ListDevicePropertiesReply> for Reply {
from(reply: xinput::ListDevicePropertiesReply) -> Reply6545   fn from(reply: xinput::ListDevicePropertiesReply) -> Reply {
6546     Reply::XinputListDeviceProperties(reply)
6547   }
6548 }
6549 #[cfg(feature = "xinput")]
6550 impl From<xinput::GetDevicePropertyReply> for Reply {
from(reply: xinput::GetDevicePropertyReply) -> Reply6551   fn from(reply: xinput::GetDevicePropertyReply) -> Reply {
6552     Reply::XinputGetDeviceProperty(reply)
6553   }
6554 }
6555 #[cfg(feature = "xinput")]
6556 impl From<xinput::XIQueryPointerReply> for Reply {
from(reply: xinput::XIQueryPointerReply) -> Reply6557   fn from(reply: xinput::XIQueryPointerReply) -> Reply {
6558     Reply::XinputXIQueryPointer(reply)
6559   }
6560 }
6561 #[cfg(feature = "xinput")]
6562 impl From<xinput::XIGetClientPointerReply> for Reply {
from(reply: xinput::XIGetClientPointerReply) -> Reply6563   fn from(reply: xinput::XIGetClientPointerReply) -> Reply {
6564     Reply::XinputXIGetClientPointer(reply)
6565   }
6566 }
6567 #[cfg(feature = "xinput")]
6568 impl From<xinput::XIQueryVersionReply> for Reply {
from(reply: xinput::XIQueryVersionReply) -> Reply6569   fn from(reply: xinput::XIQueryVersionReply) -> Reply {
6570     Reply::XinputXIQueryVersion(reply)
6571   }
6572 }
6573 #[cfg(feature = "xinput")]
6574 impl From<xinput::XIQueryDeviceReply> for Reply {
from(reply: xinput::XIQueryDeviceReply) -> Reply6575   fn from(reply: xinput::XIQueryDeviceReply) -> Reply {
6576     Reply::XinputXIQueryDevice(reply)
6577   }
6578 }
6579 #[cfg(feature = "xinput")]
6580 impl From<xinput::XIGetFocusReply> for Reply {
from(reply: xinput::XIGetFocusReply) -> Reply6581   fn from(reply: xinput::XIGetFocusReply) -> Reply {
6582     Reply::XinputXIGetFocus(reply)
6583   }
6584 }
6585 #[cfg(feature = "xinput")]
6586 impl From<xinput::XIGrabDeviceReply> for Reply {
from(reply: xinput::XIGrabDeviceReply) -> Reply6587   fn from(reply: xinput::XIGrabDeviceReply) -> Reply {
6588     Reply::XinputXIGrabDevice(reply)
6589   }
6590 }
6591 #[cfg(feature = "xinput")]
6592 impl From<xinput::XIPassiveGrabDeviceReply> for Reply {
from(reply: xinput::XIPassiveGrabDeviceReply) -> Reply6593   fn from(reply: xinput::XIPassiveGrabDeviceReply) -> Reply {
6594     Reply::XinputXIPassiveGrabDevice(reply)
6595   }
6596 }
6597 #[cfg(feature = "xinput")]
6598 impl From<xinput::XIListPropertiesReply> for Reply {
from(reply: xinput::XIListPropertiesReply) -> Reply6599   fn from(reply: xinput::XIListPropertiesReply) -> Reply {
6600     Reply::XinputXIListProperties(reply)
6601   }
6602 }
6603 #[cfg(feature = "xinput")]
6604 impl From<xinput::XIGetPropertyReply> for Reply {
from(reply: xinput::XIGetPropertyReply) -> Reply6605   fn from(reply: xinput::XIGetPropertyReply) -> Reply {
6606     Reply::XinputXIGetProperty(reply)
6607   }
6608 }
6609 #[cfg(feature = "xinput")]
6610 impl From<xinput::XIGetSelectedEventsReply> for Reply {
from(reply: xinput::XIGetSelectedEventsReply) -> Reply6611   fn from(reply: xinput::XIGetSelectedEventsReply) -> Reply {
6612     Reply::XinputXIGetSelectedEvents(reply)
6613   }
6614 }
6615 #[cfg(feature = "xkb")]
6616 impl From<xkb::UseExtensionReply> for Reply {
from(reply: xkb::UseExtensionReply) -> Reply6617   fn from(reply: xkb::UseExtensionReply) -> Reply {
6618     Reply::XkbUseExtension(reply)
6619   }
6620 }
6621 #[cfg(feature = "xkb")]
6622 impl From<xkb::GetStateReply> for Reply {
from(reply: xkb::GetStateReply) -> Reply6623   fn from(reply: xkb::GetStateReply) -> Reply {
6624     Reply::XkbGetState(reply)
6625   }
6626 }
6627 #[cfg(feature = "xkb")]
6628 impl From<xkb::GetControlsReply> for Reply {
from(reply: xkb::GetControlsReply) -> Reply6629   fn from(reply: xkb::GetControlsReply) -> Reply {
6630     Reply::XkbGetControls(reply)
6631   }
6632 }
6633 #[cfg(feature = "xkb")]
6634 impl From<xkb::GetMapReply> for Reply {
from(reply: xkb::GetMapReply) -> Reply6635   fn from(reply: xkb::GetMapReply) -> Reply {
6636     Reply::XkbGetMap(reply)
6637   }
6638 }
6639 #[cfg(feature = "xkb")]
6640 impl From<xkb::GetCompatMapReply> for Reply {
from(reply: xkb::GetCompatMapReply) -> Reply6641   fn from(reply: xkb::GetCompatMapReply) -> Reply {
6642     Reply::XkbGetCompatMap(reply)
6643   }
6644 }
6645 #[cfg(feature = "xkb")]
6646 impl From<xkb::GetIndicatorStateReply> for Reply {
from(reply: xkb::GetIndicatorStateReply) -> Reply6647   fn from(reply: xkb::GetIndicatorStateReply) -> Reply {
6648     Reply::XkbGetIndicatorState(reply)
6649   }
6650 }
6651 #[cfg(feature = "xkb")]
6652 impl From<xkb::GetIndicatorMapReply> for Reply {
from(reply: xkb::GetIndicatorMapReply) -> Reply6653   fn from(reply: xkb::GetIndicatorMapReply) -> Reply {
6654     Reply::XkbGetIndicatorMap(reply)
6655   }
6656 }
6657 #[cfg(feature = "xkb")]
6658 impl From<xkb::GetNamedIndicatorReply> for Reply {
from(reply: xkb::GetNamedIndicatorReply) -> Reply6659   fn from(reply: xkb::GetNamedIndicatorReply) -> Reply {
6660     Reply::XkbGetNamedIndicator(reply)
6661   }
6662 }
6663 #[cfg(feature = "xkb")]
6664 impl From<xkb::GetNamesReply> for Reply {
from(reply: xkb::GetNamesReply) -> Reply6665   fn from(reply: xkb::GetNamesReply) -> Reply {
6666     Reply::XkbGetNames(reply)
6667   }
6668 }
6669 #[cfg(feature = "xkb")]
6670 impl From<xkb::PerClientFlagsReply> for Reply {
from(reply: xkb::PerClientFlagsReply) -> Reply6671   fn from(reply: xkb::PerClientFlagsReply) -> Reply {
6672     Reply::XkbPerClientFlags(reply)
6673   }
6674 }
6675 #[cfg(feature = "xkb")]
6676 impl From<xkb::ListComponentsReply> for Reply {
from(reply: xkb::ListComponentsReply) -> Reply6677   fn from(reply: xkb::ListComponentsReply) -> Reply {
6678     Reply::XkbListComponents(reply)
6679   }
6680 }
6681 #[cfg(feature = "xkb")]
6682 impl From<xkb::GetKbdByNameReply> for Reply {
from(reply: xkb::GetKbdByNameReply) -> Reply6683   fn from(reply: xkb::GetKbdByNameReply) -> Reply {
6684     Reply::XkbGetKbdByName(reply)
6685   }
6686 }
6687 #[cfg(feature = "xkb")]
6688 impl From<xkb::GetDeviceInfoReply> for Reply {
from(reply: xkb::GetDeviceInfoReply) -> Reply6689   fn from(reply: xkb::GetDeviceInfoReply) -> Reply {
6690     Reply::XkbGetDeviceInfo(reply)
6691   }
6692 }
6693 #[cfg(feature = "xkb")]
6694 impl From<xkb::SetDebuggingFlagsReply> for Reply {
from(reply: xkb::SetDebuggingFlagsReply) -> Reply6695   fn from(reply: xkb::SetDebuggingFlagsReply) -> Reply {
6696     Reply::XkbSetDebuggingFlags(reply)
6697   }
6698 }
6699 #[cfg(feature = "xprint")]
6700 impl From<xprint::PrintQueryVersionReply> for Reply {
from(reply: xprint::PrintQueryVersionReply) -> Reply6701   fn from(reply: xprint::PrintQueryVersionReply) -> Reply {
6702     Reply::XprintPrintQueryVersion(reply)
6703   }
6704 }
6705 #[cfg(feature = "xprint")]
6706 impl From<xprint::PrintGetPrinterListReply> for Reply {
from(reply: xprint::PrintGetPrinterListReply) -> Reply6707   fn from(reply: xprint::PrintGetPrinterListReply) -> Reply {
6708     Reply::XprintPrintGetPrinterList(reply)
6709   }
6710 }
6711 #[cfg(feature = "xprint")]
6712 impl From<xprint::PrintGetContextReply> for Reply {
from(reply: xprint::PrintGetContextReply) -> Reply6713   fn from(reply: xprint::PrintGetContextReply) -> Reply {
6714     Reply::XprintPrintGetContext(reply)
6715   }
6716 }
6717 #[cfg(feature = "xprint")]
6718 impl From<xprint::PrintGetScreenOfContextReply> for Reply {
from(reply: xprint::PrintGetScreenOfContextReply) -> Reply6719   fn from(reply: xprint::PrintGetScreenOfContextReply) -> Reply {
6720     Reply::XprintPrintGetScreenOfContext(reply)
6721   }
6722 }
6723 #[cfg(feature = "xprint")]
6724 impl From<xprint::PrintGetDocumentDataReply> for Reply {
from(reply: xprint::PrintGetDocumentDataReply) -> Reply6725   fn from(reply: xprint::PrintGetDocumentDataReply) -> Reply {
6726     Reply::XprintPrintGetDocumentData(reply)
6727   }
6728 }
6729 #[cfg(feature = "xprint")]
6730 impl From<xprint::PrintInputSelectedReply> for Reply {
from(reply: xprint::PrintInputSelectedReply) -> Reply6731   fn from(reply: xprint::PrintInputSelectedReply) -> Reply {
6732     Reply::XprintPrintInputSelected(reply)
6733   }
6734 }
6735 #[cfg(feature = "xprint")]
6736 impl From<xprint::PrintGetAttributesReply> for Reply {
from(reply: xprint::PrintGetAttributesReply) -> Reply6737   fn from(reply: xprint::PrintGetAttributesReply) -> Reply {
6738     Reply::XprintPrintGetAttributes(reply)
6739   }
6740 }
6741 #[cfg(feature = "xprint")]
6742 impl From<xprint::PrintGetOneAttributesReply> for Reply {
from(reply: xprint::PrintGetOneAttributesReply) -> Reply6743   fn from(reply: xprint::PrintGetOneAttributesReply) -> Reply {
6744     Reply::XprintPrintGetOneAttributes(reply)
6745   }
6746 }
6747 #[cfg(feature = "xprint")]
6748 impl From<xprint::PrintGetPageDimensionsReply> for Reply {
from(reply: xprint::PrintGetPageDimensionsReply) -> Reply6749   fn from(reply: xprint::PrintGetPageDimensionsReply) -> Reply {
6750     Reply::XprintPrintGetPageDimensions(reply)
6751   }
6752 }
6753 #[cfg(feature = "xprint")]
6754 impl From<xprint::PrintQueryScreensReply> for Reply {
from(reply: xprint::PrintQueryScreensReply) -> Reply6755   fn from(reply: xprint::PrintQueryScreensReply) -> Reply {
6756     Reply::XprintPrintQueryScreens(reply)
6757   }
6758 }
6759 #[cfg(feature = "xprint")]
6760 impl From<xprint::PrintSetImageResolutionReply> for Reply {
from(reply: xprint::PrintSetImageResolutionReply) -> Reply6761   fn from(reply: xprint::PrintSetImageResolutionReply) -> Reply {
6762     Reply::XprintPrintSetImageResolution(reply)
6763   }
6764 }
6765 #[cfg(feature = "xprint")]
6766 impl From<xprint::PrintGetImageResolutionReply> for Reply {
from(reply: xprint::PrintGetImageResolutionReply) -> Reply6767   fn from(reply: xprint::PrintGetImageResolutionReply) -> Reply {
6768     Reply::XprintPrintGetImageResolution(reply)
6769   }
6770 }
6771 #[cfg(feature = "xselinux")]
6772 impl From<xselinux::QueryVersionReply> for Reply {
from(reply: xselinux::QueryVersionReply) -> Reply6773   fn from(reply: xselinux::QueryVersionReply) -> Reply {
6774     Reply::XselinuxQueryVersion(reply)
6775   }
6776 }
6777 #[cfg(feature = "xselinux")]
6778 impl From<xselinux::GetDeviceCreateContextReply> for Reply {
from(reply: xselinux::GetDeviceCreateContextReply) -> Reply6779   fn from(reply: xselinux::GetDeviceCreateContextReply) -> Reply {
6780     Reply::XselinuxGetDeviceCreateContext(reply)
6781   }
6782 }
6783 #[cfg(feature = "xselinux")]
6784 impl From<xselinux::GetDeviceContextReply> for Reply {
from(reply: xselinux::GetDeviceContextReply) -> Reply6785   fn from(reply: xselinux::GetDeviceContextReply) -> Reply {
6786     Reply::XselinuxGetDeviceContext(reply)
6787   }
6788 }
6789 #[cfg(feature = "xselinux")]
6790 impl From<xselinux::GetWindowCreateContextReply> for Reply {
from(reply: xselinux::GetWindowCreateContextReply) -> Reply6791   fn from(reply: xselinux::GetWindowCreateContextReply) -> Reply {
6792     Reply::XselinuxGetWindowCreateContext(reply)
6793   }
6794 }
6795 #[cfg(feature = "xselinux")]
6796 impl From<xselinux::GetWindowContextReply> for Reply {
from(reply: xselinux::GetWindowContextReply) -> Reply6797   fn from(reply: xselinux::GetWindowContextReply) -> Reply {
6798     Reply::XselinuxGetWindowContext(reply)
6799   }
6800 }
6801 #[cfg(feature = "xselinux")]
6802 impl From<xselinux::GetPropertyCreateContextReply> for Reply {
from(reply: xselinux::GetPropertyCreateContextReply) -> Reply6803   fn from(reply: xselinux::GetPropertyCreateContextReply) -> Reply {
6804     Reply::XselinuxGetPropertyCreateContext(reply)
6805   }
6806 }
6807 #[cfg(feature = "xselinux")]
6808 impl From<xselinux::GetPropertyUseContextReply> for Reply {
from(reply: xselinux::GetPropertyUseContextReply) -> Reply6809   fn from(reply: xselinux::GetPropertyUseContextReply) -> Reply {
6810     Reply::XselinuxGetPropertyUseContext(reply)
6811   }
6812 }
6813 #[cfg(feature = "xselinux")]
6814 impl From<xselinux::GetPropertyContextReply> for Reply {
from(reply: xselinux::GetPropertyContextReply) -> Reply6815   fn from(reply: xselinux::GetPropertyContextReply) -> Reply {
6816     Reply::XselinuxGetPropertyContext(reply)
6817   }
6818 }
6819 #[cfg(feature = "xselinux")]
6820 impl From<xselinux::GetPropertyDataContextReply> for Reply {
from(reply: xselinux::GetPropertyDataContextReply) -> Reply6821   fn from(reply: xselinux::GetPropertyDataContextReply) -> Reply {
6822     Reply::XselinuxGetPropertyDataContext(reply)
6823   }
6824 }
6825 #[cfg(feature = "xselinux")]
6826 impl From<xselinux::ListPropertiesReply> for Reply {
from(reply: xselinux::ListPropertiesReply) -> Reply6827   fn from(reply: xselinux::ListPropertiesReply) -> Reply {
6828     Reply::XselinuxListProperties(reply)
6829   }
6830 }
6831 #[cfg(feature = "xselinux")]
6832 impl From<xselinux::GetSelectionCreateContextReply> for Reply {
from(reply: xselinux::GetSelectionCreateContextReply) -> Reply6833   fn from(reply: xselinux::GetSelectionCreateContextReply) -> Reply {
6834     Reply::XselinuxGetSelectionCreateContext(reply)
6835   }
6836 }
6837 #[cfg(feature = "xselinux")]
6838 impl From<xselinux::GetSelectionUseContextReply> for Reply {
from(reply: xselinux::GetSelectionUseContextReply) -> Reply6839   fn from(reply: xselinux::GetSelectionUseContextReply) -> Reply {
6840     Reply::XselinuxGetSelectionUseContext(reply)
6841   }
6842 }
6843 #[cfg(feature = "xselinux")]
6844 impl From<xselinux::GetSelectionContextReply> for Reply {
from(reply: xselinux::GetSelectionContextReply) -> Reply6845   fn from(reply: xselinux::GetSelectionContextReply) -> Reply {
6846     Reply::XselinuxGetSelectionContext(reply)
6847   }
6848 }
6849 #[cfg(feature = "xselinux")]
6850 impl From<xselinux::GetSelectionDataContextReply> for Reply {
from(reply: xselinux::GetSelectionDataContextReply) -> Reply6851   fn from(reply: xselinux::GetSelectionDataContextReply) -> Reply {
6852     Reply::XselinuxGetSelectionDataContext(reply)
6853   }
6854 }
6855 #[cfg(feature = "xselinux")]
6856 impl From<xselinux::ListSelectionsReply> for Reply {
from(reply: xselinux::ListSelectionsReply) -> Reply6857   fn from(reply: xselinux::ListSelectionsReply) -> Reply {
6858     Reply::XselinuxListSelections(reply)
6859   }
6860 }
6861 #[cfg(feature = "xselinux")]
6862 impl From<xselinux::GetClientContextReply> for Reply {
from(reply: xselinux::GetClientContextReply) -> Reply6863   fn from(reply: xselinux::GetClientContextReply) -> Reply {
6864     Reply::XselinuxGetClientContext(reply)
6865   }
6866 }
6867 #[cfg(feature = "xtest")]
6868 impl From<xtest::GetVersionReply> for Reply {
from(reply: xtest::GetVersionReply) -> Reply6869   fn from(reply: xtest::GetVersionReply) -> Reply {
6870     Reply::XtestGetVersion(reply)
6871   }
6872 }
6873 #[cfg(feature = "xtest")]
6874 impl From<xtest::CompareCursorReply> for Reply {
from(reply: xtest::CompareCursorReply) -> Reply6875   fn from(reply: xtest::CompareCursorReply) -> Reply {
6876     Reply::XtestCompareCursor(reply)
6877   }
6878 }
6879 #[cfg(feature = "xv")]
6880 impl From<xv::QueryExtensionReply> for Reply {
from(reply: xv::QueryExtensionReply) -> Reply6881   fn from(reply: xv::QueryExtensionReply) -> Reply {
6882     Reply::XvQueryExtension(reply)
6883   }
6884 }
6885 #[cfg(feature = "xv")]
6886 impl From<xv::QueryAdaptorsReply> for Reply {
from(reply: xv::QueryAdaptorsReply) -> Reply6887   fn from(reply: xv::QueryAdaptorsReply) -> Reply {
6888     Reply::XvQueryAdaptors(reply)
6889   }
6890 }
6891 #[cfg(feature = "xv")]
6892 impl From<xv::QueryEncodingsReply> for Reply {
from(reply: xv::QueryEncodingsReply) -> Reply6893   fn from(reply: xv::QueryEncodingsReply) -> Reply {
6894     Reply::XvQueryEncodings(reply)
6895   }
6896 }
6897 #[cfg(feature = "xv")]
6898 impl From<xv::GrabPortReply> for Reply {
from(reply: xv::GrabPortReply) -> Reply6899   fn from(reply: xv::GrabPortReply) -> Reply {
6900     Reply::XvGrabPort(reply)
6901   }
6902 }
6903 #[cfg(feature = "xv")]
6904 impl From<xv::QueryBestSizeReply> for Reply {
from(reply: xv::QueryBestSizeReply) -> Reply6905   fn from(reply: xv::QueryBestSizeReply) -> Reply {
6906     Reply::XvQueryBestSize(reply)
6907   }
6908 }
6909 #[cfg(feature = "xv")]
6910 impl From<xv::GetPortAttributeReply> for Reply {
from(reply: xv::GetPortAttributeReply) -> Reply6911   fn from(reply: xv::GetPortAttributeReply) -> Reply {
6912     Reply::XvGetPortAttribute(reply)
6913   }
6914 }
6915 #[cfg(feature = "xv")]
6916 impl From<xv::QueryPortAttributesReply> for Reply {
from(reply: xv::QueryPortAttributesReply) -> Reply6917   fn from(reply: xv::QueryPortAttributesReply) -> Reply {
6918     Reply::XvQueryPortAttributes(reply)
6919   }
6920 }
6921 #[cfg(feature = "xv")]
6922 impl From<xv::ListImageFormatsReply> for Reply {
from(reply: xv::ListImageFormatsReply) -> Reply6923   fn from(reply: xv::ListImageFormatsReply) -> Reply {
6924     Reply::XvListImageFormats(reply)
6925   }
6926 }
6927 #[cfg(feature = "xv")]
6928 impl From<xv::QueryImageAttributesReply> for Reply {
from(reply: xv::QueryImageAttributesReply) -> Reply6929   fn from(reply: xv::QueryImageAttributesReply) -> Reply {
6930     Reply::XvQueryImageAttributes(reply)
6931   }
6932 }
6933 #[cfg(feature = "xvmc")]
6934 impl From<xvmc::QueryVersionReply> for Reply {
from(reply: xvmc::QueryVersionReply) -> Reply6935   fn from(reply: xvmc::QueryVersionReply) -> Reply {
6936     Reply::XvmcQueryVersion(reply)
6937   }
6938 }
6939 #[cfg(feature = "xvmc")]
6940 impl From<xvmc::ListSurfaceTypesReply> for Reply {
from(reply: xvmc::ListSurfaceTypesReply) -> Reply6941   fn from(reply: xvmc::ListSurfaceTypesReply) -> Reply {
6942     Reply::XvmcListSurfaceTypes(reply)
6943   }
6944 }
6945 #[cfg(feature = "xvmc")]
6946 impl From<xvmc::CreateContextReply> for Reply {
from(reply: xvmc::CreateContextReply) -> Reply6947   fn from(reply: xvmc::CreateContextReply) -> Reply {
6948     Reply::XvmcCreateContext(reply)
6949   }
6950 }
6951 #[cfg(feature = "xvmc")]
6952 impl From<xvmc::CreateSurfaceReply> for Reply {
from(reply: xvmc::CreateSurfaceReply) -> Reply6953   fn from(reply: xvmc::CreateSurfaceReply) -> Reply {
6954     Reply::XvmcCreateSurface(reply)
6955   }
6956 }
6957 #[cfg(feature = "xvmc")]
6958 impl From<xvmc::CreateSubpictureReply> for Reply {
from(reply: xvmc::CreateSubpictureReply) -> Reply6959   fn from(reply: xvmc::CreateSubpictureReply) -> Reply {
6960     Reply::XvmcCreateSubpicture(reply)
6961   }
6962 }
6963 #[cfg(feature = "xvmc")]
6964 impl From<xvmc::ListSubpictureTypesReply> for Reply {
from(reply: xvmc::ListSubpictureTypesReply) -> Reply6965   fn from(reply: xvmc::ListSubpictureTypesReply) -> Reply {
6966     Reply::XvmcListSubpictureTypes(reply)
6967   }
6968 }
6969 
6970 /// Enumeration of all possible X11 error kinds.
6971 #[derive(Debug, Clone, Copy, PartialEq, Eq)]
6972 #[non_exhaustive]
6973 pub enum ErrorKind {
6974     Unknown(u8),
6975     Access,
6976     Alloc,
6977     Atom,
6978     Colormap,
6979     Cursor,
6980     Drawable,
6981     Font,
6982     GContext,
6983     IDChoice,
6984     Implementation,
6985     Length,
6986     Match,
6987     Name,
6988     Pixmap,
6989     Request,
6990     Value,
6991     Window,
6992     #[cfg(feature = "damage")]
6993     DamageBadDamage,
6994     #[cfg(feature = "glx")]
6995     GlxBadContext,
6996     #[cfg(feature = "glx")]
6997     GlxBadContextState,
6998     #[cfg(feature = "glx")]
6999     GlxBadContextTag,
7000     #[cfg(feature = "glx")]
7001     GlxBadCurrentDrawable,
7002     #[cfg(feature = "glx")]
7003     GlxBadCurrentWindow,
7004     #[cfg(feature = "glx")]
7005     GlxBadDrawable,
7006     #[cfg(feature = "glx")]
7007     GlxBadFBConfig,
7008     #[cfg(feature = "glx")]
7009     GlxBadLargeRequest,
7010     #[cfg(feature = "glx")]
7011     GlxBadPbuffer,
7012     #[cfg(feature = "glx")]
7013     GlxBadPixmap,
7014     #[cfg(feature = "glx")]
7015     GlxBadRenderRequest,
7016     #[cfg(feature = "glx")]
7017     GlxBadWindow,
7018     #[cfg(feature = "glx")]
7019     GlxGLXBadProfileARB,
7020     #[cfg(feature = "glx")]
7021     GlxUnsupportedPrivateRequest,
7022     #[cfg(feature = "randr")]
7023     RandrBadCrtc,
7024     #[cfg(feature = "randr")]
7025     RandrBadMode,
7026     #[cfg(feature = "randr")]
7027     RandrBadOutput,
7028     #[cfg(feature = "randr")]
7029     RandrBadProvider,
7030     #[cfg(feature = "record")]
7031     RecordBadContext,
7032     #[cfg(feature = "render")]
7033     RenderGlyph,
7034     #[cfg(feature = "render")]
7035     RenderGlyphSet,
7036     #[cfg(feature = "render")]
7037     RenderPictFormat,
7038     #[cfg(feature = "render")]
7039     RenderPictOp,
7040     #[cfg(feature = "render")]
7041     RenderPicture,
7042     #[cfg(feature = "shm")]
7043     ShmBadSeg,
7044     #[cfg(feature = "sync")]
7045     SyncAlarm,
7046     #[cfg(feature = "sync")]
7047     SyncCounter,
7048     #[cfg(feature = "xf86vidmode")]
7049     Xf86vidmodeBadClock,
7050     #[cfg(feature = "xf86vidmode")]
7051     Xf86vidmodeBadHTimings,
7052     #[cfg(feature = "xf86vidmode")]
7053     Xf86vidmodeBadVTimings,
7054     #[cfg(feature = "xf86vidmode")]
7055     Xf86vidmodeClientNotLocal,
7056     #[cfg(feature = "xf86vidmode")]
7057     Xf86vidmodeExtensionDisabled,
7058     #[cfg(feature = "xf86vidmode")]
7059     Xf86vidmodeModeUnsuitable,
7060     #[cfg(feature = "xf86vidmode")]
7061     Xf86vidmodeZoomLocked,
7062     #[cfg(feature = "xfixes")]
7063     XfixesBadRegion,
7064     #[cfg(feature = "xinput")]
7065     XinputClass,
7066     #[cfg(feature = "xinput")]
7067     XinputDevice,
7068     #[cfg(feature = "xinput")]
7069     XinputDeviceBusy,
7070     #[cfg(feature = "xinput")]
7071     XinputEvent,
7072     #[cfg(feature = "xinput")]
7073     XinputMode,
7074     #[cfg(feature = "xkb")]
7075     XkbKeyboard,
7076     #[cfg(feature = "xprint")]
7077     XprintBadContext,
7078     #[cfg(feature = "xprint")]
7079     XprintBadSequence,
7080     #[cfg(feature = "xv")]
7081     XvBadControl,
7082     #[cfg(feature = "xv")]
7083     XvBadEncoding,
7084     #[cfg(feature = "xv")]
7085     XvBadPort,
7086 }
7087 
7088 impl ErrorKind {
7089     #[allow(clippy::match_single_binding)]
from_wire_error_code( error_code: u8, ext_info_provider: &dyn ExtInfoProvider, ) -> Self7090     pub fn from_wire_error_code(
7091         error_code: u8,
7092         ext_info_provider: &dyn ExtInfoProvider,
7093     ) -> Self {
7094         // Check if this is a core protocol error
7095         match error_code {
7096             xproto::ACCESS_ERROR => return Self::Access,
7097             xproto::ALLOC_ERROR => return Self::Alloc,
7098             xproto::ATOM_ERROR => return Self::Atom,
7099             xproto::COLORMAP_ERROR => return Self::Colormap,
7100             xproto::CURSOR_ERROR => return Self::Cursor,
7101             xproto::DRAWABLE_ERROR => return Self::Drawable,
7102             xproto::FONT_ERROR => return Self::Font,
7103             xproto::G_CONTEXT_ERROR => return Self::GContext,
7104             xproto::ID_CHOICE_ERROR => return Self::IDChoice,
7105             xproto::IMPLEMENTATION_ERROR => return Self::Implementation,
7106             xproto::LENGTH_ERROR => return Self::Length,
7107             xproto::MATCH_ERROR => return Self::Match,
7108             xproto::NAME_ERROR => return Self::Name,
7109             xproto::PIXMAP_ERROR => return Self::Pixmap,
7110             xproto::REQUEST_ERROR => return Self::Request,
7111             xproto::VALUE_ERROR => return Self::Value,
7112             xproto::WINDOW_ERROR => return Self::Window,
7113             _ => {}
7114         }
7115 
7116         // Find the extension that this error could belong to
7117         let ext_info = ext_info_provider.get_from_error_code(error_code);
7118         match ext_info {
7119             #[cfg(feature = "damage")]
7120             Some((damage::X11_EXTENSION_NAME, ext_info)) => {
7121                 match error_code - ext_info.first_error {
7122                     damage::BAD_DAMAGE_ERROR => Self::DamageBadDamage,
7123                     _ => Self::Unknown(error_code),
7124                 }
7125             }
7126             #[cfg(feature = "glx")]
7127             Some((glx::X11_EXTENSION_NAME, ext_info)) => {
7128                 match error_code - ext_info.first_error {
7129                     glx::BAD_CONTEXT_ERROR => Self::GlxBadContext,
7130                     glx::BAD_CONTEXT_STATE_ERROR => Self::GlxBadContextState,
7131                     glx::BAD_CONTEXT_TAG_ERROR => Self::GlxBadContextTag,
7132                     glx::BAD_CURRENT_DRAWABLE_ERROR => Self::GlxBadCurrentDrawable,
7133                     glx::BAD_CURRENT_WINDOW_ERROR => Self::GlxBadCurrentWindow,
7134                     glx::BAD_DRAWABLE_ERROR => Self::GlxBadDrawable,
7135                     glx::BAD_FB_CONFIG_ERROR => Self::GlxBadFBConfig,
7136                     glx::BAD_LARGE_REQUEST_ERROR => Self::GlxBadLargeRequest,
7137                     glx::BAD_PBUFFER_ERROR => Self::GlxBadPbuffer,
7138                     glx::BAD_PIXMAP_ERROR => Self::GlxBadPixmap,
7139                     glx::BAD_RENDER_REQUEST_ERROR => Self::GlxBadRenderRequest,
7140                     glx::BAD_WINDOW_ERROR => Self::GlxBadWindow,
7141                     glx::GLX_BAD_PROFILE_ARB_ERROR => Self::GlxGLXBadProfileARB,
7142                     glx::UNSUPPORTED_PRIVATE_REQUEST_ERROR => Self::GlxUnsupportedPrivateRequest,
7143                     _ => Self::Unknown(error_code),
7144                 }
7145             }
7146             #[cfg(feature = "randr")]
7147             Some((randr::X11_EXTENSION_NAME, ext_info)) => {
7148                 match error_code - ext_info.first_error {
7149                     randr::BAD_CRTC_ERROR => Self::RandrBadCrtc,
7150                     randr::BAD_MODE_ERROR => Self::RandrBadMode,
7151                     randr::BAD_OUTPUT_ERROR => Self::RandrBadOutput,
7152                     randr::BAD_PROVIDER_ERROR => Self::RandrBadProvider,
7153                     _ => Self::Unknown(error_code),
7154                 }
7155             }
7156             #[cfg(feature = "record")]
7157             Some((record::X11_EXTENSION_NAME, ext_info)) => {
7158                 match error_code - ext_info.first_error {
7159                     record::BAD_CONTEXT_ERROR => Self::RecordBadContext,
7160                     _ => Self::Unknown(error_code),
7161                 }
7162             }
7163             #[cfg(feature = "render")]
7164             Some((render::X11_EXTENSION_NAME, ext_info)) => {
7165                 match error_code - ext_info.first_error {
7166                     render::GLYPH_ERROR => Self::RenderGlyph,
7167                     render::GLYPH_SET_ERROR => Self::RenderGlyphSet,
7168                     render::PICT_FORMAT_ERROR => Self::RenderPictFormat,
7169                     render::PICT_OP_ERROR => Self::RenderPictOp,
7170                     render::PICTURE_ERROR => Self::RenderPicture,
7171                     _ => Self::Unknown(error_code),
7172                 }
7173             }
7174             #[cfg(feature = "shm")]
7175             Some((shm::X11_EXTENSION_NAME, ext_info)) => {
7176                 match error_code - ext_info.first_error {
7177                     shm::BAD_SEG_ERROR => Self::ShmBadSeg,
7178                     _ => Self::Unknown(error_code),
7179                 }
7180             }
7181             #[cfg(feature = "sync")]
7182             Some((sync::X11_EXTENSION_NAME, ext_info)) => {
7183                 match error_code - ext_info.first_error {
7184                     sync::ALARM_ERROR => Self::SyncAlarm,
7185                     sync::COUNTER_ERROR => Self::SyncCounter,
7186                     _ => Self::Unknown(error_code),
7187                 }
7188             }
7189             #[cfg(feature = "xf86vidmode")]
7190             Some((xf86vidmode::X11_EXTENSION_NAME, ext_info)) => {
7191                 match error_code - ext_info.first_error {
7192                     xf86vidmode::BAD_CLOCK_ERROR => Self::Xf86vidmodeBadClock,
7193                     xf86vidmode::BAD_H_TIMINGS_ERROR => Self::Xf86vidmodeBadHTimings,
7194                     xf86vidmode::BAD_V_TIMINGS_ERROR => Self::Xf86vidmodeBadVTimings,
7195                     xf86vidmode::CLIENT_NOT_LOCAL_ERROR => Self::Xf86vidmodeClientNotLocal,
7196                     xf86vidmode::EXTENSION_DISABLED_ERROR => Self::Xf86vidmodeExtensionDisabled,
7197                     xf86vidmode::MODE_UNSUITABLE_ERROR => Self::Xf86vidmodeModeUnsuitable,
7198                     xf86vidmode::ZOOM_LOCKED_ERROR => Self::Xf86vidmodeZoomLocked,
7199                     _ => Self::Unknown(error_code),
7200                 }
7201             }
7202             #[cfg(feature = "xfixes")]
7203             Some((xfixes::X11_EXTENSION_NAME, ext_info)) => {
7204                 match error_code - ext_info.first_error {
7205                     xfixes::BAD_REGION_ERROR => Self::XfixesBadRegion,
7206                     _ => Self::Unknown(error_code),
7207                 }
7208             }
7209             #[cfg(feature = "xinput")]
7210             Some((xinput::X11_EXTENSION_NAME, ext_info)) => {
7211                 match error_code - ext_info.first_error {
7212                     xinput::CLASS_ERROR => Self::XinputClass,
7213                     xinput::DEVICE_ERROR => Self::XinputDevice,
7214                     xinput::DEVICE_BUSY_ERROR => Self::XinputDeviceBusy,
7215                     xinput::EVENT_ERROR => Self::XinputEvent,
7216                     xinput::MODE_ERROR => Self::XinputMode,
7217                     _ => Self::Unknown(error_code),
7218                 }
7219             }
7220             #[cfg(feature = "xkb")]
7221             Some((xkb::X11_EXTENSION_NAME, ext_info)) => {
7222                 match error_code - ext_info.first_error {
7223                     xkb::KEYBOARD_ERROR => Self::XkbKeyboard,
7224                     _ => Self::Unknown(error_code),
7225                 }
7226             }
7227             #[cfg(feature = "xprint")]
7228             Some((xprint::X11_EXTENSION_NAME, ext_info)) => {
7229                 match error_code - ext_info.first_error {
7230                     xprint::BAD_CONTEXT_ERROR => Self::XprintBadContext,
7231                     xprint::BAD_SEQUENCE_ERROR => Self::XprintBadSequence,
7232                     _ => Self::Unknown(error_code),
7233                 }
7234             }
7235             #[cfg(feature = "xv")]
7236             Some((xv::X11_EXTENSION_NAME, ext_info)) => {
7237                 match error_code - ext_info.first_error {
7238                     xv::BAD_CONTROL_ERROR => Self::XvBadControl,
7239                     xv::BAD_ENCODING_ERROR => Self::XvBadEncoding,
7240                     xv::BAD_PORT_ERROR => Self::XvBadPort,
7241                     _ => Self::Unknown(error_code),
7242                 }
7243             }
7244             _ => Self::Unknown(error_code),
7245         }
7246     }
7247 }
7248 
7249 
7250 /// Enumeration of all possible X11 events.
7251 #[derive(Debug, Clone)]
7252 #[non_exhaustive]
7253 pub enum Event {
7254     Unknown(Vec<u8>),
7255     Error(X11Error),
7256     ButtonPress(xproto::ButtonPressEvent),
7257     ButtonRelease(xproto::ButtonReleaseEvent),
7258     CirculateNotify(xproto::CirculateNotifyEvent),
7259     CirculateRequest(xproto::CirculateRequestEvent),
7260     ClientMessage(xproto::ClientMessageEvent),
7261     ColormapNotify(xproto::ColormapNotifyEvent),
7262     ConfigureNotify(xproto::ConfigureNotifyEvent),
7263     ConfigureRequest(xproto::ConfigureRequestEvent),
7264     CreateNotify(xproto::CreateNotifyEvent),
7265     DestroyNotify(xproto::DestroyNotifyEvent),
7266     EnterNotify(xproto::EnterNotifyEvent),
7267     Expose(xproto::ExposeEvent),
7268     FocusIn(xproto::FocusInEvent),
7269     FocusOut(xproto::FocusOutEvent),
7270     GeGeneric(xproto::GeGenericEvent),
7271     GraphicsExposure(xproto::GraphicsExposureEvent),
7272     GravityNotify(xproto::GravityNotifyEvent),
7273     KeyPress(xproto::KeyPressEvent),
7274     KeyRelease(xproto::KeyReleaseEvent),
7275     KeymapNotify(xproto::KeymapNotifyEvent),
7276     LeaveNotify(xproto::LeaveNotifyEvent),
7277     MapNotify(xproto::MapNotifyEvent),
7278     MapRequest(xproto::MapRequestEvent),
7279     MappingNotify(xproto::MappingNotifyEvent),
7280     MotionNotify(xproto::MotionNotifyEvent),
7281     NoExposure(xproto::NoExposureEvent),
7282     PropertyNotify(xproto::PropertyNotifyEvent),
7283     ReparentNotify(xproto::ReparentNotifyEvent),
7284     ResizeRequest(xproto::ResizeRequestEvent),
7285     SelectionClear(xproto::SelectionClearEvent),
7286     SelectionNotify(xproto::SelectionNotifyEvent),
7287     SelectionRequest(xproto::SelectionRequestEvent),
7288     UnmapNotify(xproto::UnmapNotifyEvent),
7289     VisibilityNotify(xproto::VisibilityNotifyEvent),
7290     #[cfg(feature = "damage")]
7291     DamageNotify(damage::NotifyEvent),
7292     #[cfg(feature = "dri2")]
7293     Dri2BufferSwapComplete(dri2::BufferSwapCompleteEvent),
7294     #[cfg(feature = "dri2")]
7295     Dri2InvalidateBuffers(dri2::InvalidateBuffersEvent),
7296     #[cfg(feature = "glx")]
7297     GlxBufferSwapComplete(glx::BufferSwapCompleteEvent),
7298     #[cfg(feature = "glx")]
7299     GlxPbufferClobber(glx::PbufferClobberEvent),
7300     #[cfg(feature = "present")]
7301     PresentCompleteNotify(present::CompleteNotifyEvent),
7302     #[cfg(feature = "present")]
7303     PresentConfigureNotify(present::ConfigureNotifyEvent),
7304     #[cfg(feature = "present")]
7305     PresentGeneric(present::GenericEvent),
7306     #[cfg(feature = "present")]
7307     PresentIdleNotify(present::IdleNotifyEvent),
7308     #[cfg(feature = "present")]
7309     PresentRedirectNotify(present::RedirectNotifyEvent),
7310     #[cfg(feature = "randr")]
7311     RandrNotify(randr::NotifyEvent),
7312     #[cfg(feature = "randr")]
7313     RandrScreenChangeNotify(randr::ScreenChangeNotifyEvent),
7314     #[cfg(feature = "screensaver")]
7315     ScreensaverNotify(screensaver::NotifyEvent),
7316     #[cfg(feature = "shape")]
7317     ShapeNotify(shape::NotifyEvent),
7318     #[cfg(feature = "shm")]
7319     ShmCompletion(shm::CompletionEvent),
7320     #[cfg(feature = "sync")]
7321     SyncAlarmNotify(sync::AlarmNotifyEvent),
7322     #[cfg(feature = "sync")]
7323     SyncCounterNotify(sync::CounterNotifyEvent),
7324     #[cfg(feature = "xfixes")]
7325     XfixesCursorNotify(xfixes::CursorNotifyEvent),
7326     #[cfg(feature = "xfixes")]
7327     XfixesSelectionNotify(xfixes::SelectionNotifyEvent),
7328     #[cfg(feature = "xinput")]
7329     XinputBarrierHit(xinput::BarrierHitEvent),
7330     #[cfg(feature = "xinput")]
7331     XinputBarrierLeave(xinput::BarrierLeaveEvent),
7332     #[cfg(feature = "xinput")]
7333     XinputButtonPress(xinput::ButtonPressEvent),
7334     #[cfg(feature = "xinput")]
7335     XinputButtonRelease(xinput::ButtonReleaseEvent),
7336     #[cfg(feature = "xinput")]
7337     XinputChangeDeviceNotify(xinput::ChangeDeviceNotifyEvent),
7338     #[cfg(feature = "xinput")]
7339     XinputDeviceButtonPress(xinput::DeviceButtonPressEvent),
7340     #[cfg(feature = "xinput")]
7341     XinputDeviceButtonRelease(xinput::DeviceButtonReleaseEvent),
7342     #[cfg(feature = "xinput")]
7343     XinputDeviceButtonStateNotify(xinput::DeviceButtonStateNotifyEvent),
7344     #[cfg(feature = "xinput")]
7345     XinputDeviceChanged(xinput::DeviceChangedEvent),
7346     #[cfg(feature = "xinput")]
7347     XinputDeviceFocusIn(xinput::DeviceFocusInEvent),
7348     #[cfg(feature = "xinput")]
7349     XinputDeviceFocusOut(xinput::DeviceFocusOutEvent),
7350     #[cfg(feature = "xinput")]
7351     XinputDeviceKeyPress(xinput::DeviceKeyPressEvent),
7352     #[cfg(feature = "xinput")]
7353     XinputDeviceKeyRelease(xinput::DeviceKeyReleaseEvent),
7354     #[cfg(feature = "xinput")]
7355     XinputDeviceKeyStateNotify(xinput::DeviceKeyStateNotifyEvent),
7356     #[cfg(feature = "xinput")]
7357     XinputDeviceMappingNotify(xinput::DeviceMappingNotifyEvent),
7358     #[cfg(feature = "xinput")]
7359     XinputDeviceMotionNotify(xinput::DeviceMotionNotifyEvent),
7360     #[cfg(feature = "xinput")]
7361     XinputDevicePresenceNotify(xinput::DevicePresenceNotifyEvent),
7362     #[cfg(feature = "xinput")]
7363     XinputDevicePropertyNotify(xinput::DevicePropertyNotifyEvent),
7364     #[cfg(feature = "xinput")]
7365     XinputDeviceStateNotify(xinput::DeviceStateNotifyEvent),
7366     #[cfg(feature = "xinput")]
7367     XinputDeviceValuator(xinput::DeviceValuatorEvent),
7368     #[cfg(feature = "xinput")]
7369     XinputEnter(xinput::EnterEvent),
7370     #[cfg(feature = "xinput")]
7371     XinputFocusIn(xinput::FocusInEvent),
7372     #[cfg(feature = "xinput")]
7373     XinputFocusOut(xinput::FocusOutEvent),
7374     #[cfg(feature = "xinput")]
7375     XinputHierarchy(xinput::HierarchyEvent),
7376     #[cfg(feature = "xinput")]
7377     XinputKeyPress(xinput::KeyPressEvent),
7378     #[cfg(feature = "xinput")]
7379     XinputKeyRelease(xinput::KeyReleaseEvent),
7380     #[cfg(feature = "xinput")]
7381     XinputLeave(xinput::LeaveEvent),
7382     #[cfg(feature = "xinput")]
7383     XinputMotion(xinput::MotionEvent),
7384     #[cfg(feature = "xinput")]
7385     XinputProperty(xinput::PropertyEvent),
7386     #[cfg(feature = "xinput")]
7387     XinputProximityIn(xinput::ProximityInEvent),
7388     #[cfg(feature = "xinput")]
7389     XinputProximityOut(xinput::ProximityOutEvent),
7390     #[cfg(feature = "xinput")]
7391     XinputRawButtonPress(xinput::RawButtonPressEvent),
7392     #[cfg(feature = "xinput")]
7393     XinputRawButtonRelease(xinput::RawButtonReleaseEvent),
7394     #[cfg(feature = "xinput")]
7395     XinputRawKeyPress(xinput::RawKeyPressEvent),
7396     #[cfg(feature = "xinput")]
7397     XinputRawKeyRelease(xinput::RawKeyReleaseEvent),
7398     #[cfg(feature = "xinput")]
7399     XinputRawMotion(xinput::RawMotionEvent),
7400     #[cfg(feature = "xinput")]
7401     XinputRawTouchBegin(xinput::RawTouchBeginEvent),
7402     #[cfg(feature = "xinput")]
7403     XinputRawTouchEnd(xinput::RawTouchEndEvent),
7404     #[cfg(feature = "xinput")]
7405     XinputRawTouchUpdate(xinput::RawTouchUpdateEvent),
7406     #[cfg(feature = "xinput")]
7407     XinputTouchBegin(xinput::TouchBeginEvent),
7408     #[cfg(feature = "xinput")]
7409     XinputTouchEnd(xinput::TouchEndEvent),
7410     #[cfg(feature = "xinput")]
7411     XinputTouchOwnership(xinput::TouchOwnershipEvent),
7412     #[cfg(feature = "xinput")]
7413     XinputTouchUpdate(xinput::TouchUpdateEvent),
7414     #[cfg(feature = "xkb")]
7415     XkbAccessXNotify(xkb::AccessXNotifyEvent),
7416     #[cfg(feature = "xkb")]
7417     XkbActionMessage(xkb::ActionMessageEvent),
7418     #[cfg(feature = "xkb")]
7419     XkbBellNotify(xkb::BellNotifyEvent),
7420     #[cfg(feature = "xkb")]
7421     XkbCompatMapNotify(xkb::CompatMapNotifyEvent),
7422     #[cfg(feature = "xkb")]
7423     XkbControlsNotify(xkb::ControlsNotifyEvent),
7424     #[cfg(feature = "xkb")]
7425     XkbExtensionDeviceNotify(xkb::ExtensionDeviceNotifyEvent),
7426     #[cfg(feature = "xkb")]
7427     XkbIndicatorMapNotify(xkb::IndicatorMapNotifyEvent),
7428     #[cfg(feature = "xkb")]
7429     XkbIndicatorStateNotify(xkb::IndicatorStateNotifyEvent),
7430     #[cfg(feature = "xkb")]
7431     XkbMapNotify(xkb::MapNotifyEvent),
7432     #[cfg(feature = "xkb")]
7433     XkbNamesNotify(xkb::NamesNotifyEvent),
7434     #[cfg(feature = "xkb")]
7435     XkbNewKeyboardNotify(xkb::NewKeyboardNotifyEvent),
7436     #[cfg(feature = "xkb")]
7437     XkbStateNotify(xkb::StateNotifyEvent),
7438     #[cfg(feature = "xprint")]
7439     XprintAttributNotify(xprint::AttributNotifyEvent),
7440     #[cfg(feature = "xprint")]
7441     XprintNotify(xprint::NotifyEvent),
7442     #[cfg(feature = "xv")]
7443     XvPortNotify(xv::PortNotifyEvent),
7444     #[cfg(feature = "xv")]
7445     XvVideoNotify(xv::VideoNotifyEvent),
7446 }
7447 
7448 impl Event {
7449     /// Parse a generic X11 event into a concrete event type.
7450     #[allow(clippy::cognitive_complexity, clippy::match_single_binding)]
parse( event: &[u8], ext_info_provider: &dyn ExtInfoProvider, ) -> Result<Self, ParseError>7451     pub fn parse(
7452         event: &[u8],
7453         ext_info_provider: &dyn ExtInfoProvider,
7454     ) -> Result<Self, ParseError> {
7455         let event_code = response_type(event)?;
7456 
7457         // Check if this is a core protocol event or error, or from the generic event extension
7458         match event_code {
7459             0 => return Ok(Self::Error(X11Error::try_parse(event, ext_info_provider)?)),
7460             xproto::BUTTON_PRESS_EVENT => return Ok(Self::ButtonPress(TryParse::try_parse(event)?.0)),
7461             xproto::BUTTON_RELEASE_EVENT => return Ok(Self::ButtonRelease(TryParse::try_parse(event)?.0)),
7462             xproto::CIRCULATE_NOTIFY_EVENT => return Ok(Self::CirculateNotify(TryParse::try_parse(event)?.0)),
7463             xproto::CIRCULATE_REQUEST_EVENT => return Ok(Self::CirculateRequest(TryParse::try_parse(event)?.0)),
7464             xproto::CLIENT_MESSAGE_EVENT => return Ok(Self::ClientMessage(TryParse::try_parse(event)?.0)),
7465             xproto::COLORMAP_NOTIFY_EVENT => return Ok(Self::ColormapNotify(TryParse::try_parse(event)?.0)),
7466             xproto::CONFIGURE_NOTIFY_EVENT => return Ok(Self::ConfigureNotify(TryParse::try_parse(event)?.0)),
7467             xproto::CONFIGURE_REQUEST_EVENT => return Ok(Self::ConfigureRequest(TryParse::try_parse(event)?.0)),
7468             xproto::CREATE_NOTIFY_EVENT => return Ok(Self::CreateNotify(TryParse::try_parse(event)?.0)),
7469             xproto::DESTROY_NOTIFY_EVENT => return Ok(Self::DestroyNotify(TryParse::try_parse(event)?.0)),
7470             xproto::ENTER_NOTIFY_EVENT => return Ok(Self::EnterNotify(TryParse::try_parse(event)?.0)),
7471             xproto::EXPOSE_EVENT => return Ok(Self::Expose(TryParse::try_parse(event)?.0)),
7472             xproto::FOCUS_IN_EVENT => return Ok(Self::FocusIn(TryParse::try_parse(event)?.0)),
7473             xproto::FOCUS_OUT_EVENT => return Ok(Self::FocusOut(TryParse::try_parse(event)?.0)),
7474             xproto::GRAPHICS_EXPOSURE_EVENT => return Ok(Self::GraphicsExposure(TryParse::try_parse(event)?.0)),
7475             xproto::GRAVITY_NOTIFY_EVENT => return Ok(Self::GravityNotify(TryParse::try_parse(event)?.0)),
7476             xproto::KEY_PRESS_EVENT => return Ok(Self::KeyPress(TryParse::try_parse(event)?.0)),
7477             xproto::KEY_RELEASE_EVENT => return Ok(Self::KeyRelease(TryParse::try_parse(event)?.0)),
7478             xproto::KEYMAP_NOTIFY_EVENT => return Ok(Self::KeymapNotify(TryParse::try_parse(event)?.0)),
7479             xproto::LEAVE_NOTIFY_EVENT => return Ok(Self::LeaveNotify(TryParse::try_parse(event)?.0)),
7480             xproto::MAP_NOTIFY_EVENT => return Ok(Self::MapNotify(TryParse::try_parse(event)?.0)),
7481             xproto::MAP_REQUEST_EVENT => return Ok(Self::MapRequest(TryParse::try_parse(event)?.0)),
7482             xproto::MAPPING_NOTIFY_EVENT => return Ok(Self::MappingNotify(TryParse::try_parse(event)?.0)),
7483             xproto::MOTION_NOTIFY_EVENT => return Ok(Self::MotionNotify(TryParse::try_parse(event)?.0)),
7484             xproto::NO_EXPOSURE_EVENT => return Ok(Self::NoExposure(TryParse::try_parse(event)?.0)),
7485             xproto::PROPERTY_NOTIFY_EVENT => return Ok(Self::PropertyNotify(TryParse::try_parse(event)?.0)),
7486             xproto::REPARENT_NOTIFY_EVENT => return Ok(Self::ReparentNotify(TryParse::try_parse(event)?.0)),
7487             xproto::RESIZE_REQUEST_EVENT => return Ok(Self::ResizeRequest(TryParse::try_parse(event)?.0)),
7488             xproto::SELECTION_CLEAR_EVENT => return Ok(Self::SelectionClear(TryParse::try_parse(event)?.0)),
7489             xproto::SELECTION_NOTIFY_EVENT => return Ok(Self::SelectionNotify(TryParse::try_parse(event)?.0)),
7490             xproto::SELECTION_REQUEST_EVENT => return Ok(Self::SelectionRequest(TryParse::try_parse(event)?.0)),
7491             xproto::UNMAP_NOTIFY_EVENT => return Ok(Self::UnmapNotify(TryParse::try_parse(event)?.0)),
7492             xproto::VISIBILITY_NOTIFY_EVENT => return Ok(Self::VisibilityNotify(TryParse::try_parse(event)?.0)),
7493             xproto::GE_GENERIC_EVENT => return Self::from_generic_event(event, ext_info_provider),
7494             _ => {}
7495         }
7496         // Find the extension that this event could belong to
7497         let ext_info = ext_info_provider.get_from_event_code(event_code);
7498         match ext_info {
7499             #[cfg(feature = "damage")]
7500             Some((damage::X11_EXTENSION_NAME, ext_info)) => {
7501                 match event_code - ext_info.first_event {
7502                     damage::NOTIFY_EVENT => Ok(Self::DamageNotify(TryParse::try_parse(event)?.0)),
7503                     _ => Ok(Self::Unknown(event.to_vec())),
7504                 }
7505             }
7506             #[cfg(feature = "dri2")]
7507             Some((dri2::X11_EXTENSION_NAME, ext_info)) => {
7508                 match event_code - ext_info.first_event {
7509                     dri2::BUFFER_SWAP_COMPLETE_EVENT => Ok(Self::Dri2BufferSwapComplete(TryParse::try_parse(event)?.0)),
7510                     dri2::INVALIDATE_BUFFERS_EVENT => Ok(Self::Dri2InvalidateBuffers(TryParse::try_parse(event)?.0)),
7511                     _ => Ok(Self::Unknown(event.to_vec())),
7512                 }
7513             }
7514             #[cfg(feature = "glx")]
7515             Some((glx::X11_EXTENSION_NAME, ext_info)) => {
7516                 match event_code - ext_info.first_event {
7517                     glx::BUFFER_SWAP_COMPLETE_EVENT => Ok(Self::GlxBufferSwapComplete(TryParse::try_parse(event)?.0)),
7518                     glx::PBUFFER_CLOBBER_EVENT => Ok(Self::GlxPbufferClobber(TryParse::try_parse(event)?.0)),
7519                     _ => Ok(Self::Unknown(event.to_vec())),
7520                 }
7521             }
7522             #[cfg(feature = "present")]
7523             Some((present::X11_EXTENSION_NAME, ext_info)) => {
7524                 match event_code - ext_info.first_event {
7525                     present::GENERIC_EVENT => Ok(Self::PresentGeneric(TryParse::try_parse(event)?.0)),
7526                     _ => Ok(Self::Unknown(event.to_vec())),
7527                 }
7528             }
7529             #[cfg(feature = "randr")]
7530             Some((randr::X11_EXTENSION_NAME, ext_info)) => {
7531                 match event_code - ext_info.first_event {
7532                     randr::NOTIFY_EVENT => Ok(Self::RandrNotify(TryParse::try_parse(event)?.0)),
7533                     randr::SCREEN_CHANGE_NOTIFY_EVENT => Ok(Self::RandrScreenChangeNotify(TryParse::try_parse(event)?.0)),
7534                     _ => Ok(Self::Unknown(event.to_vec())),
7535                 }
7536             }
7537             #[cfg(feature = "screensaver")]
7538             Some((screensaver::X11_EXTENSION_NAME, ext_info)) => {
7539                 match event_code - ext_info.first_event {
7540                     screensaver::NOTIFY_EVENT => Ok(Self::ScreensaverNotify(TryParse::try_parse(event)?.0)),
7541                     _ => Ok(Self::Unknown(event.to_vec())),
7542                 }
7543             }
7544             #[cfg(feature = "shape")]
7545             Some((shape::X11_EXTENSION_NAME, ext_info)) => {
7546                 match event_code - ext_info.first_event {
7547                     shape::NOTIFY_EVENT => Ok(Self::ShapeNotify(TryParse::try_parse(event)?.0)),
7548                     _ => Ok(Self::Unknown(event.to_vec())),
7549                 }
7550             }
7551             #[cfg(feature = "shm")]
7552             Some((shm::X11_EXTENSION_NAME, ext_info)) => {
7553                 match event_code - ext_info.first_event {
7554                     shm::COMPLETION_EVENT => Ok(Self::ShmCompletion(TryParse::try_parse(event)?.0)),
7555                     _ => Ok(Self::Unknown(event.to_vec())),
7556                 }
7557             }
7558             #[cfg(feature = "sync")]
7559             Some((sync::X11_EXTENSION_NAME, ext_info)) => {
7560                 match event_code - ext_info.first_event {
7561                     sync::ALARM_NOTIFY_EVENT => Ok(Self::SyncAlarmNotify(TryParse::try_parse(event)?.0)),
7562                     sync::COUNTER_NOTIFY_EVENT => Ok(Self::SyncCounterNotify(TryParse::try_parse(event)?.0)),
7563                     _ => Ok(Self::Unknown(event.to_vec())),
7564                 }
7565             }
7566             #[cfg(feature = "xfixes")]
7567             Some((xfixes::X11_EXTENSION_NAME, ext_info)) => {
7568                 match event_code - ext_info.first_event {
7569                     xfixes::CURSOR_NOTIFY_EVENT => Ok(Self::XfixesCursorNotify(TryParse::try_parse(event)?.0)),
7570                     xfixes::SELECTION_NOTIFY_EVENT => Ok(Self::XfixesSelectionNotify(TryParse::try_parse(event)?.0)),
7571                     _ => Ok(Self::Unknown(event.to_vec())),
7572                 }
7573             }
7574             #[cfg(feature = "xinput")]
7575             Some((xinput::X11_EXTENSION_NAME, ext_info)) => {
7576                 match event_code - ext_info.first_event {
7577                     xinput::CHANGE_DEVICE_NOTIFY_EVENT => Ok(Self::XinputChangeDeviceNotify(TryParse::try_parse(event)?.0)),
7578                     xinput::DEVICE_BUTTON_PRESS_EVENT => Ok(Self::XinputDeviceButtonPress(TryParse::try_parse(event)?.0)),
7579                     xinput::DEVICE_BUTTON_RELEASE_EVENT => Ok(Self::XinputDeviceButtonRelease(TryParse::try_parse(event)?.0)),
7580                     xinput::DEVICE_BUTTON_STATE_NOTIFY_EVENT => Ok(Self::XinputDeviceButtonStateNotify(TryParse::try_parse(event)?.0)),
7581                     xinput::DEVICE_FOCUS_IN_EVENT => Ok(Self::XinputDeviceFocusIn(TryParse::try_parse(event)?.0)),
7582                     xinput::DEVICE_FOCUS_OUT_EVENT => Ok(Self::XinputDeviceFocusOut(TryParse::try_parse(event)?.0)),
7583                     xinput::DEVICE_KEY_PRESS_EVENT => Ok(Self::XinputDeviceKeyPress(TryParse::try_parse(event)?.0)),
7584                     xinput::DEVICE_KEY_RELEASE_EVENT => Ok(Self::XinputDeviceKeyRelease(TryParse::try_parse(event)?.0)),
7585                     xinput::DEVICE_KEY_STATE_NOTIFY_EVENT => Ok(Self::XinputDeviceKeyStateNotify(TryParse::try_parse(event)?.0)),
7586                     xinput::DEVICE_MAPPING_NOTIFY_EVENT => Ok(Self::XinputDeviceMappingNotify(TryParse::try_parse(event)?.0)),
7587                     xinput::DEVICE_MOTION_NOTIFY_EVENT => Ok(Self::XinputDeviceMotionNotify(TryParse::try_parse(event)?.0)),
7588                     xinput::DEVICE_PRESENCE_NOTIFY_EVENT => Ok(Self::XinputDevicePresenceNotify(TryParse::try_parse(event)?.0)),
7589                     xinput::DEVICE_PROPERTY_NOTIFY_EVENT => Ok(Self::XinputDevicePropertyNotify(TryParse::try_parse(event)?.0)),
7590                     xinput::DEVICE_STATE_NOTIFY_EVENT => Ok(Self::XinputDeviceStateNotify(TryParse::try_parse(event)?.0)),
7591                     xinput::DEVICE_VALUATOR_EVENT => Ok(Self::XinputDeviceValuator(TryParse::try_parse(event)?.0)),
7592                     xinput::PROXIMITY_IN_EVENT => Ok(Self::XinputProximityIn(TryParse::try_parse(event)?.0)),
7593                     xinput::PROXIMITY_OUT_EVENT => Ok(Self::XinputProximityOut(TryParse::try_parse(event)?.0)),
7594                     _ => Ok(Self::Unknown(event.to_vec())),
7595                 }
7596             }
7597             #[cfg(feature = "xkb")]
7598             Some((xkb::X11_EXTENSION_NAME, ext_info)) => {
7599                 if event_code != ext_info.first_event {
7600                     return Ok(Self::Unknown(event.to_vec()));
7601                 }
7602                 match *event.get(1).ok_or(ParseError::InsufficientData)? {
7603                     xkb::ACCESS_X_NOTIFY_EVENT => Ok(Self::XkbAccessXNotify(TryParse::try_parse(event)?.0)),
7604                     xkb::ACTION_MESSAGE_EVENT => Ok(Self::XkbActionMessage(TryParse::try_parse(event)?.0)),
7605                     xkb::BELL_NOTIFY_EVENT => Ok(Self::XkbBellNotify(TryParse::try_parse(event)?.0)),
7606                     xkb::COMPAT_MAP_NOTIFY_EVENT => Ok(Self::XkbCompatMapNotify(TryParse::try_parse(event)?.0)),
7607                     xkb::CONTROLS_NOTIFY_EVENT => Ok(Self::XkbControlsNotify(TryParse::try_parse(event)?.0)),
7608                     xkb::EXTENSION_DEVICE_NOTIFY_EVENT => Ok(Self::XkbExtensionDeviceNotify(TryParse::try_parse(event)?.0)),
7609                     xkb::INDICATOR_MAP_NOTIFY_EVENT => Ok(Self::XkbIndicatorMapNotify(TryParse::try_parse(event)?.0)),
7610                     xkb::INDICATOR_STATE_NOTIFY_EVENT => Ok(Self::XkbIndicatorStateNotify(TryParse::try_parse(event)?.0)),
7611                     xkb::MAP_NOTIFY_EVENT => Ok(Self::XkbMapNotify(TryParse::try_parse(event)?.0)),
7612                     xkb::NAMES_NOTIFY_EVENT => Ok(Self::XkbNamesNotify(TryParse::try_parse(event)?.0)),
7613                     xkb::NEW_KEYBOARD_NOTIFY_EVENT => Ok(Self::XkbNewKeyboardNotify(TryParse::try_parse(event)?.0)),
7614                     xkb::STATE_NOTIFY_EVENT => Ok(Self::XkbStateNotify(TryParse::try_parse(event)?.0)),
7615                     _ => Ok(Self::Unknown(event.to_vec())),
7616                 }
7617             }
7618             #[cfg(feature = "xprint")]
7619             Some((xprint::X11_EXTENSION_NAME, ext_info)) => {
7620                 match event_code - ext_info.first_event {
7621                     xprint::ATTRIBUT_NOTIFY_EVENT => Ok(Self::XprintAttributNotify(TryParse::try_parse(event)?.0)),
7622                     xprint::NOTIFY_EVENT => Ok(Self::XprintNotify(TryParse::try_parse(event)?.0)),
7623                     _ => Ok(Self::Unknown(event.to_vec())),
7624                 }
7625             }
7626             #[cfg(feature = "xv")]
7627             Some((xv::X11_EXTENSION_NAME, ext_info)) => {
7628                 match event_code - ext_info.first_event {
7629                     xv::PORT_NOTIFY_EVENT => Ok(Self::XvPortNotify(TryParse::try_parse(event)?.0)),
7630                     xv::VIDEO_NOTIFY_EVENT => Ok(Self::XvVideoNotify(TryParse::try_parse(event)?.0)),
7631                     _ => Ok(Self::Unknown(event.to_vec())),
7632                 }
7633             }
7634             _ => Ok(Self::Unknown(event.to_vec())),
7635         }
7636     }
7637 
7638     #[allow(clippy::match_single_binding)]
from_generic_event( event: &[u8], ext_info_provider: &dyn ExtInfoProvider, ) -> Result<Self, ParseError>7639     fn from_generic_event(
7640         event: &[u8],
7641         ext_info_provider: &dyn ExtInfoProvider,
7642     ) -> Result<Self, ParseError> {
7643         let ge_event = xproto::GeGenericEvent::try_parse(event)?.0;
7644         let ext_name = ext_info_provider
7645             .get_from_major_opcode(ge_event.extension)
7646             .map(|(name, _)| name);
7647         match ext_name {
7648             #[cfg(feature = "present")]
7649             Some(present::X11_EXTENSION_NAME) => {
7650                 match ge_event.event_type {
7651                     present::COMPLETE_NOTIFY_EVENT => Ok(Self::PresentCompleteNotify(TryParse::try_parse(event)?.0)),
7652                     present::CONFIGURE_NOTIFY_EVENT => Ok(Self::PresentConfigureNotify(TryParse::try_parse(event)?.0)),
7653                     present::IDLE_NOTIFY_EVENT => Ok(Self::PresentIdleNotify(TryParse::try_parse(event)?.0)),
7654                     present::REDIRECT_NOTIFY_EVENT => Ok(Self::PresentRedirectNotify(TryParse::try_parse(event)?.0)),
7655                     _ => Ok(Self::Unknown(event.to_vec())),
7656                 }
7657             }
7658             #[cfg(feature = "xinput")]
7659             Some(xinput::X11_EXTENSION_NAME) => {
7660                 match ge_event.event_type {
7661                     xinput::BARRIER_HIT_EVENT => Ok(Self::XinputBarrierHit(TryParse::try_parse(event)?.0)),
7662                     xinput::BARRIER_LEAVE_EVENT => Ok(Self::XinputBarrierLeave(TryParse::try_parse(event)?.0)),
7663                     xinput::BUTTON_PRESS_EVENT => Ok(Self::XinputButtonPress(TryParse::try_parse(event)?.0)),
7664                     xinput::BUTTON_RELEASE_EVENT => Ok(Self::XinputButtonRelease(TryParse::try_parse(event)?.0)),
7665                     xinput::DEVICE_CHANGED_EVENT => Ok(Self::XinputDeviceChanged(TryParse::try_parse(event)?.0)),
7666                     xinput::ENTER_EVENT => Ok(Self::XinputEnter(TryParse::try_parse(event)?.0)),
7667                     xinput::FOCUS_IN_EVENT => Ok(Self::XinputFocusIn(TryParse::try_parse(event)?.0)),
7668                     xinput::FOCUS_OUT_EVENT => Ok(Self::XinputFocusOut(TryParse::try_parse(event)?.0)),
7669                     xinput::HIERARCHY_EVENT => Ok(Self::XinputHierarchy(TryParse::try_parse(event)?.0)),
7670                     xinput::KEY_PRESS_EVENT => Ok(Self::XinputKeyPress(TryParse::try_parse(event)?.0)),
7671                     xinput::KEY_RELEASE_EVENT => Ok(Self::XinputKeyRelease(TryParse::try_parse(event)?.0)),
7672                     xinput::LEAVE_EVENT => Ok(Self::XinputLeave(TryParse::try_parse(event)?.0)),
7673                     xinput::MOTION_EVENT => Ok(Self::XinputMotion(TryParse::try_parse(event)?.0)),
7674                     xinput::PROPERTY_EVENT => Ok(Self::XinputProperty(TryParse::try_parse(event)?.0)),
7675                     xinput::RAW_BUTTON_PRESS_EVENT => Ok(Self::XinputRawButtonPress(TryParse::try_parse(event)?.0)),
7676                     xinput::RAW_BUTTON_RELEASE_EVENT => Ok(Self::XinputRawButtonRelease(TryParse::try_parse(event)?.0)),
7677                     xinput::RAW_KEY_PRESS_EVENT => Ok(Self::XinputRawKeyPress(TryParse::try_parse(event)?.0)),
7678                     xinput::RAW_KEY_RELEASE_EVENT => Ok(Self::XinputRawKeyRelease(TryParse::try_parse(event)?.0)),
7679                     xinput::RAW_MOTION_EVENT => Ok(Self::XinputRawMotion(TryParse::try_parse(event)?.0)),
7680                     xinput::RAW_TOUCH_BEGIN_EVENT => Ok(Self::XinputRawTouchBegin(TryParse::try_parse(event)?.0)),
7681                     xinput::RAW_TOUCH_END_EVENT => Ok(Self::XinputRawTouchEnd(TryParse::try_parse(event)?.0)),
7682                     xinput::RAW_TOUCH_UPDATE_EVENT => Ok(Self::XinputRawTouchUpdate(TryParse::try_parse(event)?.0)),
7683                     xinput::TOUCH_BEGIN_EVENT => Ok(Self::XinputTouchBegin(TryParse::try_parse(event)?.0)),
7684                     xinput::TOUCH_END_EVENT => Ok(Self::XinputTouchEnd(TryParse::try_parse(event)?.0)),
7685                     xinput::TOUCH_OWNERSHIP_EVENT => Ok(Self::XinputTouchOwnership(TryParse::try_parse(event)?.0)),
7686                     xinput::TOUCH_UPDATE_EVENT => Ok(Self::XinputTouchUpdate(TryParse::try_parse(event)?.0)),
7687                     _ => Ok(Self::Unknown(event.to_vec())),
7688                 }
7689             }
7690             _ => Ok(Self::Unknown(event.to_vec())),
7691         }
7692     }
7693 
7694     /// Get the sequence number contained in this X11 event
wire_sequence_number(&self) -> Option<u16>7695     pub fn wire_sequence_number(&self) -> Option<u16> {
7696         match self {
7697             Event::Unknown(value) => sequence_number(value).ok(),
7698             Event::Error(value) => Some(value.sequence),
7699             Event::ButtonPress(value) => Some(value.sequence),
7700             Event::ButtonRelease(value) => Some(value.sequence),
7701             Event::CirculateNotify(value) => Some(value.sequence),
7702             Event::CirculateRequest(value) => Some(value.sequence),
7703             Event::ClientMessage(value) => Some(value.sequence),
7704             Event::ColormapNotify(value) => Some(value.sequence),
7705             Event::ConfigureNotify(value) => Some(value.sequence),
7706             Event::ConfigureRequest(value) => Some(value.sequence),
7707             Event::CreateNotify(value) => Some(value.sequence),
7708             Event::DestroyNotify(value) => Some(value.sequence),
7709             Event::EnterNotify(value) => Some(value.sequence),
7710             Event::Expose(value) => Some(value.sequence),
7711             Event::FocusIn(value) => Some(value.sequence),
7712             Event::FocusOut(value) => Some(value.sequence),
7713             Event::GeGeneric(value) => Some(value.sequence),
7714             Event::GraphicsExposure(value) => Some(value.sequence),
7715             Event::GravityNotify(value) => Some(value.sequence),
7716             Event::KeyPress(value) => Some(value.sequence),
7717             Event::KeyRelease(value) => Some(value.sequence),
7718             Event::KeymapNotify(_) => None,
7719             Event::LeaveNotify(value) => Some(value.sequence),
7720             Event::MapNotify(value) => Some(value.sequence),
7721             Event::MapRequest(value) => Some(value.sequence),
7722             Event::MappingNotify(value) => Some(value.sequence),
7723             Event::MotionNotify(value) => Some(value.sequence),
7724             Event::NoExposure(value) => Some(value.sequence),
7725             Event::PropertyNotify(value) => Some(value.sequence),
7726             Event::ReparentNotify(value) => Some(value.sequence),
7727             Event::ResizeRequest(value) => Some(value.sequence),
7728             Event::SelectionClear(value) => Some(value.sequence),
7729             Event::SelectionNotify(value) => Some(value.sequence),
7730             Event::SelectionRequest(value) => Some(value.sequence),
7731             Event::UnmapNotify(value) => Some(value.sequence),
7732             Event::VisibilityNotify(value) => Some(value.sequence),
7733             #[cfg(feature = "damage")]
7734             Event::DamageNotify(value) => Some(value.sequence),
7735             #[cfg(feature = "dri2")]
7736             Event::Dri2BufferSwapComplete(value) => Some(value.sequence),
7737             #[cfg(feature = "dri2")]
7738             Event::Dri2InvalidateBuffers(value) => Some(value.sequence),
7739             #[cfg(feature = "glx")]
7740             Event::GlxBufferSwapComplete(value) => Some(value.sequence),
7741             #[cfg(feature = "glx")]
7742             Event::GlxPbufferClobber(value) => Some(value.sequence),
7743             #[cfg(feature = "present")]
7744             Event::PresentCompleteNotify(value) => Some(value.sequence),
7745             #[cfg(feature = "present")]
7746             Event::PresentConfigureNotify(value) => Some(value.sequence),
7747             #[cfg(feature = "present")]
7748             Event::PresentGeneric(value) => Some(value.sequence),
7749             #[cfg(feature = "present")]
7750             Event::PresentIdleNotify(value) => Some(value.sequence),
7751             #[cfg(feature = "present")]
7752             Event::PresentRedirectNotify(value) => Some(value.sequence),
7753             #[cfg(feature = "randr")]
7754             Event::RandrNotify(value) => Some(value.sequence),
7755             #[cfg(feature = "randr")]
7756             Event::RandrScreenChangeNotify(value) => Some(value.sequence),
7757             #[cfg(feature = "screensaver")]
7758             Event::ScreensaverNotify(value) => Some(value.sequence),
7759             #[cfg(feature = "shape")]
7760             Event::ShapeNotify(value) => Some(value.sequence),
7761             #[cfg(feature = "shm")]
7762             Event::ShmCompletion(value) => Some(value.sequence),
7763             #[cfg(feature = "sync")]
7764             Event::SyncAlarmNotify(value) => Some(value.sequence),
7765             #[cfg(feature = "sync")]
7766             Event::SyncCounterNotify(value) => Some(value.sequence),
7767             #[cfg(feature = "xfixes")]
7768             Event::XfixesCursorNotify(value) => Some(value.sequence),
7769             #[cfg(feature = "xfixes")]
7770             Event::XfixesSelectionNotify(value) => Some(value.sequence),
7771             #[cfg(feature = "xinput")]
7772             Event::XinputBarrierHit(value) => Some(value.sequence),
7773             #[cfg(feature = "xinput")]
7774             Event::XinputBarrierLeave(value) => Some(value.sequence),
7775             #[cfg(feature = "xinput")]
7776             Event::XinputButtonPress(value) => Some(value.sequence),
7777             #[cfg(feature = "xinput")]
7778             Event::XinputButtonRelease(value) => Some(value.sequence),
7779             #[cfg(feature = "xinput")]
7780             Event::XinputChangeDeviceNotify(value) => Some(value.sequence),
7781             #[cfg(feature = "xinput")]
7782             Event::XinputDeviceButtonPress(value) => Some(value.sequence),
7783             #[cfg(feature = "xinput")]
7784             Event::XinputDeviceButtonRelease(value) => Some(value.sequence),
7785             #[cfg(feature = "xinput")]
7786             Event::XinputDeviceButtonStateNotify(value) => Some(value.sequence),
7787             #[cfg(feature = "xinput")]
7788             Event::XinputDeviceChanged(value) => Some(value.sequence),
7789             #[cfg(feature = "xinput")]
7790             Event::XinputDeviceFocusIn(value) => Some(value.sequence),
7791             #[cfg(feature = "xinput")]
7792             Event::XinputDeviceFocusOut(value) => Some(value.sequence),
7793             #[cfg(feature = "xinput")]
7794             Event::XinputDeviceKeyPress(value) => Some(value.sequence),
7795             #[cfg(feature = "xinput")]
7796             Event::XinputDeviceKeyRelease(value) => Some(value.sequence),
7797             #[cfg(feature = "xinput")]
7798             Event::XinputDeviceKeyStateNotify(value) => Some(value.sequence),
7799             #[cfg(feature = "xinput")]
7800             Event::XinputDeviceMappingNotify(value) => Some(value.sequence),
7801             #[cfg(feature = "xinput")]
7802             Event::XinputDeviceMotionNotify(value) => Some(value.sequence),
7803             #[cfg(feature = "xinput")]
7804             Event::XinputDevicePresenceNotify(value) => Some(value.sequence),
7805             #[cfg(feature = "xinput")]
7806             Event::XinputDevicePropertyNotify(value) => Some(value.sequence),
7807             #[cfg(feature = "xinput")]
7808             Event::XinputDeviceStateNotify(value) => Some(value.sequence),
7809             #[cfg(feature = "xinput")]
7810             Event::XinputDeviceValuator(value) => Some(value.sequence),
7811             #[cfg(feature = "xinput")]
7812             Event::XinputEnter(value) => Some(value.sequence),
7813             #[cfg(feature = "xinput")]
7814             Event::XinputFocusIn(value) => Some(value.sequence),
7815             #[cfg(feature = "xinput")]
7816             Event::XinputFocusOut(value) => Some(value.sequence),
7817             #[cfg(feature = "xinput")]
7818             Event::XinputHierarchy(value) => Some(value.sequence),
7819             #[cfg(feature = "xinput")]
7820             Event::XinputKeyPress(value) => Some(value.sequence),
7821             #[cfg(feature = "xinput")]
7822             Event::XinputKeyRelease(value) => Some(value.sequence),
7823             #[cfg(feature = "xinput")]
7824             Event::XinputLeave(value) => Some(value.sequence),
7825             #[cfg(feature = "xinput")]
7826             Event::XinputMotion(value) => Some(value.sequence),
7827             #[cfg(feature = "xinput")]
7828             Event::XinputProperty(value) => Some(value.sequence),
7829             #[cfg(feature = "xinput")]
7830             Event::XinputProximityIn(value) => Some(value.sequence),
7831             #[cfg(feature = "xinput")]
7832             Event::XinputProximityOut(value) => Some(value.sequence),
7833             #[cfg(feature = "xinput")]
7834             Event::XinputRawButtonPress(value) => Some(value.sequence),
7835             #[cfg(feature = "xinput")]
7836             Event::XinputRawButtonRelease(value) => Some(value.sequence),
7837             #[cfg(feature = "xinput")]
7838             Event::XinputRawKeyPress(value) => Some(value.sequence),
7839             #[cfg(feature = "xinput")]
7840             Event::XinputRawKeyRelease(value) => Some(value.sequence),
7841             #[cfg(feature = "xinput")]
7842             Event::XinputRawMotion(value) => Some(value.sequence),
7843             #[cfg(feature = "xinput")]
7844             Event::XinputRawTouchBegin(value) => Some(value.sequence),
7845             #[cfg(feature = "xinput")]
7846             Event::XinputRawTouchEnd(value) => Some(value.sequence),
7847             #[cfg(feature = "xinput")]
7848             Event::XinputRawTouchUpdate(value) => Some(value.sequence),
7849             #[cfg(feature = "xinput")]
7850             Event::XinputTouchBegin(value) => Some(value.sequence),
7851             #[cfg(feature = "xinput")]
7852             Event::XinputTouchEnd(value) => Some(value.sequence),
7853             #[cfg(feature = "xinput")]
7854             Event::XinputTouchOwnership(value) => Some(value.sequence),
7855             #[cfg(feature = "xinput")]
7856             Event::XinputTouchUpdate(value) => Some(value.sequence),
7857             #[cfg(feature = "xkb")]
7858             Event::XkbAccessXNotify(value) => Some(value.sequence),
7859             #[cfg(feature = "xkb")]
7860             Event::XkbActionMessage(value) => Some(value.sequence),
7861             #[cfg(feature = "xkb")]
7862             Event::XkbBellNotify(value) => Some(value.sequence),
7863             #[cfg(feature = "xkb")]
7864             Event::XkbCompatMapNotify(value) => Some(value.sequence),
7865             #[cfg(feature = "xkb")]
7866             Event::XkbControlsNotify(value) => Some(value.sequence),
7867             #[cfg(feature = "xkb")]
7868             Event::XkbExtensionDeviceNotify(value) => Some(value.sequence),
7869             #[cfg(feature = "xkb")]
7870             Event::XkbIndicatorMapNotify(value) => Some(value.sequence),
7871             #[cfg(feature = "xkb")]
7872             Event::XkbIndicatorStateNotify(value) => Some(value.sequence),
7873             #[cfg(feature = "xkb")]
7874             Event::XkbMapNotify(value) => Some(value.sequence),
7875             #[cfg(feature = "xkb")]
7876             Event::XkbNamesNotify(value) => Some(value.sequence),
7877             #[cfg(feature = "xkb")]
7878             Event::XkbNewKeyboardNotify(value) => Some(value.sequence),
7879             #[cfg(feature = "xkb")]
7880             Event::XkbStateNotify(value) => Some(value.sequence),
7881             #[cfg(feature = "xprint")]
7882             Event::XprintAttributNotify(value) => Some(value.sequence),
7883             #[cfg(feature = "xprint")]
7884             Event::XprintNotify(value) => Some(value.sequence),
7885             #[cfg(feature = "xv")]
7886             Event::XvPortNotify(value) => Some(value.sequence),
7887             #[cfg(feature = "xv")]
7888             Event::XvVideoNotify(value) => Some(value.sequence),
7889         }
7890     }
7891 
7892     /// Get the raw response type of this X11 event
7893     ///
7894     /// Response types have seven bits in X11. The eight bit indicates whether
7895     /// the packet was generated through the `SendEvent` request. This function
7896     /// returns all eight bits.
7897     ///
7898     /// See also the `response_type()`, `server_generated()` and `sent_event()` methods.
raw_response_type(&self) -> u87899     pub fn raw_response_type(&self) -> u8 {
7900         match self {
7901             Event::Unknown(value) => response_type(value).unwrap(),
7902             Event::Error(_) => 0,
7903             Event::ButtonPress(value) => value.response_type,
7904             Event::ButtonRelease(value) => value.response_type,
7905             Event::CirculateNotify(value) => value.response_type,
7906             Event::CirculateRequest(value) => value.response_type,
7907             Event::ClientMessage(value) => value.response_type,
7908             Event::ColormapNotify(value) => value.response_type,
7909             Event::ConfigureNotify(value) => value.response_type,
7910             Event::ConfigureRequest(value) => value.response_type,
7911             Event::CreateNotify(value) => value.response_type,
7912             Event::DestroyNotify(value) => value.response_type,
7913             Event::EnterNotify(value) => value.response_type,
7914             Event::Expose(value) => value.response_type,
7915             Event::FocusIn(value) => value.response_type,
7916             Event::FocusOut(value) => value.response_type,
7917             Event::GeGeneric(value) => value.response_type,
7918             Event::GraphicsExposure(value) => value.response_type,
7919             Event::GravityNotify(value) => value.response_type,
7920             Event::KeyPress(value) => value.response_type,
7921             Event::KeyRelease(value) => value.response_type,
7922             Event::KeymapNotify(value) => value.response_type,
7923             Event::LeaveNotify(value) => value.response_type,
7924             Event::MapNotify(value) => value.response_type,
7925             Event::MapRequest(value) => value.response_type,
7926             Event::MappingNotify(value) => value.response_type,
7927             Event::MotionNotify(value) => value.response_type,
7928             Event::NoExposure(value) => value.response_type,
7929             Event::PropertyNotify(value) => value.response_type,
7930             Event::ReparentNotify(value) => value.response_type,
7931             Event::ResizeRequest(value) => value.response_type,
7932             Event::SelectionClear(value) => value.response_type,
7933             Event::SelectionNotify(value) => value.response_type,
7934             Event::SelectionRequest(value) => value.response_type,
7935             Event::UnmapNotify(value) => value.response_type,
7936             Event::VisibilityNotify(value) => value.response_type,
7937             #[cfg(feature = "damage")]
7938             Event::DamageNotify(value) => value.response_type,
7939             #[cfg(feature = "dri2")]
7940             Event::Dri2BufferSwapComplete(value) => value.response_type,
7941             #[cfg(feature = "dri2")]
7942             Event::Dri2InvalidateBuffers(value) => value.response_type,
7943             #[cfg(feature = "glx")]
7944             Event::GlxBufferSwapComplete(value) => value.response_type,
7945             #[cfg(feature = "glx")]
7946             Event::GlxPbufferClobber(value) => value.response_type,
7947             #[cfg(feature = "present")]
7948             Event::PresentCompleteNotify(value) => value.response_type,
7949             #[cfg(feature = "present")]
7950             Event::PresentConfigureNotify(value) => value.response_type,
7951             #[cfg(feature = "present")]
7952             Event::PresentGeneric(value) => value.response_type,
7953             #[cfg(feature = "present")]
7954             Event::PresentIdleNotify(value) => value.response_type,
7955             #[cfg(feature = "present")]
7956             Event::PresentRedirectNotify(value) => value.response_type,
7957             #[cfg(feature = "randr")]
7958             Event::RandrNotify(value) => value.response_type,
7959             #[cfg(feature = "randr")]
7960             Event::RandrScreenChangeNotify(value) => value.response_type,
7961             #[cfg(feature = "screensaver")]
7962             Event::ScreensaverNotify(value) => value.response_type,
7963             #[cfg(feature = "shape")]
7964             Event::ShapeNotify(value) => value.response_type,
7965             #[cfg(feature = "shm")]
7966             Event::ShmCompletion(value) => value.response_type,
7967             #[cfg(feature = "sync")]
7968             Event::SyncAlarmNotify(value) => value.response_type,
7969             #[cfg(feature = "sync")]
7970             Event::SyncCounterNotify(value) => value.response_type,
7971             #[cfg(feature = "xfixes")]
7972             Event::XfixesCursorNotify(value) => value.response_type,
7973             #[cfg(feature = "xfixes")]
7974             Event::XfixesSelectionNotify(value) => value.response_type,
7975             #[cfg(feature = "xinput")]
7976             Event::XinputBarrierHit(value) => value.response_type,
7977             #[cfg(feature = "xinput")]
7978             Event::XinputBarrierLeave(value) => value.response_type,
7979             #[cfg(feature = "xinput")]
7980             Event::XinputButtonPress(value) => value.response_type,
7981             #[cfg(feature = "xinput")]
7982             Event::XinputButtonRelease(value) => value.response_type,
7983             #[cfg(feature = "xinput")]
7984             Event::XinputChangeDeviceNotify(value) => value.response_type,
7985             #[cfg(feature = "xinput")]
7986             Event::XinputDeviceButtonPress(value) => value.response_type,
7987             #[cfg(feature = "xinput")]
7988             Event::XinputDeviceButtonRelease(value) => value.response_type,
7989             #[cfg(feature = "xinput")]
7990             Event::XinputDeviceButtonStateNotify(value) => value.response_type,
7991             #[cfg(feature = "xinput")]
7992             Event::XinputDeviceChanged(value) => value.response_type,
7993             #[cfg(feature = "xinput")]
7994             Event::XinputDeviceFocusIn(value) => value.response_type,
7995             #[cfg(feature = "xinput")]
7996             Event::XinputDeviceFocusOut(value) => value.response_type,
7997             #[cfg(feature = "xinput")]
7998             Event::XinputDeviceKeyPress(value) => value.response_type,
7999             #[cfg(feature = "xinput")]
8000             Event::XinputDeviceKeyRelease(value) => value.response_type,
8001             #[cfg(feature = "xinput")]
8002             Event::XinputDeviceKeyStateNotify(value) => value.response_type,
8003             #[cfg(feature = "xinput")]
8004             Event::XinputDeviceMappingNotify(value) => value.response_type,
8005             #[cfg(feature = "xinput")]
8006             Event::XinputDeviceMotionNotify(value) => value.response_type,
8007             #[cfg(feature = "xinput")]
8008             Event::XinputDevicePresenceNotify(value) => value.response_type,
8009             #[cfg(feature = "xinput")]
8010             Event::XinputDevicePropertyNotify(value) => value.response_type,
8011             #[cfg(feature = "xinput")]
8012             Event::XinputDeviceStateNotify(value) => value.response_type,
8013             #[cfg(feature = "xinput")]
8014             Event::XinputDeviceValuator(value) => value.response_type,
8015             #[cfg(feature = "xinput")]
8016             Event::XinputEnter(value) => value.response_type,
8017             #[cfg(feature = "xinput")]
8018             Event::XinputFocusIn(value) => value.response_type,
8019             #[cfg(feature = "xinput")]
8020             Event::XinputFocusOut(value) => value.response_type,
8021             #[cfg(feature = "xinput")]
8022             Event::XinputHierarchy(value) => value.response_type,
8023             #[cfg(feature = "xinput")]
8024             Event::XinputKeyPress(value) => value.response_type,
8025             #[cfg(feature = "xinput")]
8026             Event::XinputKeyRelease(value) => value.response_type,
8027             #[cfg(feature = "xinput")]
8028             Event::XinputLeave(value) => value.response_type,
8029             #[cfg(feature = "xinput")]
8030             Event::XinputMotion(value) => value.response_type,
8031             #[cfg(feature = "xinput")]
8032             Event::XinputProperty(value) => value.response_type,
8033             #[cfg(feature = "xinput")]
8034             Event::XinputProximityIn(value) => value.response_type,
8035             #[cfg(feature = "xinput")]
8036             Event::XinputProximityOut(value) => value.response_type,
8037             #[cfg(feature = "xinput")]
8038             Event::XinputRawButtonPress(value) => value.response_type,
8039             #[cfg(feature = "xinput")]
8040             Event::XinputRawButtonRelease(value) => value.response_type,
8041             #[cfg(feature = "xinput")]
8042             Event::XinputRawKeyPress(value) => value.response_type,
8043             #[cfg(feature = "xinput")]
8044             Event::XinputRawKeyRelease(value) => value.response_type,
8045             #[cfg(feature = "xinput")]
8046             Event::XinputRawMotion(value) => value.response_type,
8047             #[cfg(feature = "xinput")]
8048             Event::XinputRawTouchBegin(value) => value.response_type,
8049             #[cfg(feature = "xinput")]
8050             Event::XinputRawTouchEnd(value) => value.response_type,
8051             #[cfg(feature = "xinput")]
8052             Event::XinputRawTouchUpdate(value) => value.response_type,
8053             #[cfg(feature = "xinput")]
8054             Event::XinputTouchBegin(value) => value.response_type,
8055             #[cfg(feature = "xinput")]
8056             Event::XinputTouchEnd(value) => value.response_type,
8057             #[cfg(feature = "xinput")]
8058             Event::XinputTouchOwnership(value) => value.response_type,
8059             #[cfg(feature = "xinput")]
8060             Event::XinputTouchUpdate(value) => value.response_type,
8061             #[cfg(feature = "xkb")]
8062             Event::XkbAccessXNotify(value) => value.response_type,
8063             #[cfg(feature = "xkb")]
8064             Event::XkbActionMessage(value) => value.response_type,
8065             #[cfg(feature = "xkb")]
8066             Event::XkbBellNotify(value) => value.response_type,
8067             #[cfg(feature = "xkb")]
8068             Event::XkbCompatMapNotify(value) => value.response_type,
8069             #[cfg(feature = "xkb")]
8070             Event::XkbControlsNotify(value) => value.response_type,
8071             #[cfg(feature = "xkb")]
8072             Event::XkbExtensionDeviceNotify(value) => value.response_type,
8073             #[cfg(feature = "xkb")]
8074             Event::XkbIndicatorMapNotify(value) => value.response_type,
8075             #[cfg(feature = "xkb")]
8076             Event::XkbIndicatorStateNotify(value) => value.response_type,
8077             #[cfg(feature = "xkb")]
8078             Event::XkbMapNotify(value) => value.response_type,
8079             #[cfg(feature = "xkb")]
8080             Event::XkbNamesNotify(value) => value.response_type,
8081             #[cfg(feature = "xkb")]
8082             Event::XkbNewKeyboardNotify(value) => value.response_type,
8083             #[cfg(feature = "xkb")]
8084             Event::XkbStateNotify(value) => value.response_type,
8085             #[cfg(feature = "xprint")]
8086             Event::XprintAttributNotify(value) => value.response_type,
8087             #[cfg(feature = "xprint")]
8088             Event::XprintNotify(value) => value.response_type,
8089             #[cfg(feature = "xv")]
8090             Event::XvPortNotify(value) => value.response_type,
8091             #[cfg(feature = "xv")]
8092             Event::XvVideoNotify(value) => value.response_type,
8093         }
8094     }
8095 
8096     /// Get the response type of this X11 event
response_type(&self) -> u88097     pub fn response_type(&self) -> u8 {
8098         self.raw_response_type() & 0x7f
8099     }
8100 
8101     /// Was this event generated by the X11 server?
8102     ///
8103     /// If this function returns true, then this event comes from the X11 server.
8104     /// Otherwise, it was sent from another client via the `SendEvent` request.
server_generated(&self) -> bool8105     pub fn server_generated(&self) -> bool {
8106         self.raw_response_type() & 0x80 == 0
8107     }
8108 
8109     /// Was this event generated by another X11 client?
8110     ///
8111     /// If this function returns true, then this event comes from another client via
8112     /// the `SendEvent` request. Otherwise, it was generated by the X11 server.
sent_event(&self) -> bool8113     pub fn sent_event(&self) -> bool {
8114         self.raw_response_type() & 0x80 != 0
8115     }
8116 }
8117 
8118 /// Get the response type out of the raw bytes of an X11 error or event.
response_type(raw_bytes: &[u8]) -> Result<u8, ParseError>8119 fn response_type(raw_bytes: &[u8]) -> Result<u8, ParseError> {
8120     raw_bytes.get(0)
8121         .map(|x| x & 0x7f)
8122         .ok_or(ParseError::InsufficientData)
8123 }
8124 
8125 /// Get the sequence number out of an X11 packet.
sequence_number(raw_bytes: &[u8]) -> Result<u16, ParseError>8126 fn sequence_number(raw_bytes: &[u8]) -> Result<u16, ParseError> {
8127     raw_bytes.get(2..4)
8128         .map(|b| u16::from_ne_bytes(b.try_into().unwrap()))
8129         .ok_or(ParseError::InsufficientData)
8130 }
8131