1import xcffib 2import struct 3import six 4MAJOR_VERSION = 1 5MINOR_VERSION = 0 6key = xcffib.ExtensionKey("Generic Event Extension") 7_events = {} 8_errors = {} 9class QueryVersionReply(xcffib.Reply): 10 def __init__(self, unpacker): 11 if isinstance(unpacker, xcffib.Protobj): 12 unpacker = xcffib.MemoryUnpacker(unpacker.pack()) 13 xcffib.Reply.__init__(self, unpacker) 14 base = unpacker.offset 15 self.major_version, self.minor_version = unpacker.unpack("xx2x4xHH20x") 16 self.bufsize = unpacker.offset - base 17class QueryVersionCookie(xcffib.Cookie): 18 reply_type = QueryVersionReply 19class geExtension(xcffib.Extension): 20 def QueryVersion(self, client_major_version, client_minor_version, is_checked=True): 21 buf = six.BytesIO() 22 buf.write(struct.pack("=xx2xHH", client_major_version, client_minor_version)) 23 return self.send_request(0, buf, QueryVersionCookie, is_checked=is_checked) 24xcffib._add_ext(key, geExtension, _events, _errors) 25