用于/ dev / input设备的epoll()?

时间:2015-09-18 02:54:14

标签: python epoll

我正在处理来自/dev/input/event0按钮的事件。我目前正在无限循环中进行投票,但我更愿意等待一个事件。

import struct

# https://docs.python.org/3/library/struct.html#format-characters
FORMAT = 'llHHI'
EVENT_SIZE = struct.calcsize(FORMAT)
EV_KEY = 0x01

KEY_UP = 0
KEY_DOWN = 1
KEY_AUTO = 2
with open('/dev/input/event0', 'rb') as infile:
        state = 0

        while True:
            event = infile.read(EVENT_SIZE)
            (tv_sec, tv_usec, typ, code, value) = struct.unpack(FORMAT, event)

            if 0 == state:
                if EV_KEY == typ and KEY_DOWN == value:
                    print('You pressed a button')
                    state = 1
            elif 1 == state:
                if EV_KEY == typ and KEY_UP == value:
                    print('You released a button')
                    state = 0

我可以在python中使用epoll()来完成更少的代码吗?

0 个答案:

没有答案