Ejemplo n.º 1
0
 def handle_event(self, event):
     self.event_buffer.append(event)
     logging.debug("caught key, new buffer: %s",
         [(Translator.key_to_name(key), key.keystate) for key in self.event_buffer])
     # a bit dirty, yet so
     if self.reset_expression(self.event_buffer)[0] is Expression.state_accept:
         self.flush_buffer()
         return
     keep = False
     result = Expression.state_reject
     for expression, handler in self.expressions:
         result, extracted = expression(self.event_buffer)
         if result is Expression.state_accept:
             logging.info("valid expression of '%s' is caught", expression)
             try:
                 logging.info("handler '%s' is in charge, params: %s",
                     handler, extracted)
                 handler(extracted)
             except Exception as e:
                 logging.error("error during handler execution: %s", e)
             keep = False
             break
         elif result is Expression.state_partial:
             keep = True
         elif result is Expression.state_reject:
             pass
         else:
             raise AttributeError("Unexpected expression reply")
     logging.debug("reply: %s", ["accept", "reject", "partial"][result])
     if not keep:
         self.flush_buffer()
Ejemplo n.º 2
0
Archivo: utils.py Proyecto: ILJICH/PyBd
def listen_device(device):
    sleep(1)
    main = InputDevice("/dev/input/event0")
    while True:
        r,w,x = select([device, main], [], [])
        events = {}
        for dev in r:
            events[dev] = [event for event in dev.read()
                  if event.type == ecodes.EV_KEY
                    and KeyEvent(event).keystate is KeyEvent.key_down]
        if events.has_key(main):
            break
        for event in events[device]:
            name = Translator.key_to_name(KeyEvent(event)).upper()
            if name:
                print name