用pythonevdev模拟控制器dpad按钮被按下

2024-05-23 19:02:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python evdev模拟在控制器上按下DPad按钮

到目前为止,我成功地按下了如下按钮:

import os
import time
from evdev import uinput, ecodes as e, list_devices, InputDevice, ff

dev = InputDevice(str(os.path.realpath("/dev/input/by-id/usb-Sony_Interactive_Entertainment_Wireless_Controller-if03-event-joystick")))

dev.write(e.EV_ABS, e.ABS_HAT0X, 1)
dev.write(e.EV_ABS, e.ABS_HAT0X, 0)
dev.write(e.EV_SYN, 0, 0)

但是,我无法成功地将我正在模拟的用于检测按钮的输入保持任意时间的应用程序。我试过的是这个(还有一些变化)

...

dev.write(e.EV_ABS, e.ABS_HAT0X, 2) # evdev docs say 2 is for holding
dev.write(e.EV_SYN, 0, 0)
time.sleep(2)
dev.write(e.EV_ABS, e.ABS_HAT0X, 0)
dev.write(e.EV_SYN, 0, 0)

我做错了什么


Tags: fromdevimporttimeosabs控制器按钮