Plugins provide support for external applications, devices, and cloud services. The Loupedeck service automatically loads all the plugins that it finds during the Loupedeck startup.
A plugin is a .NET Framework 4.7.2 class library that contains at least one class that implements a specific interface.
There is a separate Loupedeck software version for Windows and macOS. Loupedeck is written in .NET/C# and is designed to have as much common multiplatform code as possible. Platform-specific code is isolated and available through several interfaces.
The Loupedeck design allows plugins to be multiplatform and have the same source code for both Windows and macOS. In addition to the standard .NET Framework features, plugins get some platform-specific features from the Loupedeck core, such as sending keyboard shortcuts, getting application start/exit events, and so on.
Plugins and Loupedeck devices
Plugins do not have direct access to Loupedeck devices.
Instead, they contain several actions that control the external device.
There are two types of actions:
- Commands - Can be assigned to buttons and perform "do something" or "switch something" actions
- Adjustments - Can be assigned to encoders (dials) and perform "change a value" actions
A plugin gives the Loupedeck service a list of supported actions on startup. Although not recommended, this list can be changed at any moment, and there is a way to inform the service about the change.
When you customize the device layout, you assign actions to the device controls. When a device control is pressed or rotated, the service translates this to a command or adjustment and sends it to the plugin that performs the action.
Communication with an external application
Loupedeck plugins may communicate with external applications, devices or cloud services in one or more of the following ways:
- Send keyboard shortcuts, MIDI or HTTP messages to the application
- Call any kind of API that the application exposes
- Communicate with plugins inside the application, if the application has a plugin system
A typical Loupedeck plugin consists of two parts:
- Loupedeck plugin (written in C#), required
- Photo editing application plugin (written in any language the application supports), optional
A Loupedeck plugin gets actions from the Loupedeck core, and then either translates them to the application plugin using sockets or other IPC interface, or sends keyboard shortcuts to the application.
An application plugin translates the actions it gets from IPC to internal application API calls.