Joystick Gremlin Plugin

Joystick Gremlin is a joystick remapping tool, not a game. It operates at the device level, so bindings exist independently of any game. Its mode system, response curves, and scripting make it popular in the sim community.

Because JG works below the game layer, importing your JG profiles alongside your game profiles gives you a complete picture of every button's purpose, including bindings that no individual game knows about. Together they form a single, unified view of your HOTAS binds across all sources.

Website: https://whitemagic.github.io/JoystickGremlin

How the Plugin Works

Joystick Diagrams reads your Joystick Gremlin profile XML file. Because JG supports very complex setups, not every configuration type can be fully automated. The plugin uses JG's built-in Action Description feature to handle those cases.

JG support took a big step forward in 2.2.0. Buttons, axes, hat containers, and virtual hats are all fully supported. Cross-device routing via <remap> now covers both buttons and axes, so Gremlin macros and game-native bindings end up on one diagram. Feedback on Discord shapes what we tackle next.

vJoy Routing (new in 2.2)

Joystick Gremlin typically sits between your physical stick and the game, re-emitting inputs through a vJoy device. Before 2.2, that meant two diagrams: the physical stick with Gremlin labels on one side, the vJoy device with DCS action names on the other. Neither was useful on its own.

Starting in 2.2, the plugin reads every <remap> action (buttons and axes both) and declares a route: “commands bound to vJoy Device N / Button X (or Axis A) should display on the physical input that triggered them.” Joystick Diagrams applies those routes before rendering the diagram. The result: one diagram per physical device, showing both your Gremlin macros and the downstream game actions they fire.

How conflicting bindings combine (e.g. a Gremlin macro name next to the DCS action it produces) is controlled by the alias conflict strategy on the Merging Bindings page. Qualifiers derived from Gremlin container shapes (tempo, double-tap, smart toggle, conditions) show up in the merged text so you can tell a short-press from a long-press at a glance.

The underlying mechanism is documented for plugin authors on the Input Routing API page.

What's Supported

Everything the plugin reads comes from Action Descriptions in your Joystick Gremlin profile. The Action Description is the text that appears on the diagram for that input. Inputs without an Action Description are skipped on export.

Buttons

Fully supported. Label each button binding with an Action Description and it will appear on the diagram. Buttons with no Action Description are skipped.

Axes

Fully supported. Give the axis an Action Description in Joystick Gremlin and it will appear on the diagram. X, Y, Z, Rx, Ry, Rz and Slider are all recognised. Axes without an Action Description are skipped.

Cross-device axis routing via Gremlin's <remap axis=…> is also supported as of 2.2.0: routed axis bindings surface on the physical axis that fed them, the same way button routing works. See Input Routing for the full mechanics.

Hat Containers (hat_buttons)

Supported. Each direction's Action Description is placed at the matching position on the diagram. 4-way hats (N/E/S/W) and 8-way hats are both handled.

Virtual Hats (basic container with <virtual-button>)

Supported. The container's top-level Action Description (or the joined inner descriptions) is used as the label for each enabled virtual direction (north, north-east, east, and so on). Containers with no description are skipped.

Description placement matters. For basic binds, the Action Description needs to sit on the <axis> or <button> element itself. For hats, tempo containers, conditional bindings, and any container-wrapped action, the description goes inside the <action-set> or container. This is the single most common reason something doesn't appear on the exported diagram.

Setup

In the Joystick Diagrams plugin configuration, select your Joystick Gremlin profile.xml file. This is the profile you saved from within the Joystick Gremlin application. After selecting the file, click Run Plugin(s) to process it.

For full step-by-step instructions, see the Setup Guide.