enertial / streamdeck-dcs-interface

A StreamDeck plugin for interaction with Digital Combat Simulator (DCS)
GNU General Public License v3.0
195 stars 20 forks source link

GitHub Workflow Status GitHub Workflow Status codecov GitHub Workflow Status GitHub all releases GitHub release (latest by date)

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.

Description

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:

Can also support multiple physical Streamdecks at once.

Detailed Documentation

More detailed instructions can be found in: Settings Help Documentation.


Demo of Operation

Stream Deck AV8BNA ODU Demo

Example of Settings to Display Master Caution Lamp:

Installation

Downloads

Version Update

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".

Identify installed version number:

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.

Initial Configuration

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.

Video Walkthrough

A walkthrough of installation and configuration can be found at the below link, along with other instructional videos.
DCS Interface for Streamdeck Video Instructions

Source code

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

Build from source instructions

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:

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.