【问题标题】:How can i emulate joystick input in psychopy我如何在psychopy中模拟操纵杆输入
【发布时间】:2021-01-19 11:44:16
【问题描述】:

我正在处理别人的代码。代码是用python编写的,它依赖于操纵杆。我想用键盘或鼠标模拟操纵杆,但我在网上没有找到任何相关帮助

这里有一些相关代码

from psychopy.hardware import joystick
from input_handler import JoystickServer
... 
# Make sure one joystick is connected.
joystick.backend = 'pygame'
nJoysticks = joystick.getNumJoysticks()
logging.log(level=logging.EXP, msg='{} joysticks detected'.format(nJoysticks))

if nJoysticks == 0:
    print('There is no joystick connected!')
    core.quit()
else:
    J0 = JoystickServer(0, settings['Joystick0_DeadZone'])
    if nJoysticks > 1:
        J1 = JoystickServer(1, settings['Joystick1_DeadZone'])
    else:
        print('You need two joysticks to play!')
        core.quit()

【问题讨论】:

    标签: python-3.x pygame pyglet psychopy


    【解决方案1】:

    试试这个。我将它用于使用鼠标或罗技游戏控制器的任务。本质上,您为鼠标或游戏控制器设置了一个名为 checkButtonState() 的新函数,它将调用相应的函数。

    def joyCheckButtonState(self):
        return self.getButton(self)
    
    def mouseCheckButtonState(self):
        return self.getPressed(self)[0]
    
    def setButtonPress(bttnType,win=None):
    
        if bttnType.lower() == 'joystick':
    
            # First check to make sure joystick is connected
            nJoysticks = joystick.getNumJoysticks()
            # Throw an error if there's no joystick detected
            joystick.backend = 'pygame'
            myBttn = joystick.Joystick(0)
            setattr(myBttn,'checkButtonState',joyCheckButtonState)
        elif bttnType.lower() == 'mouse':
            myBttn = event.Mouse(visible=False,newPos=False,win=win)
            setattr(myBttn, 'checkButtonState', mouseCheckButtonState)
        else:
            print('Error! Unknown button type')
    
        return myBttn
    

    现在您可以致电myBttn.getPressed() 获取所使用的任一硬件。

    【讨论】:

    • 太棒了……我会试试的
    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    相关资源
    最近更新 更多