Xbox360控制器A pythonic Xbox360 controller API built on top of the xpad Linux kernel driver.


这个python包旨在为您的xbox360和类似的游戏控制器提供一个pythonic和完整的api。

目前它是在Linux内核驱动程序之上构建的,因此您可以在几乎任何Linux发行版上使用它,包括您的Rasperry PI项目等。

支持以下功能:以受gpiozero启发的方式为all按钮、轴、触发器和帽子注册回调

设置LED圆圈;所有xpad提供的选项都是可能的:闪烁、旋转、设置单个LED的开和关,…

隆隆声,左右两侧均可控制在0%到100%之间

安装

您将需要Python3.4或更高版本。

任何Linux发行版:pip3 install -U xbox360controller

您还可以使用virtual environment或通过向上面的命令提供--user标志来执行按用户安装。

全局安装可能需要使用sudo或直接从根shell运行,但不建议使用。

如果找不到pip3命令,请尝试pip或确保正确安装pip:sudo apt install python3-pip

当然,从根shell工作时不需要sudo。

用法

基础知识importsignalfromxbox360controllerimportXbox360Controllerdefon_button_pressed(button):print('Button{0}was pressed'.format())defon_button_released(button):print('Button{0}was released'.format())defon_axis_moved(axis):print('Axis{0}moved to{1}{2}'.format(axis.name,axis.x,axis.y))try:withXbox360Controller(0,axis_threshold=0.2)ascontroller:# Button A eventscontroller.button_a.when_pressed=on_button_pressedcontroller.button_a.when_released=on_button_released# Left and right axis move eventcontroller.axis_l.when_moved=on_axis_movedcontroller.axis_r.when_moved=on_axis_movedsignal.pause()exceptKeyboardInterrupt:pass
上述代码将一直运行,直到按下Ctrl+C。每次在左或右轴上移动时,事件将被处理。另外,A按钮的事件正在处理中。
有关Xbox360Controller类以及如何使用所有可用按钮、轴和帽子的详细说明,请参见API reference。
隆隆声importtimefromxbox360controllerimportXbox360ControllerwithXbox360Controller()ascontroller:controller.set_rumble(0.5,0.5,1000)time.sleep(1)
这将使控制器两侧以每50%的强度发出一秒(1000毫秒)的隆隆声。请注意,方法调用是非阻塞的,因此我们需要手动等待1秒,等待隆隆声结束。在使用signal.pause()的常规用例中,您不需要这样做。
发光二极管importtimefromxbox360controllerimportXbox360ControllerwithXbox360Controller()ascontroller:controller.set_led(Xbox360Controller.LED_ROTATE)time.sleep(1)controller.set_led(Xbox360Controller.LED_OFF)
这将使LED圆圈旋转一秒钟,然后将其关闭。
有关所有可用的LED模式,请参见API reference。
调试信息fromxbox360controllerimportXbox360ControllerwithXbox360Controller()ascontroller:controller.info()

开发/贡献

这个项目现在处于一个比较稳定的状态,我非常感谢各种贡献-可能是新的或改进的代码,文档或只是一个简单的排版修复。

只要给我一个公关,我会很高兴包括你的工作!

有关此软件包的功能请求、一般问题或问题,请open an issue。

发布历史记录

请参阅^{}以获取完整的发布历史记录。