Pygame 未从 PS3 控制器读取任何值
Pygame not reading any values from PS3 controller
我一直在尝试设置一个 PS3 控制器并能够从中读取模拟输入值,但是每当我按下或移动任何操纵杆时它都不会读取任何内容 returns 一切都是假的。
我一直在使用在网上为控制器找到的各种测试代码,其中 none 似乎有效。我开始认为这可能是硬件问题,但我仍然不确定。
import os
import pprint
import pygame
class PS3Controller(object):
controller = None
name = None
axis_data = None
button_data = None
hat_data = None
def init(self):
"""Initialize the joystick components"""
pygame.init()
pygame.joystick.init()
self.controller = pygame.joystick.Joystick(1)
self.controller.init()
def listen(self):
"""Listen for events to happen"""
if not self.axis_data:
self.axis_data = {}
if not self.button_data:
self.button_data = {}
for i in range(self.controller.get_numbuttons()):
self.button_data[i] = False
if not self.hat_data:
#D - Pad
self.hat_data = {}
for i in range(self.controller.get_numhats()):
self.hat_data[i] = (0, 0)
while True:
for event in pygame.event.get():
if event.type == pygame.JOYAXISMOTION:
self.axis_data[event.axis] = round(event.value, 2)
elif event.type == pygame.JOYBUTTONDOWN:
self.button_data[event.button] = True
elif event.type == pygame.JOYBUTTONUP:
self.button_data[event.button] = False
elif event.type == pygame.JOYHATMOTION:
self.hat_data[event.hat] = event.value
# Insert your code on what you would like to happen for each event here!
# In the current setup, I have the state simply printing out to the screen.
#os.system('clear')
#pprint.pprint(self.button_data)
pprint.pprint(self.axis_data)
#pprint.pprint(self.hat_data)
if __name__ == "__main__":
ps3 = PS3Controller()
ps3.init()
ps3.listen()
代码运行良好。显然,我必须下载一组特定的驱动程序才能使 PS3 控制器与 windows 兼容,因此它可以被视为 XBOX 360 控制器。
网上有一些教程使用 SCP ToolKit 驱动程序安装程序使控制器兼容,但是,它确实做到了,所以我出于某种原因无法使用我的蓝牙鼠标。
我一直在尝试设置一个 PS3 控制器并能够从中读取模拟输入值,但是每当我按下或移动任何操纵杆时它都不会读取任何内容 returns 一切都是假的。
我一直在使用在网上为控制器找到的各种测试代码,其中 none 似乎有效。我开始认为这可能是硬件问题,但我仍然不确定。
import os
import pprint
import pygame
class PS3Controller(object):
controller = None
name = None
axis_data = None
button_data = None
hat_data = None
def init(self):
"""Initialize the joystick components"""
pygame.init()
pygame.joystick.init()
self.controller = pygame.joystick.Joystick(1)
self.controller.init()
def listen(self):
"""Listen for events to happen"""
if not self.axis_data:
self.axis_data = {}
if not self.button_data:
self.button_data = {}
for i in range(self.controller.get_numbuttons()):
self.button_data[i] = False
if not self.hat_data:
#D - Pad
self.hat_data = {}
for i in range(self.controller.get_numhats()):
self.hat_data[i] = (0, 0)
while True:
for event in pygame.event.get():
if event.type == pygame.JOYAXISMOTION:
self.axis_data[event.axis] = round(event.value, 2)
elif event.type == pygame.JOYBUTTONDOWN:
self.button_data[event.button] = True
elif event.type == pygame.JOYBUTTONUP:
self.button_data[event.button] = False
elif event.type == pygame.JOYHATMOTION:
self.hat_data[event.hat] = event.value
# Insert your code on what you would like to happen for each event here!
# In the current setup, I have the state simply printing out to the screen.
#os.system('clear')
#pprint.pprint(self.button_data)
pprint.pprint(self.axis_data)
#pprint.pprint(self.hat_data)
if __name__ == "__main__":
ps3 = PS3Controller()
ps3.init()
ps3.listen()
代码运行良好。显然,我必须下载一组特定的驱动程序才能使 PS3 控制器与 windows 兼容,因此它可以被视为 XBOX 360 控制器。
网上有一些教程使用 SCP ToolKit 驱动程序安装程序使控制器兼容,但是,它确实做到了,所以我出于某种原因无法使用我的蓝牙鼠标。