最近突然想研究python和joycon(switch的手柄)如何连接,上网没有找到中文的文章,所以参考了英文版的,希望能帮助大家(可以和pygame联动)。本人有着一定的英语功底,学习python也有一段时间了,如果有不足之处希望能体谅。掘金发布的文章为首创,转载需声明出处,我会同步到我的域名 谢谢大家的支持。 英文链接 描述:Nintendo Switch Joy-Con的python驱动器
安装
pip install joycon-python hidapi pyglm
使用
快速确认状态
cd joycon-python/
python -m pyjoycon.joycon
或者以模块形式引用
from pyjoycon import JoyCon, get_R_id
joycon_id = get_R_id()
joycon = JoyCon(*joycon_id)
joycon.get_status()
状态值
{
'battery': {
'charging': 0,
'level': 2
},
'buttons': {
'right': {
'y': 0,
'x': 0,
'b': 0,
'a': 0,
'sr': 0,
'sl': 0,
'r': 0,
'zr': 0
},
'shared': {
'minus': 0,
'plus': 0,
'r-stick': 0,
'l-stick': 0,
'home': 0,
'capture': 0,
'charging-grip': 0
},
'left': {
'down': 0,
'up': 0,
'right': 0,
'left': 0,
'sr': 0,
'sl': 0,
'l': 0,
'zl': 0
}
},
'analog-sticks': {
'left': {
'horizontal': 0,
'vertical': 0
},
'right': {
'horizontal': 2170,
'vertical': 1644
}
},
'accel': {
'x': 879,
'y': 1272,
'z': 549
},
'gyro': {
'x': -354,
'y': -7,
'z': 281
}
}
你需要cython-hidapi
以在python中使用蓝牙/HID连接
你也可以使用hid
如果cpython-hidapi
找不到你的JoyCon
陀螺仪
我们开发了一个专门用来为你追踪陀螺仪的类,并且以简化的形式展现追踪到的状态
from pyjoycon import GyroTrackingJoyCon, get_R_id
import time
joycon_id = get_R_id()
joycon = GyroTrackingJoyCon(*joycon_id)
for i in range(20):
print("joycon pointer: ", joycon.pointer)
print("joycon rotation: ", joycon.rotation)
print("joycon direction:", joycon.direction)
print()
time.sleep(0.05)
按钮事件
我们开发了一个专门用来为你追踪JoyCon按钮的类,并且将变化以事件的形式呈现。一下是一个如何在pygame中使用的例子
from pyjoycon import ButtonEventJoyCon, get_R_id
import pygame
joycon_id = get_R_id()
joycon = ButtonEventJoyCon(*joycon_id)
...
while 1:
pygame.time.wait(int(1000/60))
...
for event_type, status in joycon.events():
print(event_type, status)
...
pygame.display.flip()
将类结合在一起
import pyjoycon
class MyJoyCon(
pyjoycon.GyroTrackingJoyCon,
pyjoycon.ButtonEventJoyCon,
): pass
环境
- macOS Mojave (10.14.6)
- Python (3.7.4)
- hidapi (0.7.99.post21) 官方文档中只有这些了,如果还有其他的文档,我会继续更新的,谢谢