]> git.mxchange.org Git - flightgear.git/commitdiff
Ralf Gerlich:
authorehofman <ehofman>
Sun, 31 Jul 2005 14:05:55 +0000 (14:05 +0000)
committerehofman <ehofman>
Sun, 31 Jul 2005 14:05:55 +0000 (14:05 +0000)
- automatic detection of axis directionality, so that axis inputs are appropriately inverted only when necessary
- fixed trim axis names for better understandability
- fixed signs for flaps up/down property increments
- button 0 was previously used for skipping axes and buttons in both loops. Now button 0 can be assigned a binding (e.g., brakes). Instead, moving any axis during the button-assignment-loop indicates skipping.
- The user is now told how to skip a control.

src/Input/fgjs.cxx
src/Input/jsinput.cxx
src/Input/jsinput.h

index 5a646cc99ee03084182376c405e5e05857f6f901..5ac21fea0c8d71da5dc00cce5e5039620c02812c 100644 (file)
@@ -50,15 +50,18 @@ string axes_propnames[8]={ "/controls/flight/aileron","/controls/flight/elevator
                            "/sim/current-view/goal-pitch-offset-deg"
                          };
 
+string axis_posdir[8]= { "right", "down/forward", "right", "forward", "forward", "forward", "left", "upward" };
+
+
 bool half_range[8]={ false,false,false,true,true,true,false,false };
 
 bool repeatable[8]={ false,false,false,false,false,false,true,true };
 
-bool invert[8]= { false,true,false,false,false,false,false,true };
+bool invert[8]= { false,false,false,false,false,false,false,false };
 
 string button_humannames[8]= { "Left Brake", "Right Brake",
                                "Flaps Up", "Flaps Down",
-                               "Elevator Trim Up", "Elevator Trim Down",
+                               "Elevator Trim Forward", "Elevator Trim Backward",
                                "Landing Gear Up", "Landing Gear Down"
                              };
 
@@ -76,7 +79,7 @@ bool button_modup[8]={ true,true,false,false,false,false,false,false };
 
 bool button_boolean[8]={ false,false,false,false,false,false,true,true };
 
-float button_step[8]={ 1.0, 1.0, 0.34, -0.34, 0.001, -0.001, 0.0, 1.0 };
+float button_step[8]={ 1.0, 1.0, -0.34, 0.34, 0.001, -0.001, 0.0, 1.0 };
 
 string button_repeat[8]={ "false", "false", "false", "false", "true", "true", "false", "false" };
 
@@ -379,7 +382,8 @@ int main( int argc, char *argv[] ) {
 
   for(control=0;control<=7;control++) {
       cout << "Move the control you wish to use for " << axes_humannames[control]
-           << endl;
+           << " " << axis_posdir[control] << endl;
+      cout << "Pressing a button skips this axis\n";
       fflush( stdout );
       jsi->getInput();
 
@@ -397,6 +401,7 @@ int main( int argc, char *argv[] ) {
          if (strcmp(answer,"n")==0) {
            control--;
          } else {
+          invert[control]=!jsi->getInputAxisPositive();
            if (usexml) {
              writeAxisXML( xfs[jsi->getInputJoystick()], control, jsi->getInputAxis() );
            } else {
@@ -424,6 +429,7 @@ int main( int argc, char *argv[] ) {
       } else {
         cout << "Press the button you wish to use for " << button_humannames[control] << endl;
       }
+      cout << "Moving a joystick axis skips this button\n";
       fflush( stdout );
       jsi->getInput();
       if(jsi->getInputButton() != -1) {
index 27132588495eb60b321a318365df25ae71dfaead..7b6a198f26cad93af1e59e82d3fdcf93ca300ea5 100644 (file)
@@ -29,7 +29,7 @@ jsInput::jsInput(jsSuper *j) {
 
 jsInput::~jsInput(void) {}
 
-int jsInput::getInput(void){
+int jsInput::getInput(){
       
       bool gotit=false;
       
@@ -37,6 +37,7 @@ int jsInput::getInput(void){
       int i, current_button = 0, button_bits = 0;
 
       joystick=axis=button=-1;
+      axis_positive=false;
       
       if(pretty_display) {
           printf ( "+----------------------------------------------\n" ) ;
@@ -79,6 +80,7 @@ int jsInput::getInput(void){
                 gotit=true;
                 joystick=jss->getCurrentJoystickId();
                 axis=i;
+               axis_positive=(delta>0);
               } else if( current_button != 0 ) {
                 gotit=true;
                 joystick=jss->getCurrentJoystickId();  
@@ -102,7 +104,7 @@ int jsInput::getInput(void){
         ulMilliSecondSleep(1);
       }
       if(button_bits != 0) {
-        for(int i=1;i<=31;i++) {
+        for(int i=0;i<=31;i++) {
           if( ( button_bits & (1 << i) ) > 0 ) {
              button=i;
              break;
index 131f69db59d8f5e045bcd6196e034c2f6cedd248..b5b0794aef87fd3ec5ea42bce9be9f767a8a579f 100644 (file)
@@ -34,6 +34,7 @@ class jsInput {
     int button_iv[MAX_JOYSTICKS];
     
     int joystick,axis,button;
+    bool axis_positive;
     
     float axis_threshold;
     
@@ -48,6 +49,7 @@ class jsInput {
     inline int getInputJoystick(void) { return joystick; }
     inline int getInputAxis(void)     { return axis; }
     inline int getInputButton(void)   { return button; }
+    inline bool getInputAxisPositive(void) { return axis_positive; }
     
     inline float getReturnThreshold(void) { return axis_threshold; }
     inline void setReturnThreshold(float ff)