"PS3控制器驱动程序 -> uinput -> Python?如何?"

2024-09-30 06:33:19 发布

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

我正在尝试从Ubuntu上的python中的PS3控制器读取数据,但我运气不太好。我从柳树车库的ps3joy司机开始(http://www.ros.org/wiki/ps3joy)据说它会将PS3控制器的所有重要部分发布到我从未听说过的“uinput”上。显然,这是一个允许用户空间驱动程序提供系统事件的linux功能。。。既然WG驱动程序应该是一个用户空间驱动程序,为什么它需要根用户访问权限,这不是我的问题。在

不管怎么说,我试图让它工作的当前状态是,我已经让驱动程序工作了,我已经验证了它对控制器上按钮的按下做出了响应,但我不知道如何将这些数据提取出来以便我可以使用它。在

我的第一个猜测是使用pygame(希望)读取/dev/uinput(我很确定驱动程序在哪里发送数据):

from pygame import joystick
if not joystick.get_init():
  joystick.init()
js = joystick.Joystick(0)  # there is only one joystick... even if the driver isn't running(!)
js.init()
print js.get_numbuttons()  # perhaps coincidentally correctly prints 17 which is the number of buttons on a PS3 controller
for i in range(js.get_numaxes()):
  print js.get_axis(i)   # always prints 0, no matter what I'm doing with the controller

但没用。最能说明问题的部分是,如果我根本没有运行WG驱动程序,它会做同样的事情。在

我确信这很简单,我只是没有读到正确的信息,但是google并没有帮助我找到正确的信息,我感到疲惫和绝望。在


Tags: the用户getifinit驱动程序js空间
3条回答

你不需要司机。假设控制器将自身公开为HID,则可以使用event subsystem直接从设备读取控制器事件。在

我知道已经太迟了,但是如果有人需要代码或者正在为之挣扎,你可以用我的。我用python编写了一个脚本,从USB获取ps3数据,并通过PC的蓝牙发送到特定的MAC地址(您可以使用ps3)控制器.py仅用于数据)。 这是为我的四轮直升机项目做的。在

https://github.com/urbanzrim/ps3controller

试试看

在pygame.event.pump()

在你读操纵杆之前。我需要它来配合360控制器

相关问题 更多 >

    热门问题