python evdev能多快地写入/注入到输入设备是否有限制?

问题描述

我有一个使用evdev模拟游戏手柄按钮按下情况的python程序。通过使用ui = evdev.UInput.from_device(...)

,使用的设备是"cloned" from xBox usb游戏手柄

但是由于某些原因,有时印刷机可能不一致。

以下是我用来模拟A按钮点击的功能

def press_A_button():
    ui.write(evdev.ecodes.EV_KEY,evdev.ecodes.BTN_A,1)
    ui.write(evdev.ecodes.EV_SYN,0)
    sleep(0.01)
    ui.write(evdev.ecodes.EV_KEY,0)
    ui.write(evdev.ecodes.EV_SYN,0)
    sleep(0.01)

如果我完全删除sleep,看来根本没有印刷机可以注册。尽管0.01似乎也太快了,导致它似乎不时地没有注册/跳过水龙头。 (我只是使用jstest-gtk观察其行为)

这是我测试功能的方式:

while True:
    try:
        press_A_button()
        # putting a sleep here,e.g a sleep(2),seemingly still doesn't
        # keep it from sometimes missing the tap
    except KeyboardInterrupt:
        ui.close()
        break

那么,有什么方法可以找出应该用来使其始终如一地工作的最佳时机?

还是我的代码可能不是问题,而是其他软件(在本例中为jstest-gtk)的轮询率

一个可能相关问题:

Simulating controller dpad button being held down with Python evdev

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)