Sep 302012

Background: In computing, DirectInput forms a part of the DirectX library, a Microsoft API for collecting input from a computer user, via input devices such as the mouse, keyboard, joystick or other game controllers. It also provides a system for action mapping, which allows the user to assign specific actions within a game to the buttons and axes of the input devices. Additionally it handles force-feedback (input/output) devices.

DirectInput provides benefits over normal Win32 input events:

  • they enable an application to retrieve data from input devices even when the application is in the background
  • they provide full support for any type of input device, as well as for force feedback
  • through action mapping, applications can retrieve input data without needing to know what kind of device generated that input


(Adapted from Dunc_DX BMS Keyfile, version 1.0, 2011-08-17)

Whilst this article refers to the Cougar, much of it can be applied to any HOTAS with comparable capabilities.  For this exercise we are going to configure the HOTAS with full functionality and provide a secondary layer of functions using DirectX shifting.  As I do not have rudder pedals, this article will demonstrate how to achieve rudder control using the large antenna elevation dial on the throttle, as well as the ability to control TrackIR and Teamspeak along with VAC (Voice Activated Commands).  We will also be using an improved version of the default key file, which provides a more structured and easy to find navigate layout in the Falcon UI.

This article assumes that you already know how to setup your TM Hotas Cougar in general (i.e. performing manual/automatic calibration, load and compile Foxy profiles and how to load keyfiles in Falcon BMS). It only covers necessary steps to get the provided files up and running.
This profile uses the new BMS DirectX shifting feature to avoid any emulated keyboard input whenever possible. All files have explanatory comments inside, so feel free to check out the
KEY, TMJ and TMM files for further information.

This profile consists of the following components:

BMS_DirectX.tmm                                                    // Foxy profile files
BMS_DirectX.tmj                                                      // Foxy profile files
BMS_DirectX.key                                                      // BMS Falcon keyfile

In order for this profile to work, make sure that the axis mapping configuration within your TM Hotas Cougar CCP is setup like this (to ensure that we can use the microstick as analogue

HOTAS CCP Axis Setup

Copy the BMS_DirectX.tmm and BMS_DirectX.tmj files to your “…Foxy/files” folder, open foxy, load the files, compile and download to the Cougar. Please note that you will NOT see anything happen in the Foxy keytester if you press Cougar buttons, as this profile uses DirectX buttons nearly exclusively.

Open the Falcon BMS.cfg file which is located in your BMS User\Config folder with a text editor. Find the setting: set g_bHotasDgftSelfCancel. It’s set to 0 by default, please set it to 1. Additionally, verify that the setting set g_nHotasPinkyShiftMagnitude is set to 256 (default).

Copy the BMS_DirectX.key file to your BMS User\Config folder. Start Falcon BMS, go to the Setup Controllers screen, and make sure that Thrustmaster HOTAS Cougar is selected as main controller. Next, load the BMS_DirectX.key file, then go to the Advanced – Avionics Control section. Make sure that the axis are mapped as follows:

This concludes the mandatory part of the Dunc_DX profile setup. Please note that the BMS Setup Controllers screen is unable to display the DirectX shifted functionality, you will only be able to test/see the unshifted DirectX buttons. To test out the shifted DirectX buttons, you have to enter the sim and fly.

Check out the included PDFs for keyboard and joystick mappings.

Sep 302012

The following is an excerpt from the BMS-Manual.pdf (C:\Program Files\Falcon BMS 4.32\Docs\Falcon BMS Manuals) and is part of a series of documents intended to demistify the art of configuring your HOTAS and maximising the inherent functionality that BMS provides.

HOTAS F16 Overview

The following diagrams illustrate the typical F-16 HOTAS control grips and the various functions assigned to them. With the exception of the black-out switch (HOBO), all HOTAS functions are modeled and hard coded. Many of the functions are mode dependent, in that the function of a hat or button will appropriately vary depending on what master mode (AA, AG, NAV) or submode (CRM, ACM, TWS, RWS, BORE, DGFT, MSL,) or SOI Sensor Of Interest (TGP, HSD, FCR, HUD) is currently selected. Tap and hold functionality as appropriate is also hard coded and does not require any further programming.
The sections which follow illustrate the function of the various controls in AA and AG modes and provide the names of the key file callback names that are typically mapped to each switch position on the stick and throttle grips.

All of these functions are able to be applied to a Cougar HOTAS, however for other HOTAS your choices may be varied and limited to available hats and buttons, whereby it is strongly advised to adapt as many of the core functions as possible, particularly these 4 way hats: TMS (Target Management Switch); DMS (Display Management Switch); CMS (CounterMeasures Switch) and COMMS (Communications) and CURSOR CONTROL.

In the next article, HOTAS Programming with DirectX, we will look at how we can apply these functions to a HOTAS


HOTAS Sidestick Air to Air

HOTAS Throttle Air to Air

HOTAS Sidestick Air to Ground

HOTAS Throttle Air to Ground