October 3, 200421 yr Some time ago I was asked how to access keystrokes by XML gauges. The only answer I could have given, would be to build a C-gauge using Dinput and passing to L: variables. But recently I discovered something new in the GPS codes: there is a genuine key access section in the XML possible, even simpler as in C the .. section. I was searching for something completely different ( "Can the C:fs9gps:... syntax also used in C? In the other direction: Can TrafficInfo be read from XML?"), but I found this.In the Keys section two different accesses can be made, a "processed keys" or "listen" mode, where the keypresses, joystick buttons and gauge actions are preprocessed and mapped to the corresponding (K:...) actions ( ... ), the "Event" is still executed.The second method is direct keyboard access where you "steal" the raw codes away from FS. The raw method only works if the section is "visible", the gauge itself has to be visible, and optionally also a section in the Section (NOTE gauges in the VC are always visible, in the 2D panel only if their panel window is visible). To the example:Slaving the Aircraft exit to the AP switch is pretty dump, but it's for demonstrating purposes. The second example reads the last pressed key and draws it to a string of four characters. First the keyscan has to be activated by clicking on the gauge. Since L: vars can't hold strings, the numeric values are stored in one L: variable per char and then displayed.Arne Bartels
October 3, 200421 yr Arne,Is the string converted into a numeric value by fs9 or must that be done xml?Hmm could this give the possibility to develop a flight computer unit where the buttons could be connected to the keyboard?BrgdsEugenPs I think that this post should go into the FAQ as a valuable knowledge
October 3, 200421 yr The keyscan code itself is "(M:Key)". I shifted all other chars before, then store it with "(>L:char1,number)". "(M:Key) chr" would convert the keycode to the corresponding char, but L: can't hold chars and strings, so I do the conversion only for the display (multiple use of "chr"). The both lines have the same effect, but do something different, the first, commented one, just displays the last four scancodes as four chars ("!s!....!s!"). The second version converts the scancodes to chars ("chr") and then adds them to a complete string one by one ("scat"), at last the complete string is displayed ("!s!"). BTW the inverse to "chr" is "ord".A bit complicated, but OK I think. Arne Bartels
October 3, 200421 yr Hi Arne,Well, this is another great discovery ...LOLI have a question, and an addition.The question:The "raw" method (using M:Key) only works for normal Ascii keys.So no Shift- , or Control- sequences, or functionkeys like F1.Right ??Moreover, typing such a key in "raw" mode (like "g" or "p") is really "intercepting" it, so the corresponding FS function ("toggle gear" resp. "pause" ) is not executed.Right ??If both right, this means that, before you are able to use this "raw" method to control XML gauges, you have to use another method first to enable/disable this "raw" mode, otherwise all normal Ascii keys to control normal FS functions (like "g" for "toggle-gear") would be disabled permanently.Like you did with the condition in your example.The addition:The "listen" mode (using the On-Event method) is a great enhancement by itself.Upto now, I used "unused" FS events to control XML gauges. However, in FS9 this has a big disadvantage, since FS9 ignores events that are not relevant for that specific aircraft.E.g. using "toggle-afterburner4" as a control event (and reading the corresponding variable to see when the event has been given) cannot be used if the aircraft has no afterburner defined, or has no 4-rth engine.However, the "listen" method DOES allow this !!!!Example:Assume you have a one-engine aircraft with NO afterburner defined.With this "listen" method you can now (mis-)use AfterburnerEngine4 to control something in a XML gauge.In the XML gauge:(>K:TOGGLE_AIRCRAFT_EXIT)In the FS9.cfg (keys section)TOGGLE_AFTERBURNER4=51,11 //Assign "Control-Shift-3" to Toggle_Afterburner4Now, typing "Control-Shift-3" will toggle the Exit.(as in your example, not very usefull ... but just to illustrate the method).Cheers, Rob Barendregt
October 14, 200421 yr Exciting stuff.I am trying to prevent the starter from operating when the battery is off. If the starter in a turboprop is assigned to a key , it always works and activates the default sound even with no power to the panel.So here is my attempt at doing that, but it locks up the flightsim. What did I do wrong??(A:Electrical master battery,bool) %BATTERY (%((A:Electrical master battery,bool))%{if}ON%{else}OFF%{end})(K:TOGGLE_MASTER_BATTERY,bool) ! (>K:TOGGLE_MASTER_BATTERY,bool)(L:key_track, bool) ! (>L:key_track, bool) (>K:TOGGLE_STARTER1) (L:key_track, bool) (L:char3,number) (>L:char4,number) (L:char2,number) (>L:char3,number) (L:char1,number) (>L:char2,number) (M:Key) (>L:char1,number) Steve
October 24, 200421 yr Author Another way to prevent "CRTL-E":(>K:ABORT)Not so funny....Jan"Beatus Ille Procul Negotiis" Jan "Beatus ille qui procul negotiis..."
Create an account or sign in to comment