首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蒸汽检测不到python-uinput

蒸汽检测不到python-uinput
EN

Stack Overflow用户
提问于 2022-07-12 09:09:25
回答 1查看 63关注 0票数 0

我正在尝试使用Arduino和python来制作一个定制的输入设备,但是蒸汽根本没有检测到它。如果我导航到Settings/Controller/General Controller Settings/,它就没有显示任何设备。虚拟设备在操作系统操纵杆管理器中以/dev/input/js0的形式显示得很好。奇怪的是,这过去是可行的--我在六月制作的一个原型使用了相同的代码。

here上发布了一个非常类似的问题,但一直没有得到答案。

最起码的例子:

代码语言:javascript
复制
import uinput
import math
import time

events = (uinput.BTN_JOYSTICK, uinput.ABS_X + (0, 255, 0, 0), uinput.ABS_Y + (0, 255, 0, 0), uinput.ABS_Z + (0, 255, 0, 0))

device = uinput.Device(events)
device.emit(uinput.ABS_X, 128, syn=False)
device.emit(uinput.ABS_Y, 128, syn=False)
device.emit(uinput.ABS_Z, 128, syn=False)

total = 0

while True:
    device.emit(uinput.ABS_X, int(math.sin(total) * 128 + 127))
    time.sleep(0.1)
    total += 0.1

我也使用有线USB操纵杆与这台计算机,但它是拔出时,测试。操作系统是Manjaro与KDE等离子,X11。我试图使用控制器的具体游戏是在Proton中运行。

EN

回答 1

Stack Overflow用户

发布于 2022-07-12 22:36:15

解决了!!

看起来,蒸汽对虚拟设备上缺少按钮并不满意。添加一堆未使用的按钮使其工作:

代码语言:javascript
复制
import uinput
import math
import time

events = (uinput.BTN_JOYSTICK,
    uinput.ABS_X + (0, 255, 0, 0), uinput.ABS_Y + (0, 255, 0, 0), uinput.ABS_Z + (0, 255, 0, 0),
    uinput.ABS_RX,
    uinput.BTN_0, uinput.BTN_1, uinput.BTN_2, uinput.BTN_3, uinput.BTN_4, uinput.BTN_5, uinput.BTN_6, uinput.BTN_7, uinput.BTN_8, uinput.BTN_9)

device = uinput.Device(events)
time.sleep(1) # give device some time to set up

device.emit(uinput.ABS_X, 128, syn=False)
device.emit(uinput.ABS_Y, 128, syn=False)
device.emit(uinput.ABS_Z, 128, syn=False)
            
total = 0

while True:
    device.emit(uinput.ABS_X, int(math.sin(total) * 128 + 127))
    time.sleep(0.1)
    total += 0.1

如果这仍然不起作用,试着在你的主代码之前发送几个假按钮:

代码语言:javascript
复制
device.emit(uinput.ABS_RX, 0)
device.emit(uinput.BTN_JOYSTICK, 0)
device.emit(uinput.BTN_0, 0)
device.emit(uinput.BTN_1, 0)
device.emit(uinput.BTN_2, 0)
device.emit(uinput.BTN_3, 0)
device.emit(uinput.BTN_4, 0)
device.emit(uinput.BTN_5, 0)
device.emit(uinput.BTN_6, 0)
device.emit(uinput.BTN_7, 0)
device.emit(uinput.BTN_8, 0)
device.emit(uinput.BTN_9, 0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72949752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档