What are profiles?

  • A profile contains all screens (modes) and their associated actions (macros) and displayed text (titles).
  • The included `default` profile contains nearly all actions for all default aircraft. We also include aircraft specific examples for the Fenix a320 and Carenado Mooney M20R.
  • Editing and adding profiles allows you to fully customise, slim down or setup specialised controls for more complex 3rd party aircraft.

How do I switch and load profiles?

  1. Press both left and right `Nav` buttons to open a list of profiles.
  2. Use the right dial to navigate profiles, press the dial to load the selected profile.
  3. This will list all profiles stored in the `/profiles` directory of `fsmp_controller`

Where can I edit the profiles?

  1. Profiles are located in the `/profiles` directory of `fsmp_controller`
  2. Profiles are JSON formatted text files
  3. Simply copy and re-name a profile in this directory to make a new one.
  4. Use the prefix `msfs-` when naming profiles.
  5. Open profile files using a plain text editor, e.g. Visual Sudio Code
  6. Copy and paste your JSON into a validator like JSONLint if you have issues loading an edited profile.

Where can I find "event" values (Simmconnect)

  1. Simconnect Events & variables are used to interact with MSFS2020. Events trigger actions, and variables return data from the simulator.
  2. Official Events: Microsoft: Event IDs
  3. 3rd Party aircraft: HubHop Presets
    1. Use the preset name prefixed with `Mobiflight.` e.g. `MobiFlight.AS1000_PFD_HEADING_SYNC`
    2. Requires the Mobiflight WASM module to be installed to your community folder.


  • `Modes` are the different screens or pages that you see on the device within a profile.
  • `Shift` (Mod/Modifier) - this is activated when the small buttons next to the dials are pressed.

Intro to Profile Editing

  1. Go to the `/profiles` directory of `fsmp_controller`
  2. Copy `msfs-default` and rename to `msfs-myprofile` (or anything starting with `msfs-`)
  3. Open `msfs-myprofile` in a plain text editor like Visual Sudio Code

You should see some familiar text that you have also seen on the macro panel. After each `title`, you can see it's associated action (`macro`).

  1. Expirement with editing the text of one of the buttons you regcognise e.g. change the first input "AP" to "ABC"`.
  2. Save the change. Load the profile on the macro panel by opening the profile switcher.
  3. You can reload the profile after further changes by opening the profile switcher and selecting current profile again.

  • Set the category and mode name to anything you like, these are displayed when the mode is active.
  • Modes are grouped by category, all modes in one category must be next to each other.

JSON Schema (available properties)


  • `name` : [ "{Mode Category}", "{Mode Name}" ]
    • The category and mode name can be set here, these are displayed when the mode is active.
    • Modes are grouped by category, all modes in one category should be next to each other.
  • `inputs` : [ { "a1" : Input }, { "a2" : Input } ... ]
    • This contains the configuration for each input (buttons and dials).
    • You can omit any input or input property from this point and it will default to an empty value.
    • The input references "a1", "enc1" etc relate to this diagram: Input Diagram

Input (all)

  • `title` : "{Input Label}"
    • The text to display on the button or dial label, this is limited to a few characters.
  • `macro` : [ { Macro }, { Macro } ... ]
    • This allow one or multiple macros to be triggered when the button or dial is pressed.
  • `title:s` / `macro:s`
    • Any property with `:s` on the end will only activate while the shift button is pressed.
    • This will override the non-shift properties if they are set.
    • This is often used to define fine & course modes for dials.

Input (dial)

** Same as the `Input (all)` above but with these additions **

  • `macro+` : [ { Macro }, { Macro } ... ]
    • Triggered on each notch of rotation, clockwise.
  • `macro-` : [ { Macro }, { Macro } ... ]
    • Triggered on each notch of rotation, counter-clockwise.

Macro (simconnect)

  • `type` : "simconnect"
  • `event` : "{event_id}"
  • `data` : "{value}"
    • Optional: you can use this if the event requires an additional value.
  • `convert` : "bcd"
    • Optional: you can use this if the event data requires BCD formatted data.
  • `repeat` : "{number}"
    • Optional: Repeats the macro for the number provided.

Macro (keys)

  • `type` : "keys"
  • `keys` : ["ctrl","i"]
    • A list of keys to press in combination
    • If you want to trigger one key at a time instead, split each key into it's own Macro object. E.g.
      • "macro" : [{ "type": "key", "keys": ["up","right"] }, { "type": "key", "keys": ["right"] }, { "type": "key", "keys": ["right"] }]

© 2023 - fsmacropanel.com