我一直在尝试使用python将我的customize事件绑定(bind)到具有特定事件代码号的键盘事件,如下所示



但正如你已经知道的



该库仅适用于Windows OS。
我如何在Linux机器上做类似的事情?
我读到



但是我无法弄清楚这个库是否有用?

还有另一种方法可以使用虚拟键控代码在python的操作系统级别设置keypress监听器?

最佳答案

Linux输入子系统由三部分组成:驱动程序层,输入子系统核心层和事件处理层。
键盘或其他输入事件均由input_event描述。

使用以下代码并输入您的终端python filename.py | grep "keyboard"

#!/usr/bin/env python
#coding: utf-8
import os

deviceFilePath = '/sys/class/input/'

def showDevice():
    os.chdir(deviceFilePath)
    for i in os.listdir(os.getcwd()):
        namePath = deviceFilePath + i + '/device/name'
        if os.path.isfile(namePath):
            print "Name: %s Device: %s" % (i, file(namePath).read())

if __name__ == '__main__':
    showDevice()

您应该获得Name: event1 Device: AT Translated Set 2 keyboard
然后使用
#!/usr/bin/env python
#coding: utf-8
from evdev import InputDevice
from select import select

def detectInputKey():
    dev = InputDevice('/dev/input/event1')

    while True:
        select([dev], [], [])
        for event in dev.read():
            print "code:%s value:%s" % (event.code, event.value)


if __name__ == '__main__':
    detectInputKey()
evdev是一个软件包,提供对Linux中通用输入事件接口(interface)的绑定(bind)。 evdev接口(interface)用于通过通常位于/dev/input/中的字符设备将内核中生成的事件直接传递到用户空间。selectselect

关于python - 使用ctypes函数在python中绑定(bind)键事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47412460/

10-14 07:42