# Input Profiles This page provides instructions on how to create custom device definitions and input presets for Microsoft Flight Simulator 2024. It covers using the [Input Device Editor](../../devmode/editors/input-editors/the-input-device-editor/) and [Input Profile Editor](../../devmode/editors/input-editors/the-input-profile-editor/) tools, and also provides a guide to understanding **contexts** and **profiles**, mapping **actions**, using **input overrides**, **exporting profiles**, as well as **creating the controls package** using [the Project Editor](../../devmode/editors/project-editor/the-project-editor/). It also has the following reference pages for the files that will be created as part of this process: - [DeviceConfig XML Properties](deviceconfig-xml-properties/) - [Input Configuration XML Properties](input-configuration-xml-properties/)   You can find tutorials explaining how to set up devices and profiles on the following pages: - [Device Profiles](device-profiles/) - [Transversal Input Profiles](transversal-input-profiles/) - [Aircraft Category Input Profiles](aircraft-category-input-profiles/) - [Aircraft Specific Input Profiles](aircraft-specific-input-profiles/)     ### Input Glossary Before continuing with the different aspects of this guide, it is a good idea to familiarise yourself with some of the terms that will be used throughout and what these terms mean in the context of the input application and making control profiles:   - ##### Context The context determines when a particular control mapping is active within the simulator. For example, the "A" button on a gamepad may be used to increase the throttle when the context flying an aircraft, or it may be used to perform a preflight check when the context is the user avatar. See [Understanding Contexts And Profiles](#contexts-profiles) for more information.   - ##### Actions An action is something that will happen in the simulation when an input is detected, for example, moving the user avatar forward when a positive input on the Y-axis of a joystick is detected. The exact action that happens will depend on the *context*, and you can *bind* an action to one or more inputs.   - ##### Profile A profile is simply a set of control mappings. See [Understanding Contexts And Profiles](#contexts-profiles) for more information.   - ##### Preset A preset is a named configuration within a profile.   - ##### PID (Product ID) This is the unique identifier given to a hardware device.   - ##### Input Override This defines the special settings that modify the default behavior of an action.   - ##### Curve A curve is a graph that defines the relationship between the physical input and the simulation control response. There are both hardware-level and action-specific curves.     ### Understanding Contexts And Profiles In MSFS 2024, a **context** determines *when* a particular control mapping is active. For example, some controls are only relevant in the cockpit view, while others are used on the ground or in the simulation menus. For this reason, all contexts are *predefined* and cannot be created or modified by developers.   On the other-hand we have **profiles**, which are collections of control mappings, which *are* configurable by developers, within the limits of the context. The simulation uses the following hierarchical system for profiles:   - ##### A Device Profile The device profile is the minimum required to register the device with Microsoft Flight Simulator 2024, and associate the device with some icons and images so it can be displayed in the UI. This is the *absolute minimum* required for a device to be usable in the simulation, and the user will need to set up all the input bindings themselves with the UI, however you would normally create a **transversal profile** along with the device profile so it can at least be used for basic interactions.   - ##### A *Transversal* Profile This kind of profile contains a number of generic bindings that are to be used across the simulation, based on *context*, and that are not directly related to any type or make of aircraft. For example, menu controls, camera controls, etc... This is usually created along with a **device profile** to provide the user with basic inputs from the device.   - ##### Aircraft *Category* Profiles These profiles contains mappings specific to a *category* of aircraft (*Airplane*, *Helicopter*, *Glider*, *Balloon*, *Airship*, or *Other*), and are used to define input bindings for any single controller so it can be used with any one or more of these categories.   - ##### Aircraft *Specific* Profiles These profiles contain mappings for one or more controller and a particular aircraft model. For example the DA62 has two profiles - scientific and passenger - and each one has a different input configuration for keyboard, gamepad and mouse (6 profiles in total). If you are an aircraft developer, then this kind of profile is the most useful as it permits you to set up custom input bindings, that suit the aircraft controls, for all the common controllers.   For *category* and *specific* profiles, inputs are associated with a specific set of allowed *contexts*. This means that you can only map actions from those allowed contexts to a given profile type. If you attempt to map an action from a disallowed context, the mapping will *not* be recognised by the simulator. For example: You cannot map a `COCKPIT_CAMERA` action to an *Airplane* profile because the `COCKPIT_CAMERA` context is not allowed for the *Airplane* profile.     #### Available Contexts To further help you with the available contexts and what is allowed for them, we have prepared the following table:   {{< table-wrapper >}} | Context | General | Airplane | Helicopter | Glider | Lighter Than Air | Other | |-----------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------:| | `3RD_PARTY` | | | | | | | | `ACTION_CAMERA` | | | | | | | | `AIRCRAFT` | | | | | | | | `ALWAYS` | | | | | | | | `ATC` | | | | | | | | `BASIC_CONTROL` | | | | | | | | `BASIC_CONTROL_HELICOPTER` | | | | | | | | `BASIC_CONTROL_LIGHTER_THAN_AIR` | | | | | | | | `COCKPIT_CAMERA` | | | | | | | | `COCKPIT_GLOBAL_CAMERA` | | | | | | | | `COCKPIT_GLOBAL_CAMERA_TRANSLATE` | | | | | | | | `COCKPIT_INTERACTIONS` | | | | | | | | `COCKPIT_INTERACTIONS_LOCK` | | | | | | | | `COCKPIT_VR_CAMERA` | | | | | | | | `CURSOR` | | | | | | | | `CURSOR_LOCK` | | | | | | | | `CURSOR_MODE_SWITCHES` | | | | | | | | `DEBUG` | | | | | | | | `DEVMODE` | | | | | | | | `DEVMODECAMERA` | | | | | | | | `DRONE` | | | | | | | | `DRONE_GLOBAL` | | | | | | | | `EXTERNAL_CAMERA` | | | | | | | | `FIXED_CAMERA` | | | | | | | | `GAME` | | | | | | | | `GLIDER` | | | | | | | | `HANGAR_CAMERA` | | | | | | | | `HELICOPTER` | | | | | | | | `INGAME_UI` | | | | | | | | `INPUT_EVENTS` | | | | | | | | `INSTRUMENTS_CAMERA` | | | | | | | | `INSTRUMENTS_CONTROL` | | | | | | | | `LIGHTER_THAN_AIR` | | | | | | | | `MENU` | | | | | | | | `MENU_CORE` | | | | | | | | `MENU_GLOBAL` | | | | | | | | `MENU_MOUSE` | | | | | | | | `MISSION_FLOW_TOOLS` | | | | | | | | `MODE_INTERACTION` | | | | | | | | `MODE_PAUSE` | | | | | | | | `MODES` | | | | | | | | `PC_MODE_SWITCHES` | | | | | | | | `PHOTO_MODE_ACTIONS` | | | | | | | | `PHOTO_MODE_ROTATION` | | | | | | | | `PHOTO_MODE_SWITCHES` | | | | | | | | `PHOTO_MODE_TRANSLATION` | | | | | | | | `PLANE` | | | | | | | | `PLAYER_CHARACTER_FPV` | | | | | | | | `PLAYER_CHARACTER_INTERACTION` | | | | | | | | `PLAYER_CHARACTER_MOVEMENT` | | | | | | | | `REPLAY` | | | | | | | | `RTC` | | | | | | | | `RUDDER_AXIS` | | | | | | | | `SIM_SHORTCUT` | | | | | | | | `SLEW` | | | | | | | | `SMART_CAMERA` | | | | | | | | `SPECTATOR` | | | | | | | | `SURFACES` | | | | | | | | `SURFACES_HELICOPTER` | | | | | | | | `SURFACES_LIGHTER_THAN_AIR` | | | | | | | | `THROTTLE` | | | | | | | | `TOOLBAR` | | | | | | | | `TRUE_COCKPIT` | | | | | | | | `USER_CAMERA` | | | | | | | | `WORLDMAP_COMMON` | | | | | | | | `WORLDMAP_PAD` | | | | | | | {{< /table-wrapper >}}