使用ctypes函数在python中绑定键事件

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

ctypes.windll.user32.keybd_event(‘0x24’,0,2,0)

但正如你已经知道的那样

windll

该库仅适用于Windows操作系统.
我怎么能在Linux机器上做这样的事情?
我读到了

CDLL(‘libc.so.6’)

但是我不明白这个图书馆是否有用?

是否有另一种方法使用虚拟键代码使用python在OS级别设置keypress侦听器?

最佳答案
Linux输入子系统由三部分组成:驱动层,输入子系统核心层和事件处理层.
键盘或其他输入事件都由input_event描述.

使用下面的代码并在你的终端python filename.py中输入grep“键盘”

#!/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()

你应该得到名称:event1设备:AT Translated Set 2键盘.
然后用

#!/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中通用输入事件接口的绑定. evdev接口的作用是通过通常位于/dev/input/中的字符设备将内核中生成的事件直接传递给用户空间.选择选择.

转载注明原文:使用ctypes函数在python中绑定键事件 - 代码日志