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