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 or even Bar/Arc. It is lean & mean, flexible, completely Open-Source and Free-to-Use. It does not do any fancy Stuff like a PFD - it does exactly what is needed to support smooth Flight Operations 😎
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 and it is saved in the StreamDeck Profile. You can create, export and share Profiles with the Plugin's Actions to share their Configuration.
It can also switch StreamDeck Profiles based on the current Aircraft loaded (which is a bit tricky since not intended by the StreamDeck Software).
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 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).
Simulator-wise it supports all major Platforms on Windows - MS Flight Simulator, X-Plane and Prepar3D. For MS Platforms it connects through FSUIPC to the Simulator, for X-Plane it connects directly via UDP Sockets. 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 can directly connect to another Sim without reconfiguring anything.
Not all Variables and Commands require a registered Version of FSUIPC, but a registered (bought) Copy of FSUIPC is recommended to use the full Potential. If you only fly in X-Plane, FSUIPC is not needed at all.
It is designed for advanced Sim-Users which "know how to do Stuff": it does not make any unnecessary complicated Stuff, but doesn't have Features allowing to do anything without knowing anything 😅 If you know how to read Control-States for your Plane and how to trigger these Controls, you can quickly define an Action for that on the StreamDeck. 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!
Predefined Profiles/Integrations are available for FSLabs A320X, Fenix A320, ToLiss A321, FlyByWire A32NX and QualityWings 787 - which are maintained by myself. But there are also User-Contributions for MadDog MD-82, PMDG 747-8 (P3D) and PMDG 737-700 (MSFS). All Profiles are for private/own Usage only - don't reupload or share them elsewhere.
Note: PilotsDeck is 100% free and Open-Source. The Software and the Developer do not have any Affiliation to Flight Panels. Buying from Flight Panels does not support my Work in any Way.
Creating own Profiles is something anyone (knowing how a Plane can be interfaced) can do!
Supported Simulator Versions
- X-Plane 12 / 11 / <=10
- Requirement: None - does not use XUIPC
- Flight Simulator 2020 / X / 2004
- Requirement: FSUIPC 7 & MobiFlight WASM / FSUIPC 4 / FSUIPC 3
- Prepar3D v5 / v4 / v1-3
- Requirement: FSUIPC 6 / 5 / 4
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: X-Plane 12, MSFS2020, 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! 😅
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.
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.
How Commands and Variables are configured and the different Options how they can be executed is described under 2.1 - Defining Commands & Variables.
- MACRO | Command | MSFS*, P3D, FSX
- Execute any Macro known to FSUIPC
- SCRIPT | Command | MSFS, P3D, FSX
- Run any Lua-Code known to FSUIPC
- CONTROL | Command | MSFS, P3D, FSX, FS9
- Send any SimEvent defined by its numerical ID (also known as FS-Controls, Control-Codes. Numerical Variant of a K-Variable/K-Event)
- LVAR | Command & Variable | MSFS, P3D, FSX
- Read from / Write to any L-Var ("Local Variable")
- OFFSET | Command & Variable | MSFS, P3D, FSX, FS9
- Read from / Write to any FSUIPC Offset
- VJOY | Command | MSFS, P3D, FSX
- Toggle/Clear/Set a Button of a virtual Joystick from *FSUIPC*
- VJOYDRV | Command | ALL
- Toggle/Clear/Set a Button of a virtual Joystick from the known *vJoy Device Driver* (if installed, not required)
- HVAR | Command | MSFS
- Activate any H-Variable in the Simulator
- CALCULATOR | Command | MSFS
- Run any Calculator/Gauge Code in the Simulator - either direct RPN Code or as Template for Increasing/Decreasing L-Vars or triggering K-Vars
- XPCMD | Command | XP
- Send any Command known to X-Plane (as command_once)
- XPWREF | Command & Variable | XP
- Read from / Write to any X-Plane DataRef
- AVAR | Command & Variable | MSFS
- Read from / Write to any Simulation Variable (also known as A-Var)
* = MSFS does not support Mouse-Macros
!! Please mind that the Command Types Script, Macro, Lvar and vJoy can only work with a registered Version of FSUIPC!
!! 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, ...).
Available StreamDeck Actions
All Actions work on the Keypads (the normal/square StreamDeck Buttons). The Dial/Touchpad (aka Encoder) on the SD+ is only supported by some Actions (the ones which make the most Sense).
On Keypads you can assign two different Commands, based on how long you hold it: A Short/Normal and Long Press (>= 600ms). Only one of the available Actions can be put in StreamDeck Multi-Actions.
On Encoders you can assign five different Commands for each Interaction: Left Turn, Right Turn, Touch Tap and a Short & Long Press on the Dial. The Actions can be put in StreamDeck Encoder-Stacks, but will then lose their Short/Long Press Function.
How these Actions can be configured and customized is described under 2.3 - Action specific Options.
- Display Value (Keypad)
- 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. Only for Display.
- Display Value with Switch (Keypad / Encoder)
- Like before, but this Action also send Commands.
- Dynamic Button (Keypad)
- This Action dynamically changes the displayed Image based on a Variable (in Addition to sending Commands). Different Values trigger different Images.
- Korry Button (Keypad)
- Intended for Korry-Switches in the Cockpit: the Action displays two "Sub-Images" independently of each other. They are shown/hidden based on their own Variable, but will not change the Image based on the Value. Can be adapted to other Use-Cases.
- COM Radio (Keypad / Encoder)
- Intended for Com Frequencies: the Action shows two different Variables which can be independently scaled/rounded/formatted but share the same Font-Settings. Can be adapted to other Use-Cases.
- Display Gauge (Keypad / Encoder)
- This Actions renders the Value dynamically on a Bar or Arc. Size, Color, Position and Font-Settings can be tweaked. It can optionally send Commands.
- Display Gauge (Dual) (Keypad)
- As before, but it renders two Values dynamically on the same Bar or Arc.
- Profile Switcher (Keypad)
- This not a "real" Action like the others, it is only there to map Profiles used for Switching.
- This not a "real" Action like the others, it is only there to map Profiles used for Switching.
Installation & Requirements
The best Way to Install and Update the Plugin is via the Installer: Download, Execute and click Install! It will check the Requirements, informs & links what it missing and installs the Plugin in the correct Location if the Requirements are met (the StreamDeck Software will be automatically stopped).
It is highly likely that you need to Unblock/Exclude the Installer & Plugin from BitDefender and other AV-/Security-Software. It's the number one Reason for "the Plugin is not working"-Issues.
If it still does not work right or at all, please check 3.3 - Troubleshooting.
The Requirements for the Plugin to run:
- Windows 10 or 11 (updated)
- StreamDeck Software v6
- .NET 7 x64 Runtime (.NET Runtime and .NET Desktop Runtime. Do not confuse it with arm64!) installed & updated. Reboot when installing the Runtimes for the first Time.
- IF used for MSFS/P3D/FSX: The latest Release of the FSUIPC Version specific to your Simulator (e.g. FSUIPC 7 for MSFS2020)
- IF used for MSFS: The latest Release of the WASM-Module from MobiFlight installed in your Community-Folder
- Optional: If you want to use VJOYDRV Commands you need Version v188.8.131.52 for Windows 10 and Version 184.108.40.206 for Windows 11. It is not checked by the Installer (since it is not a Requirement for the Plugin).
The full README is on GitHub - please read it to understand how you configure Actions. If you still have Problems or Questions, feel free to contact me on any Platform/Forum :)