Setup advice for G940

Discussions and general chat

Moderator: RussDirks

Post Reply
fm_weasel
Posts: 7
Joined: Tue Aug 17, 2010 9:42 am

Setup advice for G940

Post by fm_weasel » Fri Sep 24, 2010 1:01 am

I've been happily flying with my G940 and FSForce for a couple months now, but I'm really looking to squeeze out some additional performance to make things more enjoyable.

1) The trim wheel for elevator trim is a little jumpy in FSForce. It appears to move smoothly on the Game Controllers screen. What happens, is that pushing the wheel in one direction can adjust the trim in increments of 1 initially, but once I reverse the direction, it usually doesn't input a trim change until 5-7 clicks have passed, causing FSForce to jump trim by that amount. Once it gets going in the new direction, it will return to adjusting by increments of 1 until I change the direction of wheel rotation again. It's like it gets hung up when I change the direction I am adjusting trim. This makes fine trim adjustment difficult. If I miss the desired trim setting, I end up having to overshoot by a bit in the other direction, so as to re-approach my desired trim setting when the wheel again begins adjusting in increments of 1.

I have adjusted the Hysteresis sliders in the Game Controllers menu, which doesn't seem to affect the issue much.

2) Does anyone achieve hands-off flying with a G940? I am still experiencing the issue where a large null-zone setting in FSX is needed to prevent the stick from issuing inputs after I trim and let go of the stick. What are your techniques? Getting the trim just right is hard enough due to the aforementioned jumpy-trim-wheel issue, but once it's set right, the stick will still lean one way or the other and cause inputs to be sent, especially when the trimmed position of the stick is near the limit of the 65% null zone I've set. This means no matter what, I can't take my hands off the stick without immediately changing pitch (albeit slightly, with my massive nullzone setting). Regardless, I feel there's a better way than setting this massive nullzone, since it's also affecting my usable stick travel.

RussDirks
Site Admin
Posts: 696
Joined: Sat Sep 13, 2003 1:18 pm
Location: Chilliwack, Canada

Post by RussDirks » Fri Sep 24, 2010 10:49 pm

1. I checked my G940, and I'm seeing the same thing. FS Force gets joystick data via FSX/Simconnect, which is where the problem seems to be originating from. I tried a different brand of joystick, and it worked fine.

2. If you look at the joystick from the side, you can see that the center of gravity is forward of the base of the joystick, which means it is going to naturally lean forward if you let go. I don't think it's realistic to expect to be able to fly hands off with this joystick.
Russel Dirks
Forum Moderator

crim3d
Posts: 32
Joined: Wed Apr 15, 2009 7:35 pm

Post by crim3d » Wed Sep 29, 2010 11:49 pm

Well, I'll post what I do.

First, you need PPJoy (http://ppjoy.blogspot.com/) to create a virtual joystick with at least 2 axis, and Glovepie (http://glovepie.org/).

The idea is to use the axis of the real joystick as inputs of the glovepie script and the ppjoy axis will be the output. In FSX, the axis of the real joystick must be cleared and the ppjoy axis configured.

The chain would be:
joystick->Glovepie script->ppjoy->FSX

This is the script to be run in glovepie:

EDIT: what the script does is to create a dead zone that dinamically moves to the position where the joystick is in the moment one of the two trim buttons are released. So it assumes that buttons are used for trim and that the joystick is on the desired position when the button is realeased. (I forgot to mention the script's purpose on first edit)

Code: Select all

var.deadzone=0.05
if (joy1.Button4)  // Cancel deadzone logic to recover range of movement temporaly
   ppjoy1.Analog1=joy1.y
else
    if (!var.notfirst) //Initialization on first iteration
       ppjoy1.Analog1=joy1.y
       var.notfirst=true
    endif

    if (Released(joy1.Button7)) //Reset
       var.centery=0
       ppjoy1.Analog1=joy1.y
       var.centerout=0
       say("Axis reset")
    endif

     if (Released(joy1.Button2))||(Released(joy1.Button3)) //Update deadzone position
        var.centery=joy1.y
        var.centerout=ppjoy1.Analog1
     endif

//Deadzone logic:
     if (!InRange(joy1.y,var.centery-var.deadzone,var.centery+var.deadzone))
          if (joy1.y>var.centery)
                 ppjoy1.Analog1=var.centerout+(joy1.y-var.centery-var.deadzone)
          else
              ppjoy1.Analog1=var.centerout+(joy.y-var.centery+var.deadzone)
          endif
     endif
endif
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
//As axis X (ailerons) is not affected by fs-force trim it has a conventional fixed deadzone.
ppjoy.Analog0=DeadZone(joy1.x,var.deadzone)
The script assumes that your main joystick is the first one in the game controllers list (hence joy1), that buttons and not an axis are used for trimming, and that those buttons are button 2 and 3. But it's a matter of replacing joy1 with joy2, joy3... as needed and the same with buttons (joy1.Button4, joy1.Button20 ...). The deadzone can be changed initializing the variable var.deadzone to another value (maximum would be 1.00).

Something important to take into account is that when a virtual joystick is created for the first time with ppjoy it needs calibration!

All this somewhat complicated thing allowed me to return to a comfortable free hand flying that I first lost when I jumped into the force feedback world.

fm_weasel
Posts: 7
Joined: Tue Aug 17, 2010 9:42 am

Post by fm_weasel » Mon Oct 04, 2010 6:51 am

Very good work. I understand, though, that this will not work when using trim wheels to change trim?

crim3d
Posts: 32
Joined: Wed Apr 15, 2009 7:35 pm

Post by crim3d » Tue Oct 05, 2010 1:53 pm

Right. As this script can't communicate with fs-force it determines the moment to update the deadzone position with the release of one of the trim buttons. It would be a lot more difficult to determine that instant from the variations of a trim axis.

Post Reply