900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > ubuntu 解析控制 PS4手柄

ubuntu 解析控制 PS4手柄

时间:2018-10-24 11:00:21

相关推荐

ubuntu 解析控制 PS4手柄

ubuntu 解析控制 PS4手柄

参考源码: pypi官方 pyPS4Controller 1.2.5 库

测试链接PS4蓝牙手柄

首先,查看手柄的接入端口

ls /dev/input/

很有可能会出现很多端口,手柄的端口主要是js0或者js1,想要确定到底是哪个,把电脑的蓝牙关闭,看哪个端口没了就能确定了。

然后安装手柄测试工具并测试手柄按键,拨动按键或者拨杆,如下所示的终端会显示相应的键位变化。

sudo apt-get install jstest-gtksudo jstest /dev/input/js0

调用pyPS4Controller 源码驱动

下载 pyPS4Controller 库,在 pypi官方 pyPS4Controller 1.2.5 库已有非常详细的使用说明

下载 pyPS4Controller 库

pip install pyPS4Controller

主要函数说明

实例化controller 类, “/dev/input/js0” 为当前蓝牙手柄链接的设备号,官方不推荐使用ds4drv 。

controller = MyController(interface="/dev/input/js0", connecting_using_ds4drv=False)

执行上面代码时,推动遥控器,可以反馈相应的键位键值变化。

因为,Controller默认按键触发调用的函数是弱函数, 可通过在类中重写 on_x_press() 等函数触发时的功能。

class MyController(Controller):def __init__(self, **kwargs):Controller.__init__(self, **kwargs)def on_x_press(self):print("press on x");def on_x_release(self):print("release on x");## 左侧拨杆##上下(up 0 ~ -32767; down 0 ~ 32767; middle on_L3_y_at_rest)##左右 (left -32767 ~ 0; right 0 ~ 32767; middle on_L3_x_at_rest)def on_L3_up(self, value):passdef on_L3_down(self, value):passdef on_L3_y_at_rest(self):passdef on_L3_left(self, value):passdef on_L3_right(self, value):passdef on_L3_x_at_rest(self):pass

完整示例代码

需要添加按键触发功能时,只需在类 MyController() 中重写入想要的功能即可

from pyPS4Controller.controller import Controllerdef connect():# any code you want to run during initial connection with the controllerprint("ps4 controller is connecting!!!")def disconnect():# any code you want to run during loss of connection with the controller or keyboard interruptprint("ps4 controller was disconnected!!!")class MyController(Controller):def __init__(self, **kwargs):Controller.__init__(self, **kwargs)def on_x_press(self):print("press on x");def on_x_release(self):print("release on x");## 左侧拨杆##上下(up 0 ~ -32767; down 0 ~ 32767; middle on_L3_y_at_rest)##左右 (left -32767 ~ 0; right 0 ~ 32767; middle on_L3_x_at_rest)def on_L3_up(self, value):passdef on_L3_down(self, value):passdef on_L3_y_at_rest(self):passdef on_L3_left(self, value):passdef on_L3_right(self, value):passdef on_L3_x_at_rest(self):pass## 右侧拨杆##上下(up 0 ~ -32767; down 0 ~ 32767; middle on_R3_y_at_rest)##左右 (left -32767 ~ 0; right 0 ~ 32767; middle on_R3_x_at_rest)if __name__ == '__main__':controller = MyController(interface="/dev/input/js0", connecting_using_ds4drv=False)controller.listen(timeout= 60, on_connect=connect, on_disconnect=disconnect)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。