diff --git a/src/Input/fgjs.cxx b/src/Input/fgjs.cxx index 5a646cc99..5ac21fea0 100644 --- a/src/Input/fgjs.cxx +++ b/src/Input/fgjs.cxx @@ -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) { diff --git a/src/Input/jsinput.cxx b/src/Input/jsinput.cxx index 271325884..7b6a198f2 100644 --- a/src/Input/jsinput.cxx +++ b/src/Input/jsinput.cxx @@ -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; diff --git a/src/Input/jsinput.h b/src/Input/jsinput.h index 131f69db5..b5b0794ae 100644 --- a/src/Input/jsinput.h +++ b/src/Input/jsinput.h @@ -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)