1
0
Fork 0
flightgear/src/Input/js_demo.cxx
2010-01-25 17:12:04 +01:00

113 lines
2.1 KiB
C++

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef HAVE_WINDOWS_H
# include <windows.h>
#endif
#include <string.h> // plib/js.h should really include this !!!!!!
#include <plib/js.h>
#define Z 8
int main ( int, char ** )
{
jsJoystick *js[Z] ;
float *ax[Z] ;
int i, j, t, useful[Z];
jsInit();
for ( i = 0; i < Z; i++ )
js[i] = new jsJoystick ( i ) ;
printf ( "Joystick test program.\n" ) ;
printf ( "~~~~~~~~~~~~~~~~~~~~~~\n" ) ;
t = 0;
for ( i = 0; i < Z; i++ )
{ useful[i] = ! ( js[i]->notWorking () );
if ( useful[i] ) {
t++;
printf ( "Joystick %i: \"%s\"\n", i, js[i]->getName() ) ;
} else printf ( "Joystick %i not detected\n", i ) ;
}
if ( t == 0 ) exit ( 1 ) ;
for ( i = 0; i < Z; i++ )
if ( useful[i] )
ax[i] = new float [ js[i]->getNumAxes () ] ;
for ( i = 0 ; i < Z ; i++ )
if ( useful[i] )
printf ( "+--------------------JS.%d----------------------", i ) ;
printf ( "+\n" ) ;
for ( i = 0 ; i < Z ; i++ )
if ( useful[i] )
{
if ( js[i]->notWorking () )
printf ( "| ~~~ Not Detected ~~~ " ) ;
else
{
printf ( "| Btns " ) ;
for ( j = 0 ; j < js[i]->getNumAxes () ; j++ )
printf ( "Ax:%1d ", j ) ;
for ( ; j < 8 ; j++ )
printf ( " " ) ;
}
}
printf ( "|\n" ) ;
for ( i = 0 ; i < Z ; i++ )
if ( useful[i] )
printf ( "+----------------------------------------------" ) ;
printf ( "+\n" ) ;
while (1)
{
for ( i = 0 ; i < Z ; i++ )
if ( useful[i] )
{
if ( js[i]->notWorking () )
printf ( "| . . . . . . . . . . . " ) ;
else
{
int b ;
js[i]->read ( &b, ax[i] ) ;
printf ( "| %04x ", b ) ;
for ( j = 0 ; j < js[i]->getNumAxes () ; j++ )
printf ( "%+.1f ", ax[i][j] ) ;
for ( ; j < 8 ; j++ )
printf ( " . " ) ;
}
}
printf ( "|\r" ) ;
fflush ( stdout ) ;
/* give other processes a chance */
#ifdef _WIN32
Sleep ( 1 ) ;
#elif defined(sgi)
sginap ( 1 ) ;
#else
usleep ( 1000 ) ;
#endif
}
return 0 ;
}