DCS Interface is a plugin for the Streamdeck that allows communication with DCS via lua UDP sockets for both receiving updates of the simulation state as well as sending commands to interact with the clickable cockpits.
Note
The software is currently functional and ready to use.
Thank you for visiting! This project began as a personal tool built on top of the stale DCS-ExportScript project.
Due to current time constraints and changes in my workflow, I no longer use this software (or DCS) frequently enough to actively develop or maintain it.
The software is still expected to work with DCS with its current features. There is no expectation that DCS or Streamdeck updates would break existing functionality.
- Pull Requests Welcome: While development on my end is paused, I will gladly review, test, and merge incoming Pull Requests if anyone would like to contribute fixes or features.
- Issues & Troubleshooting: You are welcome to submit Issues to report bugs or ask questions, but please note that responses from myself will be slow.
To more easily support use in the future with DCS updates, the long-term goal is to transition this project away from DCS-ExportScript and rebuild it on top of DCS-BIOS. This change is still (aspirationally) in my backlog but will likely be >1 year away.
DCS Interface is a plugin that allows you to create buttons and interfaces that update with DCS events.
There are currently three settings for each Streamdeck button you create:
- DCS Command - Specify which button/switch you want to activate in game (allows setting of any clickable object in a cockpit).
- Streamdeck buttons support push-button, switch, and increment (dials, levers, etc.) input types.
- Image Change Settings - Specify a function within the DCS simulation to monitor and change the display of the Streamdeck image conditionally.
- Examples: Lamps for Warnings/Modes, Switch states
- Title Text Change Settings - Specify a function in the DCS simulation which will be monitored and its text is displayed as the Streamdeck button Title.
- Examples: UFC text displays, scratchpads, radio displays
Can also support multiple physical Streamdecks at once.
More detailed instructions can be found in: Settings Help Documentation.
Example of Settings to Display Master Caution Lamp:
-
For the DCS plugin to work you will first need DCS-ExportScripts installed, detailed instructions are on their Wiki. This is the backend that is relied on for communication with the DCS game.
-
To install the DCS Interface Streamdeck plugin, you will need to download and run the installer
com.ctytler.dcs.streamDeckPluginfrom Releases. -
Also within Releases is an optional
icon_library.zipyou can download for use with Streamdeck Profiles.
If you have a prior version already installed on your StreamDeck, you will have to uninstall it first before installing the latest version. To do this right-click on one of the DCS Interface button types in the right-side panel and click "Uninstall".
To see the version of the plugin installed on the StreamDeck, right-click on one of the DCS Interface button types in the right-side panel.
If you plan to only use DCS Interface for Streamdeck with the DCS-ExportScript and not Ikarus, you can modify the file DCS-ExportScript\Config.lua to have the following settings (where IkarusPort is changed from 1625 to 1725 for DCS Interface) to get everything connected:
-- Ikarus a Glass Cockpit Software
ExportScript.Config.IkarusExport = true -- false for not use
ExportScript.Config.IkarusHost = "127.0.0.1" -- IP for Ikarus
ExportScript.Config.IkarusPort = 1725 -- Port Ikarus (1625)
ExportScript.Config.IkarusSeparator = ":"
If you are interested in using the export script to support both Streamdeck and Ikarus, instructions can be found in the Settings Help Documentation - Enabling Both DCS Interface & Ikarus.
A walkthrough of installation and configuration can be found at the below link, along with other instructional videos.
DCS Interface for Streamdeck Video Instructions
The Sources folder contains the source code of the plugin. The primary components are as follows:
Sources
βββ com.ctytler.dcs.sdPlugin Plugin package where the built frontend and backend are combined
β βββ manifest.json Definition of Streamdeck plugin metadata
β βββ bin Location for compiled C++ and lua scripts called by plugin
β βββ helpDocs Help documentation within plugin
β βββ images Default icon images
β βββ propertyinspector Javascript and html used by plugin (Button settings and windows)
βββ backend-cpp The backend of the plugin (Manages Simulator/Streamdeck State), written in C++
β βββ ElgatoSD Elgato Streamdeck SDK source and utilities
β βββ SimulatorInterface Classes for interacting with the simulator state
β βββ StreamdeckContext Classes for maintaining state of individual Streamdeck buttons
β β βββ ExportMonitors Classes that monitor simulator export data for individual buttons
β β βββ SendActions Classes that define button press and release actions
β βββ StreamdeckInterface Executable that interfaces C++ code with Streamdeck plugin
β βββ Test Unit test infrastructure and target
β βββ Utilities Generic utilities for UDP socket and string manipulation
β βββ Vendor Third party source code
β βββ Windows Visual Studio solution settings
βββ frontend-react-js The frontend of the plugin (Configuration window), written in ReactJS
A build script is included which will build both the C++ executable which handles the communcation with DCS as well as the package for the Stream Deck plugin: Tools/build_plugin.bat
Before running the .bat file you will need to:
- Install MSBuild to compile C++ (comes with Microsoft Visual Studio or Build Tools)
- Install npm for Windows
- Add your install location of MSBuild.exe to your PATH environment variable:
- Click start button to search and select "Edit environment variables for your account"
- Under "User variables for ..." select the "Path" row and choose "Edit"
- Add a New path of your MSBuild.exe install location, such as "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin"
Running the batch script will build the Streamdeck plugin and run all unit tests, generating the plugin file at Release/com.ctytler.dcs.streamDeckPlugin.
Current version was built with Visual Studio Community 2022.


