import re class ClientEvent(object): """ a representation of a client event """ UNKNOWN = -1 KEYDOWN = 0 KEYUP = 1 MOUSEDOWN = 3 MOUSEUP = 4 _types = { 'KD': KEYDOWN, 'KU': KEYUP, 'MD': MOUSEDOWN, 'MU': MOUSEUP, } _reg_valid_msg = re.compile(r'^([A-Z]{2})(.*)$') def __init__(self, msg): match = self._reg_valid_msg.match(msg) if not match: raise ValueError('missing command in %r' % (msg,)) command = match.group(1) value = match.group(2) self.raw = msg self.command = command self.type = self._types.get(command, self.UNKNOWN) self.value = value if command in ('MD', 'MU'): self.value = int(value)