Jump to content
The simFlight Network Forums

Toggle switches on X52 Pro stick

Recommended Posts

The X52 pro has 6 toggle positions (3 up/3 Down) spring loaded so they stay in the centre position. I currently have 1 of the switches (1 up/1 down) assigned to Ctrl-L (down) and Ctrl-T (up) for landing and taxi lights. The PMDG 737ngx FMC keyboard assignments has Ctrl-L and Ctrl-T  for the same.


In FSUIPC, I have the same key assignments for that switch, and the landing lights toggle on/off when I click the switch down and the taxi lights toggle on/off when I flick the switch up. All good


That leaves me with 4 switch positions left, 2 up and 2 down. As I fly the PMDG 737NGX a lot, I have assigned 1 up/1 down to engine 1 idle and cutoff and the other to engine 2 idle and cutoff


I have now just bought the PMDG 747v2 (and don't have enough switch positions left to have the same arrangement as I had in the PMDG 737NGX for fuel control) I would like to see if there is a way to set this so when starting the 747, I can set these toggle switches so that if I toggle the first switch up, it flicks the Engine 1 switch to run and if I toggle the same switch up (again) at the end of a flight it moves the switch to Engine 1 cutoff.


This way I can use the 4 free switch positions to start and cut the 4 engines on the 747 leaving the other 2 free switch positions for taxi and landing lights, as per the 737 NGX

Link to comment
Share on other sites

There are methods, using 'conditional' assignment coding where you can extend the number of functions assigned

to those switches almost indefinitely.


I have Saitek dual throttle quadrants, giving me 12 switch positions (2 up-middle-down on each quadrant).


My method uses one of those 6 switches as my 'mode up' and 'mode down' controls. Activating those increments

or decrements my current 'mode number' that is stored in user-defined offset 0x66C0.


The value in that offset is tested against the conditional coding for my other 10 switch positions to determine

what assignment is currently being used.


On my A2A B-17G implementation I have 9 'modes'. That is 9 different assignments for each of the 10 up/down

switch positions.  90 functions.  I have a lua script that displays the current assignments when the mode

is changed up or down. The display in my case is set to 2 seconds. It can be any number of seconds :)


To implement something like this you have to edit the INI file 'by hand'. here is an example of the coding for the

first three modes for my B-17G. Note that I use the "[JoyNames] AutoAssignLetters=Yes" specification in my

INI file.  "CM6" is the FSUIPC4 assigned number for my B-17G MCRO file that defines the L:Variables I use

for that aircraft.

Note that in Set 2 (Mode 1) I have multiple operations assigned to

some of those switches....primer select, fire ext. select, etc, so that by throwing one switch I can activate other

related items. This may seem complex but once you have worked with it a bit the coding becomes quite

easy. "B66C0=0" is the 'conditional' portion of the coding. So only the lines with that 'condition' will be active IF

the value in offset 0x66C0 is 0.

