Interfacing with the Pi can be done using a driver that is available called xboxdrv at http://pingus.seul.org/~grumbel/xboxdrv/. This driver takes care of reading raw controller input, but doesn't provide a useful interface for scripting. I've created a Python class that makes it easy to read all of XBox controller inputs in real-time. Digital inputs, such as the A, B, X, and Y buttons return 1 when pressed (True) or 0 when not pressed (False). Analog inputs return floating point values between -1.0 and 1.0. Here's a simple example of how to use the class:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import xbox | |
joy = xbox.Joystick() #Initialize joystick | |
if joy.A(): #Test state of the A button (1=pressed, 0=not pressed) | |
print 'A button pressed' | |
x_axis = joy.leftX() #X-axis of the left stick (values -1.0 to 1.0) | |
(x,y) = joy.leftStick() #Returns tuple containing left X and Y axes (values -1.0 to 1.0) | |
trigger = joy.rightTrigger() #Right trigger position (values 0 to 1.0) | |
joy.close() #Cleanup before exit |
Source code, setup instructions and more sample code for my xbox.py module are available on github
Note: xboxdrv will require sudo privileges to access the USB device. There are workarounds to this, which can be found if you Google around.