1import xcffib
2import struct
3import six
4MAJOR_VERSION = 2
5MINOR_VERSION = 3
6key = xcffib.ExtensionKey("XInputExtension")
7_events = {}
8_errors = {}
9from . import xfixes
10from . import xproto
11class FP3232(xcffib.Struct):
12    def __init__(self, unpacker):
13        if isinstance(unpacker, xcffib.Protobj):
14            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
15        xcffib.Struct.__init__(self, unpacker)
16        base = unpacker.offset
17        self.integral, self.frac = unpacker.unpack("iI")
18        self.bufsize = unpacker.offset - base
19    def pack(self):
20        buf = six.BytesIO()
21        buf.write(struct.pack("=iI", self.integral, self.frac))
22        return buf.getvalue()
23    fixed_size = 8
24    @classmethod
25    def synthetic(cls, integral, frac):
26        self = cls.__new__(cls)
27        self.integral = integral
28        self.frac = frac
29        return self
30class GetExtensionVersionReply(xcffib.Reply):
31    def __init__(self, unpacker):
32        if isinstance(unpacker, xcffib.Protobj):
33            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
34        xcffib.Reply.__init__(self, unpacker)
35        base = unpacker.offset
36        self.xi_reply_type, self.server_major, self.server_minor, self.present = unpacker.unpack("xB2x4xHHB19x")
37        self.bufsize = unpacker.offset - base
38class GetExtensionVersionCookie(xcffib.Cookie):
39    reply_type = GetExtensionVersionReply
40class DeviceUse:
41    IsXPointer = 0
42    IsXKeyboard = 1
43    IsXExtensionDevice = 2
44    IsXExtensionKeyboard = 3
45    IsXExtensionPointer = 4
46class InputClass:
47    Key = 0
48    Button = 1
49    Valuator = 2
50    Feedback = 3
51    Proximity = 4
52    Focus = 5
53    Other = 6
54class ValuatorMode:
55    Relative = 0
56    Absolute = 1
57class DeviceInfo(xcffib.Struct):
58    def __init__(self, unpacker):
59        if isinstance(unpacker, xcffib.Protobj):
60            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
61        xcffib.Struct.__init__(self, unpacker)
62        base = unpacker.offset
63        self.device_type, self.device_id, self.num_class_info, self.device_use = unpacker.unpack("IBBBx")
64        self.bufsize = unpacker.offset - base
65    def pack(self):
66        buf = six.BytesIO()
67        buf.write(struct.pack("=IBBBx", self.device_type, self.device_id, self.num_class_info, self.device_use))
68        return buf.getvalue()
69    fixed_size = 8
70    @classmethod
71    def synthetic(cls, device_type, device_id, num_class_info, device_use):
72        self = cls.__new__(cls)
73        self.device_type = device_type
74        self.device_id = device_id
75        self.num_class_info = num_class_info
76        self.device_use = device_use
77        return self
78class KeyInfo(xcffib.Struct):
79    def __init__(self, unpacker):
80        if isinstance(unpacker, xcffib.Protobj):
81            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
82        xcffib.Struct.__init__(self, unpacker)
83        base = unpacker.offset
84        self.class_id, self.len, self.min_keycode, self.max_keycode, self.num_keys = unpacker.unpack("BBBBH2x")
85        self.bufsize = unpacker.offset - base
86    def pack(self):
87        buf = six.BytesIO()
88        buf.write(struct.pack("=BBBBH2x", self.class_id, self.len, self.min_keycode, self.max_keycode, self.num_keys))
89        return buf.getvalue()
90    fixed_size = 8
91    @classmethod
92    def synthetic(cls, class_id, len, min_keycode, max_keycode, num_keys):
93        self = cls.__new__(cls)
94        self.class_id = class_id
95        self.len = len
96        self.min_keycode = min_keycode
97        self.max_keycode = max_keycode
98        self.num_keys = num_keys
99        return self
100class ButtonInfo(xcffib.Struct):
101    def __init__(self, unpacker):
102        if isinstance(unpacker, xcffib.Protobj):
103            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
104        xcffib.Struct.__init__(self, unpacker)
105        base = unpacker.offset
106        self.class_id, self.len, self.num_buttons = unpacker.unpack("BBH")
107        self.bufsize = unpacker.offset - base
108    def pack(self):
109        buf = six.BytesIO()
110        buf.write(struct.pack("=BBH", self.class_id, self.len, self.num_buttons))
111        return buf.getvalue()
112    fixed_size = 4
113    @classmethod
114    def synthetic(cls, class_id, len, num_buttons):
115        self = cls.__new__(cls)
116        self.class_id = class_id
117        self.len = len
118        self.num_buttons = num_buttons
119        return self
120class AxisInfo(xcffib.Struct):
121    def __init__(self, unpacker):
122        if isinstance(unpacker, xcffib.Protobj):
123            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
124        xcffib.Struct.__init__(self, unpacker)
125        base = unpacker.offset
126        self.resolution, self.minimum, self.maximum = unpacker.unpack("Iii")
127        self.bufsize = unpacker.offset - base
128    def pack(self):
129        buf = six.BytesIO()
130        buf.write(struct.pack("=Iii", self.resolution, self.minimum, self.maximum))
131        return buf.getvalue()
132    fixed_size = 12
133    @classmethod
134    def synthetic(cls, resolution, minimum, maximum):
135        self = cls.__new__(cls)
136        self.resolution = resolution
137        self.minimum = minimum
138        self.maximum = maximum
139        return self
140class ValuatorInfo(xcffib.Struct):
141    def __init__(self, unpacker):
142        if isinstance(unpacker, xcffib.Protobj):
143            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
144        xcffib.Struct.__init__(self, unpacker)
145        base = unpacker.offset
146        self.class_id, self.len, self.axes_len, self.mode, self.motion_size = unpacker.unpack("BBBBI")
147        self.axes = xcffib.List(unpacker, AxisInfo, self.axes_len)
148        self.bufsize = unpacker.offset - base
149    def pack(self):
150        buf = six.BytesIO()
151        buf.write(struct.pack("=BBBBI", self.class_id, self.len, self.axes_len, self.mode, self.motion_size))
152        buf.write(xcffib.pack_list(self.axes, AxisInfo))
153        return buf.getvalue()
154    @classmethod
155    def synthetic(cls, class_id, len, axes_len, mode, motion_size, axes):
156        self = cls.__new__(cls)
157        self.class_id = class_id
158        self.len = len
159        self.axes_len = axes_len
160        self.mode = mode
161        self.motion_size = motion_size
162        self.axes = axes
163        return self
164class InputInfo(xcffib.Struct):
165    def __init__(self, unpacker):
166        if isinstance(unpacker, xcffib.Protobj):
167            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
168        xcffib.Struct.__init__(self, unpacker)
169        base = unpacker.offset
170        self.class_id, self.len = unpacker.unpack("BB")
171        if self.class_id == InputClass.Key:
172            self.min_keycode, self.max_keycode, self.num_keys = unpacker.unpack("BBH2x")
173        if self.class_id == InputClass.Button:
174            self.num_buttons, = unpacker.unpack("H")
175        if self.class_id == InputClass.Valuator:
176            self.axes_len, self.mode, self.motion_size = unpacker.unpack("BBI")
177            self.axes = xcffib.List(unpacker, AxisInfo, self.axes_len)
178        self.bufsize = unpacker.offset - base
179    def pack(self):
180        buf = six.BytesIO()
181        buf.write(struct.pack("=BB", self.class_id, self.len))
182        if class_id & InputClass.Key:
183            self.min_keycode = self.info.pop(0)
184            self.max_keycode = self.info.pop(0)
185            self.num_keys = self.info.pop(0)
186            buf.write(struct.pack("=BBH2x", self.min_keycode, self.max_keycode, self.num_keys))
187        if class_id & InputClass.Button:
188            self.num_buttons = self.info.pop(0)
189            buf.write(struct.pack("=H", self.num_buttons))
190        if class_id & InputClass.Valuator:
191            self.axes_len = self.info.pop(0)
192            self.mode = self.info.pop(0)
193            self.motion_size = self.info.pop(0)
194            self.axes = self.info.pop(0)
195            buf.write(struct.pack("=BBI", self.axes_len, self.mode, self.motion_size))
196            buf.write(xcffib.pack_list(self.axes, AxisInfo))
197        return buf.getvalue()
198    @classmethod
199    def synthetic(cls, class_id, len, info):
200        self = cls.__new__(cls)
201        self.class_id = class_id
202        self.len = len
203        self.info = info
204        return self
205class DeviceName(xcffib.Struct):
206    def __init__(self, unpacker):
207        if isinstance(unpacker, xcffib.Protobj):
208            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
209        xcffib.Struct.__init__(self, unpacker)
210        base = unpacker.offset
211        self.len, = unpacker.unpack("B")
212        self.string = xcffib.List(unpacker, "c", self.len)
213        self.bufsize = unpacker.offset - base
214    def pack(self):
215        buf = six.BytesIO()
216        buf.write(struct.pack("=B", self.len))
217        buf.write(xcffib.pack_list(self.string, "c"))
218        return buf.getvalue()
219    @classmethod
220    def synthetic(cls, len, string):
221        self = cls.__new__(cls)
222        self.len = len
223        self.string = string
224        return self
225class InputClassInfo(xcffib.Struct):
226    def __init__(self, unpacker):
227        if isinstance(unpacker, xcffib.Protobj):
228            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
229        xcffib.Struct.__init__(self, unpacker)
230        base = unpacker.offset
231        self.class_id, self.event_type_base = unpacker.unpack("BB")
232        self.bufsize = unpacker.offset - base
233    def pack(self):
234        buf = six.BytesIO()
235        buf.write(struct.pack("=BB", self.class_id, self.event_type_base))
236        return buf.getvalue()
237    fixed_size = 2
238    @classmethod
239    def synthetic(cls, class_id, event_type_base):
240        self = cls.__new__(cls)
241        self.class_id = class_id
242        self.event_type_base = event_type_base
243        return self
244class SetDeviceModeReply(xcffib.Reply):
245    def __init__(self, unpacker):
246        if isinstance(unpacker, xcffib.Protobj):
247            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
248        xcffib.Reply.__init__(self, unpacker)
249        base = unpacker.offset
250        self.xi_reply_type, self.status = unpacker.unpack("xB2x4xB23x")
251        self.bufsize = unpacker.offset - base
252class SetDeviceModeCookie(xcffib.Cookie):
253    reply_type = SetDeviceModeReply
254class GetSelectedExtensionEventsReply(xcffib.Reply):
255    def __init__(self, unpacker):
256        if isinstance(unpacker, xcffib.Protobj):
257            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
258        xcffib.Reply.__init__(self, unpacker)
259        base = unpacker.offset
260        self.xi_reply_type, self.num_this_classes, self.num_all_classes = unpacker.unpack("xB2x4xHH20x")
261        self.this_classes = xcffib.List(unpacker, "I", self.num_this_classes)
262        unpacker.pad("I")
263        self.all_classes = xcffib.List(unpacker, "I", self.num_all_classes)
264        self.bufsize = unpacker.offset - base
265class GetSelectedExtensionEventsCookie(xcffib.Cookie):
266    reply_type = GetSelectedExtensionEventsReply
267class PropagateMode:
268    AddToList = 0
269    DeleteFromList = 1
270class GetDeviceDontPropagateListReply(xcffib.Reply):
271    def __init__(self, unpacker):
272        if isinstance(unpacker, xcffib.Protobj):
273            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
274        xcffib.Reply.__init__(self, unpacker)
275        base = unpacker.offset
276        self.xi_reply_type, self.num_classes = unpacker.unpack("xB2x4xH22x")
277        self.classes = xcffib.List(unpacker, "I", self.num_classes)
278        self.bufsize = unpacker.offset - base
279class GetDeviceDontPropagateListCookie(xcffib.Cookie):
280    reply_type = GetDeviceDontPropagateListReply
281class DeviceTimeCoord(xcffib.Struct):
282    def __init__(self, unpacker):
283        if isinstance(unpacker, xcffib.Protobj):
284            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
285        xcffib.Struct.__init__(self, unpacker)
286        base = unpacker.offset
287        self.time, = unpacker.unpack("I")
288        self.axisvalues = xcffib.List(unpacker, "i", num_axes)
289        self.bufsize = unpacker.offset - base
290    def pack(self):
291        buf = six.BytesIO()
292        buf.write(struct.pack("=I", self.time))
293        buf.write(xcffib.pack_list(self.axisvalues, "i"))
294        return buf.getvalue()
295    @classmethod
296    def synthetic(cls, time, axisvalues):
297        self = cls.__new__(cls)
298        self.time = time
299        self.axisvalues = axisvalues
300        return self
301class GetDeviceMotionEventsReply(xcffib.Reply):
302    def __init__(self, unpacker):
303        if isinstance(unpacker, xcffib.Protobj):
304            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
305        xcffib.Reply.__init__(self, unpacker)
306        base = unpacker.offset
307        self.xi_reply_type, self.num_events, self.num_axes, self.device_mode = unpacker.unpack("xB2x4xIBB18x")
308        self.events = xcffib.List(unpacker, DeviceTimeCoord, self.num_events)
309        self.bufsize = unpacker.offset - base
310class GetDeviceMotionEventsCookie(xcffib.Cookie):
311    reply_type = GetDeviceMotionEventsReply
312class ChangeKeyboardDeviceReply(xcffib.Reply):
313    def __init__(self, unpacker):
314        if isinstance(unpacker, xcffib.Protobj):
315            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
316        xcffib.Reply.__init__(self, unpacker)
317        base = unpacker.offset
318        self.xi_reply_type, self.status = unpacker.unpack("xB2x4xB23x")
319        self.bufsize = unpacker.offset - base
320class ChangeKeyboardDeviceCookie(xcffib.Cookie):
321    reply_type = ChangeKeyboardDeviceReply
322class ChangePointerDeviceReply(xcffib.Reply):
323    def __init__(self, unpacker):
324        if isinstance(unpacker, xcffib.Protobj):
325            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
326        xcffib.Reply.__init__(self, unpacker)
327        base = unpacker.offset
328        self.xi_reply_type, self.status = unpacker.unpack("xB2x4xB23x")
329        self.bufsize = unpacker.offset - base
330class ChangePointerDeviceCookie(xcffib.Cookie):
331    reply_type = ChangePointerDeviceReply
332class GrabDeviceReply(xcffib.Reply):
333    def __init__(self, unpacker):
334        if isinstance(unpacker, xcffib.Protobj):
335            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
336        xcffib.Reply.__init__(self, unpacker)
337        base = unpacker.offset
338        self.xi_reply_type, self.status = unpacker.unpack("xB2x4xB23x")
339        self.bufsize = unpacker.offset - base
340class GrabDeviceCookie(xcffib.Cookie):
341    reply_type = GrabDeviceReply
342class ModifierDevice:
343    UseXKeyboard = 255
344class DeviceInputMode:
345    AsyncThisDevice = 0
346    SyncThisDevice = 1
347    ReplayThisDevice = 2
348    AsyncOtherDevices = 3
349    AsyncAll = 4
350    SyncAll = 5
351class GetDeviceFocusReply(xcffib.Reply):
352    def __init__(self, unpacker):
353        if isinstance(unpacker, xcffib.Protobj):
354            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
355        xcffib.Reply.__init__(self, unpacker)
356        base = unpacker.offset
357        self.xi_reply_type, self.focus, self.time, self.revert_to = unpacker.unpack("xB2x4xIIB15x")
358        self.bufsize = unpacker.offset - base
359class GetDeviceFocusCookie(xcffib.Cookie):
360    reply_type = GetDeviceFocusReply
361class FeedbackClass:
362    Keyboard = 0
363    Pointer = 1
364    String = 2
365    Integer = 3
366    Led = 4
367    Bell = 5
368class KbdFeedbackState(xcffib.Struct):
369    def __init__(self, unpacker):
370        if isinstance(unpacker, xcffib.Protobj):
371            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
372        xcffib.Struct.__init__(self, unpacker)
373        base = unpacker.offset
374        self.class_id, self.feedback_id, self.len, self.pitch, self.duration, self.led_mask, self.led_values, self.global_auto_repeat, self.click, self.percent = unpacker.unpack("BBHHHIIBBBx")
375        self.auto_repeats = xcffib.List(unpacker, "B", 32)
376        self.bufsize = unpacker.offset - base
377    def pack(self):
378        buf = six.BytesIO()
379        buf.write(struct.pack("=BBHHHIIBBBx", self.class_id, self.feedback_id, self.len, self.pitch, self.duration, self.led_mask, self.led_values, self.global_auto_repeat, self.click, self.percent))
380        buf.write(xcffib.pack_list(self.auto_repeats, "B"))
381        return buf.getvalue()
382    fixed_size = 52
383    @classmethod
384    def synthetic(cls, class_id, feedback_id, len, pitch, duration, led_mask, led_values, global_auto_repeat, click, percent, auto_repeats):
385        self = cls.__new__(cls)
386        self.class_id = class_id
387        self.feedback_id = feedback_id
388        self.len = len
389        self.pitch = pitch
390        self.duration = duration
391        self.led_mask = led_mask
392        self.led_values = led_values
393        self.global_auto_repeat = global_auto_repeat
394        self.click = click
395        self.percent = percent
396        self.auto_repeats = auto_repeats
397        return self
398class PtrFeedbackState(xcffib.Struct):
399    def __init__(self, unpacker):
400        if isinstance(unpacker, xcffib.Protobj):
401            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
402        xcffib.Struct.__init__(self, unpacker)
403        base = unpacker.offset
404        self.class_id, self.feedback_id, self.len, self.accel_num, self.accel_denom, self.threshold = unpacker.unpack("BBH2xHHH")
405        self.bufsize = unpacker.offset - base
406    def pack(self):
407        buf = six.BytesIO()
408        buf.write(struct.pack("=BBH2xHHH", self.class_id, self.feedback_id, self.len, self.accel_num, self.accel_denom, self.threshold))
409        return buf.getvalue()
410    fixed_size = 12
411    @classmethod
412    def synthetic(cls, class_id, feedback_id, len, accel_num, accel_denom, threshold):
413        self = cls.__new__(cls)
414        self.class_id = class_id
415        self.feedback_id = feedback_id
416        self.len = len
417        self.accel_num = accel_num
418        self.accel_denom = accel_denom
419        self.threshold = threshold
420        return self
421class IntegerFeedbackState(xcffib.Struct):
422    def __init__(self, unpacker):
423        if isinstance(unpacker, xcffib.Protobj):
424            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
425        xcffib.Struct.__init__(self, unpacker)
426        base = unpacker.offset
427        self.class_id, self.feedback_id, self.len, self.resolution, self.min_value, self.max_value = unpacker.unpack("BBHIii")
428        self.bufsize = unpacker.offset - base
429    def pack(self):
430        buf = six.BytesIO()
431        buf.write(struct.pack("=BBHIii", self.class_id, self.feedback_id, self.len, self.resolution, self.min_value, self.max_value))
432        return buf.getvalue()
433    fixed_size = 16
434    @classmethod
435    def synthetic(cls, class_id, feedback_id, len, resolution, min_value, max_value):
436        self = cls.__new__(cls)
437        self.class_id = class_id
438        self.feedback_id = feedback_id
439        self.len = len
440        self.resolution = resolution
441        self.min_value = min_value
442        self.max_value = max_value
443        return self
444class StringFeedbackState(xcffib.Struct):
445    def __init__(self, unpacker):
446        if isinstance(unpacker, xcffib.Protobj):
447            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
448        xcffib.Struct.__init__(self, unpacker)
449        base = unpacker.offset
450        self.class_id, self.feedback_id, self.len, self.max_symbols, self.num_keysyms = unpacker.unpack("BBHHH")
451        self.keysyms = xcffib.List(unpacker, "I", self.num_keysyms)
452        self.bufsize = unpacker.offset - base
453    def pack(self):
454        buf = six.BytesIO()
455        buf.write(struct.pack("=BBHHH", self.class_id, self.feedback_id, self.len, self.max_symbols, self.num_keysyms))
456        buf.write(xcffib.pack_list(self.keysyms, "I"))
457        return buf.getvalue()
458    @classmethod
459    def synthetic(cls, class_id, feedback_id, len, max_symbols, num_keysyms, keysyms):
460        self = cls.__new__(cls)
461        self.class_id = class_id
462        self.feedback_id = feedback_id
463        self.len = len
464        self.max_symbols = max_symbols
465        self.num_keysyms = num_keysyms
466        self.keysyms = keysyms
467        return self
468class BellFeedbackState(xcffib.Struct):
469    def __init__(self, unpacker):
470        if isinstance(unpacker, xcffib.Protobj):
471            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
472        xcffib.Struct.__init__(self, unpacker)
473        base = unpacker.offset
474        self.class_id, self.feedback_id, self.len, self.percent, self.pitch, self.duration = unpacker.unpack("BBHB3xHH")
475        self.bufsize = unpacker.offset - base
476    def pack(self):
477        buf = six.BytesIO()
478        buf.write(struct.pack("=BBHB3xHH", self.class_id, self.feedback_id, self.len, self.percent, self.pitch, self.duration))
479        return buf.getvalue()
480    fixed_size = 12
481    @classmethod
482    def synthetic(cls, class_id, feedback_id, len, percent, pitch, duration):
483        self = cls.__new__(cls)
484        self.class_id = class_id
485        self.feedback_id = feedback_id
486        self.len = len
487        self.percent = percent
488        self.pitch = pitch
489        self.duration = duration
490        return self
491class LedFeedbackState(xcffib.Struct):
492    def __init__(self, unpacker):
493        if isinstance(unpacker, xcffib.Protobj):
494            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
495        xcffib.Struct.__init__(self, unpacker)
496        base = unpacker.offset
497        self.class_id, self.feedback_id, self.len, self.led_mask, self.led_values = unpacker.unpack("BBHII")
498        self.bufsize = unpacker.offset - base
499    def pack(self):
500        buf = six.BytesIO()
501        buf.write(struct.pack("=BBHII", self.class_id, self.feedback_id, self.len, self.led_mask, self.led_values))
502        return buf.getvalue()
503    fixed_size = 12
504    @classmethod
505    def synthetic(cls, class_id, feedback_id, len, led_mask, led_values):
506        self = cls.__new__(cls)
507        self.class_id = class_id
508        self.feedback_id = feedback_id
509        self.len = len
510        self.led_mask = led_mask
511        self.led_values = led_values
512        return self
513class FeedbackState(xcffib.Struct):
514    def __init__(self, unpacker):
515        if isinstance(unpacker, xcffib.Protobj):
516            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
517        xcffib.Struct.__init__(self, unpacker)
518        base = unpacker.offset
519        self.class_id, self.feedback_id, self.len = unpacker.unpack("BBH")
520        if self.class_id == FeedbackClass.Keyboard:
521            self.pitch, self.duration, self.led_mask, self.led_values, self.global_auto_repeat, self.click, self.percent = unpacker.unpack("HHIIBBBx")
522            self.auto_repeats = xcffib.List(unpacker, "B", 32)
523        if self.class_id == FeedbackClass.Pointer:
524            self.accel_num, self.accel_denom, self.threshold = unpacker.unpack("2xHHH")
525        if self.class_id == FeedbackClass.String:
526            self.max_symbols, self.num_keysyms = unpacker.unpack("HH")
527            self.keysyms = xcffib.List(unpacker, "I", self.num_keysyms)
528        if self.class_id == FeedbackClass.Integer:
529            self.resolution, self.min_value, self.max_value = unpacker.unpack("Iii")
530        if self.class_id == FeedbackClass.Led:
531            self.led_mask, self.led_values = unpacker.unpack("II")
532        if self.class_id == FeedbackClass.Bell:
533            self.percent, self.pitch, self.duration = unpacker.unpack("B3xHH")
534        self.bufsize = unpacker.offset - base
535    def pack(self):
536        buf = six.BytesIO()
537        buf.write(struct.pack("=BBH", self.class_id, self.feedback_id, self.len))
538        if class_id & FeedbackClass.Keyboard:
539            self.pitch = self.data.pop(0)
540            self.duration = self.data.pop(0)
541            self.led_mask = self.data.pop(0)
542            self.led_values = self.data.pop(0)
543            self.global_auto_repeat = self.data.pop(0)
544            self.click = self.data.pop(0)
545            self.percent = self.data.pop(0)
546            self.auto_repeats = self.data.pop(0)
547            buf.write(struct.pack("=HHIIBBBx", self.pitch, self.duration, self.led_mask, self.led_values, self.global_auto_repeat, self.click, self.percent))
548            buf.write(xcffib.pack_list(self.auto_repeats, "B"))
549        if class_id & FeedbackClass.Pointer:
550            self.accel_num = self.data.pop(0)
551            self.accel_denom = self.data.pop(0)
552            self.threshold = self.data.pop(0)
553            buf.write(struct.pack("=2xHHH", self.accel_num, self.accel_denom, self.threshold))
554        if class_id & FeedbackClass.String:
555            self.max_symbols = self.data.pop(0)
556            self.num_keysyms = self.data.pop(0)
557            self.keysyms = self.data.pop(0)
558            buf.write(struct.pack("=HH", self.max_symbols, self.num_keysyms))
559            buf.write(xcffib.pack_list(self.keysyms, "I"))
560        if class_id & FeedbackClass.Integer:
561            self.resolution = self.data.pop(0)
562            self.min_value = self.data.pop(0)
563            self.max_value = self.data.pop(0)
564            buf.write(struct.pack("=Iii", self.resolution, self.min_value, self.max_value))
565        if class_id & FeedbackClass.Led:
566            self.led_mask = self.data.pop(0)
567            self.led_values = self.data.pop(0)
568            buf.write(struct.pack("=II", self.led_mask, self.led_values))
569        if class_id & FeedbackClass.Bell:
570            self.percent = self.data.pop(0)
571            self.pitch = self.data.pop(0)
572            self.duration = self.data.pop(0)
573            buf.write(struct.pack("=B3xHH", self.percent, self.pitch, self.duration))
574        return buf.getvalue()
575    @classmethod
576    def synthetic(cls, class_id, feedback_id, len, data):
577        self = cls.__new__(cls)
578        self.class_id = class_id
579        self.feedback_id = feedback_id
580        self.len = len
581        self.data = data
582        return self
583class GetFeedbackControlReply(xcffib.Reply):
584    def __init__(self, unpacker):
585        if isinstance(unpacker, xcffib.Protobj):
586            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
587        xcffib.Reply.__init__(self, unpacker)
588        base = unpacker.offset
589        self.xi_reply_type, self.num_feedbacks = unpacker.unpack("xB2x4xH22x")
590        self.feedbacks = xcffib.List(unpacker, FeedbackState, self.num_feedbacks)
591        self.bufsize = unpacker.offset - base
592class GetFeedbackControlCookie(xcffib.Cookie):
593    reply_type = GetFeedbackControlReply
594class KbdFeedbackCtl(xcffib.Struct):
595    def __init__(self, unpacker):
596        if isinstance(unpacker, xcffib.Protobj):
597            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
598        xcffib.Struct.__init__(self, unpacker)
599        base = unpacker.offset
600        self.class_id, self.feedback_id, self.len, self.key, self.auto_repeat_mode, self.key_click_percent, self.bell_percent, self.bell_pitch, self.bell_duration, self.led_mask, self.led_values = unpacker.unpack("BBHBBbbhhII")
601        self.bufsize = unpacker.offset - base
602    def pack(self):
603        buf = six.BytesIO()
604        buf.write(struct.pack("=BBHBBbbhhII", self.class_id, self.feedback_id, self.len, self.key, self.auto_repeat_mode, self.key_click_percent, self.bell_percent, self.bell_pitch, self.bell_duration, self.led_mask, self.led_values))
605        return buf.getvalue()
606    fixed_size = 20
607    @classmethod
608    def synthetic(cls, class_id, feedback_id, len, key, auto_repeat_mode, key_click_percent, bell_percent, bell_pitch, bell_duration, led_mask, led_values):
609        self = cls.__new__(cls)
610        self.class_id = class_id
611        self.feedback_id = feedback_id
612        self.len = len
613        self.key = key
614        self.auto_repeat_mode = auto_repeat_mode
615        self.key_click_percent = key_click_percent
616        self.bell_percent = bell_percent
617        self.bell_pitch = bell_pitch
618        self.bell_duration = bell_duration
619        self.led_mask = led_mask
620        self.led_values = led_values
621        return self
622class PtrFeedbackCtl(xcffib.Struct):
623    def __init__(self, unpacker):
624        if isinstance(unpacker, xcffib.Protobj):
625            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
626        xcffib.Struct.__init__(self, unpacker)
627        base = unpacker.offset
628        self.class_id, self.feedback_id, self.len, self.num, self.denom, self.threshold = unpacker.unpack("BBH2xhhh")
629        self.bufsize = unpacker.offset - base
630    def pack(self):
631        buf = six.BytesIO()
632        buf.write(struct.pack("=BBH2xhhh", self.class_id, self.feedback_id, self.len, self.num, self.denom, self.threshold))
633        return buf.getvalue()
634    fixed_size = 12
635    @classmethod
636    def synthetic(cls, class_id, feedback_id, len, num, denom, threshold):
637        self = cls.__new__(cls)
638        self.class_id = class_id
639        self.feedback_id = feedback_id
640        self.len = len
641        self.num = num
642        self.denom = denom
643        self.threshold = threshold
644        return self
645class IntegerFeedbackCtl(xcffib.Struct):
646    def __init__(self, unpacker):
647        if isinstance(unpacker, xcffib.Protobj):
648            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
649        xcffib.Struct.__init__(self, unpacker)
650        base = unpacker.offset
651        self.class_id, self.feedback_id, self.len, self.int_to_display = unpacker.unpack("BBHi")
652        self.bufsize = unpacker.offset - base
653    def pack(self):
654        buf = six.BytesIO()
655        buf.write(struct.pack("=BBHi", self.class_id, self.feedback_id, self.len, self.int_to_display))
656        return buf.getvalue()
657    fixed_size = 8
658    @classmethod
659    def synthetic(cls, class_id, feedback_id, len, int_to_display):
660        self = cls.__new__(cls)
661        self.class_id = class_id
662        self.feedback_id = feedback_id
663        self.len = len
664        self.int_to_display = int_to_display
665        return self
666class StringFeedbackCtl(xcffib.Struct):
667    def __init__(self, unpacker):
668        if isinstance(unpacker, xcffib.Protobj):
669            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
670        xcffib.Struct.__init__(self, unpacker)
671        base = unpacker.offset
672        self.class_id, self.feedback_id, self.len, self.num_keysyms = unpacker.unpack("BBH2xH")
673        self.keysyms = xcffib.List(unpacker, "I", self.num_keysyms)
674        self.bufsize = unpacker.offset - base
675    def pack(self):
676        buf = six.BytesIO()
677        buf.write(struct.pack("=BBH2xH", self.class_id, self.feedback_id, self.len, self.num_keysyms))
678        buf.write(xcffib.pack_list(self.keysyms, "I"))
679        return buf.getvalue()
680    @classmethod
681    def synthetic(cls, class_id, feedback_id, len, num_keysyms, keysyms):
682        self = cls.__new__(cls)
683        self.class_id = class_id
684        self.feedback_id = feedback_id
685        self.len = len
686        self.num_keysyms = num_keysyms
687        self.keysyms = keysyms
688        return self
689class BellFeedbackCtl(xcffib.Struct):
690    def __init__(self, unpacker):
691        if isinstance(unpacker, xcffib.Protobj):
692            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
693        xcffib.Struct.__init__(self, unpacker)
694        base = unpacker.offset
695        self.class_id, self.feedback_id, self.len, self.percent, self.pitch, self.duration = unpacker.unpack("BBHb3xhh")
696        self.bufsize = unpacker.offset - base
697    def pack(self):
698        buf = six.BytesIO()
699        buf.write(struct.pack("=BBHb3xhh", self.class_id, self.feedback_id, self.len, self.percent, self.pitch, self.duration))
700        return buf.getvalue()
701    fixed_size = 12
702    @classmethod
703    def synthetic(cls, class_id, feedback_id, len, percent, pitch, duration):
704        self = cls.__new__(cls)
705        self.class_id = class_id
706        self.feedback_id = feedback_id
707        self.len = len
708        self.percent = percent
709        self.pitch = pitch
710        self.duration = duration
711        return self
712class LedFeedbackCtl(xcffib.Struct):
713    def __init__(self, unpacker):
714        if isinstance(unpacker, xcffib.Protobj):
715            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
716        xcffib.Struct.__init__(self, unpacker)
717        base = unpacker.offset
718        self.class_id, self.feedback_id, self.len, self.led_mask, self.led_values = unpacker.unpack("BBHII")
719        self.bufsize = unpacker.offset - base
720    def pack(self):
721        buf = six.BytesIO()
722        buf.write(struct.pack("=BBHII", self.class_id, self.feedback_id, self.len, self.led_mask, self.led_values))
723        return buf.getvalue()
724    fixed_size = 12
725    @classmethod
726    def synthetic(cls, class_id, feedback_id, len, led_mask, led_values):
727        self = cls.__new__(cls)
728        self.class_id = class_id
729        self.feedback_id = feedback_id
730        self.len = len
731        self.led_mask = led_mask
732        self.led_values = led_values
733        return self
734class FeedbackCtl(xcffib.Struct):
735    def __init__(self, unpacker):
736        if isinstance(unpacker, xcffib.Protobj):
737            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
738        xcffib.Struct.__init__(self, unpacker)
739        base = unpacker.offset
740        self.class_id, self.feedback_id, self.len = unpacker.unpack("BBH")
741        if self.class_id == FeedbackClass.Keyboard:
742            self.key, self.auto_repeat_mode, self.key_click_percent, self.bell_percent, self.bell_pitch, self.bell_duration, self.led_mask, self.led_values = unpacker.unpack("BBbbhhII")
743        if self.class_id == FeedbackClass.Pointer:
744            self.num, self.denom, self.threshold = unpacker.unpack("2xhhh")
745        if self.class_id == FeedbackClass.String:
746            self.num_keysyms, = unpacker.unpack("2xH")
747            self.keysyms = xcffib.List(unpacker, "I", self.num_keysyms)
748        if self.class_id == FeedbackClass.Integer:
749            self.int_to_display, = unpacker.unpack("i")
750        if self.class_id == FeedbackClass.Led:
751            self.led_mask, self.led_values = unpacker.unpack("II")
752        if self.class_id == FeedbackClass.Bell:
753            self.percent, self.pitch, self.duration = unpacker.unpack("b3xhh")
754        self.bufsize = unpacker.offset - base
755    def pack(self):
756        buf = six.BytesIO()
757        buf.write(struct.pack("=BBH", self.class_id, self.feedback_id, self.len))
758        if class_id & FeedbackClass.Keyboard:
759            self.key = self.data.pop(0)
760            self.auto_repeat_mode = self.data.pop(0)
761            self.key_click_percent = self.data.pop(0)
762            self.bell_percent = self.data.pop(0)
763            self.bell_pitch = self.data.pop(0)
764            self.bell_duration = self.data.pop(0)
765            self.led_mask = self.data.pop(0)
766            self.led_values = self.data.pop(0)
767            buf.write(struct.pack("=BBbbhhII", self.key, self.auto_repeat_mode, self.key_click_percent, self.bell_percent, self.bell_pitch, self.bell_duration, self.led_mask, self.led_values))
768        if class_id & FeedbackClass.Pointer:
769            self.num = self.data.pop(0)
770            self.denom = self.data.pop(0)
771            self.threshold = self.data.pop(0)
772            buf.write(struct.pack("=2xhhh", self.num, self.denom, self.threshold))
773        if class_id & FeedbackClass.String:
774            self.num_keysyms = self.data.pop(0)
775            self.keysyms = self.data.pop(0)
776            buf.write(struct.pack("=2xH", self.num_keysyms))
777            buf.write(xcffib.pack_list(self.keysyms, "I"))
778        if class_id & FeedbackClass.Integer:
779            self.int_to_display = self.data.pop(0)
780            buf.write(struct.pack("=i", self.int_to_display))
781        if class_id & FeedbackClass.Led:
782            self.led_mask = self.data.pop(0)
783            self.led_values = self.data.pop(0)
784            buf.write(struct.pack("=II", self.led_mask, self.led_values))
785        if class_id & FeedbackClass.Bell:
786            self.percent = self.data.pop(0)
787            self.pitch = self.data.pop(0)
788            self.duration = self.data.pop(0)
789            buf.write(struct.pack("=b3xhh", self.percent, self.pitch, self.duration))
790        return buf.getvalue()
791    @classmethod
792    def synthetic(cls, class_id, feedback_id, len, data):
793        self = cls.__new__(cls)
794        self.class_id = class_id
795        self.feedback_id = feedback_id
796        self.len = len
797        self.data = data
798        return self
799class ChangeFeedbackControlMask:
800    KeyClickPercent = 1 << 0
801    Percent = 1 << 1
802    Pitch = 1 << 2
803    Duration = 1 << 3
804    Led = 1 << 4
805    LedMode = 1 << 5
806    Key = 1 << 6
807    AutoRepeatMode = 1 << 7
808    String = 1 << 0
809    Integer = 1 << 0
810    AccelNum = 1 << 0
811    AccelDenom = 1 << 1
812    Threshold = 1 << 2
813class GetDeviceKeyMappingReply(xcffib.Reply):
814    def __init__(self, unpacker):
815        if isinstance(unpacker, xcffib.Protobj):
816            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
817        xcffib.Reply.__init__(self, unpacker)
818        base = unpacker.offset
819        self.xi_reply_type, self.keysyms_per_keycode = unpacker.unpack("xB2x4xB23x")
820        self.keysyms = xcffib.List(unpacker, "I", self.length)
821        self.bufsize = unpacker.offset - base
822class GetDeviceKeyMappingCookie(xcffib.Cookie):
823    reply_type = GetDeviceKeyMappingReply
824class GetDeviceModifierMappingReply(xcffib.Reply):
825    def __init__(self, unpacker):
826        if isinstance(unpacker, xcffib.Protobj):
827            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
828        xcffib.Reply.__init__(self, unpacker)
829        base = unpacker.offset
830        self.xi_reply_type, self.keycodes_per_modifier = unpacker.unpack("xB2x4xB23x")
831        self.keymaps = xcffib.List(unpacker, "B", self.keycodes_per_modifier * 8)
832        self.bufsize = unpacker.offset - base
833class GetDeviceModifierMappingCookie(xcffib.Cookie):
834    reply_type = GetDeviceModifierMappingReply
835class SetDeviceModifierMappingReply(xcffib.Reply):
836    def __init__(self, unpacker):
837        if isinstance(unpacker, xcffib.Protobj):
838            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
839        xcffib.Reply.__init__(self, unpacker)
840        base = unpacker.offset
841        self.xi_reply_type, self.status = unpacker.unpack("xB2x4xB23x")
842        self.bufsize = unpacker.offset - base
843class SetDeviceModifierMappingCookie(xcffib.Cookie):
844    reply_type = SetDeviceModifierMappingReply
845class SetDeviceButtonMappingReply(xcffib.Reply):
846    def __init__(self, unpacker):
847        if isinstance(unpacker, xcffib.Protobj):
848            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
849        xcffib.Reply.__init__(self, unpacker)
850        base = unpacker.offset
851        self.xi_reply_type, self.status = unpacker.unpack("xB2x4xB23x")
852        self.bufsize = unpacker.offset - base
853class SetDeviceButtonMappingCookie(xcffib.Cookie):
854    reply_type = SetDeviceButtonMappingReply
855class KeyState(xcffib.Struct):
856    def __init__(self, unpacker):
857        if isinstance(unpacker, xcffib.Protobj):
858            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
859        xcffib.Struct.__init__(self, unpacker)
860        base = unpacker.offset
861        self.class_id, self.len, self.num_keys = unpacker.unpack("BBBx")
862        self.keys = xcffib.List(unpacker, "B", 32)
863        self.bufsize = unpacker.offset - base
864    def pack(self):
865        buf = six.BytesIO()
866        buf.write(struct.pack("=BBBx", self.class_id, self.len, self.num_keys))
867        buf.write(xcffib.pack_list(self.keys, "B"))
868        return buf.getvalue()
869    fixed_size = 36
870    @classmethod
871    def synthetic(cls, class_id, len, num_keys, keys):
872        self = cls.__new__(cls)
873        self.class_id = class_id
874        self.len = len
875        self.num_keys = num_keys
876        self.keys = keys
877        return self
878class ButtonState(xcffib.Struct):
879    def __init__(self, unpacker):
880        if isinstance(unpacker, xcffib.Protobj):
881            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
882        xcffib.Struct.__init__(self, unpacker)
883        base = unpacker.offset
884        self.class_id, self.len, self.num_buttons = unpacker.unpack("BBBx")
885        self.buttons = xcffib.List(unpacker, "B", 32)
886        self.bufsize = unpacker.offset - base
887    def pack(self):
888        buf = six.BytesIO()
889        buf.write(struct.pack("=BBBx", self.class_id, self.len, self.num_buttons))
890        buf.write(xcffib.pack_list(self.buttons, "B"))
891        return buf.getvalue()
892    fixed_size = 36
893    @classmethod
894    def synthetic(cls, class_id, len, num_buttons, buttons):
895        self = cls.__new__(cls)
896        self.class_id = class_id
897        self.len = len
898        self.num_buttons = num_buttons
899        self.buttons = buttons
900        return self
901class ValuatorStateModeMask:
902    DeviceModeAbsolute = 1 << 0
903    OutOfProximity = 1 << 1
904class ValuatorState(xcffib.Struct):
905    def __init__(self, unpacker):
906        if isinstance(unpacker, xcffib.Protobj):
907            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
908        xcffib.Struct.__init__(self, unpacker)
909        base = unpacker.offset
910        self.class_id, self.len, self.num_valuators, self.mode = unpacker.unpack("BBBB")
911        self.valuators = xcffib.List(unpacker, "i", self.num_valuators)
912        self.bufsize = unpacker.offset - base
913    def pack(self):
914        buf = six.BytesIO()
915        buf.write(struct.pack("=BBBB", self.class_id, self.len, self.num_valuators, self.mode))
916        buf.write(xcffib.pack_list(self.valuators, "i"))
917        return buf.getvalue()
918    @classmethod
919    def synthetic(cls, class_id, len, num_valuators, mode, valuators):
920        self = cls.__new__(cls)
921        self.class_id = class_id
922        self.len = len
923        self.num_valuators = num_valuators
924        self.mode = mode
925        self.valuators = valuators
926        return self
927class InputState(xcffib.Struct):
928    def __init__(self, unpacker):
929        if isinstance(unpacker, xcffib.Protobj):
930            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
931        xcffib.Struct.__init__(self, unpacker)
932        base = unpacker.offset
933        self.class_id, self.len = unpacker.unpack("BB")
934        if self.class_id == InputClass.Key:
935            self.num_keys, = unpacker.unpack("Bx")
936            self.keys = xcffib.List(unpacker, "B", 32)
937        if self.class_id == InputClass.Button:
938            self.num_buttons, = unpacker.unpack("Bx")
939            self.buttons = xcffib.List(unpacker, "B", 32)
940        if self.class_id == InputClass.Valuator:
941            self.num_valuators, self.mode = unpacker.unpack("BB")
942            self.valuators = xcffib.List(unpacker, "i", self.num_valuators)
943        self.bufsize = unpacker.offset - base
944    def pack(self):
945        buf = six.BytesIO()
946        buf.write(struct.pack("=BB", self.class_id, self.len))
947        if class_id & InputClass.Key:
948            self.num_keys = self.data.pop(0)
949            self.keys = self.data.pop(0)
950            buf.write(struct.pack("=Bx", self.num_keys))
951            buf.write(xcffib.pack_list(self.keys, "B"))
952        if class_id & InputClass.Button:
953            self.num_buttons = self.data.pop(0)
954            self.buttons = self.data.pop(0)
955            buf.write(struct.pack("=Bx", self.num_buttons))
956            buf.write(xcffib.pack_list(self.buttons, "B"))
957        if class_id & InputClass.Valuator:
958            self.num_valuators = self.data.pop(0)
959            self.mode = self.data.pop(0)
960            self.valuators = self.data.pop(0)
961            buf.write(struct.pack("=BB", self.num_valuators, self.mode))
962            buf.write(xcffib.pack_list(self.valuators, "i"))
963        return buf.getvalue()
964    @classmethod
965    def synthetic(cls, class_id, len, data):
966        self = cls.__new__(cls)
967        self.class_id = class_id
968        self.len = len
969        self.data = data
970        return self
971class QueryDeviceStateReply(xcffib.Reply):
972    def __init__(self, unpacker):
973        if isinstance(unpacker, xcffib.Protobj):
974            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
975        xcffib.Reply.__init__(self, unpacker)
976        base = unpacker.offset
977        self.xi_reply_type, self.num_classes = unpacker.unpack("xB2x4xB23x")
978        self.classes = xcffib.List(unpacker, InputState, self.num_classes)
979        self.bufsize = unpacker.offset - base
980class QueryDeviceStateCookie(xcffib.Cookie):
981    reply_type = QueryDeviceStateReply
982class SetDeviceValuatorsReply(xcffib.Reply):
983    def __init__(self, unpacker):
984        if isinstance(unpacker, xcffib.Protobj):
985            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
986        xcffib.Reply.__init__(self, unpacker)
987        base = unpacker.offset
988        self.xi_reply_type, self.status = unpacker.unpack("xB2x4xB23x")
989        self.bufsize = unpacker.offset - base
990class SetDeviceValuatorsCookie(xcffib.Cookie):
991    reply_type = SetDeviceValuatorsReply
992class DeviceControl:
993    resolution = 1
994    abs_calib = 2
995    core = 3
996    enable = 4
997    abs_area = 5
998class DeviceResolutionState(xcffib.Struct):
999    def __init__(self, unpacker):
1000        if isinstance(unpacker, xcffib.Protobj):
1001            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1002        xcffib.Struct.__init__(self, unpacker)
1003        base = unpacker.offset
1004        self.control_id, self.len, self.num_valuators = unpacker.unpack("HHI")
1005        self.resolution_values = xcffib.List(unpacker, "I", self.num_valuators)
1006        unpacker.pad("I")
1007        self.resolution_min = xcffib.List(unpacker, "I", self.num_valuators)
1008        unpacker.pad("I")
1009        self.resolution_max = xcffib.List(unpacker, "I", self.num_valuators)
1010        self.bufsize = unpacker.offset - base
1011    def pack(self):
1012        buf = six.BytesIO()
1013        buf.write(struct.pack("=HHI", self.control_id, self.len, self.num_valuators))
1014        buf.write(xcffib.pack_list(self.resolution_values, "I"))
1015        buf.write(xcffib.pack_list(self.resolution_min, "I"))
1016        buf.write(xcffib.pack_list(self.resolution_max, "I"))
1017        return buf.getvalue()
1018    @classmethod
1019    def synthetic(cls, control_id, len, num_valuators, resolution_values, resolution_min, resolution_max):
1020        self = cls.__new__(cls)
1021        self.control_id = control_id
1022        self.len = len
1023        self.num_valuators = num_valuators
1024        self.resolution_values = resolution_values
1025        self.resolution_min = resolution_min
1026        self.resolution_max = resolution_max
1027        return self
1028class DeviceAbsCalibState(xcffib.Struct):
1029    def __init__(self, unpacker):
1030        if isinstance(unpacker, xcffib.Protobj):
1031            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1032        xcffib.Struct.__init__(self, unpacker)
1033        base = unpacker.offset
1034        self.control_id, self.len, self.min_x, self.max_x, self.min_y, self.max_y, self.flip_x, self.flip_y, self.rotation, self.button_threshold = unpacker.unpack("HHiiiiIIII")
1035        self.bufsize = unpacker.offset - base
1036    def pack(self):
1037        buf = six.BytesIO()
1038        buf.write(struct.pack("=HHiiiiIIII", self.control_id, self.len, self.min_x, self.max_x, self.min_y, self.max_y, self.flip_x, self.flip_y, self.rotation, self.button_threshold))
1039        return buf.getvalue()
1040    fixed_size = 36
1041    @classmethod
1042    def synthetic(cls, control_id, len, min_x, max_x, min_y, max_y, flip_x, flip_y, rotation, button_threshold):
1043        self = cls.__new__(cls)
1044        self.control_id = control_id
1045        self.len = len
1046        self.min_x = min_x
1047        self.max_x = max_x
1048        self.min_y = min_y
1049        self.max_y = max_y
1050        self.flip_x = flip_x
1051        self.flip_y = flip_y
1052        self.rotation = rotation
1053        self.button_threshold = button_threshold
1054        return self
1055class DeviceAbsAreaState(xcffib.Struct):
1056    def __init__(self, unpacker):
1057        if isinstance(unpacker, xcffib.Protobj):
1058            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1059        xcffib.Struct.__init__(self, unpacker)
1060        base = unpacker.offset
1061        self.control_id, self.len, self.offset_x, self.offset_y, self.width, self.height, self.screen, self.following = unpacker.unpack("HHIIIIII")
1062        self.bufsize = unpacker.offset - base
1063    def pack(self):
1064        buf = six.BytesIO()
1065        buf.write(struct.pack("=HHIIIIII", self.control_id, self.len, self.offset_x, self.offset_y, self.width, self.height, self.screen, self.following))
1066        return buf.getvalue()
1067    fixed_size = 28
1068    @classmethod
1069    def synthetic(cls, control_id, len, offset_x, offset_y, width, height, screen, following):
1070        self = cls.__new__(cls)
1071        self.control_id = control_id
1072        self.len = len
1073        self.offset_x = offset_x
1074        self.offset_y = offset_y
1075        self.width = width
1076        self.height = height
1077        self.screen = screen
1078        self.following = following
1079        return self
1080class DeviceCoreState(xcffib.Struct):
1081    def __init__(self, unpacker):
1082        if isinstance(unpacker, xcffib.Protobj):
1083            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1084        xcffib.Struct.__init__(self, unpacker)
1085        base = unpacker.offset
1086        self.control_id, self.len, self.status, self.iscore = unpacker.unpack("HHBB2x")
1087        self.bufsize = unpacker.offset - base
1088    def pack(self):
1089        buf = six.BytesIO()
1090        buf.write(struct.pack("=HHBB2x", self.control_id, self.len, self.status, self.iscore))
1091        return buf.getvalue()
1092    fixed_size = 8
1093    @classmethod
1094    def synthetic(cls, control_id, len, status, iscore):
1095        self = cls.__new__(cls)
1096        self.control_id = control_id
1097        self.len = len
1098        self.status = status
1099        self.iscore = iscore
1100        return self
1101class DeviceEnableState(xcffib.Struct):
1102    def __init__(self, unpacker):
1103        if isinstance(unpacker, xcffib.Protobj):
1104            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1105        xcffib.Struct.__init__(self, unpacker)
1106        base = unpacker.offset
1107        self.control_id, self.len, self.enable = unpacker.unpack("HHB3x")
1108        self.bufsize = unpacker.offset - base
1109    def pack(self):
1110        buf = six.BytesIO()
1111        buf.write(struct.pack("=HHB3x", self.control_id, self.len, self.enable))
1112        return buf.getvalue()
1113    fixed_size = 8
1114    @classmethod
1115    def synthetic(cls, control_id, len, enable):
1116        self = cls.__new__(cls)
1117        self.control_id = control_id
1118        self.len = len
1119        self.enable = enable
1120        return self
1121class DeviceState(xcffib.Struct):
1122    def __init__(self, unpacker):
1123        if isinstance(unpacker, xcffib.Protobj):
1124            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1125        xcffib.Struct.__init__(self, unpacker)
1126        base = unpacker.offset
1127        self.control_id, self.len = unpacker.unpack("HH")
1128        if self.control_id == DeviceControl.resolution:
1129            self.num_valuators, = unpacker.unpack("I")
1130            self.resolution_values = xcffib.List(unpacker, "I", self.num_valuators)
1131            unpacker.pad("I")
1132            self.resolution_min = xcffib.List(unpacker, "I", self.num_valuators)
1133            unpacker.pad("I")
1134            self.resolution_max = xcffib.List(unpacker, "I", self.num_valuators)
1135        if self.control_id == DeviceControl.abs_calib:
1136            self.min_x, self.max_x, self.min_y, self.max_y, self.flip_x, self.flip_y, self.rotation, self.button_threshold = unpacker.unpack("iiiiIIII")
1137        if self.control_id == DeviceControl.core:
1138            self.status, self.iscore = unpacker.unpack("BB2x")
1139        if self.control_id == DeviceControl.enable:
1140            self.enable, = unpacker.unpack("B3x")
1141        if self.control_id == DeviceControl.abs_area:
1142            self.offset_x, self.offset_y, self.width, self.height, self.screen, self.following = unpacker.unpack("IIIIII")
1143        self.bufsize = unpacker.offset - base
1144    def pack(self):
1145        buf = six.BytesIO()
1146        buf.write(struct.pack("=HH", self.control_id, self.len))
1147        if control_id & DeviceControl.resolution:
1148            self.num_valuators = self.data.pop(0)
1149            self.resolution_values = self.data.pop(0)
1150            self.resolution_min = self.data.pop(0)
1151            self.resolution_max = self.data.pop(0)
1152            buf.write(struct.pack("=I", self.num_valuators))
1153            buf.write(xcffib.pack_list(self.resolution_values, "I"))
1154            buf.write(xcffib.pack_list(self.resolution_min, "I"))
1155            buf.write(xcffib.pack_list(self.resolution_max, "I"))
1156        if control_id & DeviceControl.abs_calib:
1157            self.min_x = self.data.pop(0)
1158            self.max_x = self.data.pop(0)
1159            self.min_y = self.data.pop(0)
1160            self.max_y = self.data.pop(0)
1161            self.flip_x = self.data.pop(0)
1162            self.flip_y = self.data.pop(0)
1163            self.rotation = self.data.pop(0)
1164            self.button_threshold = self.data.pop(0)
1165            buf.write(struct.pack("=iiiiIIII", self.min_x, self.max_x, self.min_y, self.max_y, self.flip_x, self.flip_y, self.rotation, self.button_threshold))
1166        if control_id & DeviceControl.core:
1167            self.status = self.data.pop(0)
1168            self.iscore = self.data.pop(0)
1169            buf.write(struct.pack("=BB2x", self.status, self.iscore))
1170        if control_id & DeviceControl.enable:
1171            self.enable = self.data.pop(0)
1172            buf.write(struct.pack("=B3x", self.enable))
1173        if control_id & DeviceControl.abs_area:
1174            self.offset_x = self.data.pop(0)
1175            self.offset_y = self.data.pop(0)
1176            self.width = self.data.pop(0)
1177            self.height = self.data.pop(0)
1178            self.screen = self.data.pop(0)
1179            self.following = self.data.pop(0)
1180            buf.write(struct.pack("=IIIIII", self.offset_x, self.offset_y, self.width, self.height, self.screen, self.following))
1181        return buf.getvalue()
1182    @classmethod
1183    def synthetic(cls, control_id, len, data):
1184        self = cls.__new__(cls)
1185        self.control_id = control_id
1186        self.len = len
1187        self.data = data
1188        return self
1189class GetDeviceControlReply(xcffib.Reply):
1190    def __init__(self, unpacker):
1191        if isinstance(unpacker, xcffib.Protobj):
1192            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1193        xcffib.Reply.__init__(self, unpacker)
1194        base = unpacker.offset
1195        self.xi_reply_type, self.status = unpacker.unpack("xB2x4xB23x")
1196        self.control = DeviceState(unpacker)
1197        self.bufsize = unpacker.offset - base
1198class GetDeviceControlCookie(xcffib.Cookie):
1199    reply_type = GetDeviceControlReply
1200class DeviceResolutionCtl(xcffib.Struct):
1201    def __init__(self, unpacker):
1202        if isinstance(unpacker, xcffib.Protobj):
1203            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1204        xcffib.Struct.__init__(self, unpacker)
1205        base = unpacker.offset
1206        self.control_id, self.len, self.first_valuator, self.num_valuators = unpacker.unpack("HHBB2x")
1207        self.resolution_values = xcffib.List(unpacker, "I", self.num_valuators)
1208        self.bufsize = unpacker.offset - base
1209    def pack(self):
1210        buf = six.BytesIO()
1211        buf.write(struct.pack("=HHBB2x", self.control_id, self.len, self.first_valuator, self.num_valuators))
1212        buf.write(xcffib.pack_list(self.resolution_values, "I"))
1213        return buf.getvalue()
1214    @classmethod
1215    def synthetic(cls, control_id, len, first_valuator, num_valuators, resolution_values):
1216        self = cls.__new__(cls)
1217        self.control_id = control_id
1218        self.len = len
1219        self.first_valuator = first_valuator
1220        self.num_valuators = num_valuators
1221        self.resolution_values = resolution_values
1222        return self
1223class DeviceAbsCalibCtl(xcffib.Struct):
1224    def __init__(self, unpacker):
1225        if isinstance(unpacker, xcffib.Protobj):
1226            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1227        xcffib.Struct.__init__(self, unpacker)
1228        base = unpacker.offset
1229        self.control_id, self.len, self.min_x, self.max_x, self.min_y, self.max_y, self.flip_x, self.flip_y, self.rotation, self.button_threshold = unpacker.unpack("HHiiiiIIII")
1230        self.bufsize = unpacker.offset - base
1231    def pack(self):
1232        buf = six.BytesIO()
1233        buf.write(struct.pack("=HHiiiiIIII", self.control_id, self.len, self.min_x, self.max_x, self.min_y, self.max_y, self.flip_x, self.flip_y, self.rotation, self.button_threshold))
1234        return buf.getvalue()
1235    fixed_size = 36
1236    @classmethod
1237    def synthetic(cls, control_id, len, min_x, max_x, min_y, max_y, flip_x, flip_y, rotation, button_threshold):
1238        self = cls.__new__(cls)
1239        self.control_id = control_id
1240        self.len = len
1241        self.min_x = min_x
1242        self.max_x = max_x
1243        self.min_y = min_y
1244        self.max_y = max_y
1245        self.flip_x = flip_x
1246        self.flip_y = flip_y
1247        self.rotation = rotation
1248        self.button_threshold = button_threshold
1249        return self
1250class DeviceAbsAreaCtrl(xcffib.Struct):
1251    def __init__(self, unpacker):
1252        if isinstance(unpacker, xcffib.Protobj):
1253            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1254        xcffib.Struct.__init__(self, unpacker)
1255        base = unpacker.offset
1256        self.control_id, self.len, self.offset_x, self.offset_y, self.width, self.height, self.screen, self.following = unpacker.unpack("HHIIiiiI")
1257        self.bufsize = unpacker.offset - base
1258    def pack(self):
1259        buf = six.BytesIO()
1260        buf.write(struct.pack("=HHIIiiiI", self.control_id, self.len, self.offset_x, self.offset_y, self.width, self.height, self.screen, self.following))
1261        return buf.getvalue()
1262    fixed_size = 28
1263    @classmethod
1264    def synthetic(cls, control_id, len, offset_x, offset_y, width, height, screen, following):
1265        self = cls.__new__(cls)
1266        self.control_id = control_id
1267        self.len = len
1268        self.offset_x = offset_x
1269        self.offset_y = offset_y
1270        self.width = width
1271        self.height = height
1272        self.screen = screen
1273        self.following = following
1274        return self
1275class DeviceCoreCtrl(xcffib.Struct):
1276    def __init__(self, unpacker):
1277        if isinstance(unpacker, xcffib.Protobj):
1278            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1279        xcffib.Struct.__init__(self, unpacker)
1280        base = unpacker.offset
1281        self.control_id, self.len, self.status = unpacker.unpack("HHB3x")
1282        self.bufsize = unpacker.offset - base
1283    def pack(self):
1284        buf = six.BytesIO()
1285        buf.write(struct.pack("=HHB3x", self.control_id, self.len, self.status))
1286        return buf.getvalue()
1287    fixed_size = 8
1288    @classmethod
1289    def synthetic(cls, control_id, len, status):
1290        self = cls.__new__(cls)
1291        self.control_id = control_id
1292        self.len = len
1293        self.status = status
1294        return self
1295class DeviceEnableCtrl(xcffib.Struct):
1296    def __init__(self, unpacker):
1297        if isinstance(unpacker, xcffib.Protobj):
1298            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1299        xcffib.Struct.__init__(self, unpacker)
1300        base = unpacker.offset
1301        self.control_id, self.len, self.enable = unpacker.unpack("HHB3x")
1302        self.bufsize = unpacker.offset - base
1303    def pack(self):
1304        buf = six.BytesIO()
1305        buf.write(struct.pack("=HHB3x", self.control_id, self.len, self.enable))
1306        return buf.getvalue()
1307    fixed_size = 8
1308    @classmethod
1309    def synthetic(cls, control_id, len, enable):
1310        self = cls.__new__(cls)
1311        self.control_id = control_id
1312        self.len = len
1313        self.enable = enable
1314        return self
1315class DeviceCtl(xcffib.Struct):
1316    def __init__(self, unpacker):
1317        if isinstance(unpacker, xcffib.Protobj):
1318            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1319        xcffib.Struct.__init__(self, unpacker)
1320        base = unpacker.offset
1321        self.control_id, self.len = unpacker.unpack("HH")
1322        if self.control_id == DeviceControl.resolution:
1323            self.first_valuator, self.num_valuators = unpacker.unpack("BB2x")
1324            self.resolution_values = xcffib.List(unpacker, "I", self.num_valuators)
1325        if self.control_id == DeviceControl.abs_calib:
1326            self.min_x, self.max_x, self.min_y, self.max_y, self.flip_x, self.flip_y, self.rotation, self.button_threshold = unpacker.unpack("iiiiIIII")
1327        if self.control_id == DeviceControl.core:
1328            self.status, = unpacker.unpack("B3x")
1329        if self.control_id == DeviceControl.enable:
1330            self.enable, = unpacker.unpack("B3x")
1331        if self.control_id == DeviceControl.abs_area:
1332            self.offset_x, self.offset_y, self.width, self.height, self.screen, self.following = unpacker.unpack("IIiiiI")
1333        self.bufsize = unpacker.offset - base
1334    def pack(self):
1335        buf = six.BytesIO()
1336        buf.write(struct.pack("=HH", self.control_id, self.len))
1337        if control_id & DeviceControl.resolution:
1338            self.first_valuator = self.data.pop(0)
1339            self.num_valuators = self.data.pop(0)
1340            self.resolution_values = self.data.pop(0)
1341            buf.write(struct.pack("=BB2x", self.first_valuator, self.num_valuators))
1342            buf.write(xcffib.pack_list(self.resolution_values, "I"))
1343        if control_id & DeviceControl.abs_calib:
1344            self.min_x = self.data.pop(0)
1345            self.max_x = self.data.pop(0)
1346            self.min_y = self.data.pop(0)
1347            self.max_y = self.data.pop(0)
1348            self.flip_x = self.data.pop(0)
1349            self.flip_y = self.data.pop(0)
1350            self.rotation = self.data.pop(0)
1351            self.button_threshold = self.data.pop(0)
1352            buf.write(struct.pack("=iiiiIIII", self.min_x, self.max_x, self.min_y, self.max_y, self.flip_x, self.flip_y, self.rotation, self.button_threshold))
1353        if control_id & DeviceControl.core:
1354            self.status = self.data.pop(0)
1355            buf.write(struct.pack("=B3x", self.status))
1356        if control_id & DeviceControl.enable:
1357            self.enable = self.data.pop(0)
1358            buf.write(struct.pack("=B3x", self.enable))
1359        if control_id & DeviceControl.abs_area:
1360            self.offset_x = self.data.pop(0)
1361            self.offset_y = self.data.pop(0)
1362            self.width = self.data.pop(0)
1363            self.height = self.data.pop(0)
1364            self.screen = self.data.pop(0)
1365            self.following = self.data.pop(0)
1366            buf.write(struct.pack("=IIiiiI", self.offset_x, self.offset_y, self.width, self.height, self.screen, self.following))
1367        return buf.getvalue()
1368    @classmethod
1369    def synthetic(cls, control_id, len, data):
1370        self = cls.__new__(cls)
1371        self.control_id = control_id
1372        self.len = len
1373        self.data = data
1374        return self
1375class ChangeDeviceControlReply(xcffib.Reply):
1376    def __init__(self, unpacker):
1377        if isinstance(unpacker, xcffib.Protobj):
1378            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1379        xcffib.Reply.__init__(self, unpacker)
1380        base = unpacker.offset
1381        self.xi_reply_type, self.status = unpacker.unpack("xB2x4xB23x")
1382        self.bufsize = unpacker.offset - base
1383class ChangeDeviceControlCookie(xcffib.Cookie):
1384    reply_type = ChangeDeviceControlReply
1385class ListDevicePropertiesReply(xcffib.Reply):
1386    def __init__(self, unpacker):
1387        if isinstance(unpacker, xcffib.Protobj):
1388            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1389        xcffib.Reply.__init__(self, unpacker)
1390        base = unpacker.offset
1391        self.xi_reply_type, self.num_atoms = unpacker.unpack("xB2x4xH22x")
1392        self.atoms = xcffib.List(unpacker, "I", self.num_atoms)
1393        self.bufsize = unpacker.offset - base
1394class ListDevicePropertiesCookie(xcffib.Cookie):
1395    reply_type = ListDevicePropertiesReply
1396class PropertyFormat:
1397    _8Bits = 8
1398    _16Bits = 16
1399    _32Bits = 32
1400class Device:
1401    All = 0
1402    AllMaster = 1
1403class GroupInfo(xcffib.Struct):
1404    def __init__(self, unpacker):
1405        if isinstance(unpacker, xcffib.Protobj):
1406            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1407        xcffib.Struct.__init__(self, unpacker)
1408        base = unpacker.offset
1409        self.base, self.latched, self.locked, self.effective = unpacker.unpack("BBBB")
1410        self.bufsize = unpacker.offset - base
1411    def pack(self):
1412        buf = six.BytesIO()
1413        buf.write(struct.pack("=BBBB", self.base, self.latched, self.locked, self.effective))
1414        return buf.getvalue()
1415    fixed_size = 4
1416    @classmethod
1417    def synthetic(cls, base, latched, locked, effective):
1418        self = cls.__new__(cls)
1419        self.base = base
1420        self.latched = latched
1421        self.locked = locked
1422        self.effective = effective
1423        return self
1424class ModifierInfo(xcffib.Struct):
1425    def __init__(self, unpacker):
1426        if isinstance(unpacker, xcffib.Protobj):
1427            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1428        xcffib.Struct.__init__(self, unpacker)
1429        base = unpacker.offset
1430        self.base, self.latched, self.locked, self.effective = unpacker.unpack("IIII")
1431        self.bufsize = unpacker.offset - base
1432    def pack(self):
1433        buf = six.BytesIO()
1434        buf.write(struct.pack("=IIII", self.base, self.latched, self.locked, self.effective))
1435        return buf.getvalue()
1436    fixed_size = 16
1437    @classmethod
1438    def synthetic(cls, base, latched, locked, effective):
1439        self = cls.__new__(cls)
1440        self.base = base
1441        self.latched = latched
1442        self.locked = locked
1443        self.effective = effective
1444        return self
1445class XIQueryPointerReply(xcffib.Reply):
1446    def __init__(self, unpacker):
1447        if isinstance(unpacker, xcffib.Protobj):
1448            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1449        xcffib.Reply.__init__(self, unpacker)
1450        base = unpacker.offset
1451        self.root, self.child, self.root_x, self.root_y, self.win_x, self.win_y, self.same_screen, self.buttons_len = unpacker.unpack("xx2x4xIIiiiiBxH")
1452        self.mods = ModifierInfo(unpacker)
1453        unpacker.pad(GroupInfo)
1454        self.group = GroupInfo(unpacker)
1455        unpacker.pad("I")
1456        self.buttons = xcffib.List(unpacker, "I", self.buttons_len)
1457        self.bufsize = unpacker.offset - base
1458class XIQueryPointerCookie(xcffib.Cookie):
1459    reply_type = XIQueryPointerReply
1460class HierarchyChangeType:
1461    AddMaster = 1
1462    RemoveMaster = 2
1463    AttachSlave = 3
1464    DetachSlave = 4
1465class ChangeMode:
1466    Attach = 1
1467    Float = 2
1468class AddMaster(xcffib.Struct):
1469    def __init__(self, unpacker):
1470        if isinstance(unpacker, xcffib.Protobj):
1471            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1472        xcffib.Struct.__init__(self, unpacker)
1473        base = unpacker.offset
1474        self.type, self.len, self.name_len, self.send_core, self.enable = unpacker.unpack("HHHBB")
1475        self.name = xcffib.List(unpacker, "c", self.name_len)
1476        self.bufsize = unpacker.offset - base
1477    def pack(self):
1478        buf = six.BytesIO()
1479        buf.write(struct.pack("=HHHBB", self.type, self.len, self.name_len, self.send_core, self.enable))
1480        buf.write(xcffib.pack_list(self.name, "c"))
1481        return buf.getvalue()
1482    @classmethod
1483    def synthetic(cls, type, len, name_len, send_core, enable, name):
1484        self = cls.__new__(cls)
1485        self.type = type
1486        self.len = len
1487        self.name_len = name_len
1488        self.send_core = send_core
1489        self.enable = enable
1490        self.name = name
1491        return self
1492class RemoveMaster(xcffib.Struct):
1493    def __init__(self, unpacker):
1494        if isinstance(unpacker, xcffib.Protobj):
1495            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1496        xcffib.Struct.__init__(self, unpacker)
1497        base = unpacker.offset
1498        self.type, self.len, self.deviceid, self.return_mode, self.return_pointer, self.return_keyboard = unpacker.unpack("HHHBxHH")
1499        self.bufsize = unpacker.offset - base
1500    def pack(self):
1501        buf = six.BytesIO()
1502        buf.write(struct.pack("=HHHBxHH", self.type, self.len, self.deviceid, self.return_mode, self.return_pointer, self.return_keyboard))
1503        return buf.getvalue()
1504    fixed_size = 12
1505    @classmethod
1506    def synthetic(cls, type, len, deviceid, return_mode, return_pointer, return_keyboard):
1507        self = cls.__new__(cls)
1508        self.type = type
1509        self.len = len
1510        self.deviceid = deviceid
1511        self.return_mode = return_mode
1512        self.return_pointer = return_pointer
1513        self.return_keyboard = return_keyboard
1514        return self
1515class AttachSlave(xcffib.Struct):
1516    def __init__(self, unpacker):
1517        if isinstance(unpacker, xcffib.Protobj):
1518            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1519        xcffib.Struct.__init__(self, unpacker)
1520        base = unpacker.offset
1521        self.type, self.len, self.deviceid, self.master = unpacker.unpack("HHHH")
1522        self.bufsize = unpacker.offset - base
1523    def pack(self):
1524        buf = six.BytesIO()
1525        buf.write(struct.pack("=HHHH", self.type, self.len, self.deviceid, self.master))
1526        return buf.getvalue()
1527    fixed_size = 8
1528    @classmethod
1529    def synthetic(cls, type, len, deviceid, master):
1530        self = cls.__new__(cls)
1531        self.type = type
1532        self.len = len
1533        self.deviceid = deviceid
1534        self.master = master
1535        return self
1536class DetachSlave(xcffib.Struct):
1537    def __init__(self, unpacker):
1538        if isinstance(unpacker, xcffib.Protobj):
1539            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1540        xcffib.Struct.__init__(self, unpacker)
1541        base = unpacker.offset
1542        self.type, self.len, self.deviceid = unpacker.unpack("HHH2x")
1543        self.bufsize = unpacker.offset - base
1544    def pack(self):
1545        buf = six.BytesIO()
1546        buf.write(struct.pack("=HHH2x", self.type, self.len, self.deviceid))
1547        return buf.getvalue()
1548    fixed_size = 8
1549    @classmethod
1550    def synthetic(cls, type, len, deviceid):
1551        self = cls.__new__(cls)
1552        self.type = type
1553        self.len = len
1554        self.deviceid = deviceid
1555        return self
1556class HierarchyChange(xcffib.Struct):
1557    def __init__(self, unpacker):
1558        if isinstance(unpacker, xcffib.Protobj):
1559            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1560        xcffib.Struct.__init__(self, unpacker)
1561        base = unpacker.offset
1562        self.type, self.len = unpacker.unpack("HH")
1563        self.bufsize = unpacker.offset - base
1564    def pack(self):
1565        buf = six.BytesIO()
1566        buf.write(struct.pack("=HH", self.type, self.len))
1567        return buf.getvalue()
1568    fixed_size = 4
1569    @classmethod
1570    def synthetic(cls, type, len):
1571        self = cls.__new__(cls)
1572        self.type = type
1573        self.len = len
1574        return self
1575class XIGetClientPointerReply(xcffib.Reply):
1576    def __init__(self, unpacker):
1577        if isinstance(unpacker, xcffib.Protobj):
1578            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1579        xcffib.Reply.__init__(self, unpacker)
1580        base = unpacker.offset
1581        self.set, self.deviceid = unpacker.unpack("xx2x4xBxH20x")
1582        self.bufsize = unpacker.offset - base
1583class XIGetClientPointerCookie(xcffib.Cookie):
1584    reply_type = XIGetClientPointerReply
1585class XIEventMask:
1586    DeviceChanged = 1 << 1
1587    KeyPress = 1 << 2
1588    KeyRelease = 1 << 3
1589    ButtonPress = 1 << 4
1590    ButtonRelease = 1 << 5
1591    Motion = 1 << 6
1592    Enter = 1 << 7
1593    Leave = 1 << 8
1594    FocusIn = 1 << 9
1595    FocusOut = 1 << 10
1596    Hierarchy = 1 << 11
1597    Property = 1 << 12
1598    RawKeyPress = 1 << 13
1599    RawKeyRelease = 1 << 14
1600    RawButtonPress = 1 << 15
1601    RawButtonRelease = 1 << 16
1602    RawMotion = 1 << 17
1603    TouchBegin = 1 << 18
1604    TouchUpdate = 1 << 19
1605    TouchEnd = 1 << 20
1606    TouchOwnership = 1 << 21
1607    RawTouchBegin = 1 << 22
1608    RawTouchUpdate = 1 << 23
1609    RawTouchEnd = 1 << 24
1610    BarrierHit = 1 << 25
1611    BarrierLeave = 1 << 26
1612class EventMask(xcffib.Struct):
1613    def __init__(self, unpacker):
1614        if isinstance(unpacker, xcffib.Protobj):
1615            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1616        xcffib.Struct.__init__(self, unpacker)
1617        base = unpacker.offset
1618        self.deviceid, self.mask_len = unpacker.unpack("HH")
1619        self.mask = xcffib.List(unpacker, "I", self.mask_len)
1620        self.bufsize = unpacker.offset - base
1621    def pack(self):
1622        buf = six.BytesIO()
1623        buf.write(struct.pack("=HH", self.deviceid, self.mask_len))
1624        buf.write(xcffib.pack_list(self.mask, "I"))
1625        return buf.getvalue()
1626    @classmethod
1627    def synthetic(cls, deviceid, mask_len, mask):
1628        self = cls.__new__(cls)
1629        self.deviceid = deviceid
1630        self.mask_len = mask_len
1631        self.mask = mask
1632        return self
1633class XIQueryVersionReply(xcffib.Reply):
1634    def __init__(self, unpacker):
1635        if isinstance(unpacker, xcffib.Protobj):
1636            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1637        xcffib.Reply.__init__(self, unpacker)
1638        base = unpacker.offset
1639        self.major_version, self.minor_version = unpacker.unpack("xx2x4xHH20x")
1640        self.bufsize = unpacker.offset - base
1641class XIQueryVersionCookie(xcffib.Cookie):
1642    reply_type = XIQueryVersionReply
1643class DeviceClassType:
1644    Key = 0
1645    Button = 1
1646    Valuator = 2
1647    Scroll = 3
1648    Touch = 8
1649class DeviceType:
1650    MasterPointer = 1
1651    MasterKeyboard = 2
1652    SlavePointer = 3
1653    SlaveKeyboard = 4
1654    FloatingSlave = 5
1655class ScrollFlags:
1656    NoEmulation = 1 << 0
1657    Preferred = 1 << 1
1658class ScrollType:
1659    Vertical = 1
1660    Horizontal = 2
1661class TouchMode:
1662    Direct = 1
1663    Dependent = 2
1664class ButtonClass(xcffib.Struct):
1665    def __init__(self, unpacker):
1666        if isinstance(unpacker, xcffib.Protobj):
1667            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1668        xcffib.Struct.__init__(self, unpacker)
1669        base = unpacker.offset
1670        self.type, self.len, self.sourceid, self.num_buttons = unpacker.unpack("HHHH")
1671        self.state = xcffib.List(unpacker, "I", (self.num_buttons + 31) // 32)
1672        unpacker.pad("I")
1673        self.labels = xcffib.List(unpacker, "I", self.num_buttons)
1674        self.bufsize = unpacker.offset - base
1675    def pack(self):
1676        buf = six.BytesIO()
1677        buf.write(struct.pack("=HHHH", self.type, self.len, self.sourceid, self.num_buttons))
1678        buf.write(xcffib.pack_list(self.state, "I"))
1679        buf.write(xcffib.pack_list(self.labels, "I"))
1680        return buf.getvalue()
1681    @classmethod
1682    def synthetic(cls, type, len, sourceid, num_buttons, state, labels):
1683        self = cls.__new__(cls)
1684        self.type = type
1685        self.len = len
1686        self.sourceid = sourceid
1687        self.num_buttons = num_buttons
1688        self.state = state
1689        self.labels = labels
1690        return self
1691class KeyClass(xcffib.Struct):
1692    def __init__(self, unpacker):
1693        if isinstance(unpacker, xcffib.Protobj):
1694            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1695        xcffib.Struct.__init__(self, unpacker)
1696        base = unpacker.offset
1697        self.type, self.len, self.sourceid, self.num_keys = unpacker.unpack("HHHH")
1698        self.keys = xcffib.List(unpacker, "I", self.num_keys)
1699        self.bufsize = unpacker.offset - base
1700    def pack(self):
1701        buf = six.BytesIO()
1702        buf.write(struct.pack("=HHHH", self.type, self.len, self.sourceid, self.num_keys))
1703        buf.write(xcffib.pack_list(self.keys, "I"))
1704        return buf.getvalue()
1705    @classmethod
1706    def synthetic(cls, type, len, sourceid, num_keys, keys):
1707        self = cls.__new__(cls)
1708        self.type = type
1709        self.len = len
1710        self.sourceid = sourceid
1711        self.num_keys = num_keys
1712        self.keys = keys
1713        return self
1714class ScrollClass(xcffib.Struct):
1715    def __init__(self, unpacker):
1716        if isinstance(unpacker, xcffib.Protobj):
1717            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1718        xcffib.Struct.__init__(self, unpacker)
1719        base = unpacker.offset
1720        self.type, self.len, self.sourceid, self.number, self.scroll_type, self.flags = unpacker.unpack("HHHHH2xI")
1721        self.increment = FP3232(unpacker)
1722        self.bufsize = unpacker.offset - base
1723    def pack(self):
1724        buf = six.BytesIO()
1725        buf.write(struct.pack("=HHHHH2xI", self.type, self.len, self.sourceid, self.number, self.scroll_type, self.flags))
1726        buf.write(self.increment.pack() if hasattr(self.increment, "pack") else FP3232.synthetic(*self.increment).pack())
1727        return buf.getvalue()
1728    @classmethod
1729    def synthetic(cls, type, len, sourceid, number, scroll_type, flags, increment):
1730        self = cls.__new__(cls)
1731        self.type = type
1732        self.len = len
1733        self.sourceid = sourceid
1734        self.number = number
1735        self.scroll_type = scroll_type
1736        self.flags = flags
1737        self.increment = increment
1738        return self
1739class TouchClass(xcffib.Struct):
1740    def __init__(self, unpacker):
1741        if isinstance(unpacker, xcffib.Protobj):
1742            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1743        xcffib.Struct.__init__(self, unpacker)
1744        base = unpacker.offset
1745        self.type, self.len, self.sourceid, self.mode, self.num_touches = unpacker.unpack("HHHBB")
1746        self.bufsize = unpacker.offset - base
1747    def pack(self):
1748        buf = six.BytesIO()
1749        buf.write(struct.pack("=HHHBB", self.type, self.len, self.sourceid, self.mode, self.num_touches))
1750        return buf.getvalue()
1751    fixed_size = 8
1752    @classmethod
1753    def synthetic(cls, type, len, sourceid, mode, num_touches):
1754        self = cls.__new__(cls)
1755        self.type = type
1756        self.len = len
1757        self.sourceid = sourceid
1758        self.mode = mode
1759        self.num_touches = num_touches
1760        return self
1761class ValuatorClass(xcffib.Struct):
1762    def __init__(self, unpacker):
1763        if isinstance(unpacker, xcffib.Protobj):
1764            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1765        xcffib.Struct.__init__(self, unpacker)
1766        base = unpacker.offset
1767        self.type, self.len, self.sourceid, self.number, self.label = unpacker.unpack("HHHHI")
1768        self.min = FP3232(unpacker)
1769        unpacker.pad(FP3232)
1770        self.max = FP3232(unpacker)
1771        unpacker.pad(FP3232)
1772        self.value = FP3232(unpacker)
1773        self.resolution, self.mode = unpacker.unpack("IB3x")
1774        self.bufsize = unpacker.offset - base
1775    def pack(self):
1776        buf = six.BytesIO()
1777        buf.write(struct.pack("=HHHHIIB3x", self.type, self.len, self.sourceid, self.number, self.label, self.resolution, self.mode))
1778        buf.write(self.min.pack() if hasattr(self.min, "pack") else FP3232.synthetic(*self.min).pack())
1779        buf.write(self.max.pack() if hasattr(self.max, "pack") else FP3232.synthetic(*self.max).pack())
1780        buf.write(self.value.pack() if hasattr(self.value, "pack") else FP3232.synthetic(*self.value).pack())
1781        return buf.getvalue()
1782    @classmethod
1783    def synthetic(cls, type, len, sourceid, number, label, min, max, value, resolution, mode):
1784        self = cls.__new__(cls)
1785        self.type = type
1786        self.len = len
1787        self.sourceid = sourceid
1788        self.number = number
1789        self.label = label
1790        self.min = min
1791        self.max = max
1792        self.value = value
1793        self.resolution = resolution
1794        self.mode = mode
1795        return self
1796class DeviceClass(xcffib.Struct):
1797    def __init__(self, unpacker):
1798        if isinstance(unpacker, xcffib.Protobj):
1799            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1800        xcffib.Struct.__init__(self, unpacker)
1801        base = unpacker.offset
1802        self.type, self.len, self.sourceid = unpacker.unpack("HHH")
1803        if self.type == DeviceClassType.Key:
1804            self.num_keys, = unpacker.unpack("H")
1805            self.keys = xcffib.List(unpacker, "I", self.num_keys)
1806        if self.type == DeviceClassType.Button:
1807            self.num_buttons, = unpacker.unpack("H")
1808            self.state = xcffib.List(unpacker, "I", (self.num_buttons + 31) // 32)
1809            unpacker.pad("I")
1810            self.labels = xcffib.List(unpacker, "I", self.num_buttons)
1811        if self.type == DeviceClassType.Valuator:
1812            self.number, self.label = unpacker.unpack("HI")
1813            self.min = FP3232(unpacker)
1814            unpacker.pad(FP3232)
1815            self.max = FP3232(unpacker)
1816            unpacker.pad(FP3232)
1817            self.value = FP3232(unpacker)
1818            self.resolution, self.mode = unpacker.unpack("IB3x")
1819        if self.type == DeviceClassType.Scroll:
1820            self.number, self.scroll_type, self.flags = unpacker.unpack("HH2xI")
1821            self.increment = FP3232(unpacker)
1822        if self.type == DeviceClassType.Touch:
1823            self.mode, self.num_touches = unpacker.unpack("BB")
1824        self.bufsize = unpacker.offset - base
1825    def pack(self):
1826        buf = six.BytesIO()
1827        buf.write(struct.pack("=HHH", self.type, self.len, self.sourceid))
1828        if type & DeviceClassType.Key:
1829            self.num_keys = self.data.pop(0)
1830            self.keys = self.data.pop(0)
1831            buf.write(struct.pack("=H", self.num_keys))
1832            buf.write(xcffib.pack_list(self.keys, "I"))
1833        if type & DeviceClassType.Button:
1834            self.num_buttons = self.data.pop(0)
1835            self.state = self.data.pop(0)
1836            self.labels = self.data.pop(0)
1837            buf.write(struct.pack("=H", self.num_buttons))
1838            buf.write(xcffib.pack_list(self.state, "I"))
1839            buf.write(xcffib.pack_list(self.labels, "I"))
1840        if type & DeviceClassType.Valuator:
1841            self.number = self.data.pop(0)
1842            self.label = self.data.pop(0)
1843            self.resolution = self.data.pop(0)
1844            self.mode = self.data.pop(0)
1845            self.min = self.data.pop(0)
1846            self.max = self.data.pop(0)
1847            self.value = self.data.pop(0)
1848            buf.write(struct.pack("=HIIB3x", self.number, self.label, self.resolution, self.mode))
1849            buf.write(self.min.pack() if hasattr(self.min, "pack") else FP3232.synthetic(*self.min).pack())
1850            buf.write(self.max.pack() if hasattr(self.max, "pack") else FP3232.synthetic(*self.max).pack())
1851            buf.write(self.value.pack() if hasattr(self.value, "pack") else FP3232.synthetic(*self.value).pack())
1852        if type & DeviceClassType.Scroll:
1853            self.number = self.data.pop(0)
1854            self.scroll_type = self.data.pop(0)
1855            self.flags = self.data.pop(0)
1856            self.increment = self.data.pop(0)
1857            buf.write(struct.pack("=HH2xI", self.number, self.scroll_type, self.flags))
1858            buf.write(self.increment.pack() if hasattr(self.increment, "pack") else FP3232.synthetic(*self.increment).pack())
1859        if type & DeviceClassType.Touch:
1860            self.mode = self.data.pop(0)
1861            self.num_touches = self.data.pop(0)
1862            buf.write(struct.pack("=BB", self.mode, self.num_touches))
1863        return buf.getvalue()
1864    @classmethod
1865    def synthetic(cls, type, len, sourceid, data):
1866        self = cls.__new__(cls)
1867        self.type = type
1868        self.len = len
1869        self.sourceid = sourceid
1870        self.data = data
1871        return self
1872class XIDeviceInfo(xcffib.Struct):
1873    def __init__(self, unpacker):
1874        if isinstance(unpacker, xcffib.Protobj):
1875            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1876        xcffib.Struct.__init__(self, unpacker)
1877        base = unpacker.offset
1878        self.deviceid, self.type, self.attachment, self.num_classes, self.name_len, self.enabled = unpacker.unpack("HHHHHBx")
1879        self.name = xcffib.List(unpacker, "c", self.name_len)
1880        unpacker.pad(DeviceClass)
1881        self.classes = xcffib.List(unpacker, DeviceClass, self.num_classes)
1882        self.bufsize = unpacker.offset - base
1883    def pack(self):
1884        buf = six.BytesIO()
1885        buf.write(struct.pack("=HHHHHBx", self.deviceid, self.type, self.attachment, self.num_classes, self.name_len, self.enabled))
1886        buf.write(xcffib.pack_list(self.name, "c"))
1887        buf.write(xcffib.pack_list(self.classes, DeviceClass))
1888        return buf.getvalue()
1889    @classmethod
1890    def synthetic(cls, deviceid, type, attachment, num_classes, name_len, enabled, name, classes):
1891        self = cls.__new__(cls)
1892        self.deviceid = deviceid
1893        self.type = type
1894        self.attachment = attachment
1895        self.num_classes = num_classes
1896        self.name_len = name_len
1897        self.enabled = enabled
1898        self.name = name
1899        self.classes = classes
1900        return self
1901class XIQueryDeviceReply(xcffib.Reply):
1902    def __init__(self, unpacker):
1903        if isinstance(unpacker, xcffib.Protobj):
1904            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1905        xcffib.Reply.__init__(self, unpacker)
1906        base = unpacker.offset
1907        self.num_infos, = unpacker.unpack("xx2x4xH22x")
1908        self.infos = xcffib.List(unpacker, XIDeviceInfo, self.num_infos)
1909        self.bufsize = unpacker.offset - base
1910class XIQueryDeviceCookie(xcffib.Cookie):
1911    reply_type = XIQueryDeviceReply
1912class XIGetFocusReply(xcffib.Reply):
1913    def __init__(self, unpacker):
1914        if isinstance(unpacker, xcffib.Protobj):
1915            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1916        xcffib.Reply.__init__(self, unpacker)
1917        base = unpacker.offset
1918        self.focus, = unpacker.unpack("xx2x4xI20x")
1919        self.bufsize = unpacker.offset - base
1920class XIGetFocusCookie(xcffib.Cookie):
1921    reply_type = XIGetFocusReply
1922class GrabOwner:
1923    NoOwner = 0
1924    Owner = 1
1925class XIGrabDeviceReply(xcffib.Reply):
1926    def __init__(self, unpacker):
1927        if isinstance(unpacker, xcffib.Protobj):
1928            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1929        xcffib.Reply.__init__(self, unpacker)
1930        base = unpacker.offset
1931        self.status, = unpacker.unpack("xx2x4xB23x")
1932        self.bufsize = unpacker.offset - base
1933class XIGrabDeviceCookie(xcffib.Cookie):
1934    reply_type = XIGrabDeviceReply
1935class EventMode:
1936    AsyncDevice = 0
1937    SyncDevice = 1
1938    ReplayDevice = 2
1939    AsyncPairedDevice = 3
1940    AsyncPair = 4
1941    SyncPair = 5
1942    AcceptTouch = 6
1943    RejectTouch = 7
1944class GrabMode22:
1945    Sync = 0
1946    Async = 1
1947    Touch = 2
1948class GrabType:
1949    Button = 0
1950    Keycode = 1
1951    Enter = 2
1952    FocusIn = 3
1953    TouchBegin = 4
1954class ModifierMask:
1955    Any = 1 << 31
1956class GrabModifierInfo(xcffib.Struct):
1957    def __init__(self, unpacker):
1958        if isinstance(unpacker, xcffib.Protobj):
1959            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1960        xcffib.Struct.__init__(self, unpacker)
1961        base = unpacker.offset
1962        self.modifiers, self.status = unpacker.unpack("IB3x")
1963        self.bufsize = unpacker.offset - base
1964    def pack(self):
1965        buf = six.BytesIO()
1966        buf.write(struct.pack("=IB3x", self.modifiers, self.status))
1967        return buf.getvalue()
1968    fixed_size = 8
1969    @classmethod
1970    def synthetic(cls, modifiers, status):
1971        self = cls.__new__(cls)
1972        self.modifiers = modifiers
1973        self.status = status
1974        return self
1975class XIPassiveGrabDeviceReply(xcffib.Reply):
1976    def __init__(self, unpacker):
1977        if isinstance(unpacker, xcffib.Protobj):
1978            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1979        xcffib.Reply.__init__(self, unpacker)
1980        base = unpacker.offset
1981        self.num_modifiers, = unpacker.unpack("xx2x4xH22x")
1982        self.modifiers = xcffib.List(unpacker, GrabModifierInfo, self.num_modifiers)
1983        self.bufsize = unpacker.offset - base
1984class XIPassiveGrabDeviceCookie(xcffib.Cookie):
1985    reply_type = XIPassiveGrabDeviceReply
1986class XIListPropertiesReply(xcffib.Reply):
1987    def __init__(self, unpacker):
1988        if isinstance(unpacker, xcffib.Protobj):
1989            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
1990        xcffib.Reply.__init__(self, unpacker)
1991        base = unpacker.offset
1992        self.num_properties, = unpacker.unpack("xx2x4xH22x")
1993        self.properties = xcffib.List(unpacker, "I", self.num_properties)
1994        self.bufsize = unpacker.offset - base
1995class XIListPropertiesCookie(xcffib.Cookie):
1996    reply_type = XIListPropertiesReply
1997class XIGetSelectedEventsReply(xcffib.Reply):
1998    def __init__(self, unpacker):
1999        if isinstance(unpacker, xcffib.Protobj):
2000            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2001        xcffib.Reply.__init__(self, unpacker)
2002        base = unpacker.offset
2003        self.num_masks, = unpacker.unpack("xx2x4xH22x")
2004        self.masks = xcffib.List(unpacker, EventMask, self.num_masks)
2005        self.bufsize = unpacker.offset - base
2006class XIGetSelectedEventsCookie(xcffib.Cookie):
2007    reply_type = XIGetSelectedEventsReply
2008class BarrierReleasePointerInfo(xcffib.Struct):
2009    def __init__(self, unpacker):
2010        if isinstance(unpacker, xcffib.Protobj):
2011            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2012        xcffib.Struct.__init__(self, unpacker)
2013        base = unpacker.offset
2014        self.deviceid, self.barrier, self.eventid = unpacker.unpack("H2xII")
2015        self.bufsize = unpacker.offset - base
2016    def pack(self):
2017        buf = six.BytesIO()
2018        buf.write(struct.pack("=H2xII", self.deviceid, self.barrier, self.eventid))
2019        return buf.getvalue()
2020    fixed_size = 12
2021    @classmethod
2022    def synthetic(cls, deviceid, barrier, eventid):
2023        self = cls.__new__(cls)
2024        self.deviceid = deviceid
2025        self.barrier = barrier
2026        self.eventid = eventid
2027        return self
2028class DeviceValuatorEvent(xcffib.Event):
2029    def __init__(self, unpacker):
2030        if isinstance(unpacker, xcffib.Protobj):
2031            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2032        xcffib.Event.__init__(self, unpacker)
2033        base = unpacker.offset
2034        self.device_id, self.device_state, self.num_valuators, self.first_valuator = unpacker.unpack("xB2xHBB")
2035        self.valuators = xcffib.List(unpacker, "i", 6)
2036        self.bufsize = unpacker.offset - base
2037    def pack(self):
2038        buf = six.BytesIO()
2039        buf.write(struct.pack("=B", 0))
2040        buf.write(struct.pack("=B2xHBB", self.device_id, self.device_state, self.num_valuators, self.first_valuator))
2041        buf.write(xcffib.pack_list(self.valuators, "i"))
2042        buf_len = len(buf.getvalue())
2043        if buf_len < 32:
2044            buf.write(struct.pack("x" * (32 - buf_len)))
2045        return buf.getvalue()
2046    @classmethod
2047    def synthetic(cls, device_id, device_state, num_valuators, first_valuator, valuators):
2048        self = cls.__new__(cls)
2049        self.device_id = device_id
2050        self.device_state = device_state
2051        self.num_valuators = num_valuators
2052        self.first_valuator = first_valuator
2053        self.valuators = valuators
2054        return self
2055_events[0] = DeviceValuatorEvent
2056class MoreEventsMask:
2057    MoreEvents = 1 << 7
2058class DeviceKeyPressEvent(xcffib.Event):
2059    def __init__(self, unpacker):
2060        if isinstance(unpacker, xcffib.Protobj):
2061            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2062        xcffib.Event.__init__(self, unpacker)
2063        base = unpacker.offset
2064        self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id = unpacker.unpack("xB2xIIIIhhhhHBB")
2065        self.bufsize = unpacker.offset - base
2066    def pack(self):
2067        buf = six.BytesIO()
2068        buf.write(struct.pack("=B", 1))
2069        buf.write(struct.pack("=B2xIIIIhhhhHBB", self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id))
2070        buf_len = len(buf.getvalue())
2071        if buf_len < 32:
2072            buf.write(struct.pack("x" * (32 - buf_len)))
2073        return buf.getvalue()
2074    @classmethod
2075    def synthetic(cls, detail, time, root, event, child, root_x, root_y, event_x, event_y, state, same_screen, device_id):
2076        self = cls.__new__(cls)
2077        self.detail = detail
2078        self.time = time
2079        self.root = root
2080        self.event = event
2081        self.child = child
2082        self.root_x = root_x
2083        self.root_y = root_y
2084        self.event_x = event_x
2085        self.event_y = event_y
2086        self.state = state
2087        self.same_screen = same_screen
2088        self.device_id = device_id
2089        return self
2090_events[1] = DeviceKeyPressEvent
2091class DeviceKeyReleaseEvent(xcffib.Event):
2092    def __init__(self, unpacker):
2093        if isinstance(unpacker, xcffib.Protobj):
2094            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2095        xcffib.Event.__init__(self, unpacker)
2096        base = unpacker.offset
2097        self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id = unpacker.unpack("xB2xIIIIhhhhHBB")
2098        self.bufsize = unpacker.offset - base
2099    def pack(self):
2100        buf = six.BytesIO()
2101        buf.write(struct.pack("=B", 2))
2102        buf.write(struct.pack("=B2xIIIIhhhhHBB", self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id))
2103        buf_len = len(buf.getvalue())
2104        if buf_len < 32:
2105            buf.write(struct.pack("x" * (32 - buf_len)))
2106        return buf.getvalue()
2107    @classmethod
2108    def synthetic(cls, detail, time, root, event, child, root_x, root_y, event_x, event_y, state, same_screen, device_id):
2109        self = cls.__new__(cls)
2110        self.detail = detail
2111        self.time = time
2112        self.root = root
2113        self.event = event
2114        self.child = child
2115        self.root_x = root_x
2116        self.root_y = root_y
2117        self.event_x = event_x
2118        self.event_y = event_y
2119        self.state = state
2120        self.same_screen = same_screen
2121        self.device_id = device_id
2122        return self
2123_events[2] = DeviceKeyReleaseEvent
2124class DeviceButtonPressEvent(xcffib.Event):
2125    def __init__(self, unpacker):
2126        if isinstance(unpacker, xcffib.Protobj):
2127            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2128        xcffib.Event.__init__(self, unpacker)
2129        base = unpacker.offset
2130        self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id = unpacker.unpack("xB2xIIIIhhhhHBB")
2131        self.bufsize = unpacker.offset - base
2132    def pack(self):
2133        buf = six.BytesIO()
2134        buf.write(struct.pack("=B", 3))
2135        buf.write(struct.pack("=B2xIIIIhhhhHBB", self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id))
2136        buf_len = len(buf.getvalue())
2137        if buf_len < 32:
2138            buf.write(struct.pack("x" * (32 - buf_len)))
2139        return buf.getvalue()
2140    @classmethod
2141    def synthetic(cls, detail, time, root, event, child, root_x, root_y, event_x, event_y, state, same_screen, device_id):
2142        self = cls.__new__(cls)
2143        self.detail = detail
2144        self.time = time
2145        self.root = root
2146        self.event = event
2147        self.child = child
2148        self.root_x = root_x
2149        self.root_y = root_y
2150        self.event_x = event_x
2151        self.event_y = event_y
2152        self.state = state
2153        self.same_screen = same_screen
2154        self.device_id = device_id
2155        return self
2156_events[3] = DeviceButtonPressEvent
2157class DeviceButtonReleaseEvent(xcffib.Event):
2158    def __init__(self, unpacker):
2159        if isinstance(unpacker, xcffib.Protobj):
2160            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2161        xcffib.Event.__init__(self, unpacker)
2162        base = unpacker.offset
2163        self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id = unpacker.unpack("xB2xIIIIhhhhHBB")
2164        self.bufsize = unpacker.offset - base
2165    def pack(self):
2166        buf = six.BytesIO()
2167        buf.write(struct.pack("=B", 4))
2168        buf.write(struct.pack("=B2xIIIIhhhhHBB", self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id))
2169        buf_len = len(buf.getvalue())
2170        if buf_len < 32:
2171            buf.write(struct.pack("x" * (32 - buf_len)))
2172        return buf.getvalue()
2173    @classmethod
2174    def synthetic(cls, detail, time, root, event, child, root_x, root_y, event_x, event_y, state, same_screen, device_id):
2175        self = cls.__new__(cls)
2176        self.detail = detail
2177        self.time = time
2178        self.root = root
2179        self.event = event
2180        self.child = child
2181        self.root_x = root_x
2182        self.root_y = root_y
2183        self.event_x = event_x
2184        self.event_y = event_y
2185        self.state = state
2186        self.same_screen = same_screen
2187        self.device_id = device_id
2188        return self
2189_events[4] = DeviceButtonReleaseEvent
2190class DeviceMotionNotifyEvent(xcffib.Event):
2191    def __init__(self, unpacker):
2192        if isinstance(unpacker, xcffib.Protobj):
2193            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2194        xcffib.Event.__init__(self, unpacker)
2195        base = unpacker.offset
2196        self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id = unpacker.unpack("xB2xIIIIhhhhHBB")
2197        self.bufsize = unpacker.offset - base
2198    def pack(self):
2199        buf = six.BytesIO()
2200        buf.write(struct.pack("=B", 5))
2201        buf.write(struct.pack("=B2xIIIIhhhhHBB", self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id))
2202        buf_len = len(buf.getvalue())
2203        if buf_len < 32:
2204            buf.write(struct.pack("x" * (32 - buf_len)))
2205        return buf.getvalue()
2206    @classmethod
2207    def synthetic(cls, detail, time, root, event, child, root_x, root_y, event_x, event_y, state, same_screen, device_id):
2208        self = cls.__new__(cls)
2209        self.detail = detail
2210        self.time = time
2211        self.root = root
2212        self.event = event
2213        self.child = child
2214        self.root_x = root_x
2215        self.root_y = root_y
2216        self.event_x = event_x
2217        self.event_y = event_y
2218        self.state = state
2219        self.same_screen = same_screen
2220        self.device_id = device_id
2221        return self
2222_events[5] = DeviceMotionNotifyEvent
2223class DeviceFocusInEvent(xcffib.Event):
2224    def __init__(self, unpacker):
2225        if isinstance(unpacker, xcffib.Protobj):
2226            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2227        xcffib.Event.__init__(self, unpacker)
2228        base = unpacker.offset
2229        self.detail, self.time, self.window, self.mode, self.device_id = unpacker.unpack("xB2xIIBB18x")
2230        self.bufsize = unpacker.offset - base
2231    def pack(self):
2232        buf = six.BytesIO()
2233        buf.write(struct.pack("=B", 6))
2234        buf.write(struct.pack("=B2xIIBB18x", self.detail, self.time, self.window, self.mode, self.device_id))
2235        buf_len = len(buf.getvalue())
2236        if buf_len < 32:
2237            buf.write(struct.pack("x" * (32 - buf_len)))
2238        return buf.getvalue()
2239    @classmethod
2240    def synthetic(cls, detail, time, window, mode, device_id):
2241        self = cls.__new__(cls)
2242        self.detail = detail
2243        self.time = time
2244        self.window = window
2245        self.mode = mode
2246        self.device_id = device_id
2247        return self
2248_events[6] = DeviceFocusInEvent
2249class DeviceFocusOutEvent(xcffib.Event):
2250    def __init__(self, unpacker):
2251        if isinstance(unpacker, xcffib.Protobj):
2252            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2253        xcffib.Event.__init__(self, unpacker)
2254        base = unpacker.offset
2255        self.detail, self.time, self.window, self.mode, self.device_id = unpacker.unpack("xB2xIIBB18x")
2256        self.bufsize = unpacker.offset - base
2257    def pack(self):
2258        buf = six.BytesIO()
2259        buf.write(struct.pack("=B", 7))
2260        buf.write(struct.pack("=B2xIIBB18x", self.detail, self.time, self.window, self.mode, self.device_id))
2261        buf_len = len(buf.getvalue())
2262        if buf_len < 32:
2263            buf.write(struct.pack("x" * (32 - buf_len)))
2264        return buf.getvalue()
2265    @classmethod
2266    def synthetic(cls, detail, time, window, mode, device_id):
2267        self = cls.__new__(cls)
2268        self.detail = detail
2269        self.time = time
2270        self.window = window
2271        self.mode = mode
2272        self.device_id = device_id
2273        return self
2274_events[7] = DeviceFocusOutEvent
2275class ProximityInEvent(xcffib.Event):
2276    def __init__(self, unpacker):
2277        if isinstance(unpacker, xcffib.Protobj):
2278            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2279        xcffib.Event.__init__(self, unpacker)
2280        base = unpacker.offset
2281        self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id = unpacker.unpack("xB2xIIIIhhhhHBB")
2282        self.bufsize = unpacker.offset - base
2283    def pack(self):
2284        buf = six.BytesIO()
2285        buf.write(struct.pack("=B", 8))
2286        buf.write(struct.pack("=B2xIIIIhhhhHBB", self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id))
2287        buf_len = len(buf.getvalue())
2288        if buf_len < 32:
2289            buf.write(struct.pack("x" * (32 - buf_len)))
2290        return buf.getvalue()
2291    @classmethod
2292    def synthetic(cls, detail, time, root, event, child, root_x, root_y, event_x, event_y, state, same_screen, device_id):
2293        self = cls.__new__(cls)
2294        self.detail = detail
2295        self.time = time
2296        self.root = root
2297        self.event = event
2298        self.child = child
2299        self.root_x = root_x
2300        self.root_y = root_y
2301        self.event_x = event_x
2302        self.event_y = event_y
2303        self.state = state
2304        self.same_screen = same_screen
2305        self.device_id = device_id
2306        return self
2307_events[8] = ProximityInEvent
2308class ProximityOutEvent(xcffib.Event):
2309    def __init__(self, unpacker):
2310        if isinstance(unpacker, xcffib.Protobj):
2311            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2312        xcffib.Event.__init__(self, unpacker)
2313        base = unpacker.offset
2314        self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id = unpacker.unpack("xB2xIIIIhhhhHBB")
2315        self.bufsize = unpacker.offset - base
2316    def pack(self):
2317        buf = six.BytesIO()
2318        buf.write(struct.pack("=B", 9))
2319        buf.write(struct.pack("=B2xIIIIhhhhHBB", self.detail, self.time, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.state, self.same_screen, self.device_id))
2320        buf_len = len(buf.getvalue())
2321        if buf_len < 32:
2322            buf.write(struct.pack("x" * (32 - buf_len)))
2323        return buf.getvalue()
2324    @classmethod
2325    def synthetic(cls, detail, time, root, event, child, root_x, root_y, event_x, event_y, state, same_screen, device_id):
2326        self = cls.__new__(cls)
2327        self.detail = detail
2328        self.time = time
2329        self.root = root
2330        self.event = event
2331        self.child = child
2332        self.root_x = root_x
2333        self.root_y = root_y
2334        self.event_x = event_x
2335        self.event_y = event_y
2336        self.state = state
2337        self.same_screen = same_screen
2338        self.device_id = device_id
2339        return self
2340_events[9] = ProximityOutEvent
2341class ClassesReportedMask:
2342    OutOfProximity = 1 << 7
2343    DeviceModeAbsolute = 1 << 6
2344    ReportingValuators = 1 << 2
2345    ReportingButtons = 1 << 1
2346    ReportingKeys = 1 << 0
2347class DeviceStateNotifyEvent(xcffib.Event):
2348    def __init__(self, unpacker):
2349        if isinstance(unpacker, xcffib.Protobj):
2350            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2351        xcffib.Event.__init__(self, unpacker)
2352        base = unpacker.offset
2353        self.device_id, self.time, self.num_keys, self.num_buttons, self.num_valuators, self.classes_reported = unpacker.unpack("xB2xIBBBB")
2354        self.buttons = xcffib.List(unpacker, "B", 4)
2355        unpacker.pad("B")
2356        self.keys = xcffib.List(unpacker, "B", 4)
2357        unpacker.pad("I")
2358        self.valuators = xcffib.List(unpacker, "I", 3)
2359        self.bufsize = unpacker.offset - base
2360    def pack(self):
2361        buf = six.BytesIO()
2362        buf.write(struct.pack("=B", 10))
2363        buf.write(struct.pack("=B2xIBBBB", self.device_id, self.time, self.num_keys, self.num_buttons, self.num_valuators, self.classes_reported))
2364        buf.write(xcffib.pack_list(self.buttons, "B"))
2365        buf.write(xcffib.pack_list(self.keys, "B"))
2366        buf.write(xcffib.pack_list(self.valuators, "I"))
2367        buf_len = len(buf.getvalue())
2368        if buf_len < 32:
2369            buf.write(struct.pack("x" * (32 - buf_len)))
2370        return buf.getvalue()
2371    @classmethod
2372    def synthetic(cls, device_id, time, num_keys, num_buttons, num_valuators, classes_reported, buttons, keys, valuators):
2373        self = cls.__new__(cls)
2374        self.device_id = device_id
2375        self.time = time
2376        self.num_keys = num_keys
2377        self.num_buttons = num_buttons
2378        self.num_valuators = num_valuators
2379        self.classes_reported = classes_reported
2380        self.buttons = buttons
2381        self.keys = keys
2382        self.valuators = valuators
2383        return self
2384_events[10] = DeviceStateNotifyEvent
2385class DeviceMappingNotifyEvent(xcffib.Event):
2386    def __init__(self, unpacker):
2387        if isinstance(unpacker, xcffib.Protobj):
2388            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2389        xcffib.Event.__init__(self, unpacker)
2390        base = unpacker.offset
2391        self.device_id, self.request, self.first_keycode, self.count, self.time = unpacker.unpack("xB2xBBBxI20x")
2392        self.bufsize = unpacker.offset - base
2393    def pack(self):
2394        buf = six.BytesIO()
2395        buf.write(struct.pack("=B", 11))
2396        buf.write(struct.pack("=B2xBBBxI20x", self.device_id, self.request, self.first_keycode, self.count, self.time))
2397        buf_len = len(buf.getvalue())
2398        if buf_len < 32:
2399            buf.write(struct.pack("x" * (32 - buf_len)))
2400        return buf.getvalue()
2401    @classmethod
2402    def synthetic(cls, device_id, request, first_keycode, count, time):
2403        self = cls.__new__(cls)
2404        self.device_id = device_id
2405        self.request = request
2406        self.first_keycode = first_keycode
2407        self.count = count
2408        self.time = time
2409        return self
2410_events[11] = DeviceMappingNotifyEvent
2411class ChangeDevice:
2412    NewPointer = 0
2413    NewKeyboard = 1
2414class ChangeDeviceNotifyEvent(xcffib.Event):
2415    def __init__(self, unpacker):
2416        if isinstance(unpacker, xcffib.Protobj):
2417            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2418        xcffib.Event.__init__(self, unpacker)
2419        base = unpacker.offset
2420        self.device_id, self.time, self.request = unpacker.unpack("xB2xIB23x")
2421        self.bufsize = unpacker.offset - base
2422    def pack(self):
2423        buf = six.BytesIO()
2424        buf.write(struct.pack("=B", 12))
2425        buf.write(struct.pack("=B2xIB23x", self.device_id, self.time, self.request))
2426        buf_len = len(buf.getvalue())
2427        if buf_len < 32:
2428            buf.write(struct.pack("x" * (32 - buf_len)))
2429        return buf.getvalue()
2430    @classmethod
2431    def synthetic(cls, device_id, time, request):
2432        self = cls.__new__(cls)
2433        self.device_id = device_id
2434        self.time = time
2435        self.request = request
2436        return self
2437_events[12] = ChangeDeviceNotifyEvent
2438class DeviceKeyStateNotifyEvent(xcffib.Event):
2439    def __init__(self, unpacker):
2440        if isinstance(unpacker, xcffib.Protobj):
2441            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2442        xcffib.Event.__init__(self, unpacker)
2443        base = unpacker.offset
2444        self.device_id, = unpacker.unpack("xB2x")
2445        self.keys = xcffib.List(unpacker, "B", 28)
2446        self.bufsize = unpacker.offset - base
2447    def pack(self):
2448        buf = six.BytesIO()
2449        buf.write(struct.pack("=B", 13))
2450        buf.write(struct.pack("=B2x", self.device_id))
2451        buf.write(xcffib.pack_list(self.keys, "B"))
2452        buf_len = len(buf.getvalue())
2453        if buf_len < 32:
2454            buf.write(struct.pack("x" * (32 - buf_len)))
2455        return buf.getvalue()
2456    @classmethod
2457    def synthetic(cls, device_id, keys):
2458        self = cls.__new__(cls)
2459        self.device_id = device_id
2460        self.keys = keys
2461        return self
2462_events[13] = DeviceKeyStateNotifyEvent
2463class DeviceButtonStateNotifyEvent(xcffib.Event):
2464    def __init__(self, unpacker):
2465        if isinstance(unpacker, xcffib.Protobj):
2466            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2467        xcffib.Event.__init__(self, unpacker)
2468        base = unpacker.offset
2469        self.device_id, = unpacker.unpack("xB2x")
2470        self.buttons = xcffib.List(unpacker, "B", 28)
2471        self.bufsize = unpacker.offset - base
2472    def pack(self):
2473        buf = six.BytesIO()
2474        buf.write(struct.pack("=B", 14))
2475        buf.write(struct.pack("=B2x", self.device_id))
2476        buf.write(xcffib.pack_list(self.buttons, "B"))
2477        buf_len = len(buf.getvalue())
2478        if buf_len < 32:
2479            buf.write(struct.pack("x" * (32 - buf_len)))
2480        return buf.getvalue()
2481    @classmethod
2482    def synthetic(cls, device_id, buttons):
2483        self = cls.__new__(cls)
2484        self.device_id = device_id
2485        self.buttons = buttons
2486        return self
2487_events[14] = DeviceButtonStateNotifyEvent
2488class DeviceChange:
2489    Added = 0
2490    Removed = 1
2491    Enabled = 2
2492    Disabled = 3
2493    Unrecoverable = 4
2494    ControlChanged = 5
2495class DevicePresenceNotifyEvent(xcffib.Event):
2496    def __init__(self, unpacker):
2497        if isinstance(unpacker, xcffib.Protobj):
2498            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2499        xcffib.Event.__init__(self, unpacker)
2500        base = unpacker.offset
2501        self.time, self.devchange, self.device_id, self.control = unpacker.unpack("xx2xIBBH20x")
2502        self.bufsize = unpacker.offset - base
2503    def pack(self):
2504        buf = six.BytesIO()
2505        buf.write(struct.pack("=B", 15))
2506        buf.write(struct.pack("=x2xIBBH20x", self.time, self.devchange, self.device_id, self.control))
2507        buf_len = len(buf.getvalue())
2508        if buf_len < 32:
2509            buf.write(struct.pack("x" * (32 - buf_len)))
2510        return buf.getvalue()
2511    @classmethod
2512    def synthetic(cls, time, devchange, device_id, control):
2513        self = cls.__new__(cls)
2514        self.time = time
2515        self.devchange = devchange
2516        self.device_id = device_id
2517        self.control = control
2518        return self
2519_events[15] = DevicePresenceNotifyEvent
2520class DevicePropertyNotifyEvent(xcffib.Event):
2521    def __init__(self, unpacker):
2522        if isinstance(unpacker, xcffib.Protobj):
2523            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2524        xcffib.Event.__init__(self, unpacker)
2525        base = unpacker.offset
2526        self.state, self.time, self.property, self.device_id = unpacker.unpack("xB2xII19xB")
2527        self.bufsize = unpacker.offset - base
2528    def pack(self):
2529        buf = six.BytesIO()
2530        buf.write(struct.pack("=B", 16))
2531        buf.write(struct.pack("=B2xII19xB", self.state, self.time, self.property, self.device_id))
2532        buf_len = len(buf.getvalue())
2533        if buf_len < 32:
2534            buf.write(struct.pack("x" * (32 - buf_len)))
2535        return buf.getvalue()
2536    @classmethod
2537    def synthetic(cls, state, time, property, device_id):
2538        self = cls.__new__(cls)
2539        self.state = state
2540        self.time = time
2541        self.property = property
2542        self.device_id = device_id
2543        return self
2544_events[16] = DevicePropertyNotifyEvent
2545class ChangeReason:
2546    SlaveSwitch = 1
2547    DeviceChange = 2
2548class DeviceChangedEvent(xcffib.Event):
2549    def __init__(self, unpacker):
2550        if isinstance(unpacker, xcffib.Protobj):
2551            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2552        xcffib.Event.__init__(self, unpacker)
2553        base = unpacker.offset
2554        self.deviceid, self.time, self.num_classes, self.sourceid, self.reason = unpacker.unpack("xx2xHIHHB11x")
2555        self.classes = xcffib.List(unpacker, DeviceClass, self.num_classes)
2556        self.bufsize = unpacker.offset - base
2557    def pack(self):
2558        buf = six.BytesIO()
2559        buf.write(struct.pack("=B", 1))
2560        buf.write(struct.pack("=x2xHIHHB11x", self.deviceid, self.time, self.num_classes, self.sourceid, self.reason))
2561        buf.write(xcffib.pack_list(self.classes, DeviceClass))
2562        buf_len = len(buf.getvalue())
2563        if buf_len < 32:
2564            buf.write(struct.pack("x" * (32 - buf_len)))
2565        return buf.getvalue()
2566    @classmethod
2567    def synthetic(cls, deviceid, time, num_classes, sourceid, reason, classes):
2568        self = cls.__new__(cls)
2569        self.deviceid = deviceid
2570        self.time = time
2571        self.num_classes = num_classes
2572        self.sourceid = sourceid
2573        self.reason = reason
2574        self.classes = classes
2575        return self
2576_events[1] = DeviceChangedEvent
2577class KeyEventFlags:
2578    KeyRepeat = 1 << 16
2579class KeyPressEvent(xcffib.Event):
2580    def __init__(self, unpacker):
2581        if isinstance(unpacker, xcffib.Protobj):
2582            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2583        xcffib.Event.__init__(self, unpacker)
2584        base = unpacker.offset
2585        self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags = unpacker.unpack("xx2xHIIIIIiiiiHHH2xI")
2586        self.mods = ModifierInfo(unpacker)
2587        unpacker.pad(GroupInfo)
2588        self.group = GroupInfo(unpacker)
2589        unpacker.pad("I")
2590        self.button_mask = xcffib.List(unpacker, "I", self.buttons_len)
2591        unpacker.pad("I")
2592        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
2593        unpacker.pad(FP3232)
2594        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
2595        self.bufsize = unpacker.offset - base
2596    def pack(self):
2597        buf = six.BytesIO()
2598        buf.write(struct.pack("=B", 2))
2599        buf.write(struct.pack("=x2xHIIIIIiiiiHHH2xI", self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags))
2600        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
2601        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
2602        buf.write(xcffib.pack_list(self.button_mask, "I"))
2603        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
2604        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
2605        buf_len = len(buf.getvalue())
2606        if buf_len < 32:
2607            buf.write(struct.pack("x" * (32 - buf_len)))
2608        return buf.getvalue()
2609    @classmethod
2610    def synthetic(cls, deviceid, time, detail, root, event, child, root_x, root_y, event_x, event_y, buttons_len, valuators_len, sourceid, flags, mods, group, button_mask, valuator_mask, axisvalues):
2611        self = cls.__new__(cls)
2612        self.deviceid = deviceid
2613        self.time = time
2614        self.detail = detail
2615        self.root = root
2616        self.event = event
2617        self.child = child
2618        self.root_x = root_x
2619        self.root_y = root_y
2620        self.event_x = event_x
2621        self.event_y = event_y
2622        self.buttons_len = buttons_len
2623        self.valuators_len = valuators_len
2624        self.sourceid = sourceid
2625        self.flags = flags
2626        self.mods = mods
2627        self.group = group
2628        self.button_mask = button_mask
2629        self.valuator_mask = valuator_mask
2630        self.axisvalues = axisvalues
2631        return self
2632_events[2] = KeyPressEvent
2633class KeyReleaseEvent(xcffib.Event):
2634    def __init__(self, unpacker):
2635        if isinstance(unpacker, xcffib.Protobj):
2636            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2637        xcffib.Event.__init__(self, unpacker)
2638        base = unpacker.offset
2639        self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags = unpacker.unpack("xx2xHIIIIIiiiiHHH2xI")
2640        self.mods = ModifierInfo(unpacker)
2641        unpacker.pad(GroupInfo)
2642        self.group = GroupInfo(unpacker)
2643        unpacker.pad("I")
2644        self.button_mask = xcffib.List(unpacker, "I", self.buttons_len)
2645        unpacker.pad("I")
2646        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
2647        unpacker.pad(FP3232)
2648        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
2649        self.bufsize = unpacker.offset - base
2650    def pack(self):
2651        buf = six.BytesIO()
2652        buf.write(struct.pack("=B", 3))
2653        buf.write(struct.pack("=x2xHIIIIIiiiiHHH2xI", self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags))
2654        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
2655        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
2656        buf.write(xcffib.pack_list(self.button_mask, "I"))
2657        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
2658        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
2659        buf_len = len(buf.getvalue())
2660        if buf_len < 32:
2661            buf.write(struct.pack("x" * (32 - buf_len)))
2662        return buf.getvalue()
2663    @classmethod
2664    def synthetic(cls, deviceid, time, detail, root, event, child, root_x, root_y, event_x, event_y, buttons_len, valuators_len, sourceid, flags, mods, group, button_mask, valuator_mask, axisvalues):
2665        self = cls.__new__(cls)
2666        self.deviceid = deviceid
2667        self.time = time
2668        self.detail = detail
2669        self.root = root
2670        self.event = event
2671        self.child = child
2672        self.root_x = root_x
2673        self.root_y = root_y
2674        self.event_x = event_x
2675        self.event_y = event_y
2676        self.buttons_len = buttons_len
2677        self.valuators_len = valuators_len
2678        self.sourceid = sourceid
2679        self.flags = flags
2680        self.mods = mods
2681        self.group = group
2682        self.button_mask = button_mask
2683        self.valuator_mask = valuator_mask
2684        self.axisvalues = axisvalues
2685        return self
2686_events[3] = KeyReleaseEvent
2687class PointerEventFlags:
2688    PointerEmulated = 1 << 16
2689class ButtonPressEvent(xcffib.Event):
2690    def __init__(self, unpacker):
2691        if isinstance(unpacker, xcffib.Protobj):
2692            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2693        xcffib.Event.__init__(self, unpacker)
2694        base = unpacker.offset
2695        self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags = unpacker.unpack("xx2xHIIIIIiiiiHHH2xI")
2696        self.mods = ModifierInfo(unpacker)
2697        unpacker.pad(GroupInfo)
2698        self.group = GroupInfo(unpacker)
2699        unpacker.pad("I")
2700        self.button_mask = xcffib.List(unpacker, "I", self.buttons_len)
2701        unpacker.pad("I")
2702        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
2703        unpacker.pad(FP3232)
2704        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
2705        self.bufsize = unpacker.offset - base
2706    def pack(self):
2707        buf = six.BytesIO()
2708        buf.write(struct.pack("=B", 4))
2709        buf.write(struct.pack("=x2xHIIIIIiiiiHHH2xI", self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags))
2710        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
2711        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
2712        buf.write(xcffib.pack_list(self.button_mask, "I"))
2713        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
2714        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
2715        buf_len = len(buf.getvalue())
2716        if buf_len < 32:
2717            buf.write(struct.pack("x" * (32 - buf_len)))
2718        return buf.getvalue()
2719    @classmethod
2720    def synthetic(cls, deviceid, time, detail, root, event, child, root_x, root_y, event_x, event_y, buttons_len, valuators_len, sourceid, flags, mods, group, button_mask, valuator_mask, axisvalues):
2721        self = cls.__new__(cls)
2722        self.deviceid = deviceid
2723        self.time = time
2724        self.detail = detail
2725        self.root = root
2726        self.event = event
2727        self.child = child
2728        self.root_x = root_x
2729        self.root_y = root_y
2730        self.event_x = event_x
2731        self.event_y = event_y
2732        self.buttons_len = buttons_len
2733        self.valuators_len = valuators_len
2734        self.sourceid = sourceid
2735        self.flags = flags
2736        self.mods = mods
2737        self.group = group
2738        self.button_mask = button_mask
2739        self.valuator_mask = valuator_mask
2740        self.axisvalues = axisvalues
2741        return self
2742_events[4] = ButtonPressEvent
2743class ButtonReleaseEvent(xcffib.Event):
2744    def __init__(self, unpacker):
2745        if isinstance(unpacker, xcffib.Protobj):
2746            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2747        xcffib.Event.__init__(self, unpacker)
2748        base = unpacker.offset
2749        self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags = unpacker.unpack("xx2xHIIIIIiiiiHHH2xI")
2750        self.mods = ModifierInfo(unpacker)
2751        unpacker.pad(GroupInfo)
2752        self.group = GroupInfo(unpacker)
2753        unpacker.pad("I")
2754        self.button_mask = xcffib.List(unpacker, "I", self.buttons_len)
2755        unpacker.pad("I")
2756        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
2757        unpacker.pad(FP3232)
2758        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
2759        self.bufsize = unpacker.offset - base
2760    def pack(self):
2761        buf = six.BytesIO()
2762        buf.write(struct.pack("=B", 5))
2763        buf.write(struct.pack("=x2xHIIIIIiiiiHHH2xI", self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags))
2764        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
2765        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
2766        buf.write(xcffib.pack_list(self.button_mask, "I"))
2767        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
2768        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
2769        buf_len = len(buf.getvalue())
2770        if buf_len < 32:
2771            buf.write(struct.pack("x" * (32 - buf_len)))
2772        return buf.getvalue()
2773    @classmethod
2774    def synthetic(cls, deviceid, time, detail, root, event, child, root_x, root_y, event_x, event_y, buttons_len, valuators_len, sourceid, flags, mods, group, button_mask, valuator_mask, axisvalues):
2775        self = cls.__new__(cls)
2776        self.deviceid = deviceid
2777        self.time = time
2778        self.detail = detail
2779        self.root = root
2780        self.event = event
2781        self.child = child
2782        self.root_x = root_x
2783        self.root_y = root_y
2784        self.event_x = event_x
2785        self.event_y = event_y
2786        self.buttons_len = buttons_len
2787        self.valuators_len = valuators_len
2788        self.sourceid = sourceid
2789        self.flags = flags
2790        self.mods = mods
2791        self.group = group
2792        self.button_mask = button_mask
2793        self.valuator_mask = valuator_mask
2794        self.axisvalues = axisvalues
2795        return self
2796_events[5] = ButtonReleaseEvent
2797class MotionEvent(xcffib.Event):
2798    def __init__(self, unpacker):
2799        if isinstance(unpacker, xcffib.Protobj):
2800            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2801        xcffib.Event.__init__(self, unpacker)
2802        base = unpacker.offset
2803        self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags = unpacker.unpack("xx2xHIIIIIiiiiHHH2xI")
2804        self.mods = ModifierInfo(unpacker)
2805        unpacker.pad(GroupInfo)
2806        self.group = GroupInfo(unpacker)
2807        unpacker.pad("I")
2808        self.button_mask = xcffib.List(unpacker, "I", self.buttons_len)
2809        unpacker.pad("I")
2810        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
2811        unpacker.pad(FP3232)
2812        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
2813        self.bufsize = unpacker.offset - base
2814    def pack(self):
2815        buf = six.BytesIO()
2816        buf.write(struct.pack("=B", 6))
2817        buf.write(struct.pack("=x2xHIIIIIiiiiHHH2xI", self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags))
2818        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
2819        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
2820        buf.write(xcffib.pack_list(self.button_mask, "I"))
2821        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
2822        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
2823        buf_len = len(buf.getvalue())
2824        if buf_len < 32:
2825            buf.write(struct.pack("x" * (32 - buf_len)))
2826        return buf.getvalue()
2827    @classmethod
2828    def synthetic(cls, deviceid, time, detail, root, event, child, root_x, root_y, event_x, event_y, buttons_len, valuators_len, sourceid, flags, mods, group, button_mask, valuator_mask, axisvalues):
2829        self = cls.__new__(cls)
2830        self.deviceid = deviceid
2831        self.time = time
2832        self.detail = detail
2833        self.root = root
2834        self.event = event
2835        self.child = child
2836        self.root_x = root_x
2837        self.root_y = root_y
2838        self.event_x = event_x
2839        self.event_y = event_y
2840        self.buttons_len = buttons_len
2841        self.valuators_len = valuators_len
2842        self.sourceid = sourceid
2843        self.flags = flags
2844        self.mods = mods
2845        self.group = group
2846        self.button_mask = button_mask
2847        self.valuator_mask = valuator_mask
2848        self.axisvalues = axisvalues
2849        return self
2850_events[6] = MotionEvent
2851class NotifyMode:
2852    Normal = 0
2853    Grab = 1
2854    Ungrab = 2
2855    WhileGrabbed = 3
2856    PassiveGrab = 4
2857    PassiveUngrab = 5
2858class NotifyDetail:
2859    Ancestor = 0
2860    Virtual = 1
2861    Inferior = 2
2862    Nonlinear = 3
2863    NonlinearVirtual = 4
2864    Pointer = 5
2865    PointerRoot = 6
2866    _None = 7
2867class EnterEvent(xcffib.Event):
2868    def __init__(self, unpacker):
2869        if isinstance(unpacker, xcffib.Protobj):
2870            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2871        xcffib.Event.__init__(self, unpacker)
2872        base = unpacker.offset
2873        self.deviceid, self.time, self.sourceid, self.mode, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.same_screen, self.focus, self.buttons_len = unpacker.unpack("xx2xHIHBBIIIiiiiBBH")
2874        self.mods = ModifierInfo(unpacker)
2875        unpacker.pad(GroupInfo)
2876        self.group = GroupInfo(unpacker)
2877        unpacker.pad("I")
2878        self.buttons = xcffib.List(unpacker, "I", self.buttons_len)
2879        self.bufsize = unpacker.offset - base
2880    def pack(self):
2881        buf = six.BytesIO()
2882        buf.write(struct.pack("=B", 7))
2883        buf.write(struct.pack("=x2xHIHBBIIIiiiiBBH", self.deviceid, self.time, self.sourceid, self.mode, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.same_screen, self.focus, self.buttons_len))
2884        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
2885        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
2886        buf.write(xcffib.pack_list(self.buttons, "I"))
2887        buf_len = len(buf.getvalue())
2888        if buf_len < 32:
2889            buf.write(struct.pack("x" * (32 - buf_len)))
2890        return buf.getvalue()
2891    @classmethod
2892    def synthetic(cls, deviceid, time, sourceid, mode, detail, root, event, child, root_x, root_y, event_x, event_y, same_screen, focus, buttons_len, mods, group, buttons):
2893        self = cls.__new__(cls)
2894        self.deviceid = deviceid
2895        self.time = time
2896        self.sourceid = sourceid
2897        self.mode = mode
2898        self.detail = detail
2899        self.root = root
2900        self.event = event
2901        self.child = child
2902        self.root_x = root_x
2903        self.root_y = root_y
2904        self.event_x = event_x
2905        self.event_y = event_y
2906        self.same_screen = same_screen
2907        self.focus = focus
2908        self.buttons_len = buttons_len
2909        self.mods = mods
2910        self.group = group
2911        self.buttons = buttons
2912        return self
2913_events[7] = EnterEvent
2914class LeaveEvent(xcffib.Event):
2915    def __init__(self, unpacker):
2916        if isinstance(unpacker, xcffib.Protobj):
2917            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2918        xcffib.Event.__init__(self, unpacker)
2919        base = unpacker.offset
2920        self.deviceid, self.time, self.sourceid, self.mode, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.same_screen, self.focus, self.buttons_len = unpacker.unpack("xx2xHIHBBIIIiiiiBBH")
2921        self.mods = ModifierInfo(unpacker)
2922        unpacker.pad(GroupInfo)
2923        self.group = GroupInfo(unpacker)
2924        unpacker.pad("I")
2925        self.buttons = xcffib.List(unpacker, "I", self.buttons_len)
2926        self.bufsize = unpacker.offset - base
2927    def pack(self):
2928        buf = six.BytesIO()
2929        buf.write(struct.pack("=B", 8))
2930        buf.write(struct.pack("=x2xHIHBBIIIiiiiBBH", self.deviceid, self.time, self.sourceid, self.mode, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.same_screen, self.focus, self.buttons_len))
2931        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
2932        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
2933        buf.write(xcffib.pack_list(self.buttons, "I"))
2934        buf_len = len(buf.getvalue())
2935        if buf_len < 32:
2936            buf.write(struct.pack("x" * (32 - buf_len)))
2937        return buf.getvalue()
2938    @classmethod
2939    def synthetic(cls, deviceid, time, sourceid, mode, detail, root, event, child, root_x, root_y, event_x, event_y, same_screen, focus, buttons_len, mods, group, buttons):
2940        self = cls.__new__(cls)
2941        self.deviceid = deviceid
2942        self.time = time
2943        self.sourceid = sourceid
2944        self.mode = mode
2945        self.detail = detail
2946        self.root = root
2947        self.event = event
2948        self.child = child
2949        self.root_x = root_x
2950        self.root_y = root_y
2951        self.event_x = event_x
2952        self.event_y = event_y
2953        self.same_screen = same_screen
2954        self.focus = focus
2955        self.buttons_len = buttons_len
2956        self.mods = mods
2957        self.group = group
2958        self.buttons = buttons
2959        return self
2960_events[8] = LeaveEvent
2961class FocusInEvent(xcffib.Event):
2962    def __init__(self, unpacker):
2963        if isinstance(unpacker, xcffib.Protobj):
2964            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
2965        xcffib.Event.__init__(self, unpacker)
2966        base = unpacker.offset
2967        self.deviceid, self.time, self.sourceid, self.mode, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.same_screen, self.focus, self.buttons_len = unpacker.unpack("xx2xHIHBBIIIiiiiBBH")
2968        self.mods = ModifierInfo(unpacker)
2969        unpacker.pad(GroupInfo)
2970        self.group = GroupInfo(unpacker)
2971        unpacker.pad("I")
2972        self.buttons = xcffib.List(unpacker, "I", self.buttons_len)
2973        self.bufsize = unpacker.offset - base
2974    def pack(self):
2975        buf = six.BytesIO()
2976        buf.write(struct.pack("=B", 9))
2977        buf.write(struct.pack("=x2xHIHBBIIIiiiiBBH", self.deviceid, self.time, self.sourceid, self.mode, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.same_screen, self.focus, self.buttons_len))
2978        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
2979        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
2980        buf.write(xcffib.pack_list(self.buttons, "I"))
2981        buf_len = len(buf.getvalue())
2982        if buf_len < 32:
2983            buf.write(struct.pack("x" * (32 - buf_len)))
2984        return buf.getvalue()
2985    @classmethod
2986    def synthetic(cls, deviceid, time, sourceid, mode, detail, root, event, child, root_x, root_y, event_x, event_y, same_screen, focus, buttons_len, mods, group, buttons):
2987        self = cls.__new__(cls)
2988        self.deviceid = deviceid
2989        self.time = time
2990        self.sourceid = sourceid
2991        self.mode = mode
2992        self.detail = detail
2993        self.root = root
2994        self.event = event
2995        self.child = child
2996        self.root_x = root_x
2997        self.root_y = root_y
2998        self.event_x = event_x
2999        self.event_y = event_y
3000        self.same_screen = same_screen
3001        self.focus = focus
3002        self.buttons_len = buttons_len
3003        self.mods = mods
3004        self.group = group
3005        self.buttons = buttons
3006        return self
3007_events[9] = FocusInEvent
3008class FocusOutEvent(xcffib.Event):
3009    def __init__(self, unpacker):
3010        if isinstance(unpacker, xcffib.Protobj):
3011            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3012        xcffib.Event.__init__(self, unpacker)
3013        base = unpacker.offset
3014        self.deviceid, self.time, self.sourceid, self.mode, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.same_screen, self.focus, self.buttons_len = unpacker.unpack("xx2xHIHBBIIIiiiiBBH")
3015        self.mods = ModifierInfo(unpacker)
3016        unpacker.pad(GroupInfo)
3017        self.group = GroupInfo(unpacker)
3018        unpacker.pad("I")
3019        self.buttons = xcffib.List(unpacker, "I", self.buttons_len)
3020        self.bufsize = unpacker.offset - base
3021    def pack(self):
3022        buf = six.BytesIO()
3023        buf.write(struct.pack("=B", 10))
3024        buf.write(struct.pack("=x2xHIHBBIIIiiiiBBH", self.deviceid, self.time, self.sourceid, self.mode, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.same_screen, self.focus, self.buttons_len))
3025        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
3026        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
3027        buf.write(xcffib.pack_list(self.buttons, "I"))
3028        buf_len = len(buf.getvalue())
3029        if buf_len < 32:
3030            buf.write(struct.pack("x" * (32 - buf_len)))
3031        return buf.getvalue()
3032    @classmethod
3033    def synthetic(cls, deviceid, time, sourceid, mode, detail, root, event, child, root_x, root_y, event_x, event_y, same_screen, focus, buttons_len, mods, group, buttons):
3034        self = cls.__new__(cls)
3035        self.deviceid = deviceid
3036        self.time = time
3037        self.sourceid = sourceid
3038        self.mode = mode
3039        self.detail = detail
3040        self.root = root
3041        self.event = event
3042        self.child = child
3043        self.root_x = root_x
3044        self.root_y = root_y
3045        self.event_x = event_x
3046        self.event_y = event_y
3047        self.same_screen = same_screen
3048        self.focus = focus
3049        self.buttons_len = buttons_len
3050        self.mods = mods
3051        self.group = group
3052        self.buttons = buttons
3053        return self
3054_events[10] = FocusOutEvent
3055class HierarchyMask:
3056    MasterAdded = 1 << 0
3057    MasterRemoved = 1 << 1
3058    SlaveAdded = 1 << 2
3059    SlaveRemoved = 1 << 3
3060    SlaveAttached = 1 << 4
3061    SlaveDetached = 1 << 5
3062    DeviceEnabled = 1 << 6
3063    DeviceDisabled = 1 << 7
3064class HierarchyInfo(xcffib.Struct):
3065    def __init__(self, unpacker):
3066        if isinstance(unpacker, xcffib.Protobj):
3067            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3068        xcffib.Struct.__init__(self, unpacker)
3069        base = unpacker.offset
3070        self.deviceid, self.attachment, self.type, self.enabled, self.flags = unpacker.unpack("HHBB2xI")
3071        self.bufsize = unpacker.offset - base
3072    def pack(self):
3073        buf = six.BytesIO()
3074        buf.write(struct.pack("=HHBB2xI", self.deviceid, self.attachment, self.type, self.enabled, self.flags))
3075        return buf.getvalue()
3076    fixed_size = 12
3077    @classmethod
3078    def synthetic(cls, deviceid, attachment, type, enabled, flags):
3079        self = cls.__new__(cls)
3080        self.deviceid = deviceid
3081        self.attachment = attachment
3082        self.type = type
3083        self.enabled = enabled
3084        self.flags = flags
3085        return self
3086class HierarchyEvent(xcffib.Event):
3087    def __init__(self, unpacker):
3088        if isinstance(unpacker, xcffib.Protobj):
3089            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3090        xcffib.Event.__init__(self, unpacker)
3091        base = unpacker.offset
3092        self.deviceid, self.time, self.flags, self.num_infos = unpacker.unpack("xx2xHIIH10x")
3093        self.infos = xcffib.List(unpacker, HierarchyInfo, self.num_infos)
3094        self.bufsize = unpacker.offset - base
3095    def pack(self):
3096        buf = six.BytesIO()
3097        buf.write(struct.pack("=B", 11))
3098        buf.write(struct.pack("=x2xHIIH10x", self.deviceid, self.time, self.flags, self.num_infos))
3099        buf.write(xcffib.pack_list(self.infos, HierarchyInfo))
3100        buf_len = len(buf.getvalue())
3101        if buf_len < 32:
3102            buf.write(struct.pack("x" * (32 - buf_len)))
3103        return buf.getvalue()
3104    @classmethod
3105    def synthetic(cls, deviceid, time, flags, num_infos, infos):
3106        self = cls.__new__(cls)
3107        self.deviceid = deviceid
3108        self.time = time
3109        self.flags = flags
3110        self.num_infos = num_infos
3111        self.infos = infos
3112        return self
3113_events[11] = HierarchyEvent
3114class PropertyFlag:
3115    Deleted = 0
3116    Created = 1
3117    Modified = 2
3118class PropertyEvent(xcffib.Event):
3119    def __init__(self, unpacker):
3120        if isinstance(unpacker, xcffib.Protobj):
3121            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3122        xcffib.Event.__init__(self, unpacker)
3123        base = unpacker.offset
3124        self.deviceid, self.time, self.property, self.what = unpacker.unpack("xx2xHIIB11x")
3125        self.bufsize = unpacker.offset - base
3126    def pack(self):
3127        buf = six.BytesIO()
3128        buf.write(struct.pack("=B", 12))
3129        buf.write(struct.pack("=x2xHIIB11x", self.deviceid, self.time, self.property, self.what))
3130        buf_len = len(buf.getvalue())
3131        if buf_len < 32:
3132            buf.write(struct.pack("x" * (32 - buf_len)))
3133        return buf.getvalue()
3134    @classmethod
3135    def synthetic(cls, deviceid, time, property, what):
3136        self = cls.__new__(cls)
3137        self.deviceid = deviceid
3138        self.time = time
3139        self.property = property
3140        self.what = what
3141        return self
3142_events[12] = PropertyEvent
3143class RawKeyPressEvent(xcffib.Event):
3144    def __init__(self, unpacker):
3145        if isinstance(unpacker, xcffib.Protobj):
3146            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3147        xcffib.Event.__init__(self, unpacker)
3148        base = unpacker.offset
3149        self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags = unpacker.unpack("xx2xHIIHHI4x")
3150        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3151        unpacker.pad(FP3232)
3152        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3153        unpacker.pad(FP3232)
3154        self.axisvalues_raw = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3155        self.bufsize = unpacker.offset - base
3156    def pack(self):
3157        buf = six.BytesIO()
3158        buf.write(struct.pack("=B", 13))
3159        buf.write(struct.pack("=x2xHIIHHI4x", self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags))
3160        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3161        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3162        buf.write(xcffib.pack_list(self.axisvalues_raw, FP3232))
3163        buf_len = len(buf.getvalue())
3164        if buf_len < 32:
3165            buf.write(struct.pack("x" * (32 - buf_len)))
3166        return buf.getvalue()
3167    @classmethod
3168    def synthetic(cls, deviceid, time, detail, sourceid, valuators_len, flags, valuator_mask, axisvalues, axisvalues_raw):
3169        self = cls.__new__(cls)
3170        self.deviceid = deviceid
3171        self.time = time
3172        self.detail = detail
3173        self.sourceid = sourceid
3174        self.valuators_len = valuators_len
3175        self.flags = flags
3176        self.valuator_mask = valuator_mask
3177        self.axisvalues = axisvalues
3178        self.axisvalues_raw = axisvalues_raw
3179        return self
3180_events[13] = RawKeyPressEvent
3181class RawKeyReleaseEvent(xcffib.Event):
3182    def __init__(self, unpacker):
3183        if isinstance(unpacker, xcffib.Protobj):
3184            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3185        xcffib.Event.__init__(self, unpacker)
3186        base = unpacker.offset
3187        self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags = unpacker.unpack("xx2xHIIHHI4x")
3188        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3189        unpacker.pad(FP3232)
3190        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3191        unpacker.pad(FP3232)
3192        self.axisvalues_raw = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3193        self.bufsize = unpacker.offset - base
3194    def pack(self):
3195        buf = six.BytesIO()
3196        buf.write(struct.pack("=B", 14))
3197        buf.write(struct.pack("=x2xHIIHHI4x", self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags))
3198        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3199        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3200        buf.write(xcffib.pack_list(self.axisvalues_raw, FP3232))
3201        buf_len = len(buf.getvalue())
3202        if buf_len < 32:
3203            buf.write(struct.pack("x" * (32 - buf_len)))
3204        return buf.getvalue()
3205    @classmethod
3206    def synthetic(cls, deviceid, time, detail, sourceid, valuators_len, flags, valuator_mask, axisvalues, axisvalues_raw):
3207        self = cls.__new__(cls)
3208        self.deviceid = deviceid
3209        self.time = time
3210        self.detail = detail
3211        self.sourceid = sourceid
3212        self.valuators_len = valuators_len
3213        self.flags = flags
3214        self.valuator_mask = valuator_mask
3215        self.axisvalues = axisvalues
3216        self.axisvalues_raw = axisvalues_raw
3217        return self
3218_events[14] = RawKeyReleaseEvent
3219class RawButtonPressEvent(xcffib.Event):
3220    def __init__(self, unpacker):
3221        if isinstance(unpacker, xcffib.Protobj):
3222            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3223        xcffib.Event.__init__(self, unpacker)
3224        base = unpacker.offset
3225        self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags = unpacker.unpack("xx2xHIIHHI4x")
3226        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3227        unpacker.pad(FP3232)
3228        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3229        unpacker.pad(FP3232)
3230        self.axisvalues_raw = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3231        self.bufsize = unpacker.offset - base
3232    def pack(self):
3233        buf = six.BytesIO()
3234        buf.write(struct.pack("=B", 15))
3235        buf.write(struct.pack("=x2xHIIHHI4x", self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags))
3236        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3237        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3238        buf.write(xcffib.pack_list(self.axisvalues_raw, FP3232))
3239        buf_len = len(buf.getvalue())
3240        if buf_len < 32:
3241            buf.write(struct.pack("x" * (32 - buf_len)))
3242        return buf.getvalue()
3243    @classmethod
3244    def synthetic(cls, deviceid, time, detail, sourceid, valuators_len, flags, valuator_mask, axisvalues, axisvalues_raw):
3245        self = cls.__new__(cls)
3246        self.deviceid = deviceid
3247        self.time = time
3248        self.detail = detail
3249        self.sourceid = sourceid
3250        self.valuators_len = valuators_len
3251        self.flags = flags
3252        self.valuator_mask = valuator_mask
3253        self.axisvalues = axisvalues
3254        self.axisvalues_raw = axisvalues_raw
3255        return self
3256_events[15] = RawButtonPressEvent
3257class RawButtonReleaseEvent(xcffib.Event):
3258    def __init__(self, unpacker):
3259        if isinstance(unpacker, xcffib.Protobj):
3260            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3261        xcffib.Event.__init__(self, unpacker)
3262        base = unpacker.offset
3263        self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags = unpacker.unpack("xx2xHIIHHI4x")
3264        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3265        unpacker.pad(FP3232)
3266        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3267        unpacker.pad(FP3232)
3268        self.axisvalues_raw = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3269        self.bufsize = unpacker.offset - base
3270    def pack(self):
3271        buf = six.BytesIO()
3272        buf.write(struct.pack("=B", 16))
3273        buf.write(struct.pack("=x2xHIIHHI4x", self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags))
3274        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3275        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3276        buf.write(xcffib.pack_list(self.axisvalues_raw, FP3232))
3277        buf_len = len(buf.getvalue())
3278        if buf_len < 32:
3279            buf.write(struct.pack("x" * (32 - buf_len)))
3280        return buf.getvalue()
3281    @classmethod
3282    def synthetic(cls, deviceid, time, detail, sourceid, valuators_len, flags, valuator_mask, axisvalues, axisvalues_raw):
3283        self = cls.__new__(cls)
3284        self.deviceid = deviceid
3285        self.time = time
3286        self.detail = detail
3287        self.sourceid = sourceid
3288        self.valuators_len = valuators_len
3289        self.flags = flags
3290        self.valuator_mask = valuator_mask
3291        self.axisvalues = axisvalues
3292        self.axisvalues_raw = axisvalues_raw
3293        return self
3294_events[16] = RawButtonReleaseEvent
3295class RawMotionEvent(xcffib.Event):
3296    def __init__(self, unpacker):
3297        if isinstance(unpacker, xcffib.Protobj):
3298            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3299        xcffib.Event.__init__(self, unpacker)
3300        base = unpacker.offset
3301        self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags = unpacker.unpack("xx2xHIIHHI4x")
3302        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3303        unpacker.pad(FP3232)
3304        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3305        unpacker.pad(FP3232)
3306        self.axisvalues_raw = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3307        self.bufsize = unpacker.offset - base
3308    def pack(self):
3309        buf = six.BytesIO()
3310        buf.write(struct.pack("=B", 17))
3311        buf.write(struct.pack("=x2xHIIHHI4x", self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags))
3312        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3313        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3314        buf.write(xcffib.pack_list(self.axisvalues_raw, FP3232))
3315        buf_len = len(buf.getvalue())
3316        if buf_len < 32:
3317            buf.write(struct.pack("x" * (32 - buf_len)))
3318        return buf.getvalue()
3319    @classmethod
3320    def synthetic(cls, deviceid, time, detail, sourceid, valuators_len, flags, valuator_mask, axisvalues, axisvalues_raw):
3321        self = cls.__new__(cls)
3322        self.deviceid = deviceid
3323        self.time = time
3324        self.detail = detail
3325        self.sourceid = sourceid
3326        self.valuators_len = valuators_len
3327        self.flags = flags
3328        self.valuator_mask = valuator_mask
3329        self.axisvalues = axisvalues
3330        self.axisvalues_raw = axisvalues_raw
3331        return self
3332_events[17] = RawMotionEvent
3333class TouchEventFlags:
3334    TouchPendingEnd = 1 << 16
3335    TouchEmulatingPointer = 1 << 17
3336class TouchBeginEvent(xcffib.Event):
3337    def __init__(self, unpacker):
3338        if isinstance(unpacker, xcffib.Protobj):
3339            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3340        xcffib.Event.__init__(self, unpacker)
3341        base = unpacker.offset
3342        self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags = unpacker.unpack("xx2xHIIIIIiiiiHHH2xI")
3343        self.mods = ModifierInfo(unpacker)
3344        unpacker.pad(GroupInfo)
3345        self.group = GroupInfo(unpacker)
3346        unpacker.pad("I")
3347        self.button_mask = xcffib.List(unpacker, "I", self.buttons_len)
3348        unpacker.pad("I")
3349        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3350        unpacker.pad(FP3232)
3351        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3352        self.bufsize = unpacker.offset - base
3353    def pack(self):
3354        buf = six.BytesIO()
3355        buf.write(struct.pack("=B", 18))
3356        buf.write(struct.pack("=x2xHIIIIIiiiiHHH2xI", self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags))
3357        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
3358        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
3359        buf.write(xcffib.pack_list(self.button_mask, "I"))
3360        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3361        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3362        buf_len = len(buf.getvalue())
3363        if buf_len < 32:
3364            buf.write(struct.pack("x" * (32 - buf_len)))
3365        return buf.getvalue()
3366    @classmethod
3367    def synthetic(cls, deviceid, time, detail, root, event, child, root_x, root_y, event_x, event_y, buttons_len, valuators_len, sourceid, flags, mods, group, button_mask, valuator_mask, axisvalues):
3368        self = cls.__new__(cls)
3369        self.deviceid = deviceid
3370        self.time = time
3371        self.detail = detail
3372        self.root = root
3373        self.event = event
3374        self.child = child
3375        self.root_x = root_x
3376        self.root_y = root_y
3377        self.event_x = event_x
3378        self.event_y = event_y
3379        self.buttons_len = buttons_len
3380        self.valuators_len = valuators_len
3381        self.sourceid = sourceid
3382        self.flags = flags
3383        self.mods = mods
3384        self.group = group
3385        self.button_mask = button_mask
3386        self.valuator_mask = valuator_mask
3387        self.axisvalues = axisvalues
3388        return self
3389_events[18] = TouchBeginEvent
3390class TouchUpdateEvent(xcffib.Event):
3391    def __init__(self, unpacker):
3392        if isinstance(unpacker, xcffib.Protobj):
3393            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3394        xcffib.Event.__init__(self, unpacker)
3395        base = unpacker.offset
3396        self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags = unpacker.unpack("xx2xHIIIIIiiiiHHH2xI")
3397        self.mods = ModifierInfo(unpacker)
3398        unpacker.pad(GroupInfo)
3399        self.group = GroupInfo(unpacker)
3400        unpacker.pad("I")
3401        self.button_mask = xcffib.List(unpacker, "I", self.buttons_len)
3402        unpacker.pad("I")
3403        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3404        unpacker.pad(FP3232)
3405        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3406        self.bufsize = unpacker.offset - base
3407    def pack(self):
3408        buf = six.BytesIO()
3409        buf.write(struct.pack("=B", 19))
3410        buf.write(struct.pack("=x2xHIIIIIiiiiHHH2xI", self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags))
3411        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
3412        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
3413        buf.write(xcffib.pack_list(self.button_mask, "I"))
3414        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3415        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3416        buf_len = len(buf.getvalue())
3417        if buf_len < 32:
3418            buf.write(struct.pack("x" * (32 - buf_len)))
3419        return buf.getvalue()
3420    @classmethod
3421    def synthetic(cls, deviceid, time, detail, root, event, child, root_x, root_y, event_x, event_y, buttons_len, valuators_len, sourceid, flags, mods, group, button_mask, valuator_mask, axisvalues):
3422        self = cls.__new__(cls)
3423        self.deviceid = deviceid
3424        self.time = time
3425        self.detail = detail
3426        self.root = root
3427        self.event = event
3428        self.child = child
3429        self.root_x = root_x
3430        self.root_y = root_y
3431        self.event_x = event_x
3432        self.event_y = event_y
3433        self.buttons_len = buttons_len
3434        self.valuators_len = valuators_len
3435        self.sourceid = sourceid
3436        self.flags = flags
3437        self.mods = mods
3438        self.group = group
3439        self.button_mask = button_mask
3440        self.valuator_mask = valuator_mask
3441        self.axisvalues = axisvalues
3442        return self
3443_events[19] = TouchUpdateEvent
3444class TouchEndEvent(xcffib.Event):
3445    def __init__(self, unpacker):
3446        if isinstance(unpacker, xcffib.Protobj):
3447            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3448        xcffib.Event.__init__(self, unpacker)
3449        base = unpacker.offset
3450        self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags = unpacker.unpack("xx2xHIIIIIiiiiHHH2xI")
3451        self.mods = ModifierInfo(unpacker)
3452        unpacker.pad(GroupInfo)
3453        self.group = GroupInfo(unpacker)
3454        unpacker.pad("I")
3455        self.button_mask = xcffib.List(unpacker, "I", self.buttons_len)
3456        unpacker.pad("I")
3457        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3458        unpacker.pad(FP3232)
3459        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3460        self.bufsize = unpacker.offset - base
3461    def pack(self):
3462        buf = six.BytesIO()
3463        buf.write(struct.pack("=B", 20))
3464        buf.write(struct.pack("=x2xHIIIIIiiiiHHH2xI", self.deviceid, self.time, self.detail, self.root, self.event, self.child, self.root_x, self.root_y, self.event_x, self.event_y, self.buttons_len, self.valuators_len, self.sourceid, self.flags))
3465        buf.write(self.mods.pack() if hasattr(self.mods, "pack") else ModifierInfo.synthetic(*self.mods).pack())
3466        buf.write(self.group.pack() if hasattr(self.group, "pack") else GroupInfo.synthetic(*self.group).pack())
3467        buf.write(xcffib.pack_list(self.button_mask, "I"))
3468        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3469        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3470        buf_len = len(buf.getvalue())
3471        if buf_len < 32:
3472            buf.write(struct.pack("x" * (32 - buf_len)))
3473        return buf.getvalue()
3474    @classmethod
3475    def synthetic(cls, deviceid, time, detail, root, event, child, root_x, root_y, event_x, event_y, buttons_len, valuators_len, sourceid, flags, mods, group, button_mask, valuator_mask, axisvalues):
3476        self = cls.__new__(cls)
3477        self.deviceid = deviceid
3478        self.time = time
3479        self.detail = detail
3480        self.root = root
3481        self.event = event
3482        self.child = child
3483        self.root_x = root_x
3484        self.root_y = root_y
3485        self.event_x = event_x
3486        self.event_y = event_y
3487        self.buttons_len = buttons_len
3488        self.valuators_len = valuators_len
3489        self.sourceid = sourceid
3490        self.flags = flags
3491        self.mods = mods
3492        self.group = group
3493        self.button_mask = button_mask
3494        self.valuator_mask = valuator_mask
3495        self.axisvalues = axisvalues
3496        return self
3497_events[20] = TouchEndEvent
3498class TouchOwnershipFlags:
3499    _None = 0
3500class TouchOwnershipEvent(xcffib.Event):
3501    def __init__(self, unpacker):
3502        if isinstance(unpacker, xcffib.Protobj):
3503            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3504        xcffib.Event.__init__(self, unpacker)
3505        base = unpacker.offset
3506        self.deviceid, self.time, self.touchid, self.root, self.event, self.child, self.sourceid, self.flags = unpacker.unpack("xx2xHIIIIIH2xI8x")
3507        self.bufsize = unpacker.offset - base
3508    def pack(self):
3509        buf = six.BytesIO()
3510        buf.write(struct.pack("=B", 21))
3511        buf.write(struct.pack("=x2xHIIIIIH2xI8x", self.deviceid, self.time, self.touchid, self.root, self.event, self.child, self.sourceid, self.flags))
3512        buf_len = len(buf.getvalue())
3513        if buf_len < 32:
3514            buf.write(struct.pack("x" * (32 - buf_len)))
3515        return buf.getvalue()
3516    @classmethod
3517    def synthetic(cls, deviceid, time, touchid, root, event, child, sourceid, flags):
3518        self = cls.__new__(cls)
3519        self.deviceid = deviceid
3520        self.time = time
3521        self.touchid = touchid
3522        self.root = root
3523        self.event = event
3524        self.child = child
3525        self.sourceid = sourceid
3526        self.flags = flags
3527        return self
3528_events[21] = TouchOwnershipEvent
3529class RawTouchBeginEvent(xcffib.Event):
3530    def __init__(self, unpacker):
3531        if isinstance(unpacker, xcffib.Protobj):
3532            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3533        xcffib.Event.__init__(self, unpacker)
3534        base = unpacker.offset
3535        self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags = unpacker.unpack("xx2xHIIHHI4x")
3536        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3537        unpacker.pad(FP3232)
3538        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3539        unpacker.pad(FP3232)
3540        self.axisvalues_raw = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3541        self.bufsize = unpacker.offset - base
3542    def pack(self):
3543        buf = six.BytesIO()
3544        buf.write(struct.pack("=B", 22))
3545        buf.write(struct.pack("=x2xHIIHHI4x", self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags))
3546        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3547        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3548        buf.write(xcffib.pack_list(self.axisvalues_raw, FP3232))
3549        buf_len = len(buf.getvalue())
3550        if buf_len < 32:
3551            buf.write(struct.pack("x" * (32 - buf_len)))
3552        return buf.getvalue()
3553    @classmethod
3554    def synthetic(cls, deviceid, time, detail, sourceid, valuators_len, flags, valuator_mask, axisvalues, axisvalues_raw):
3555        self = cls.__new__(cls)
3556        self.deviceid = deviceid
3557        self.time = time
3558        self.detail = detail
3559        self.sourceid = sourceid
3560        self.valuators_len = valuators_len
3561        self.flags = flags
3562        self.valuator_mask = valuator_mask
3563        self.axisvalues = axisvalues
3564        self.axisvalues_raw = axisvalues_raw
3565        return self
3566_events[22] = RawTouchBeginEvent
3567class RawTouchUpdateEvent(xcffib.Event):
3568    def __init__(self, unpacker):
3569        if isinstance(unpacker, xcffib.Protobj):
3570            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3571        xcffib.Event.__init__(self, unpacker)
3572        base = unpacker.offset
3573        self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags = unpacker.unpack("xx2xHIIHHI4x")
3574        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3575        unpacker.pad(FP3232)
3576        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3577        unpacker.pad(FP3232)
3578        self.axisvalues_raw = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3579        self.bufsize = unpacker.offset - base
3580    def pack(self):
3581        buf = six.BytesIO()
3582        buf.write(struct.pack("=B", 23))
3583        buf.write(struct.pack("=x2xHIIHHI4x", self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags))
3584        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3585        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3586        buf.write(xcffib.pack_list(self.axisvalues_raw, FP3232))
3587        buf_len = len(buf.getvalue())
3588        if buf_len < 32:
3589            buf.write(struct.pack("x" * (32 - buf_len)))
3590        return buf.getvalue()
3591    @classmethod
3592    def synthetic(cls, deviceid, time, detail, sourceid, valuators_len, flags, valuator_mask, axisvalues, axisvalues_raw):
3593        self = cls.__new__(cls)
3594        self.deviceid = deviceid
3595        self.time = time
3596        self.detail = detail
3597        self.sourceid = sourceid
3598        self.valuators_len = valuators_len
3599        self.flags = flags
3600        self.valuator_mask = valuator_mask
3601        self.axisvalues = axisvalues
3602        self.axisvalues_raw = axisvalues_raw
3603        return self
3604_events[23] = RawTouchUpdateEvent
3605class RawTouchEndEvent(xcffib.Event):
3606    def __init__(self, unpacker):
3607        if isinstance(unpacker, xcffib.Protobj):
3608            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3609        xcffib.Event.__init__(self, unpacker)
3610        base = unpacker.offset
3611        self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags = unpacker.unpack("xx2xHIIHHI4x")
3612        self.valuator_mask = xcffib.List(unpacker, "I", self.valuators_len)
3613        unpacker.pad(FP3232)
3614        self.axisvalues = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3615        unpacker.pad(FP3232)
3616        self.axisvalues_raw = xcffib.List(unpacker, FP3232, sum(self.valuator_mask))
3617        self.bufsize = unpacker.offset - base
3618    def pack(self):
3619        buf = six.BytesIO()
3620        buf.write(struct.pack("=B", 24))
3621        buf.write(struct.pack("=x2xHIIHHI4x", self.deviceid, self.time, self.detail, self.sourceid, self.valuators_len, self.flags))
3622        buf.write(xcffib.pack_list(self.valuator_mask, "I"))
3623        buf.write(xcffib.pack_list(self.axisvalues, FP3232))
3624        buf.write(xcffib.pack_list(self.axisvalues_raw, FP3232))
3625        buf_len = len(buf.getvalue())
3626        if buf_len < 32:
3627            buf.write(struct.pack("x" * (32 - buf_len)))
3628        return buf.getvalue()
3629    @classmethod
3630    def synthetic(cls, deviceid, time, detail, sourceid, valuators_len, flags, valuator_mask, axisvalues, axisvalues_raw):
3631        self = cls.__new__(cls)
3632        self.deviceid = deviceid
3633        self.time = time
3634        self.detail = detail
3635        self.sourceid = sourceid
3636        self.valuators_len = valuators_len
3637        self.flags = flags
3638        self.valuator_mask = valuator_mask
3639        self.axisvalues = axisvalues
3640        self.axisvalues_raw = axisvalues_raw
3641        return self
3642_events[24] = RawTouchEndEvent
3643class BarrierFlags:
3644    PointerReleased = 1 << 0
3645    DeviceIsGrabbed = 1 << 1
3646class BarrierHitEvent(xcffib.Event):
3647    def __init__(self, unpacker):
3648        if isinstance(unpacker, xcffib.Protobj):
3649            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3650        xcffib.Event.__init__(self, unpacker)
3651        base = unpacker.offset
3652        self.deviceid, self.time, self.eventid, self.root, self.event, self.barrier, self.dtime, self.flags, self.sourceid, self.root_x, self.root_y = unpacker.unpack("xx2xHIIIIIIIH2xii")
3653        self.dx = FP3232(unpacker)
3654        unpacker.pad(FP3232)
3655        self.dy = FP3232(unpacker)
3656        self.bufsize = unpacker.offset - base
3657    def pack(self):
3658        buf = six.BytesIO()
3659        buf.write(struct.pack("=B", 25))
3660        buf.write(struct.pack("=x2xHIIIIIIIH2xii", self.deviceid, self.time, self.eventid, self.root, self.event, self.barrier, self.dtime, self.flags, self.sourceid, self.root_x, self.root_y))
3661        buf.write(self.dx.pack() if hasattr(self.dx, "pack") else FP3232.synthetic(*self.dx).pack())
3662        buf.write(self.dy.pack() if hasattr(self.dy, "pack") else FP3232.synthetic(*self.dy).pack())
3663        buf_len = len(buf.getvalue())
3664        if buf_len < 32:
3665            buf.write(struct.pack("x" * (32 - buf_len)))
3666        return buf.getvalue()
3667    @classmethod
3668    def synthetic(cls, deviceid, time, eventid, root, event, barrier, dtime, flags, sourceid, root_x, root_y, dx, dy):
3669        self = cls.__new__(cls)
3670        self.deviceid = deviceid
3671        self.time = time
3672        self.eventid = eventid
3673        self.root = root
3674        self.event = event
3675        self.barrier = barrier
3676        self.dtime = dtime
3677        self.flags = flags
3678        self.sourceid = sourceid
3679        self.root_x = root_x
3680        self.root_y = root_y
3681        self.dx = dx
3682        self.dy = dy
3683        return self
3684_events[25] = BarrierHitEvent
3685class BarrierLeaveEvent(xcffib.Event):
3686    def __init__(self, unpacker):
3687        if isinstance(unpacker, xcffib.Protobj):
3688            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3689        xcffib.Event.__init__(self, unpacker)
3690        base = unpacker.offset
3691        self.deviceid, self.time, self.eventid, self.root, self.event, self.barrier, self.dtime, self.flags, self.sourceid, self.root_x, self.root_y = unpacker.unpack("xx2xHIIIIIIIH2xii")
3692        self.dx = FP3232(unpacker)
3693        unpacker.pad(FP3232)
3694        self.dy = FP3232(unpacker)
3695        self.bufsize = unpacker.offset - base
3696    def pack(self):
3697        buf = six.BytesIO()
3698        buf.write(struct.pack("=B", 26))
3699        buf.write(struct.pack("=x2xHIIIIIIIH2xii", self.deviceid, self.time, self.eventid, self.root, self.event, self.barrier, self.dtime, self.flags, self.sourceid, self.root_x, self.root_y))
3700        buf.write(self.dx.pack() if hasattr(self.dx, "pack") else FP3232.synthetic(*self.dx).pack())
3701        buf.write(self.dy.pack() if hasattr(self.dy, "pack") else FP3232.synthetic(*self.dy).pack())
3702        buf_len = len(buf.getvalue())
3703        if buf_len < 32:
3704            buf.write(struct.pack("x" * (32 - buf_len)))
3705        return buf.getvalue()
3706    @classmethod
3707    def synthetic(cls, deviceid, time, eventid, root, event, barrier, dtime, flags, sourceid, root_x, root_y, dx, dy):
3708        self = cls.__new__(cls)
3709        self.deviceid = deviceid
3710        self.time = time
3711        self.eventid = eventid
3712        self.root = root
3713        self.event = event
3714        self.barrier = barrier
3715        self.dtime = dtime
3716        self.flags = flags
3717        self.sourceid = sourceid
3718        self.root_x = root_x
3719        self.root_y = root_y
3720        self.dx = dx
3721        self.dy = dy
3722        return self
3723_events[26] = BarrierLeaveEvent
3724class EventForSend(xcffib.Buffer):
3725    pass
3726class DeviceError(xcffib.Error):
3727    def __init__(self, unpacker):
3728        if isinstance(unpacker, xcffib.Protobj):
3729            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3730        xcffib.Error.__init__(self, unpacker)
3731        base = unpacker.offset
3732        unpacker.unpack("xx2x")
3733        self.bufsize = unpacker.offset - base
3734    def pack(self):
3735        buf = six.BytesIO()
3736        buf.write(struct.pack("=B", 0))
3737        buf.write(struct.pack("=x2x"))
3738        return buf.getvalue()
3739BadDevice = DeviceError
3740_errors[0] = DeviceError
3741class EventError(xcffib.Error):
3742    def __init__(self, unpacker):
3743        if isinstance(unpacker, xcffib.Protobj):
3744            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3745        xcffib.Error.__init__(self, unpacker)
3746        base = unpacker.offset
3747        unpacker.unpack("xx2x")
3748        self.bufsize = unpacker.offset - base
3749    def pack(self):
3750        buf = six.BytesIO()
3751        buf.write(struct.pack("=B", 1))
3752        buf.write(struct.pack("=x2x"))
3753        return buf.getvalue()
3754BadEvent = EventError
3755_errors[1] = EventError
3756class ModeError(xcffib.Error):
3757    def __init__(self, unpacker):
3758        if isinstance(unpacker, xcffib.Protobj):
3759            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3760        xcffib.Error.__init__(self, unpacker)
3761        base = unpacker.offset
3762        unpacker.unpack("xx2x")
3763        self.bufsize = unpacker.offset - base
3764    def pack(self):
3765        buf = six.BytesIO()
3766        buf.write(struct.pack("=B", 2))
3767        buf.write(struct.pack("=x2x"))
3768        return buf.getvalue()
3769BadMode = ModeError
3770_errors[2] = ModeError
3771class DeviceBusyError(xcffib.Error):
3772    def __init__(self, unpacker):
3773        if isinstance(unpacker, xcffib.Protobj):
3774            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3775        xcffib.Error.__init__(self, unpacker)
3776        base = unpacker.offset
3777        unpacker.unpack("xx2x")
3778        self.bufsize = unpacker.offset - base
3779    def pack(self):
3780        buf = six.BytesIO()
3781        buf.write(struct.pack("=B", 3))
3782        buf.write(struct.pack("=x2x"))
3783        return buf.getvalue()
3784BadDeviceBusy = DeviceBusyError
3785_errors[3] = DeviceBusyError
3786class ClassError(xcffib.Error):
3787    def __init__(self, unpacker):
3788        if isinstance(unpacker, xcffib.Protobj):
3789            unpacker = xcffib.MemoryUnpacker(unpacker.pack())
3790        xcffib.Error.__init__(self, unpacker)
3791        base = unpacker.offset
3792        unpacker.unpack("xx2x")
3793        self.bufsize = unpacker.offset - base
3794    def pack(self):
3795        buf = six.BytesIO()
3796        buf.write(struct.pack("=B", 4))
3797        buf.write(struct.pack("=x2x"))
3798        return buf.getvalue()
3799BadClass = ClassError
3800_errors[4] = ClassError
3801class xinputExtension(xcffib.Extension):
3802    def GetExtensionVersion(self, name_len, name, is_checked=True):
3803        buf = six.BytesIO()
3804        buf.write(struct.pack("=xx2xH2x", name_len))
3805        buf.write(xcffib.pack_list(name, "c"))
3806        return self.send_request(1, buf, GetExtensionVersionCookie, is_checked=is_checked)
3807    def ListInputDevices(self, is_checked=False):
3808        buf = six.BytesIO()
3809        buf.write(struct.pack("=xx2x"))
3810        return self.send_request(2, buf, is_checked=is_checked)
3811    def OpenDevice(self, device_id, is_checked=False):
3812        buf = six.BytesIO()
3813        buf.write(struct.pack("=xx2xB3x", device_id))
3814        return self.send_request(3, buf, is_checked=is_checked)
3815    def CloseDevice(self, device_id, is_checked=False):
3816        buf = six.BytesIO()
3817        buf.write(struct.pack("=xx2xB3x", device_id))
3818        return self.send_request(4, buf, is_checked=is_checked)
3819    def SetDeviceMode(self, device_id, mode, is_checked=True):
3820        buf = six.BytesIO()
3821        buf.write(struct.pack("=xx2xBB2x", device_id, mode))
3822        return self.send_request(5, buf, SetDeviceModeCookie, is_checked=is_checked)
3823    def SelectExtensionEvent(self, window, num_classes, classes, is_checked=False):
3824        buf = six.BytesIO()
3825        buf.write(struct.pack("=xx2xIH2x", window, num_classes))
3826        buf.write(xcffib.pack_list(classes, "I"))
3827        return self.send_request(6, buf, is_checked=is_checked)
3828    def GetSelectedExtensionEvents(self, window, is_checked=True):
3829        buf = six.BytesIO()
3830        buf.write(struct.pack("=xx2xI", window))
3831        return self.send_request(7, buf, GetSelectedExtensionEventsCookie, is_checked=is_checked)
3832    def ChangeDeviceDontPropagateList(self, window, num_classes, mode, classes, is_checked=False):
3833        buf = six.BytesIO()
3834        buf.write(struct.pack("=xx2xIHBx", window, num_classes, mode))
3835        buf.write(xcffib.pack_list(classes, "I"))
3836        return self.send_request(8, buf, is_checked=is_checked)
3837    def GetDeviceDontPropagateList(self, window, is_checked=True):
3838        buf = six.BytesIO()
3839        buf.write(struct.pack("=xx2xI", window))
3840        return self.send_request(9, buf, GetDeviceDontPropagateListCookie, is_checked=is_checked)
3841    def GetDeviceMotionEvents(self, start, stop, device_id, is_checked=True):
3842        buf = six.BytesIO()
3843        buf.write(struct.pack("=xx2xIIB3x", start, stop, device_id))
3844        return self.send_request(10, buf, GetDeviceMotionEventsCookie, is_checked=is_checked)
3845    def ChangeKeyboardDevice(self, device_id, is_checked=True):
3846        buf = six.BytesIO()
3847        buf.write(struct.pack("=xx2xB3x", device_id))
3848        return self.send_request(11, buf, ChangeKeyboardDeviceCookie, is_checked=is_checked)
3849    def ChangePointerDevice(self, x_axis, y_axis, device_id, is_checked=True):
3850        buf = six.BytesIO()
3851        buf.write(struct.pack("=xx2xBBBx", x_axis, y_axis, device_id))
3852        return self.send_request(12, buf, ChangePointerDeviceCookie, is_checked=is_checked)
3853    def GrabDevice(self, grab_window, time, num_classes, this_device_mode, other_device_mode, owner_events, device_id, classes, is_checked=True):
3854        buf = six.BytesIO()
3855        buf.write(struct.pack("=xx2xIIHBBBB2x", grab_window, time, num_classes, this_device_mode, other_device_mode, owner_events, device_id))
3856        buf.write(xcffib.pack_list(classes, "I"))
3857        return self.send_request(13, buf, GrabDeviceCookie, is_checked=is_checked)
3858    def UngrabDevice(self, time, device_id, is_checked=False):
3859        buf = six.BytesIO()
3860        buf.write(struct.pack("=xx2xIB3x", time, device_id))
3861        return self.send_request(14, buf, is_checked=is_checked)
3862    def GrabDeviceKey(self, grab_window, num_classes, modifiers, modifier_device, grabbed_device, key, this_device_mode, other_device_mode, owner_events, classes, is_checked=False):
3863        buf = six.BytesIO()
3864        buf.write(struct.pack("=xx2xIHHBBBBBB2x", grab_window, num_classes, modifiers, modifier_device, grabbed_device, key, this_device_mode, other_device_mode, owner_events))
3865        buf.write(xcffib.pack_list(classes, "I"))
3866        return self.send_request(15, buf, is_checked=is_checked)
3867    def UngrabDeviceKey(self, grabWindow, modifiers, modifier_device, key, grabbed_device, is_checked=False):
3868        buf = six.BytesIO()
3869        buf.write(struct.pack("=xx2xIHBBB", grabWindow, modifiers, modifier_device, key, grabbed_device))
3870        return self.send_request(16, buf, is_checked=is_checked)
3871    def GrabDeviceButton(self, grab_window, grabbed_device, modifier_device, num_classes, modifiers, this_device_mode, other_device_mode, button, owner_events, classes, is_checked=False):
3872        buf = six.BytesIO()
3873        buf.write(struct.pack("=xx2xIBBHHBBBB2x", grab_window, grabbed_device, modifier_device, num_classes, modifiers, this_device_mode, other_device_mode, button, owner_events))
3874        buf.write(xcffib.pack_list(classes, "I"))
3875        return self.send_request(17, buf, is_checked=is_checked)
3876    def UngrabDeviceButton(self, grab_window, modifiers, modifier_device, button, grabbed_device, is_checked=False):
3877        buf = six.BytesIO()
3878        buf.write(struct.pack("=xx2xIHBBB3x", grab_window, modifiers, modifier_device, button, grabbed_device))
3879        return self.send_request(18, buf, is_checked=is_checked)
3880    def AllowDeviceEvents(self, time, mode, device_id, is_checked=False):
3881        buf = six.BytesIO()
3882        buf.write(struct.pack("=xx2xIBB2x", time, mode, device_id))
3883        return self.send_request(19, buf, is_checked=is_checked)
3884    def GetDeviceFocus(self, device_id, is_checked=True):
3885        buf = six.BytesIO()
3886        buf.write(struct.pack("=xx2xB3x", device_id))
3887        return self.send_request(20, buf, GetDeviceFocusCookie, is_checked=is_checked)
3888    def SetDeviceFocus(self, focus, time, revert_to, device_id, is_checked=False):
3889        buf = six.BytesIO()
3890        buf.write(struct.pack("=xx2xIIBB2x", focus, time, revert_to, device_id))
3891        return self.send_request(21, buf, is_checked=is_checked)
3892    def GetFeedbackControl(self, device_id, is_checked=True):
3893        buf = six.BytesIO()
3894        buf.write(struct.pack("=xx2xB3x", device_id))
3895        return self.send_request(22, buf, GetFeedbackControlCookie, is_checked=is_checked)
3896    def ChangeFeedbackControl(self, mask, device_id, feedback_id, feedback, is_checked=False):
3897        buf = six.BytesIO()
3898        buf.write(struct.pack("=xx2xIBB2x", mask, device_id, feedback_id))
3899        buf.write(feedback.pack() if hasattr(feedback, "pack") else FeedbackCtl.synthetic(*feedback).pack())
3900        return self.send_request(23, buf, is_checked=is_checked)
3901    def GetDeviceKeyMapping(self, device_id, first_keycode, count, is_checked=True):
3902        buf = six.BytesIO()
3903        buf.write(struct.pack("=xx2xBBBx", device_id, first_keycode, count))
3904        return self.send_request(24, buf, GetDeviceKeyMappingCookie, is_checked=is_checked)
3905    def ChangeDeviceKeyMapping(self, device_id, first_keycode, keysyms_per_keycode, keycode_count, keysyms, is_checked=False):
3906        buf = six.BytesIO()
3907        buf.write(struct.pack("=xx2xBBBB", device_id, first_keycode, keysyms_per_keycode, keycode_count))
3908        buf.write(xcffib.pack_list(keysyms, "I"))
3909        return self.send_request(25, buf, is_checked=is_checked)
3910    def GetDeviceModifierMapping(self, device_id, is_checked=True):
3911        buf = six.BytesIO()
3912        buf.write(struct.pack("=xx2xB3x", device_id))
3913        return self.send_request(26, buf, GetDeviceModifierMappingCookie, is_checked=is_checked)
3914    def SetDeviceModifierMapping(self, device_id, keycodes_per_modifier, keymaps, is_checked=True):
3915        buf = six.BytesIO()
3916        buf.write(struct.pack("=xx2xBB2x", device_id, keycodes_per_modifier))
3917        buf.write(xcffib.pack_list(keymaps, "B"))
3918        return self.send_request(27, buf, SetDeviceModifierMappingCookie, is_checked=is_checked)
3919    def GetDeviceButtonMapping(self, device_id, is_checked=False):
3920        buf = six.BytesIO()
3921        buf.write(struct.pack("=xx2xB3x", device_id))
3922        return self.send_request(28, buf, is_checked=is_checked)
3923    def SetDeviceButtonMapping(self, device_id, map_size, map, is_checked=True):
3924        buf = six.BytesIO()
3925        buf.write(struct.pack("=xx2xBB2x", device_id, map_size))
3926        buf.write(xcffib.pack_list(map, "B"))
3927        return self.send_request(29, buf, SetDeviceButtonMappingCookie, is_checked=is_checked)
3928    def QueryDeviceState(self, device_id, is_checked=True):
3929        buf = six.BytesIO()
3930        buf.write(struct.pack("=xx2xB3x", device_id))
3931        return self.send_request(30, buf, QueryDeviceStateCookie, is_checked=is_checked)
3932    def DeviceBell(self, device_id, feedback_id, feedback_class, percent, is_checked=False):
3933        buf = six.BytesIO()
3934        buf.write(struct.pack("=xx2xBBBb", device_id, feedback_id, feedback_class, percent))
3935        return self.send_request(32, buf, is_checked=is_checked)
3936    def SetDeviceValuators(self, device_id, first_valuator, num_valuators, valuators, is_checked=True):
3937        buf = six.BytesIO()
3938        buf.write(struct.pack("=xx2xBBBx", device_id, first_valuator, num_valuators))
3939        buf.write(xcffib.pack_list(valuators, "i"))
3940        return self.send_request(33, buf, SetDeviceValuatorsCookie, is_checked=is_checked)
3941    def GetDeviceControl(self, control_id, device_id, is_checked=True):
3942        buf = six.BytesIO()
3943        buf.write(struct.pack("=xx2xHBx", control_id, device_id))
3944        return self.send_request(34, buf, GetDeviceControlCookie, is_checked=is_checked)
3945    def ChangeDeviceControl(self, control_id, device_id, control, is_checked=True):
3946        buf = six.BytesIO()
3947        buf.write(struct.pack("=xx2xHBx", control_id, device_id))
3948        buf.write(control.pack() if hasattr(control, "pack") else DeviceCtl.synthetic(*control).pack())
3949        return self.send_request(35, buf, ChangeDeviceControlCookie, is_checked=is_checked)
3950    def ListDeviceProperties(self, device_id, is_checked=True):
3951        buf = six.BytesIO()
3952        buf.write(struct.pack("=xx2xB3x", device_id))
3953        return self.send_request(36, buf, ListDevicePropertiesCookie, is_checked=is_checked)
3954    def ChangeDeviceProperty(self, property, type, device_id, format, mode, num_items, is_checked=False):
3955        buf = six.BytesIO()
3956        buf.write(struct.pack("=xx2xIIBBBxI", property, type, device_id, format, mode, num_items))
3957        return self.send_request(37, buf, is_checked=is_checked)
3958    def DeleteDeviceProperty(self, property, device_id, is_checked=False):
3959        buf = six.BytesIO()
3960        buf.write(struct.pack("=xx2xIB3x", property, device_id))
3961        return self.send_request(38, buf, is_checked=is_checked)
3962    def GetDeviceProperty(self, property, type, offset, len, device_id, delete, is_checked=False):
3963        buf = six.BytesIO()
3964        buf.write(struct.pack("=xx2xIIIIBB2x", property, type, offset, len, device_id, delete))
3965        return self.send_request(39, buf, is_checked=is_checked)
3966    def XIQueryPointer(self, window, deviceid, is_checked=True):
3967        buf = six.BytesIO()
3968        buf.write(struct.pack("=xx2xIH2x", window, deviceid))
3969        return self.send_request(40, buf, XIQueryPointerCookie, is_checked=is_checked)
3970    def XIWarpPointer(self, src_win, dst_win, src_x, src_y, src_width, src_height, dst_x, dst_y, deviceid, is_checked=False):
3971        buf = six.BytesIO()
3972        buf.write(struct.pack("=xx2xIIiiHHiiH2x", src_win, dst_win, src_x, src_y, src_width, src_height, dst_x, dst_y, deviceid))
3973        return self.send_request(41, buf, is_checked=is_checked)
3974    def XIChangeCursor(self, window, cursor, deviceid, is_checked=False):
3975        buf = six.BytesIO()
3976        buf.write(struct.pack("=xx2xIIH2x", window, cursor, deviceid))
3977        return self.send_request(42, buf, is_checked=is_checked)
3978    def XIChangeHierarchy(self, num_changes, changes, is_checked=False):
3979        buf = six.BytesIO()
3980        buf.write(struct.pack("=xx2xB3x", num_changes))
3981        buf.write(xcffib.pack_list(changes, HierarchyChange))
3982        return self.send_request(43, buf, is_checked=is_checked)
3983    def XISetClientPointer(self, window, deviceid, is_checked=False):
3984        buf = six.BytesIO()
3985        buf.write(struct.pack("=xx2xIH2x", window, deviceid))
3986        return self.send_request(44, buf, is_checked=is_checked)
3987    def XIGetClientPointer(self, window, is_checked=True):
3988        buf = six.BytesIO()
3989        buf.write(struct.pack("=xx2xI", window))
3990        return self.send_request(45, buf, XIGetClientPointerCookie, is_checked=is_checked)
3991    def XISelectEvents(self, window, num_mask, masks, is_checked=False):
3992        buf = six.BytesIO()
3993        buf.write(struct.pack("=xx2xIH2x", window, num_mask))
3994        buf.write(xcffib.pack_list(masks, EventMask))
3995        return self.send_request(46, buf, is_checked=is_checked)
3996    def XIQueryVersion(self, major_version, minor_version, is_checked=True):
3997        buf = six.BytesIO()
3998        buf.write(struct.pack("=xx2xHH", major_version, minor_version))
3999        return self.send_request(47, buf, XIQueryVersionCookie, is_checked=is_checked)
4000    def XIQueryDevice(self, deviceid, is_checked=True):
4001        buf = six.BytesIO()
4002        buf.write(struct.pack("=xx2xH2x", deviceid))
4003        return self.send_request(48, buf, XIQueryDeviceCookie, is_checked=is_checked)
4004    def XISetFocus(self, window, time, deviceid, is_checked=False):
4005        buf = six.BytesIO()
4006        buf.write(struct.pack("=xx2xIIH2x", window, time, deviceid))
4007        return self.send_request(49, buf, is_checked=is_checked)
4008    def XIGetFocus(self, deviceid, is_checked=True):
4009        buf = six.BytesIO()
4010        buf.write(struct.pack("=xx2xH2x", deviceid))
4011        return self.send_request(50, buf, XIGetFocusCookie, is_checked=is_checked)
4012    def XIGrabDevice(self, window, time, cursor, deviceid, mode, paired_device_mode, owner_events, mask_len, mask, is_checked=True):
4013        buf = six.BytesIO()
4014        buf.write(struct.pack("=xx2xIIIHBBBxH", window, time, cursor, deviceid, mode, paired_device_mode, owner_events, mask_len))
4015        buf.write(xcffib.pack_list(mask, "I"))
4016        return self.send_request(51, buf, XIGrabDeviceCookie, is_checked=is_checked)
4017    def XIUngrabDevice(self, time, deviceid, is_checked=False):
4018        buf = six.BytesIO()
4019        buf.write(struct.pack("=xx2xIH2x", time, deviceid))
4020        return self.send_request(52, buf, is_checked=is_checked)
4021    def XIAllowEvents(self, time, deviceid, event_mode, touchid, grab_window, is_checked=False):
4022        buf = six.BytesIO()
4023        buf.write(struct.pack("=xx2xIHBxII", time, deviceid, event_mode, touchid, grab_window))
4024        return self.send_request(53, buf, is_checked=is_checked)
4025    def XIPassiveGrabDevice(self, time, grab_window, cursor, detail, deviceid, num_modifiers, mask_len, grab_type, grab_mode, paired_device_mode, owner_events, mask, modifiers, is_checked=True):
4026        buf = six.BytesIO()
4027        buf.write(struct.pack("=xx2xIIIIHHHBBBB2x", time, grab_window, cursor, detail, deviceid, num_modifiers, mask_len, grab_type, grab_mode, paired_device_mode, owner_events))
4028        buf.write(xcffib.pack_list(mask, "I"))
4029        buf.write(xcffib.pack_list(modifiers, "I"))
4030        return self.send_request(54, buf, XIPassiveGrabDeviceCookie, is_checked=is_checked)
4031    def XIPassiveUngrabDevice(self, grab_window, detail, deviceid, num_modifiers, grab_type, modifiers, is_checked=False):
4032        buf = six.BytesIO()
4033        buf.write(struct.pack("=xx2xIIHHB3x", grab_window, detail, deviceid, num_modifiers, grab_type))
4034        buf.write(xcffib.pack_list(modifiers, "I"))
4035        return self.send_request(55, buf, is_checked=is_checked)
4036    def XIListProperties(self, deviceid, is_checked=True):
4037        buf = six.BytesIO()
4038        buf.write(struct.pack("=xx2xH2x", deviceid))
4039        return self.send_request(56, buf, XIListPropertiesCookie, is_checked=is_checked)
4040    def XIChangeProperty(self, deviceid, mode, format, property, type, num_items, is_checked=False):
4041        buf = six.BytesIO()
4042        buf.write(struct.pack("=xx2xHBBIII", deviceid, mode, format, property, type, num_items))
4043        return self.send_request(57, buf, is_checked=is_checked)
4044    def XIDeleteProperty(self, deviceid, property, is_checked=False):
4045        buf = six.BytesIO()
4046        buf.write(struct.pack("=xx2xH2xI", deviceid, property))
4047        return self.send_request(58, buf, is_checked=is_checked)
4048    def XIGetProperty(self, deviceid, delete, property, type, offset, len, is_checked=False):
4049        buf = six.BytesIO()
4050        buf.write(struct.pack("=xx2xHBxIIII", deviceid, delete, property, type, offset, len))
4051        return self.send_request(59, buf, is_checked=is_checked)
4052    def XIGetSelectedEvents(self, window, is_checked=True):
4053        buf = six.BytesIO()
4054        buf.write(struct.pack("=xx2xI", window))
4055        return self.send_request(60, buf, XIGetSelectedEventsCookie, is_checked=is_checked)
4056    def XIBarrierReleasePointer(self, num_barriers, barriers, is_checked=False):
4057        buf = six.BytesIO()
4058        buf.write(struct.pack("=xx2xI", num_barriers))
4059        buf.write(xcffib.pack_list(barriers, BarrierReleasePointerInfo))
4060        return self.send_request(61, buf, is_checked=is_checked)
4061    def SendExtensionEvent(self, destination, device_id, propagate, num_classes, num_events, events, classes, is_checked=False):
4062        buf = six.BytesIO()
4063        buf.write(struct.pack("=xx2xIBBHB3x", destination, device_id, propagate, num_classes, num_events))
4064        buf.write(xcffib.pack_list(events, EventForSend))
4065        buf.write(xcffib.pack_list(classes, "I"))
4066        return self.send_request(31, buf, is_checked=is_checked)
4067xcffib._add_ext(key, xinputExtension, _events, _errors)
4068