[buttons.Boeing B-17G]!1=//SET 1 GENERATORS, FUEL PUMPS, FUEL VALVES, CONTROLS LOCK0=B66C0=0 PD,14,CM6:39,0 ;//TOGGLE ENG1 FUEL VALVE1=B66C0=0 PD,16,CM6:40,0 ;//TOGGLE ENG2 FUEL VALVE2=B66C0=0 PD,18,CM6:41,0 ;//TOGGLE ENG3 FUEL VALVE3=B66C0=0 PA,0,CM6:42,0 ;//TOGGLE ENG4 FUEL VALVE4=B66C0=0 PD,15,C66340,0 ;//TOGGLE FUEL PUMP 15=B66C0=0 PD,17,C66341,0 ;//TOGGLE FUEL PUMP 26=B66C0=0 PD,19,C66342,0 ;//TOGGLE FUEL PUMP 37=B66C0=0 PA,1,C66343,0 ;//TOGGLE FUEL PUMP 48=B66C0=0 PA,2,CM6:45,0 ;//CONTROLS LOCK OFF9=B66C0=0 PA,2,CM6:46,0 ;//CONTROLS LOCK OFF10=B66C0=0 PA,3,CM6:45,1 ;//CONTROLS LOCK ON11=B66C0=0 PA,3,CM6:46,1 ;//CONTROLS LOCK ON!2=//SET 2 STARTERS ENG 1 - 4 CLEAR START & MESH SET 4 PRIMER & PUMP - ALL MACROS20=B66C0=1 PD,14,CM6:5,0 ;//STARTER ENG 1 - SET PRIMER TO ENG 1 MACRO21=B66C0=1 PD,16,CM6:5,2 ;//STARTER ENG 2 - SET PRIMER TO ENG 2 MACRO22=B66C0=1 PD,18,CM6:6,2 ;//STARTER ENG 3 - SET PRIMER TO ENG 3 MACRO23=B66C0=1 PA,0,CM6:6,0 ;//STARTER ENG 4 - SET PRIMER TO ENG 4 MACRO24=B66C0=1 PD,15,CM6:7,0 ;//MESH ENG 125=B66C0=1 PD,17,CM6:7,2 ;//MESH ENG 226=B66C0=1 PD,19,CM6:8,2 ;//MESH ENG 327=B66C0=1 PA,1,CM6:8,0 ;//MESH ENG 428=B66C0=1 PA,2,CM6:5,1 ;//CLEAR STARTER 1/229=B66C0=1 PA,2,CM6:6,1 ;//CLEAR STARTER 3/430=B66C0=1 PA,2,CM6:7,1 ;//CLEAR MESH 1/231=B66C0=1 PA,2,CM6:8,1 ;//CLEAR MESH 3/432=B66C0=1 PA,2,CM6:30,0 ;//SET PRIMER SELCT TO OFF33=B66C0=1 PA,3,CM6:31,1 ;//ACTIVATE PRIMER34=B66C0=1 PD,14,CM6:30,1 ;//SET PRIMER SELCT TO ENG 135=B66C0=1 PD,16,CM6:30,2 ;//SET PRIMER SELCT TO ENG 236=B66C0=1 PD,18,CM6:30,3 ;//SET PRIMER SELCT TO ENG 337=B66C0=1 PA,0,CM6:30,4 ;//SET PRIMER SELCT TO ENG 438=B66C0=1 PD,14,CM6:37,1 ;//SET FIRE EXT. SWITCH TO ENG 139=B66C0=1 PD,16,CM6:37,2 ;//SET FIRE EXT. SWITCH TO ENG 240=B66C0=1 PD,18,CM6:37,3 ;//SET FIRE EXT. SWITCH TO ENG 341=B66C0=1 PA,0,CM6:37,4 ;//SET FIRE EXT. SWITCH TO ENG 442=B66C0=1 PA,2,CM6:37,0 ;//SET FIRE EXT. SWITCH TO OFF!3=//SET 3 MAGNETOS, INVERTERS50=B66C0=2 RD,14,Cx11000892,x00030001 ;//MAG1 INC51=B66C0=2 RD,15,Cx21000892,x00000001 ;//MAG1 DEC52=B66C0=2 RD,16,Cx1100092A,x00030001 ;//MAG2 INC53=B66C0=2 RD,17,Cx2100092A,x00000001 ;//MAG2 DEC54=B66C0=2 RD,18,Cx110009C2,x00030001 ;//MAG3 INC55=B66C0=2 RD,19,Cx210009C2,x00000001 ;//MAG3 DEC56=B66C0=2 RA,0,Cx11000A5A,x00030001 ;//MAG4 INC57=B66C0=2 RA,1,Cx21000A5A,x00000001 ;//MAG4 DEC58=B66C0=2 PA,2,CM6:38,0 ;//INVERTER SWITCH ON59=B66C0=2 PA,3,CM6:38,2 ;//INVERTER SWITCH OFF60=B66C0=2 UA,3,CM6:38,1 ;//INVERTER SWITCH NEUTRAL!10=//CONTROL SET (MODE) INCREMENT/DECREMENT161=PA,4,Cx510066C0,x00080001 ;//INCREMENT 0X66C0 VALUE BY 1, MAX 8 THEN 0, CYLCLIC162=PA,5,Cx610066C0,x00080001 ;//DECREMENT 0X66C0 VALUE BY 1, MIN 0 THEN 8, CYLCLIC


Link to comment
Share on other sites

Thanks so much for your detailed reply Paul. I am afraid I dont understand a lot of what you have written, due to my poor knowledge of variables/scripts etc, so I will just have to play around with the ini file until I hit on something that does what I am seeking to do


I managed to work out the PMDG 737 thru FSUIPC using the GUI, (That was 2 engines) and the code was written into the INI file for me, so referring to that, I should be able to work out how the toggle thingy works once I have understood the Advanced user guide a bit more


Thanks  Chris

Link to comment
Share on other sites

  • 3 months later...

Hello Paul, Pete sent me this thread as a link as I'm a brand new user to FSUIPC. First, that code looks way over my head.

Ok, here's what I'd like to know how it can possibly be done. I have a Saitek Yoke, throttle, and pedals. I have been using Saitek's SST software for a year now but I just bought a Saitek X52 Pro I'd also like to use and the SST's don't get along. Saitek even duplicated it, the X52 software freezes my yoke. So I bought a registered copy of it yesterday.

I'd like to start with the yoke, throttle. and pedals. I haven't even begun setting them up yet as I have to read the manual and assign as I go. I have FSX Gold and Win 7 64. A lot of A2A planes and the NGX.

What I really need to know is if there's a way to program the Mode 1-2-3 rotary switch on the back of the yoke so I can have triple functionality of all my buttons. If not then I'll lose 2/3 of my assignments.

The same goes for the X52 Pro as it too has a mode 1-2-3 rotary button.

Do I have to learn all that code? How do I learn it? Do I need SPAD? Or LINDA also? It seems daunting.

Thanks and best regards.

Paul H.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.