<?xml version="1.0"?>
<doc>
    <assembly>
        <name>PluginApi</name>
    </assembly>
    <members>
        <member name="T:Loupedeck.DeviceType">
            <summary> Defines the device types supported by Loupedeck. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.None">
            <summary> Reserved. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.LoupedeckOriginalFamily">
            <summary> Represents any device in <b>Loupedeck Original Family</b>. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck10">
            <summary> Represents <b>Loupedeck Original</b> device. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck15">
            <summary> Represents <b>Loupedeck+</b> device. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.LoupedeckCtFamily">
            <summary> Represents any device in <b>Loupedeck CT Family</b>. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck20">
            <summary> Represents <b>Loupedeck CT</b> device. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck30">
            <summary> Represents <b>Loupedeck Live</b> device. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck40">
            <summary> Represents <b>Razer Stream Controller</b> device. Deprecated — Razer device support has been removed. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck50">
            <summary> Represents <b>Loupedeck Live S</b> device. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck60">
            <summary> Represents <b>Razer Stream Controller X</b> device. Deprecated — Razer device support has been removed. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.LoupedeckExtendedFamily">
            <summary> Represents <b>Logitech MX Creative Console</b> devices. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck70">
            <summary> Represents <b>Logitech MX Creative Keypad</b> device. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck71">
            <summary> Represents <b>Logitech MX Creative Dialpad</b> device. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.Loupedeck72">
            <summary> Represents <b>Logitech Actions Ring</b> device. </summary>
        </member>
        <member name="F:Loupedeck.DeviceType.All">
            <summary> Represents any device supported by Logi Plugin Service. </summary>
        </member>
        <member name="T:Loupedeck.PluginImageSize">
            <summary> The size of the plugin image. </summary>
        </member>
        <member name="F:Loupedeck.PluginImageSize.None">
            <summary> Image size is not specified. </summary>
        </member>
        <member name="F:Loupedeck.PluginImageSize.Width90">
            <summary> Specifies a 80x80 pixel image. </summary>
        </member>
        <member name="F:Loupedeck.PluginImageSize.Width60">
            <summary> Specifies a 50x50 pixel image. </summary>
        </member>
        <member name="F:Loupedeck.PluginImageSize.Width116">
            <summary> Specifies a 116x116 pixel image. </summary>
        </member>
        <member name="T:Loupedeck.ClientApplicationStatus">
            <summary> Status of the client application. </summary>
        </member>
        <member name="T:Loupedeck.ClientApplication">
            <summary> This class can be used to link a Loupedeck plugin to an application. </summary>
        </member>
        <member name="M:Loupedeck.ClientApplication.GetProcessName">
            <summary> Defines the application process that is connected to the plugin. </summary>
            <remarks> For Windows applications, override this method to link one process to the plugin.
                      See also <see cref="M:Loupedeck.ClientApplication.GetProcessNames" />. </remarks>
            <returns> Process name. </returns>
        </member>
        <member name="M:Loupedeck.ClientApplication.GetBundleName">
            <summary> Defines the application bundle that is connected to the plugin. </summary>
            <remarks> For macOS applications, override this method to link one bundle to the plugin.
                      See also <see cref="M:Loupedeck.ClientApplication.GetBundleNames" />. </remarks>
            <returns> Bundle identifier. For example "com.apple.finder". </returns>
        </member>
        <member name="M:Loupedeck.ClientApplication.GetProcessNames">
            <summary> Defines the application processes that are connected to the plugin. </summary>
            <remarks> For Windows applications, override this method to link more than one process to the plugin.
                      See also <see cref="M:Loupedeck.ClientApplication.GetProcessName" />. </remarks>
            <returns> Process names. </returns>
        </member>
        <member name="M:Loupedeck.ClientApplication.GetBundleNames">
            <summary> Defines the application bundles that are connected to the plugin. </summary>
            <remarks> For macOS applications, override this method to link more than one bundle to the plugin.
                      See also <see cref="M:Loupedeck.ClientApplication.GetBundleName" />. </remarks>
            <returns> Bundle identifiers. </returns>
        </member>
        <member name="M:Loupedeck.ClientApplication.IsProcessNameSupported(System.String)">
            <summary> Tests whether the given process name is supported by the plugin. </summary>
            <param name="processName"> The name of the process to test. </param>
            <returns>
                <c>true</c> if the process name is supported, <c>false</c> otherwise. </returns>
        </member>
        <member name="M:Loupedeck.ClientApplication.IsProcessNameSupported(System.String,System.String)">
            <summary> Tests whether the given process name is supported by the plugin. </summary>
            <param name="processName"> The name of the process to test. </param>
            <param name="processFilePath"> The full path of the main module of the process to test. </param>
            <returns>
                <c>true</c> if the process name is supported, <c>false</c> otherwise. </returns>
        </member>
        <member name="M:Loupedeck.ClientApplication.GetApplicationStatus">
            <summary> Checks if the client application is installed. </summary>
            <remarks> Override this method to define how the client application status is obtained. </remarks>
            <returns> Status of the client application. </returns>
        </member>
        <member name="T:Loupedeck.PluginDynamicAction">
            <summary>
      Base class for dynamic actions.
    </summary>
            <remarks>
      This class provides the foundation for dynamic commands and adjustments. Inherit from
      <see cref="T:Loupedeck.PluginDynamicCommand" /> or <see cref="T:Loupedeck.PluginDynamicAdjustment" /> instead of using this class directly.
    </remarks>
        </member>
        <member name="P:Loupedeck.PluginDynamicAction.IsEnabled">
            <summary>
      Gets or sets a value indicating whether this action is enabled.
    </summary>
            <remarks>
      When set to <c>false</c>, the action will not execute and will appear disabled in the user interface.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.OnLoad">
            <summary>
      Called after the parent plugin is loaded.
    </summary>
            <returns>
                <c>true</c> if the action loaded successfully; otherwise, <c>false</c>.
    </returns>
            <remarks>
      Override this method to perform action-specific initialization such as subscribing to events or setting initial
      state.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.OnUnload">
            <summary>
      Called before the parent plugin is unloaded.
    </summary>
            <returns>
                <c>true</c> if the action unloaded successfully; otherwise, <c>false</c>.
    </returns>
            <remarks>
      Override this method to perform cleanup such as unsubscribing from events or releasing resources.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.AddParameter(System.String,System.String,System.String)">
            <summary>
      Registers a parameter to create action variations with different behaviors.
    </summary>
            <param name="name">
      The unique name identifier for this parameter.
    </param>
            <param name="displayName">
      The display name shown for this parameter in the user interface.
    </param>
            <param name="groupName">
      The group name used to organize this parameter in the user interface.
    </param>
            <returns>
      The created parameter object.
    </returns>
            <remarks>
      Use parameters to create variations of an action with different behaviors. For example, a volume control
      command might have parameters for "Master", "Music", and "Voice" channels. After adding parameters, call
      <see cref="M:Loupedeck.PluginDynamicAction.ParametersChanged" /> to notify the Logi Plugin Service.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.RunCommand(System.String)">
            <summary>
      Called when the user executes this command.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the action to execute, or <c>null</c> if this action has
      no parameters.
    </param>
            <remarks>
      Override this method to implement the command's behavior. This method is called when the user presses a
      button mapped to this command on the device or in the host application.
    </remarks>
            <example>
                <code>
      protected override void RunCommand(String actionParameter)
      {
          // Toggle mute state
          this._isMuted = !this._isMuted;

          // Send command to target application
          this.Plugin.ClientApplication.SendKeyPress(Enums.VirtualKeyCode.VolumeMute);

          // Update the action icon to reflect new state
          this.ActionImageChanged();
      }
      </code>
            </example>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.GetCommandDisplayName(System.String,Loupedeck.PluginImageSize)">
            <summary>
      Gets the display name for this command.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the action to display, or <c>null</c> if this action has
      no parameters.
    </param>
            <param name="imageSize">
      The size of the image being rendered, which may affect the display name.
    </param>
            <returns>
      The display name to show for this command, or <c>null</c> to use the default display name.
    </returns>
            <remarks>
      Override this method to provide dynamic display names that change based on the action's state. This method is
      called when the Logi Plugin Service needs to display the command on the device or in the user interface.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.GetCommandImage(System.String,Loupedeck.PluginImageSize)">
            <summary>
      Gets the action icon image for this command.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the action to display, or <c>null</c> if this action has
      no parameters.
    </param>
            <param name="imageSize">
      The size of the image to generate.
    </param>
            <returns>
      A <see cref="T:Loupedeck.BitmapImage" /> representing the command's icon, or <c>null</c> if no custom image is provided.
    </returns>
            <remarks>
      Override this method to provide dynamic images that change based on the action's state. This method is called
      when the Logi Plugin Service needs to display the command on the device or in the user interface. Use
      <see cref="T:Loupedeck.EmbeddedResources" /> to load images from the plugin assembly, or generate images dynamically using
      <see cref="T:Loupedeck.BitmapImage" /> methods.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.ParametersChanged">
            <summary>
      Notifies the Logi Plugin Service that the action's parameters have changed.
    </summary>
            <remarks>
      Call this method after adding, removing, or modifying parameters to update the user interface with the new
      parameter list.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.ActionImageChanged(System.String)">
            <summary>
      Notifies the Logi Plugin Service that the action's display name or image has changed.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the action has changed, or <c>null</c> if this action has
      no parameters.
    </param>
            <remarks>
      Call this method after the action's visual appearance changes to update the display on the device and in the
      user interface.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.ActionImageChanged">
            <summary>
      Notifies the Logi Plugin Service that the action's display name or image has changed.
    </summary>
            <remarks>
      Call this method after the action's visual appearance changes to update the display on the device and in the
      user interface.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.AdjustmentValueChanged(System.String)">
            <summary>
      Notifies the Logi Plugin Service that the adjustment value has changed.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the adjustment has changed, or <c>null</c> if this action
      has no parameters.
    </param>
            <remarks>
      Call this method from <see cref="T:Loupedeck.PluginDynamicAdjustment" /> implementations when the adjustment's value
      changes to update the display on the device and in the user interface.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.AdjustmentValueChanged(Loupedeck.PluginAdjustmentValue)">
            <summary>
      Notifies the Logi Plugin Service that the adjustment value has changed.
    </summary>
            <param name="adjustmentValue">
      The new adjustment value.
    </param>
            <remarks>
      Call this method from <see cref="T:Loupedeck.PluginDynamicAdjustment" /> implementations when the adjustment's value
      changes to update the display on the device and in the user interface.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.AdjustmentValueChanged(System.String,Loupedeck.PluginAdjustmentValue)">
            <summary>
      Notifies the Logi Plugin Service that the adjustment value has changed.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the adjustment has changed, or <c>null</c> if this action
      has no parameters.
    </param>
            <param name="adjustmentValue">
      The new adjustment value.
    </param>
            <remarks>
      Call this method from <see cref="T:Loupedeck.PluginDynamicAdjustment" /> implementations when the adjustment's value
      changes to update the display on the device and in the user interface.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAction.AdjustmentValueChanged">
            <summary>
      Notifies the Logi Plugin Service that the adjustment value has changed.
    </summary>
            <remarks>
      Call this method from <see cref="T:Loupedeck.PluginDynamicAdjustment" /> implementations when the adjustment's value
      changes to update the display on the device and in the user interface.
    </remarks>
        </member>
        <member name="T:Loupedeck.PluginDynamicAdjustment">
            <summary>
      Base class for dynamic adjustments.
    </summary>
            <remarks>
                <para>
        Inherit this class to create a dynamic adjustment for your plugin. Override <see cref="M:Loupedeck.PluginDynamicAdjustment.ApplyAdjustment(System.String,System.Int32)" /> to
        implement the adjustment's behavior, and optionally override <see cref="M:Loupedeck.PluginDynamicAction.GetCommandImage(System.String,Loupedeck.PluginImageSize)" />
        and <see cref="M:Loupedeck.PluginDynamicAdjustment.GetAdjustmentDisplayName(System.String,Loupedeck.PluginImageSize)" /> to customize the adjustment's appearance.
      </para>
                <para>
        Minimal implementation requires overriding <see cref="M:Loupedeck.PluginDynamicAdjustment.ApplyAdjustment(System.String,System.Int32)" /> to handle rotation events and
        <see cref="M:Loupedeck.PluginDynamicAdjustment.GetAdjustmentValue(System.String)" /> to return the current value for display.
      </para>
            </remarks>
            <example>
                <code>
      public class CounterAdjustment : PluginDynamicAdjustment
      {
          private Int32 _counter = 0;

          public CounterAdjustment()
              : base(displayName: "Counter", description: "Counts rotation ticks", groupName: "Adjustments", hasReset: true)
          {
          }

          protected override void ApplyAdjustment(String actionParameter, Int32 diff)
          {
              this._counter += diff;
              this.AdjustmentValueChanged();
          }

          protected override void RunCommand(String actionParameter)
          {
              this._counter = 0;
              this.AdjustmentValueChanged();
          }

          protected override String GetAdjustmentValue(String actionParameter) =&gt; this._counter.ToString();
      }
      </code>
            </example>
        </member>
        <member name="M:Loupedeck.PluginDynamicAdjustment.#ctor(System.Boolean,Loupedeck.DeviceType)">
            <summary>
      Initializes a new instance of the <see cref="T:Loupedeck.PluginDynamicAdjustment" /> class.
    </summary>
            <param name="hasReset">
      Indicates whether this adjustment supports reset functionality.
    </param>
            <param name="supportedDevices">
      The device types supported by this adjustment. Set to <see cref="F:Loupedeck.DeviceType.All" /> to support all devices,
      or combine specific device types using bitwise OR.
    </param>
            <remarks>
      Use this constructor when the display name, description, or group name are not known at construction time.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAdjustment.#ctor(System.String,System.String,System.String,System.Boolean,Loupedeck.DeviceType)">
            <summary>
      Initializes a new instance of the <see cref="T:Loupedeck.PluginDynamicAdjustment" /> class with display name and group name.
    </summary>
            <param name="displayName">
      The display name shown for this adjustment in the user interface.
    </param>
            <param name="description">
      A brief explanation of what this adjustment does.
    </param>
            <param name="groupName">
      The group name used to organize this adjustment in the user interface.
    </param>
            <param name="hasReset">
      Indicates whether this adjustment supports reset functionality.
    </param>
            <param name="supportedDevices">
      The device types supported by this adjustment. Set to <see cref="F:Loupedeck.DeviceType.All" /> to support all devices,
      or combine specific device types using bitwise OR.
    </param>
            <remarks>
      Use this constructor when the display name, description, and group name are known at construction time.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAdjustment.ApplyAdjustment(System.String,System.Int32)">
            <summary>
      Called when the user adjusts this adjustment.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the action to execute, or <c>null</c> if this action has
      no parameters.
    </param>
            <param name="diff">
      The adjustment amount. Positive values indicate an increase, negative values indicate a decrease.
    </param>
            <remarks>
      Override this method to implement the adjustment's behavior.
    </remarks>
            <example>
                <code>
      protected override void ApplyAdjustment(String actionParameter, Int32 diff)
      {
          // Update internal state based on adjustment
          this._counter += diff;

          // Notify that the value changed
          this.AdjustmentValueChanged();
      }
      </code>
            </example>
        </member>
        <member name="M:Loupedeck.PluginDynamicAdjustment.GetAdjustmentDisplayName(System.String,Loupedeck.PluginImageSize)">
            <summary>
      Gets the display name for this adjustment.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the action to display, or <c>null</c> if this action has
      no parameters.
    </param>
            <param name="imageSize">
      The size of the image being rendered, which may affect the display name.
    </param>
            <returns>
      The display name to show for this adjustment, or <c>null</c> to use the default display name.
    </returns>
            <remarks>
      Override this method to provide dynamic display names that change based on the adjustment's state.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAdjustment.GetAdjustmentImage(System.String,Loupedeck.PluginImageSize)">
            <summary>
      Gets the action icon image for this adjustment.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the action to display, or <c>null</c> if this action has
      no parameters.
    </param>
            <param name="imageSize">
      The size of the image to generate.
    </param>
            <returns>
      A <see cref="T:Loupedeck.BitmapImage" /> representing the adjustment's icon, or <c>null</c> if no custom image is provided.
    </returns>
            <remarks>
      Override this method to provide dynamic images that change based on the adjustment's state.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAdjustment.GetAdjustmentValue(System.String)">
            <summary>
      Gets the current value of the adjustment.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the action to get, or <c>null</c> if this action has no
      parameters.
    </param>
            <returns>
      The adjustment value.
    </returns>
            <remarks>
      Override this method to return a string representation of the adjustment's current value. This value can be
      displayed on the device and in the user interface.
    </remarks>
            <example>
                <code>
      protected override String GetAdjustmentValue(String actionParameter)
      {
          return this._counter.ToString();
      }
      </code>
            </example>
        </member>
        <member name="M:Loupedeck.PluginDynamicAdjustment.AdjustmentValueChanged(System.String,System.Double)">
            <summary>
      Notifies the Logi Plugin Service that the adjustment value has changed.
    </summary>
            <param name="actionParameter">
      The parameter name identifying which variation of the adjustment has changed, or <c>null</c> if this action
      has no parameters.
    </param>
            <param name="value">
      The new adjustment value.
    </param>
            <remarks>
      Call this method after updating the adjustment's value to refresh the display on the device and in the user
      interface.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicAdjustment.AdjustmentValueChanged(System.Double)">
            <summary>
      Notifies the Logi Plugin Service that the adjustment value has changed.
    </summary>
            <param name="value">
      The new adjustment value.
    </param>
            <remarks>
      Call this method after updating the adjustment's value to refresh the display on the device and in the user
      interface.
    </remarks>
        </member>
        <member name="T:Loupedeck.PluginDynamicCommand">
            <summary>
      Base class for dynamic commands.
    </summary>
            <remarks>
                <para>
        Inherit this class to create a dynamic command for your plugin. Commands represent discrete actions such as
        muting audio, starting a recording, or toggling a setting.
      </para>
                <para>
        Minimal implementation requires overriding <see cref="M:Loupedeck.PluginDynamicAction.RunCommand(System.String)" /> to handle command
        execution. Optionally override <see cref="M:Loupedeck.PluginDynamicAction.GetCommandDisplayName(System.String,Loupedeck.PluginImageSize)" /> or
        <see cref="M:Loupedeck.PluginDynamicAction.GetCommandImage(System.String,Loupedeck.PluginImageSize)" /> to provide dynamic display names or action icons.
      </para>
            </remarks>
            <example>
                <code>
      public class ToggleMuteCommand : PluginDynamicCommand
      {
          public ToggleMuteCommand()
              : base(displayName: "Toggle Mute", description: "Mutes and unmutes system volume", groupName: "Audio")
          {
          }

          protected override void RunCommand(String actionParameter)
          {
              this.Plugin.ClientApplication.SendKeyboardShortcut(VirtualKeyCode.VolumeMute);
          }
      }
      </code>
            </example>
        </member>
        <member name="M:Loupedeck.PluginDynamicCommand.#ctor(Loupedeck.DeviceType)">
            <summary>
      Initializes a new instance of the <see cref="T:Loupedeck.PluginDynamicCommand" /> class.
    </summary>
            <param name="supportedDevices">
      The device types supported by this command. Set to <see cref="F:Loupedeck.DeviceType.All" /> to support all devices, or
      combine specific device types using bitwise OR.
    </param>
            <remarks>
      Use this constructor when the display name, description, or group name are not known at construction time.
    </remarks>
        </member>
        <member name="M:Loupedeck.PluginDynamicCommand.#ctor(System.String,System.String,System.String,Loupedeck.DeviceType)">
            <summary>
      Initializes a new instance of the <see cref="T:Loupedeck.PluginDynamicCommand" /> class with display name and group name.
    </summary>
            <param name="displayName">
      The display name shown for this command in the user interface.
    </param>
            <param name="description">
      A brief explanation of what this command does.
    </param>
            <param name="groupName">
      The group name used to organize this command in the user interface.
    </param>
            <param name="supportedDevices">
      The device types supported by this command. Set to <see cref="F:Loupedeck.DeviceType.All" /> to support all devices, or
      combine specific device types using bitwise OR.
    </param>
            <remarks>
      Use this constructor when the display name, description, and group name are known at construction time.
    </remarks>
        </member>
        <member name="T:Loupedeck.Plugin">
            <summary>
      Base class for plugins.
    </summary>
            <remarks>
      Inherit this class to create a plugin. Override <see cref="M:Loupedeck.Plugin.Load" /> and <see cref="M:Loupedeck.Plugin.Unload" /> for initialization
      and cleanup. Set <see cref="P:Loupedeck.Plugin.HasNoApplication" /> to define whether this is an Application or Universal plugin.
    </remarks>
        </member>
        <member name="P:Loupedeck.Plugin.ClientApplication">
            <summary>
      Gets the target application instance that this plugin controls.
    </summary>
            <remarks>
      Use this property to interact with application-specific functionality such as sending keyboard shortcuts,
      checking application state, or accessing application-specific APIs.
    </remarks>
        </member>
        <member name="P:Loupedeck.Plugin.Name">
            <summary>
      Gets the unique identifier for this plugin.
    </summary>
            <remarks>
      The plugin name is derived from the class name with "Plugin" suffix removed. This name is used to identify
      the plugin throughout the system.
    </remarks>
        </member>
        <member name="P:Loupedeck.Plugin.Info">
            <summary>
      Gets the plugin metadata displayed in the host application.
    </summary>
            <remarks>
      Contains information such as display name, description, author, version, homepage, and icons. This
      information is shown to users in the plugin management interface.
    </remarks>
        </member>
        <member name="E:Loupedeck.Plugin.ModeChanged">
            <summary>
      Occurs when the plugin's current mode or submode changes.
    </summary>
            <remarks>
      Subscribe to this event to be notified when users switch between modes or submodes. The event provides the
      new mode and submode in the event arguments.
    </remarks>
        </member>
        <member name="P:Loupedeck.Plugin.SupportedDevices">
            <summary>
      Gets or sets the device types supported by this plugin.
    </summary>
            <remarks>
      Use this property to restrict which devices can use this plugin. Set to <see cref="F:Loupedeck.DeviceType.All" /> to
      support all devices, or combine specific device types using bitwise OR.
    </remarks>
        </member>
        <member name="P:Loupedeck.Plugin.HasNoApplication">
            <summary>
      Gets a value indicating whether this is a Universal plugin or an Application plugin.
    </summary>
            <remarks>
      Override this property to return <c>true</c> for Universal plugins that provide general-purpose functionality
      and don't require a specific application to be in the foreground. Return <c>false</c> (default) for
      Application plugins that integrate with a specific application and require it to be active.
    </remarks>
        </member>
        <member name="P:Loupedeck.Plugin.UsesApplicationApiOnly">
            <summary>
      Gets a value indicating whether this plugin uses only application-specific APIs rather than keyboard shortcuts.
    </summary>
            <remarks>
      Override this property to return <c>true</c> if your plugin controls the target application exclusively
      through its API and does not send keyboard shortcuts. This allows the plugin to function even when the
      application is not in the foreground. Return <c>false</c> (default) if your plugin sends keyboard shortcuts,
      which require the application to be active.
    </remarks>
        </member>
        <member name="P:Loupedeck.Plugin.Log">
            <summary>
      Gets the logging interface for writing diagnostic messages and errors.
    </summary>
        </member>
        <member name="M:Loupedeck.Plugin.Install">
            <summary>
      Called to perform plugin-specific installation setup.
    </summary>
            <returns>
                <c>true</c> if installation succeeded; otherwise, <c>false</c>.
    </returns>
            <remarks>
      Override this method to perform custom installation tasks beyond the default installation handled by the Logi
      Plugin Service. This method runs with normal user permissions.
    </remarks>
        </member>
        <member name="M:Loupedeck.Plugin.Uninstall">
            <summary>
      Called to perform plugin-specific uninstallation cleanup.
    </summary>
            <returns>
                <c>true</c> if uninstallation succeeded; otherwise, <c>false</c>.
    </returns>
            <remarks>
      Override this method to perform custom cleanup tasks beyond the default uninstallation handled by the Logi
      Plugin Service. This method runs with normal user permissions.
    </remarks>
        </member>
        <member name="M:Loupedeck.Plugin.InstallAdmin">
            <summary>
      Called during plugin installation for tasks that require administrator permissions.
    </summary>
            <returns>
                <c>true</c> if installation succeeded; otherwise, <c>false</c>.
    </returns>
            <remarks>
      Override this method to include installation tasks that require administrator permissions. Standard
      installation tasks should be performed in <see cref="M:Loupedeck.Plugin.Install" /> instead.
    </remarks>
        </member>
        <member name="M:Loupedeck.Plugin.UninstallAdmin">
            <summary>
      Called during plugin uninstallation for tasks that require administrator permissions.
    </summary>
            <returns>
                <c>true</c> if uninstallation succeeded; otherwise, <c>false</c>.
    </returns>
            <remarks>
      Override this method to include uninstallation tasks that require administrator permissions. Standard
      uninstallation tasks should be performed in <see cref="M:Loupedeck.Plugin.Uninstall" /> instead.
    </remarks>
        </member>
        <member name="M:Loupedeck.Plugin.CanLoad">
            <summary>
      Determines whether the plugin can be loaded.
    </summary>
            <returns>
                <c>true</c> if the plugin can be loaded; otherwise, <c>false</c>.
    </returns>
            <remarks>
      Override this method to prevent plugin loading under specific conditions.
    </remarks>
        </member>
        <member name="M:Loupedeck.Plugin.Load">
            <summary>
      Called when the Logi Plugin Service loads the plugin.
    </summary>
            <remarks>
      Override this method to perform plugin initialization such as registering event handlers, starting background
      tasks, or connecting to external services.
    </remarks>
        </member>
        <member name="M:Loupedeck.Plugin.Unload">
            <summary>
      Called when the Logi Plugin Service unloads the plugin.
    </summary>
            <remarks>
      Override this method to perform cleanup such as unregistering event handlers, stopping background tasks, or
      disconnecting from external services.
    </remarks>
        </member>
        <member name="M:Loupedeck.Plugin.IsApplicationRunning">
            <summary>
      Checks whether the target application is currently running.
    </summary>
            <returns>
                <c>true</c> if the application process is running; otherwise, <c>false</c>.
    </returns>
        </member>
        <member name="M:Loupedeck.Plugin.IsApplicationActive">
            <summary>
      Checks whether the target application is currently active (has foreground focus).
    </summary>
            <returns>
                <c>true</c> if the application is in the foreground; otherwise, <c>false</c>.
    </returns>
        </member>
        <member name="M:Loupedeck.Plugin.IsApplicationInstalled">
            <summary>
      Checks whether the target application is installed on the system.
    </summary>
            <returns>
                <c>true</c> if the application is installed; otherwise, <c>false</c>.
    </returns>
        </member>
        <member name="M:Loupedeck.Plugin.SetCurrentMode(System.String)">
            <summary>
      Called when the Logi Plugin Service requests a mode change.
    </summary>
            <param name="modeName">
      The name of the mode to activate.
    </param>
            <returns>
                <c>true</c> if the mode change was handled successfully; otherwise, <c>false</c>.
    </returns>
            <remarks>
      Override this method if your plugin can programmatically change the target application's mode or state.
      Return <c>true</c> if the mode change was applied, or <c>false</c> if the plugin does not support
      programmatic mode changes.
    </remarks>
        </member>
        <member name="M:Loupedeck.Plugin.AddMode(Loupedeck.PluginMode)">
            <summary>
      Adds a mode to the plugin's mode collection.
    </summary>
            <param name="mode">
      The mode instance to register with the plugin.
    </param>
            <remarks>
      Use this method to dynamically add modes at runtime. The mode name must be unique within the plugin.
    </remarks>
        </member>
        <member name="M:Loupedeck.Plugin.RemoveMode(Loupedeck.PluginMode)">
            <summary>
      Removes a mode from the plugin's mode collection.
    </summary>
            <param name="mode">
      The mode instance to unregister from the plugin.
    </param>
        </member>
        <member name="M:Loupedeck.Plugin.GetMode(System.String)">
            <summary>
      Retrieves a mode by name.
    </summary>
            <param name="modeName">
      The name of the mode to retrieve.
    </param>
            <returns>
      The mode with the specified name, or <c>null</c> if not found.
    </returns>
        </member>
        <member name="M:Loupedeck.Plugin.GetSubMode(System.String,System.String)">
            <summary>
      Retrieves a submode by parent mode name and submode name.
    </summary>
            <param name="modeName">
      The name of the parent mode.
    </param>
            <param name="subModeName">
      The name of the submode to retrieve.
    </param>
            <returns>
      The submode with the specified name, or <c>null</c> if not found.
    </returns>
        </member>
        <member name="M:Loupedeck.Plugin.GetPluginDataDirectory">
            <summary>
      Gets the directory path for plugin-specific data storage.
    </summary>
            <returns>
      The absolute path to the plugin's data directory.
    </returns>
            <remarks>
      Use this directory to store plugin data files that need to persist between sessions. The directory is
      created automatically if it does not exist.
    </remarks>
        </member>
        <member name="P:Loupedeck.PluginActionBase`1.ResetDisplayName">
            <summary>Gets or sets the display name of an adjustment reset command.</summary>
        </member>
        <member name="P:Loupedeck.PluginActionBase`1.ResetGroupName">
            <summary>Gets or sets the group name of an adjustment reset command.</summary>
        </member>
    </members>
</doc>