Can someone Explain Key files and DX
-
Ok. so i know DX only recognizes 32 buttons. With my x65F i have waaaay more. I want to use all of them. As such. I need to understand what happens when I use no key definition in the bms key file, and have the SST software control everything. I still see BUTTON x references on the key file setup.
-
The .key files list all the actions available in the sim (callbacks) that the pilot can invoke and assigns those actions to a keyboard key, DX button or nothing. The same call back can be assigned to multiple keys or buttons, if desired. If you use no key (or button) definition in the BMS .key file, you will have no way to invoke that callback/function in the sim. On the other hand, having the callback/function defined in the .key file has no action in the sim unless the appropriate key or button is pressed by the pilot. The Excel based BMS Keyfile Editor, found in the main BMS doc folder, is easiest way to assign Callbacks to custom keys and buttons, but they can also be assigned to any desired key combination in the UI Controller applet. DX callback assignments can be altered, if you really need to, by editing the .key file directly with Notepad ++ or some such.
Now once you have the callbacks assigned to the keys and buttons you want, use the SST software to assign those keys and DX button presses to the switches on your HOTAS; or you can download one of the many pre-made HOTAS profiles available. A word of caution: if you use a pre-made profile, you must use the appropriate .key file on which the profile was made. BMS has a limit of 32 DX buttons for each device, but you can also use normal keyboard presses to augment the 32 DX buttons. Most HOTAS also have analog axes (throttle, rudder, cursor control, joystick, etc) that can be assigned in the BMS UI controller advanced app. Hope this enlightens the subject. Most of this in provided in the BMS Manual.
-
SST provides keyboard emulation. In your keyfile you set up keyx to call a BMS command (a callback). If you push keyx on the keyboard, that BMS function/action will happen. But a HOTAS is not a keyboard. So you use SST as a middle-man to associate HOTAS Button 1 with keyx which then initiates a BMS callback.
So with SST, HOTAS Button –> SST Button-to-key association --> BMS Callback --> BMS function/action.
DX cuts out the middle-man. HOTAS Button --> BMS Callback --> BMS function/action.
DX will recognize 32 buttons … per device. AND allow a shifted layer on each device, which is effectively 64 callbacks per device.
For an SST programmed HOTAS button/switch to work, it MUST be associated with a BMS callback in the keyfile. There is no way for SST to associate a key with a BMS command otherwise, which means that “I need to understand what happens when I use no key definition in the bms key file, and have the SST software control everything” cannot happen. It’s contradictory … SST to control BMS, but no key definition in the BMS keyfile.
There are MANY commands that you will wanton your HOTAS that can be programmed/associated via DX or via SST. IMHO, cut out the ‘middle-man’ where ever possible. You’ll have fewer headaches in the long run.
-
Ok. so i know DX only recognizes 32 buttons. With my x65F i have waaaay more. I want to use all of them. As such. I need to understand what happens when I use no key definition in the bms key file, and have the SST software control everything. I still see BUTTON x references on the key file setup.
you dont have way more, you have a couple more. As recommended above, I would suggest you map the first 32 buttons using directX, leaving them blank in the SST profile. The remaining 5 buttons on the throttle box, and the K switch, and the last couple hats on the throttle, you will have to either leave blank (and thus without functionality) or map within the SST with keyboard commands, such that those commands match up with the desired callbacks in the BMS keyfile. I would also recommend mapping the mode switch to press keyboard keys instead of changing modes, incidentally. It makes for an acceptable override switch for the dogfight and MRM master modes.
I would recommend also avoiding shifted commands for the SST profile commands. Things like CTRL, SHIFT and ALT will cause hassles for you. If you press two buttons at once, the commands will get stepped on, and if you press two and release one its possible for the modifier key to get ‘stuck’ until it is pressed again, which will screw up all your other keyboard commands as well.
Finally I would recommend decreasing the force sensitivity as much as it will allow, so the stick requires a lot of force to displace, and I would recommend setting the ministick to control the radar cursors instead of the mouse. You can achieve this by setting the SST profile controls for the ministick to nothing, and then running a registry edit to set the ministick controls to be directX axes, and the twist rudder to be nonfunctional. Then you would need to assign the new axes within the BMS setup to control the MFD cursors in the avionics tab.
You can find the appropriate registry edit here if you like: http://falcon.blu3wolf.com/ On the right hand column.
-
Thanks for all the replies. So no i understand I have to map a key press to a call back in the bms key file. Cool, I am using a modified version of the FULL one. Additionally, I have mapped most all my callback names to the same key presses in the BMS key file to my SST software file. So here is the interesting part. I map my Stick no problem all the buttons work and they do the right thing. But when I try the hats on the TQS. one of 4 works. So it seems not only have i reached a DX limit per device. But i must be doing something wrong.
I know I’m going against the grain here with my way of wanting to do it.i guess i have a question then. I know trigger is 1… what are the other 31 button that bms will recognize on my device on the X65F.
On a closing note. 32 x 2(shifted&non-shifted) = 64 with DX PER device. I only have one. with SST i have (46 x 4(4 modes) X 2 (shifted) 368 total on one stick and throttle. that is a big difference.
Thank you all again for taking the time to reply and elucidate me.
-
you wont get 368 combinations in Falcon, not without stepping on your controls. I think I recall Saitek advertising it as being over 600 different keypress combinations being possible, but its a moot point.
As soon as you use modifier keys at the same time as each other, you will get problems. Say you map SHIFT + J to the trigger and E to the E rotary press. In play, you pull the trigger, and while pulling the trigger, depress the E rotary. Falcon sees SHIFT + J at first, then SHIFT + E + J. Then you release the trigger, and now falcon sees SHIFT + E. You press the rotary again but it doesnt work this time either, because falcon still just sees SHIFT + E. You then press another button which has SHIFT mapped, and that clears the stuck SHIFT so that other keys will work again.
Once you add three different modifiers together you will get issues. If you dont use modifiers though, that leaves you only 84 different keypresses possible - the keys on a full keyboard without modifiers.
Your device has 32 buttons that are recognised by DirectX. All the buttons on the stick will work, and the rotary presses on the throttle will work. The thumb hats on the throttle will work, the thumb button on the throttle will work. The right most hat on the back of the throttle will work, but none of the others will, nor the K switch, nor the throttle box buttons.
-
Best way to get the button numbers is to use the Control Panel in Saitek (left click the Saitek icon in the system tray) and test each one. Axis are separate. And so is the POV hat. So there’s 32 buttons/switches, plus up to ?8 axis, plus 1 POV hat per device.
…. On a closing note. 32 x 2(shifted&non-shifted) = 64 with DX PER device. I only have one. with SST i have (46 x 4(4 modes) X 2 (shifted) 368 total on one stick and throttle. that is a big difference.
True. As long as you remember which mode and shift state you’re in when you’re trying to evade an AA-12 and you want to Emergency Jettison your stores …. otherwise you may end up jettisoning the aircraft. I have a hard enough time with just one shift state.
-
Best way to get the button numbers is to use the Control Panel in Saitek (left click the Saitek icon in the system tray) and test each one. Axis are separate. And so is the POV hat. So there’s 32 buttons/switches, plus up to ?8 axis, plus 1 POV hat per device.
In this case I believe the POV hat is included in the 32 buttons, but I could be mistaken. The X-65F has 9 axes, but only 7 are enumerated to DirectX - the two missing ones being the ministick cursor X and Y axes. 8 axes is indeed the most DX will use (0 to 7), so enabling the ministick does come at a cost of one of the others. Which still works through the SST afterwards, but not through DirectX.
-
In this case I believe the POV hat is included in the 32 buttons, but I could be mistaken. ……
You may very well be right and I’m not where I can check one way or the other.
-
Hey @AGAVE…. i would like to know which button is numbered what DX…I guess I can do it in the setup test in BMS.
-
Hey @AGAVE…. i would like to know which button is numbered what DX…I guess I can do it in the setup test in BMS.
I’m saying I’ve had better luck with this:
Push a button, see what number lights up.
-
If I’m not mistaken, but the dirty little secret about BMS callbacks are that they use DX button numbering one less then what it is in Windows control panel (joy.cpl).
So a 32 DX button controller in Windows is numbered 1-32, whereas in the key file they are ordered 0-31. The way to check is press the button while in the BMS CONTROL mapper table GUI and it will state the button number for that controller. Which becomes important when reading the BMS Keyfile and trying to makes sense of the callback’s DX button reference compared to what it is outside of BMS.
-
If I’m not mistaken, but the dirty little secret about BMS callbacks are that they use DX button numbering one less then what it is in Windows control panel (joy.cpl).
So a 32 DX button controller in Windows is numbered 1-32, whereas in the key file they are ordered 0-31. The way to check is press the button while in the BMS CONTROL mapper table GUI and it will state the button number for that controller. Which becomes important when reading the BMS Keyfile and trying to makes sense of the callback’s DX button reference compared to what it is outside of BMS.
Correct.
Although, it’s not ‘secret’. It’s clearly stated in a variety of documents and posts.