001         package com.croftsoft.apps.jinput;
002    
003         import net.java.games.input.Component;
004         import net.java.games.input.Controller;
005         import net.java.games.input.ControllerEnvironment;
006    
007         /*********************************************************************
008         * Tests connecting to a joystick using JInput.
009         *  
010         * @version
011         *   $Id: Joystick.java,v 1.5 2005/12/19 02:26:05 croft Exp $
012         * @since
013         *   2005-03-14
014         * @author
015         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
016         *********************************************************************/
017    
018         public final class  Joystick
019         //////////////////////////////////////////////////////////////////////
020         //////////////////////////////////////////////////////////////////////
021         {
022           
023         public static void  main ( String [ ]  args )
024         //////////////////////////////////////////////////////////////////////
025         {
026           final ControllerEnvironment  controllerEnvironment
027             = ControllerEnvironment.getDefaultEnvironment ( );
028           
029           final Controller [ ]  controllers
030             = controllerEnvironment.getControllers ( );
031           
032           if ( controllers.length == 0 )
033           {
034             System.out.println ( "No controllers found." );
035             
036             return;
037           }
038           
039           for ( int  i = 0; i < controllers.length; i++ )
040           {
041             Controller  controller = controllers [ i ];
042             
043             System.out.println ( "Controller " + i + " *******************" );
044             
045             System.out.println ( controller.getName ( ) );
046             
047             System.out.println ( controller.getType ( ) );
048             
049             Controller [ ]  childControllers = controller.getControllers ( );
050             
051             System.out.println ( "child controllers:  " + childControllers.length );
052             
053             Component [ ]  axes = controller.getComponents ( );
054             
055             for ( int  j = 0; j < axes.length; j++ )
056             {
057               Component  axis = axes [ j ];
058               
059               System.out.println (
060                 "axis " + j + " isAnalog:  " + axis.isAnalog ( ) );
061             }       
062           }
063             
064           poll ( controllers [ 5 ] );
065         }
066         
067         public static void  poll ( Controller  controller )
068         //////////////////////////////////////////////////////////////////////
069         {
070           Component [ ]  components = controller.getComponents ( );
071           
072           Float [ ]  floats = new Float [ components.length ];
073           
074           String  format = "";
075           
076           for ( int  i = 0; i < components.length; i++ )
077           {
078             format += "%" + ( i + 1 ) + "$+1.3f ";
079           }
080           
081           format += "%n";
082           
083           final long  endTime = System.currentTimeMillis ( ) + 30 * 1000;  
084           
085           while ( System.currentTimeMillis ( ) < endTime )
086           {
087             if ( !controller.poll ( ) )
088             {
089               break;
090             }
091             
092             for ( int  i = 0; i < components.length; i++ )
093             {
094               Component  component = components [ i ];
095               
096               floats [ i ] = new Float ( component.getPollData ( ) );
097             }
098    
099             System.out.printf ( format, ( Object [ ] ) floats );
100           }
101         }
102         
103         //////////////////////////////////////////////////////////////////////
104         //////////////////////////////////////////////////////////////////////
105         }