Example #1
0
    def __init__(self, device=None):
        """
        device: /dev/input/eventX, default: all keyboard.
        """

        self._hotkey_list = []
        self._hotkey_seq_dict = {}

        self.devices = []

        mouses, kbms = libkbm.getkbm()

        if len(kbms) <= 0:
            raise HotKeyError("没有发现至少一个键盘。")

        if device is None:
            self.kbms = kbms
        else:
            if device not in kbms:
                raise ValueError(f"{device} 不是键盘设备。")
            else:
                self.kbms = device

        self.LISTEN = 1
        self.REPLACE = 2
        self._mode = self.LISTEN

        # 把device注册到selectors
        self._selector = DefaultSelector()
        self._fileobjs = []
        for device in self.kbms:
            fd = open(device, "rb")
            devfd = Device(fd)
            self._selector.register(devfd.fd, EVENT_READ, devfd)
            self._fileobjs.append(fd)
Example #2
0
def disableMouse():
    """
    通过 grab() 禁用鼠标。
    """
    mouses, keyboards = libkbm.getkbm()

    for name in mouses:
        logger.info("禁用鼠标: {}".format(name))
        libkbm.disableDevice(name)
Example #3
0
    if e.matches(ev.EV_KEY.KEY_LEFTALT, value=1):
        print(time.asctime(), "matches LEFTALT down")
        key_prefix_flag = True

    elif e.matches(ev.EV_KEY.KEY_LEFTALT, value=0):
        print(time.asctime(), "matches LEFTALT up")
        key_prefix_flag = False

    else:
        return False

    return True


s = registers(libkbm.getkbm())

while True:
    for fd, _ in s.select():
        try:
            events = fd.data.events()
        except ev.EventsDroppedException:
            print("eventsDroppedException:")
            for err in ev.sync():
                print("except:", err)
            continue

        for e in events:
            if e.matches(ev.EV_KEY):
                if listenhotkey(e):
                    pass
Example #4
0
def registers(kbms):
    selector = selectors.DefaultSelector()

    for kbm in kbms:
        print("加入:", kbm)
        fd = os.open(kbm, os.O_NONBLOCK | os.O_RDONLY)
        fdobj = open(fd, "rb")
        #fcntl.fcntl(fd, fcntl.F_SETFL, os.O_NONBLOCK)
        device = Device(fdobj)

        selector.register(device.fd, selectors.EVENT_READ, data=device)

    return selector

mouses, keyboards = libkbm.getkbm()

s = registers(mouses + keyboards)

while True:
    #print("while 里面")
    for fd, event in s.select():
        #print("for select() 里面")
        try:
            for e in fd.data.events():
                #print("for events() 里面")
                if e.matches(ev.EV_KEY):
                    print(e)
                else:
                    print("======= 不是key事件:=======", e)
        except ev.EventsDroppedException: