SkillAgentSearch skills...

PilotsDeck

Directly control the FlightSim from your StreamDeck!

Install / Use

/learn @Fragtality/PilotsDeck
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

PilotsDeck

Directly check & control your FlightSim from the StreamDeck! <br/><br/>

1 - Introduction

PilotsDeck is a Plugin for Elegato's StreamDeck with the Ability to trigger Cockpit-Controls in different Ways and especially reading & displaying a Control's State on the StreamDeck as Text, Image, Bar/Arc or a Combination thereof. It is lean & mean, flexible, completely Open-Source and Free-to-Use.<br/><br/>

StreamDeck-wise it behaves like any other StreamDeck Plugin: it runs alongside other Plugins and you can Drag, Drop, Copy, Paste the Actions like any other Action in the StreamDeck Software between your Folders, Pages or even different StreamDecks. The Action Configuration is done through the standard "Property Inspector" of the StreamDeck UI (for the "classic" Actions) or its own "Action Designer" UI (for the new Composite Action). But regardless of the UI: the Configuration is stored in the StreamDeck Profile - You can create, export and share Profiles with the Plugin's Actions. On Top of the StreamDeck builtin Copy & Paste, it has also its own Mechanic allowing to share single Actions via Text with someone else.<br/><br/> Installation is done through its own Installer which will check all Requirements and installs them for you if necessary. With the included Profile Manager App you can easily install Profile Packages (containing the Profiles, Images and Scripts) and can map your existing StreamDeck Profiles for specific Airplanes or Simulators so that the Plugin automatically switches the Profile(s) on the StreamDeck(s). You can write Scripts to directly read Values from a Function, or trigger a Function as Command - all in its own internal Lua Engine (Credits to: Neolithos for NeoLua!).<br/> The Plugin supports different StreamDeck Models: Mini, Standard/15-Key, XL, Mobile and Plus. Other Models might work, but an indented Support for Non-Display Models is not planned. The Plugin runs only on Windows. There are no Plans for Linux or macOS Support (the first is not supported by StreamDeck at all, both do not run or support all Sims and some essential .NET Libraries are only available on Windows).<br/><br/>

Simulator-wise it supports all major Platforms on Windows - MS Flight Simulator, X-Plane and Prepar3D. Depending on the Sim, it either uses SimConnect, FSUIPC or UDP Connection (remote capable). Either way it will connect automatically as soon as a Simulator is running. All Variables and Commands these Connections allow are usable with the Plugin. You can directly switch from one Sim to another without reconfiguring anything.<br/> For Prepar3D (and theoretically FSX) FSUIPC is a Requirement, for MSFS it is Optional and for X-Plane not used at all. Either Way: you do not need a registered (bought) Copy of FSUIPC to make the Plugin in Work! (Though some old Profiles may require a registered Copy).<br/><br/> It is designed for advanced Sim-Users which "know how to do Stuff": it does not give you any Lists to select Stuff from. If you know how to read Control-States for your Plane (e.g. which Variables to use) and how to trigger these Controls (e.g. which Command to use), you can quickly define Actions for that on the StreamDeck. Since it does not limit your Selection by a predefined List, you can do everything the Connection/Simulator currently allows 😉<br/> If you don't: be eager to read & learn! 😅 I'll try to give some Background in the Readme, but you have to take it from there!<br/><br/>

Note: PilotsDeck is 100% free and Open-Source. The Software and the Developer do not have any Affiliation to Flight Panels. You basically spend Money instead of Time to let a Power-User create the Profile(s) for you. That is totally fine - IF you knew you had the Option. Choose the Approach that suits you best! 😃<br/><br/>

User-Contributed and my Profiles for specific Planes are shared/linked under Integrations. Since there aren't that many: If your Plane is not among these, they can at least serve as Example on what you could do:<br/> <img src="img/Example01XL.jpg" width="420"><br/> <img src="img/ExampleLayout02.jpg" width="420"><br/> <img src="img/ExampleFNX04.jpg" width="420"><br/> Other Examples can be found under here.<br/> <br/><br/><br/>

1.1 - Supported Simulator Versions

| Simulator | Supported | Tested | Connection | | :-------------|:-------------:|:-----:|:-----| | Flight Simulator 2024 | yes | yes | SimConnect & MobiFlight WASM (Secondary: FSUIPC7) | | Flight Simulator 2020 | yes | yes | SimConnect & MobiFlight WASM (Secondary: FSUIPC7) | | Flight Simulator X | yes | no | FSUIPC4 | | Flight Simulator 2004 | yes | no | FSUIPC 3 | | Prepar3D v5 | yes | yes | FSUIPC 6 | | Prepar3D v4 | yes | no | FSUIPC 5/6 | | Prepar3D v1-3 | yes | no | FSUIPC 4 | | X-Plane 12 | yes | yes | UDP (local/remote) | | X-Plane 11 | yes | yes | UDP (local/remote) | | X-Plane <=10 | yes | no | UDP (local/remote) |

