]> git.mxchange.org Git - flightgear.git/blob - src/Input/js_demo.cxx
Make sure the joystick name gets printed
[flightgear.git] / src / Input / js_demo.cxx
1 #ifdef HAVE_CONFIG_H
2 #  include <config.h>
3 #endif
4
5 #ifdef HAVE_WINDOWS_H
6 #  include <windows.h>                     
7 #endif
8
9 #include <string.h>             // plib/js.h should really include this !!!!!!
10 #include <plib/js.h>
11
12 #define Z 8
13
14 int main ( int, char ** )
15 {
16   jsJoystick *js[Z] ;
17   float      *ax[Z] ;
18   int i, j, t, useful[Z];
19
20   for ( i = 0; i < Z; i++ )
21       js[i] = new jsJoystick ( i ) ;
22
23   printf ( "Joystick test program.\n" ) ;
24   printf ( "~~~~~~~~~~~~~~~~~~~~~~\n" ) ;
25
26   t = 0;
27   for ( i = 0; i < Z; i++ )
28   { useful[i] = ! ( js[i]->notWorking () );
29     if ( useful[i] ) {
30          t++;
31          printf ( "Joystick %i: \"%s\"\n", i, js[i]->getName() ) ;
32     } else printf ( "Joystick %i not detected\n", i ) ;
33   }
34   if ( t == 0 ) exit ( 1 ) ;
35
36   for ( i = 0; i < Z; i++ )
37     if ( useful[i] )
38        ax[i] = new float [ js[i]->getNumAxes () ] ;
39
40   for ( i = 0 ; i < Z ; i++ )
41     if ( useful[i] )
42        printf ( "+--------------------JS.%d----------------------", i ) ;
43
44   printf ( "+\n" ) ;
45
46   for ( i = 0 ; i < Z ; i++ )
47    if ( useful[i] )
48    {
49     if ( js[i]->notWorking () )
50       printf ( "|           ~~~ Not Detected ~~~             " ) ;
51     else
52     {
53       printf ( "| Btns " ) ;
54
55       for ( j = 0 ; j < js[i]->getNumAxes () ; j++ )
56         printf ( "Ax:%1d ", j ) ;
57
58       for ( ; j < 8 ; j++ )
59         printf ( "     " ) ;
60     }
61    }
62
63   printf ( "|\n" ) ;
64
65   for ( i = 0 ; i < Z ; i++ )
66     if ( useful[i] )
67       printf ( "+----------------------------------------------" ) ;
68
69   printf ( "+\n" ) ;
70
71   while (1)
72   {
73     for ( i = 0 ; i < Z ; i++ )
74     if ( useful[i] )
75      {
76       if ( js[i]->notWorking () )
77         printf ( "|  .   .   .   .   .   .   .   .   .   .   . " ) ;
78       else
79       {
80         int b ;
81
82         js[i]->read ( &b, ax[i] ) ;
83
84         printf ( "| %04x ", b ) ;
85
86         for ( j = 0 ; j < js[i]->getNumAxes () ; j++ )
87           printf ( "%+.1f ", ax[i][j] ) ;
88
89         for ( ; j < 8 ; j++ )
90           printf ( "  .  " ) ;
91       }
92      }
93
94     printf ( "|\r" ) ;
95     fflush ( stdout ) ;
96
97     /* give other processes a chance */
98
99 #ifdef WIN32
100     Sleep ( 1 ) ;
101 #elif defined(sgi)
102     sginap ( 1 ) ;
103 #else
104     usleep ( 1000 ) ;
105 #endif
106   }
107
108   return 0 ;
109 }
110
111