Control joysticks and gamepads from within PsychoPy
You do need a window (and you need to be flipping it) for the joystick to be updated.
from psychopy.hardware import joystick from psychopy import visual joystick.backend='pyglet'#must match the Window win = visual.Window([400,400], winType='pyglet') nJoys = joystick.getNumJoysticks()#to check if we have any id=0 joy = joystick.Joystick(id)#id must be <= nJoys-1 nAxes = joy.getNumAxes()#for interest while True:#while presenting stimuli currentjoy.getX() #... win.flip()#flipping implicitly updates the joystick info
Return a count of the number of joysticks available.
An object to control a multi-axis joystick or gamepad
|Known issues:||Currently under pyglet backends the axis values initialise to zero rather than reading the current true value. This gets fixed on the first change to each axis.|
Get a list of all current axis values
Get the state of all buttons as a list
Get the current values of all available hats as a list of tuples. Each value is a tuple (x,y) where x and y can be -1,0,+1
Get the value of an axis by an integer id (from 0 to number of axes-1)
Get the state of a given button.
buttonId should be a value from 0 to the number of buttons-1
Get the position of a particular hat. The position returned is an (x,y) tuple where x and y can be -1,0 or +1
Returns the manufacturer-defined name describing the device
Returns the number of joystick axes found
Returns the number of digital buttons on the device
Get the number of hats on this joystick
Returns the value on the X axis (equivalent to joystick.getAxis(0))
Returns the value on the Y axis (equivalent to joystick.getAxis(1))
Returns the value on the Z axis (equivalent to joystick.getAxis(2))