I write this so we have something to point new people to.
This will be a quick how-to regarding keybindings for players new to BMS and unsure of what controls need to be bound. Also explained will be a vital control mechanic in BMS known as the Pinky Shift button, and how this will help you when you don't have $500 to blow on a new stick.
Anybody used to a universal "do this" buttons as found in any normal video game needs to know that every in-game control mimics a control in the real F-16, and many of them serve multiple purposes. Attached in image format is a list of buttons on the real F-16 HOTAS, their functions and their in-game callbacks.
For those who don't yet know what the above is and what it means for you, below is a basic rundown of callbacks, how important they are and what they do. As I rarely use the keyboard, I can't say what the keyboard binding for any of these would be. For those with not enough buttons it's perfectly fine to put things wherever you want them, as long as they're easy to remember and (preferably) make sense logically:
SimTriggerSecondDetent = Gun
SimPickle = Weapon Release
SimTMSUp = Target Select / "Do" button
SimTMSDown = Target Deselect / "Undo" Button
SimDMSDown = Switch SOI (Switch MFD)
SimMissileStep = Change weapon / pylon / bombing mode
SimRadarElevationUp = Raise Radar Altitude
SimRadarElevationDown = Lower Radar Altitude
SimDropProgrammed/SimCMSUp = Drop countermeasure prgms. 1-4
SimToggleMissileCage = Cage / Uncage Sidewinder seeker, remove maverick cover
SimHotasPinkyShift = Zoom / change FOV when press, acts as shift button when held
SimCMSRight = ECM Standby
SimCMSDown = ECM Consent
SimSelectSRMOverride = Dogfight override mastermode
SimDeselectOverride = Cancel override
SimCursorUp = Radar cursor
(Recommendation) Shifted Hat Switch:
SimTransmitCom2 = Transmit VHF Radio
SimTransmitCom1 = Transmit UHF Radio
SimCommsSwitchLeft = A-A Datalink Transmit (not as important for beginner)
SimCommsSwitchRight = A-G Datalink Transmit (not important for beginner)
SimWheelBrakes = Wheelbrakes (K by default)
AFBrakesToggle = Toggle airbrakes
AFBrakesIn = Airbrakes retract
AFBrakesOut = Airbrakes extend
Useful, not vital:
SimDMSLeft = Cycle left MFD pages
SimDMSRight = Cycle right MFD pages
SimSelectMRMOverride = Missile override mastermode, for quick A-A use
SimSpotLight = Cockpit spotlight, comes on with battery power, recommend bind to keyboard
Things I've never used:
SimDMSUp = Change SOI to HUD
For users with no head tracking I highly recommend never using the hat switch for viewing and learning to use the mouse effectively instead, as it frees up the hat switch for vital functions. By default, one can look around by holding down the right mouse button, and can drag the head around using the middle mouse button.
The pinky shift mechanic in BMS allows the pinky button on the F-16 HOTAS to function similar to the shift button on your keyboard, or the function button on some laptops. Just as the keyboard shift button allows other buttons to have multiple uses, the pinky shift mechanic allows you to effectively have two callbacks assigned to one joystick button and allows you to access the second callback by holding down SimHotasPinkyShift and pressing the desired button.
SimHotasPinkyShift must be assigned twice to the desired shift button, as the act of pressing the shift button will shift the shift button too, and the game will not recognize the release of the button unless the callback is present in both the normal and shifted states.
The only issue is that this mechanic is not accessible through the in-game setup screen (the in-game editor has other issues as well, one being that it does not actually show the correct callback names). To make use of it, one has to resort to using spreadsheets included with the game, third party editors (linked below), or modifying the keyfile by hand.
Third Party Editors:
Easy to use, no spreadsheets.
Has a habit of crashing, save often.
Default quickstart keyfile is missing a few things, attached in this post should be a modified version for use with the program (Quick HOTAS Setup.key). One can also edit the default BMS keyfiles.
Built-in callback reference is outdated.
Use this one.
If the program has issues after setting shift button, save and reload the keyfile after setting shift.
If you have program crashes at the same point consistently, saving and reloading the file sometimes fixes it.
Seperate launcher for game, still no spreadsheets.
Not as easy to use.
One has to fiddle around with toggle button to assign shifted states.
Cannot shift hat switch.
Quick HOTAS Setup.key
We'll be talking about the keyfile editor from the last post and will be using it to create a new keyfile.
A version with modified Quickstart keyfile and Callback Reference can be found here: https://www.dropbox.com/s/dln076plj6hs3xw/Keyfile editor Alpha 1.zip?dl=0
When you start it up, you will be greeted by two panes (and errors, ignore them). The lower pane has tabs, one tab for each device. In each tab there is a list of buttons that can be lit up by pressing them on your devices.
We'll load the BMS Basic keyfile, you can do this with the full keyfile or the minimal keyfile, or you can use the quickstart keyfile bundled with the program.
We are going to assign every button to a blank callback first, and then change the callback afterwards.
Start by pressing the green '+' at the top right, doing so will add a blank unbound callback to the upper pane. We need one blank callback for every unbound joystick button, in this case eight of them.
After we've made our blank callbacks we'll assign our unbound buttons to them, one button per callback. Double-clicking "Unassigned" in the right hand column will bring up a dialogue box, we can either press a joystick button or select a button from the drop down menu to assign it to the callback. We are going to change these blank callbacks later. It's easier to bind to blank callbacks and then change them than it is to assign buttons directly to the desired callbacks directly, as the program does not handle button conflicts very well.
Next, we're going to be assigning the button that will function as our pinky shift. For those that have them, use the pinky button on your stick. For everybody else, find a button that's easy to hold down while pressing other buttons simultaneously. I'll use Joy 1 Button 10, remember what you choose as it will be important later on.
In the bottom pane, double-click on the current callback for that button to bring up a library of callbacks, sorted by their location in the cockpit of the F-16. We want to look for the Flight Stick section under Flight Control (HOTAS), and select SimHotasPinkyShift, and hit OK.
Once the pinky shift button is assigned, we need to save the keyfile and close the program immediately. Reopen the program and reload the saved keyfile and you will be greeted with new tabs for your shifted device states.
Go to the new tab for your shifted device and do the same thing we did at the start, pressing '+' to add a new blank callback for every unbound button in your shifted device tab.
To assign our shifted buttons, we need to do something slightly different. Click "Unassigned" like we did the first time around, but this time when the dialogue box pops up we will need to hold our pinky shift button in combination with the desired button to map. The end result should include the string <Shifted>.
As before we'll assign every unbound button, but this time these buttons all require you to press them while holding the pinky shift button. This poses an issue for our pinky shift button, as we can't "shift" the "shift button" here.
Instead, we'll have to select the shifted counterpart (in our case Joy 1 <Shifted> Button 10) of our pinky shift button from the dropdown menu. If you can't find it you can press another shifted combination to put the dropdown menu in the right area, then select the correct button.
"But if we can't shift the shift button then why do we need to bother assigning it in it's shifted state?"
Just do it, I'll explain shortly.
After assigning the remainder of your buttons, we'll return to the "shifted" shift button.
As I said before, we can't "shift" the "shift button" in this program.
But BMS does.
Technical stuff, don't worry too much about it: Put simply, BMS by default automatically reserves lots of buttons. 256 of them, 0 to 255, 32 for each device. The pinky shift mechanism in BMS works by effectively increasing each joystick button number by 256. When we bind callbacks to the shifted layer we are binding callbacks to buttons 256-511 instead of the normal 0-255. The issue is that when we tell the game to shift buttons upwards, the pinky shift button is shifted upwards as well and the game cannot tell when it is released because the associated button number doesn't exist anymore.
The way around this is to assign SimHotasPinkyShift twice, once to the desired button (Joy 1 Button 10 as done previously), and again to it's shifted counterpart (Joy 1 <Shifted> Button 10).
Double-click on the callback, scroll up to the Flight Stick section under Flight Control (HOTAS), and select SimHotasPinkyShift again, and hit OK.
Once we've taken care of the pinky shift bindings, we can assign the rest of our buttons as desired. Below you can see the end result. Note SimHotasPinkyShift, as discussed before, is assigned to the same button in both the normal and shifted states.
Recreated above is the setup I use for my Hotas X. You may find it worth it to sacrifice certain things like TMS Right, DMS Up/Left/Right and maybe even TriggerFirstDetent for things like wheel brakes, airbrakes toggle or landing lights based on your needs. I use racing wheel pedals for differential toe brakes and the rocker on the back of the Hotas X mapped to keyboard buttons (using JoyToKey) for extending and retracting airbrakes, which is why neither of these are present here.
Another Coop Insurgency playtest with the new Gaza_2.
..... and currently working on the killing an civilian Intel. In humans vs. bots mode, i have to change only 1 codeline in the python and it works. In Coop, human/bots vs. bots i have to make a complete specifiec class behaviour setup for the Opfor and Blufor bots, so the Blufor bots only will use the arresting weapons (ziptie, shotgun, etc.) against civies.