]> git.mxchange.org Git - flightgear.git/blob - src/Input/js_demo.cxx
MSVC fix from Frederic Bouvier
[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 #ifdef FG_PLIB_JOYSTICK_GETNAME
32          printf ( "Joystick %i: \"%s\"\n", i, js[i]->getName() ) ;
33 #endif
34     } else printf ( "Joystick %i not detected\n", i ) ;
35   }
36   if ( t == 0 ) exit ( 1 ) ;
37
38   for ( i = 0; i < Z; i++ )
39     if ( useful[i] )
40        ax[i] = new float [ js[i]->getNumAxes () ] ;
41
42   for ( i = 0 ; i < Z ; i++ )
43     if ( useful[i] )
44        printf ( "+--------------------JS.%d----------------------", i ) ;
45
46   printf ( "+\n" ) ;
47
48   for ( i = 0 ; i < Z ; i++ )
49    if ( useful[i] )
50    {
51     if ( js[i]->notWorking () )
52       printf ( "|           ~~~ Not Detected ~~~             " ) ;
53     else
54     {
55       printf ( "| Btns " ) ;
56
57       for ( j = 0 ; j < js[i]->getNumAxes () ; j++ )
58         printf ( "Ax:%1d ", j ) ;
59
60       for ( ; j < 8 ; j++ )
61         printf ( "     " ) ;
62     }
63    }
64
65   printf ( "|\n" ) ;
66
67   for ( i = 0 ; i < Z ; i++ )
68     if ( useful[i] )
69       printf ( "+----------------------------------------------" ) ;
70
71   printf ( "+\n" ) ;
72
73   while (1)
74   {
75     for ( i = 0 ; i < Z ; i++ )
76     if ( useful[i] )
77      {
78       if ( js[i]->notWorking () )
79         printf ( "|  .   .   .   .   .   .   .   .   .   .   . " ) ;
80       else
81       {
82         int b ;
83
84         js[i]->read ( &b, ax[i] ) ;
85
86         printf ( "| %04x ", b ) ;
87
88         for ( j = 0 ; j < js[i]->getNumAxes () ; j++ )
89           printf ( "%+.1f ", ax[i][j] ) ;
90
91         for ( ; j < 8 ; j++ )
92           printf ( "  .  " ) ;
93       }
94      }
95
96     printf ( "|\r" ) ;
97     fflush ( stdout ) ;
98
99     /* give other processes a chance */
100
101 #ifdef WIN32
102     Sleep ( 1 ) ;
103 #elif defined(sgi)
104     sginap ( 1 ) ;
105 #else
106     usleep ( 1000 ) ;
107 #endif
108   }
109
110   return 0 ;
111 }
112
113