#!/usr/bin/env python
import pygame # pylint: disable=import-error
# Define some colors
BLACK = ( 0 , 0 , 0 )
WHITE = ( 255 , 255 , 255 )
# This is a simple class that will help us print to the screen
# It has nothing to do with the joysticks, just outputting the
# information.
class TextPrint :
def __init__ ( self ) :
self . reset ( )
self . font = pygame . font . Font ( None , 20 )
def printf ( self , screen , textString ) :
textBitmap = self . font . render ( textString , True , BLACK )
screen . blit ( textBitmap , [ self . x , self . y ] )
self . y + = self . line_height
def reset ( self ) :
self . x = 10
self . y = 10
self . line_height = 15
def indent ( self ) :
self . x + = 10
def unindent ( self ) :
self . x - = 10
pygame . init ( )
# Set the width and height of the screen [width,height]
size = [ 500 , 700 ]
screen = pygame . display . set_mode ( size )
pygame . display . set_caption ( " My Game " )
#Loop until the user clicks the close button.
done = False
# Used to manage how fast the screen updates
clock = pygame . time . Clock ( )
# Initialize the joysticks
pygame . joystick . init ( )
# Get ready to print
textPrint = TextPrint ( )
# -------- Main Program Loop -----------
while not done :
# EVENT PROCESSING STEP
for event in pygame . event . get ( ) : # User did something
if event . type == pygame . QUIT : # If user clicked close
done = True # Flag that we are done so we exit this loop
# Possible joystick actions: JOYAXISMOTION JOYBALLMOTION JOYBUTTONDOWN JOYBUTTONUP JOYHATMOTION
if event . type == pygame . JOYBUTTONDOWN :
print ( " Joystick button pressed. " )
if event . type == pygame . JOYBUTTONUP :
print ( " Joystick button released. " )
# DRAWING STEP
# First, clear the screen to white. Don't put other drawing commands
# above this, or they will be erased with this command.
screen . fill ( WHITE )
textPrint . reset ( )
# Get count of joysticks
joystick_count = pygame . joystick . get_count ( )
textPrint . printf ( screen , " Number of joysticks: {} " . format ( joystick_count ) )
textPrint . indent ( )
# For each joystick:
joystick = pygame . joystick . Joystick ( 0 )
joystick . init ( )
textPrint . printf ( screen , " Joystick {} " . format ( 0 ) )
textPrint . indent ( )
# Get the name from the OS for the controller/joystick
name = joystick . get_name ( )
textPrint . printf ( screen , " Joystick name: {} " . format ( name ) )
# Usually axis run in pairs, up/down for one, and left/right for
# the other.
axes = joystick . get_numaxes ( )
textPrint . printf ( screen , " Number of axes: {} " . format ( axes ) )
textPrint . indent ( )
for i in range ( axes ) :
axis = joystick . get_axis ( i )
textPrint . printf ( screen , " Axis {} value: {:>6.3f} " . format ( i , axis ) )
textPrint . unindent ( )
buttons = joystick . get_numbuttons ( )
textPrint . printf ( screen , " Number of buttons: {} " . format ( buttons ) )
textPrint . indent ( )
for i in range ( buttons ) :
button = joystick . get_button ( i )
textPrint . printf ( screen , " Button {:>2} value: {} " . format ( i , button ) )
textPrint . unindent ( )
textPrint . unindent ( )
# ALL CODE TO DRAW SHOULD GO ABOVE THIS COMMENT
# Go ahead and update the screen with what we've drawn.
pygame . display . flip ( )
# Limit to 20 frames per second
clock . tick ( 20 )
# Close the window and quit.
# If you forget this line, the program will 'hang'
# on exit if running from IDLE.
pygame . quit ( )