Supported is understood as "technical and basically supported by the Connection Method". Support in Terms of ensured Compatibility, Fixing Issues and giving Support exists only for the latest Version of the three Major Simulators: MSFS2020, X-Plane 12, P3D v5. I'm happy if it works for older Versions, but I won't make any Effort for them. It is time to go back to the Future! 😅<br/> And yes: the latest Version for Prepar3D is still considered v5, since v6 was just DOA with nearly every Addon-Dev announcing to not support it. <br/><br/><br/>

1.2 - Supported Sim-Commands & -Variables

Here a quick Overview of what you can send to the Simulator ("Command") or from what you can read Values from the Simulator ("Variable"). One of the Things which make the Plugin flexible: Variables can also be used as Commands. For Example to move a Cockpit-Control by writing a different Value to a Variable.<br/><br/> How Commands and Variables are configured and the different Options how they can be executed is described under 2.1 - Defining Commands & Variables.<br/>

| ID | Description | Command | Variable | Simulators | | :---: | :------------ | :---: | :---: | :-------------------- | | MACRO | Execute any Macro known to FSUIPC | ✔️ | ✖️ | MSFS, P3D, FSX | | SCRIPT | Run any Lua-Code known to FSUIPC | ✔️ | ✖️ | MSFS, P3D, FSX | | CONTROL | Send any SimEvent defined by its numerical ID | ✔️ | ✖️ | MSFS, P3D, FSX, FS9 | | LVAR | Read from / Write to any L-Var ("Local Variable") | ✔️ | ✔️ | MSFS, P3D, FSX | | OFFSET | Read from / Write to any FSUIPC Offset | ✔️ | ✔️ | MSFS, P3D, FSX, FS9 | | VJOY | Toggle/Clear/Set a Button of a virtual Joystick from FSUIPC | ✔️ | ✖️ | MSFS, P3D, FSX | | VJOYDRV | Toggle/Clear/Set a Button of a virtual Joystick from the known vJoy Device Driver (if installed) | ✔️ | ✖️ | ALL | | AVAR | Read from / Write to any Simulation Variable (also known as A-Var) | ✔️ | ✔️ | MSFS | | KVAR | Send / Write to any Event-ID (also known as K-Var / SimConnect Event) | ✔️ | ✔️*** | MSFS | | HVAR | Trigger any HTML Event in the Simulator (also known as H-Var) | ✔️ | ✖️ | MSFS | | BVAR | Trigger InputEvents (also known as B-Var) - but only those that MSFS enumerates via SimConnect | ✔️ | (✔️)* | MSFS | | CALCULATOR | Run any Calculator/Gauge Code in the Simulator | ✔️ | ✔️** | MSFS | | XPCMD | Send any Command known to X-Plane (as command_once) | ✔️ | ✖️ | XP | | XPWREF | Read from / Write to any X-Plane DataRef | ✔️ | ✔️ | XP | | LUAFUNC | Run a Lua Function in the Plugin's own Lua Engine | ✔️ | ✔️ | ALL | | INTERNAL | Read from / Write to an internal Variable (available everywhere within the Plugin) | ✔️ | ✔️ | ALL |

* = Per Default, B-Vars treated as Command-only Type - only some B-Var have an actual Value to read.<br/> ** = While you can read the Result from a RPN Expression, you can't write to it (like with other Variable Types).<br/> *** = Will only be updated when the Event is received.<br/> :grey_exclamation: Please mind that the Command Types Script, Macro, Lvar (on P3D/FSX) and vJoy can only work with a registered Version of FSUIPC!<br/> :grey_exclamation: Both vJoy Command Types are independent of each other and are two different Things! "VJOY" can only be assigned within FSUIPC (and not in the Simulator). The "VJOYDRV" can be assigned by anything which understands a Joystick Button (Simulator, FSUIPC, Addons, ...). <br/><br/><br/>

1.3 - Available StreamDeck Actions

All Actions work on the Keypads (the normal/square StreamDeck Buttons). The Dial/Touchpad (aka Encoder) on the SD+ is supported by most Actions.<br/><br/>

| | Action Name | Keypad / Encoder | Description | | :---: | :-------------- | :---------: | :----------- | | <img src="img/DisplayXpndr.png" width="188"> | Display Value* | Keypad / Encoder | Display a Sim Variable as Number or Text (display "ON" instead of "1"). You can scale/round/format the Value as needed and customize the Font-Settings. | | <img src="img/SimpleButton.png" width="188"> | Simple Button | Keypad | Can only send Commands and always shows the same (configurable) Image. Supported in StreamDeck Multi-Actions! | | <img src="img/DynamicButtonLight.png" width="188"> | Dynamic Button | Keypad / Encoder | This Action dynamically changes the displayed Image based on a Variable (in Addition to sending Commands). Different Values trigger different Images. | | <img src="img/DisplaySwitchKorry.png" width="188"> | Korry Button | Keypad / Encoder | Intended for Korry-Switches in th

View on GitHub
GitHub Stars182
CategoryDevelopment
Updated12h ago
Forks18

Languages

C#

Security Score

85/100

Audited on Apr 3, 2026

No findings