Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Contributing to DCS Interface

Thank you for your interest in contributing to this project!

## Fork Information

This fork adds Stream Deck Plus rotary encoder support to the original project.

### Original Project

- Original Repository: [charlestytler/streamdeck-dcs-interface](https://github.com/charlestytler/streamdeck-dcs-interface)
- License: GNU General Public License v3.0

## How to Contribute

1. **Fork the repository** on GitHub
2. **Clone your fork** locally
3. **Create a feature branch** (`git checkout -b feature/my-new-feature`)
4. **Make your changes** and commit them with clear messages
5. **Test your changes** thoroughly
6. **Push to your fork** (`git push origin feature/my-new-feature`)
7. **Submit a Pull Request** to the original repository

## Development Guidelines

### Building from Source

Before building, ensure you have:
- Microsoft Visual Studio 2022 (or Build Tools with Platform Toolset v145)
- MSBuild added to your PATH
- npm for Windows

Run the build script:
```batch
cd Tools
.\build_plugin.bat
```

### Code Style

- C++: Follow existing code conventions in the project
- JavaScript/HTML: Use consistent indentation and formatting
- Add comments for complex logic

### Testing

- Test all functionality with actual Stream Deck hardware
- Verify DCS integration with multiple aircraft modules
- Run unit tests before submitting (`Test.exe` generated during build)

## Reporting Issues

When reporting issues, please include:
- Stream Deck model and firmware version
- DCS World version
- Steps to reproduce the issue
- Expected vs actual behavior
- Any error messages or logs

## License

By contributing, you agree that your contributions will be licensed under the GNU General Public License v3.0, consistent with the original project.

## Acknowledgments

This project builds upon the excellent work of the original author and contributors. All modifications respect the original GPL-3.0 license terms.
20 changes: 18 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,26 @@ 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.
- **Stream Deck Plus rotary encoders** support rotation with separate CW/CCW increment values and encoder press for fixed values.
- 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.
Can also support multiple physical Streamdecks at once, including **Stream Deck Plus** with rotary encoder support.

## Stream Deck Plus Encoder Features

The plugin now supports **Stream Deck Plus rotary encoders** with the following capabilities:

- **Rotation Control**: Separate clockwise (CW) and counter-clockwise (CCW) increment values per tick
- **Press Action**: Send a fixed value when pressing the encoder button
- **LCD Display**: Real-time display of DCS values on the encoder LCD screen
- **Value Mapping**: Map numeric DCS values to custom text (e.g., "0.2" → "OFF", "0.8" → "ARMED")
- **Automatic Gauge**: Visual indicator bar based on minimum/maximum value ranges
- **Live Updates**: Changes to mappings take effect immediately without restart

Configure encoders using the dedicated Property Inspector with intuitive controls for all settings.

## Detailed Documentation

Expand Down Expand Up @@ -125,4 +139,6 @@ 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.
**Build Requirements:**
- Visual Studio 2022 (v17.11+) or Visual Studio 2025 with Platform Toolset v145
- The encoder support features require Visual Studio 2025 or compatible toolset
8 changes: 4 additions & 4 deletions Sources/backend-cpp/ElgatoSD/ElgatoSD.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,26 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
Expand Down
14 changes: 10 additions & 4 deletions Sources/backend-cpp/SimulatorInterface/SimulatorInterface.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,26 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
Expand Down Expand Up @@ -174,6 +174,12 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Utilities\Utilities.vcxproj">
<Project>{329f64ac-6346-46d2-a671-9b5dd626b485}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\Windows\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1.7\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets" Condition="Exists('..\Windows\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1.7\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets')" />
Expand Down
Loading
Loading