From 4de3b06979f62837a07cf41bee6e858e671200fb Mon Sep 17 00:00:00 2001 From: VoSs2o0o Date: Tue, 29 Nov 2022 01:13:20 +0100 Subject: [PATCH] =?UTF-8?q?Projektdateien=20hinzuf=C3=BCgen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 242 +++++++++++++++++++++ Directory.Build.props | 5 + VoCPUPlugin.sln | 25 +++ VoCPUPlugin/Actions/DisplayCPU.cs | 59 +++++ VoCPUPlugin/App.config | 27 +++ VoCPUPlugin/BuildEvents/postbuild | 26 +++ VoCPUPlugin/BuildEvents/postbuild.cmd | 31 +++ VoCPUPlugin/Properties/AssemblyInfo.cs | 35 +++ VoCPUPlugin/VoCPUApplication.cs | 22 ++ VoCPUPlugin/VoCPUPlugin.cs | 25 +++ VoCPUPlugin/VoCPUPlugin.csproj | 85 ++++++++ VoCPUPlugin/assets/CPU-big.png | Bin 0 -> 13645 bytes VoCPUPlugin/assets/CPU-xxsmall.png | Bin 0 -> 6711 bytes VoCPUPlugin/assets/CPU-xxsmallb.png | Bin 0 -> 5171 bytes VoCPUPlugin/assets/CPU-xxsmallc.png | Bin 0 -> 4366 bytes VoCPUPlugin/metadata/Icon16x16.png | Bin 0 -> 3368 bytes VoCPUPlugin/metadata/Icon256x256.png | Bin 0 -> 8083 bytes VoCPUPlugin/metadata/Icon32x32.png | Bin 0 -> 4116 bytes VoCPUPlugin/metadata/Icon48x48.png | Bin 0 -> 4570 bytes VoCPUPlugin/metadata/LoupedeckPackage.yaml | 73 +++++++ 20 files changed, 655 insertions(+) create mode 100644 .editorconfig create mode 100644 Directory.Build.props create mode 100644 VoCPUPlugin.sln create mode 100644 VoCPUPlugin/Actions/DisplayCPU.cs create mode 100644 VoCPUPlugin/App.config create mode 100644 VoCPUPlugin/BuildEvents/postbuild create mode 100644 VoCPUPlugin/BuildEvents/postbuild.cmd create mode 100644 VoCPUPlugin/Properties/AssemblyInfo.cs create mode 100644 VoCPUPlugin/VoCPUApplication.cs create mode 100644 VoCPUPlugin/VoCPUPlugin.cs create mode 100644 VoCPUPlugin/VoCPUPlugin.csproj create mode 100644 VoCPUPlugin/assets/CPU-big.png create mode 100644 VoCPUPlugin/assets/CPU-xxsmall.png create mode 100644 VoCPUPlugin/assets/CPU-xxsmallb.png create mode 100644 VoCPUPlugin/assets/CPU-xxsmallc.png create mode 100644 VoCPUPlugin/metadata/Icon16x16.png create mode 100644 VoCPUPlugin/metadata/Icon256x256.png create mode 100644 VoCPUPlugin/metadata/Icon32x32.png create mode 100644 VoCPUPlugin/metadata/Icon48x48.png create mode 100644 VoCPUPlugin/metadata/LoupedeckPackage.yaml diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8ec3771 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,242 @@ +# Remove the line below if you want to inherit .editorconfig settings from higher directories +root = true + +# C# files +[*.cs] + +#### Core EditorConfig Options #### + +# Indentation and spacing +indent_size = 4 +indent_style = space +tab_width = 4 + +# New line preferences +end_of_line = crlf +insert_final_newline = false + +#### .NET Coding Conventions #### + +# Organize usings +dotnet_separate_import_directive_groups = true +dotnet_sort_system_directives_first = true + +# this. and Me. preferences +dotnet_style_qualification_for_event = true:warning +dotnet_style_qualification_for_field = true:warning +dotnet_style_qualification_for_method = true:warning +dotnet_style_qualification_for_property = true:warning + +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = false:warning +dotnet_style_predefined_type_for_member_access = false:warning + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:warning +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:warning +dotnet_style_parentheses_in_other_operators = never_if_unnecessary:warning +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:warning + +# Modifier preferences +dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent + +# Expression-level preferences +csharp_style_deconstructed_variable_declaration = true:suggestion +csharp_style_inlined_variable_declaration = true:warning +csharp_style_throw_expression = true:warning +dotnet_style_coalesce_expression = true:warning +dotnet_style_collection_initializer = true:warning +dotnet_style_explicit_tuple_names = true:warning +dotnet_style_null_propagation = true:warning +dotnet_style_object_initializer = false:suggestion +dotnet_style_prefer_auto_properties = true:warning +dotnet_style_prefer_compound_assignment = true:warning +dotnet_style_prefer_conditional_expression_over_assignment = true:warning +dotnet_style_prefer_conditional_expression_over_return = true:warning +dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion +dotnet_style_prefer_inferred_tuple_names = true:suggestion +dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning + +# Field preferences +dotnet_style_readonly_field = true:warning + +# Parameter preferences +dotnet_code_quality_unused_parameters = all:warning + +#### C# Coding Conventions #### + +# var preferences +csharp_style_var_elsewhere = true:silent +csharp_style_var_for_built_in_types = true:warning +csharp_style_var_when_type_is_apparent = true:warning + +# Expression-bodied members +csharp_style_expression_bodied_accessors = when_on_single_line:suggestion +csharp_style_expression_bodied_constructors = when_on_single_line:suggestion +csharp_style_expression_bodied_indexers = when_on_single_line:suggestion +csharp_style_expression_bodied_lambdas = when_on_single_line:suggestion +csharp_style_expression_bodied_local_functions = when_on_single_line:suggestion +csharp_style_expression_bodied_methods = when_on_single_line:suggestion +csharp_style_expression_bodied_operators = when_on_single_line:suggestion +csharp_style_expression_bodied_properties = when_on_single_line:suggestion + +# Pattern matching preferences +csharp_style_pattern_matching_over_as_with_null_check = true:warning +csharp_style_pattern_matching_over_is_with_cast_check = true:warning + +# Null-checking preferences +csharp_style_conditional_delegate_call = true:warning + +# Modifier preferences +csharp_prefer_static_local_function = false:warning +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async + +# Code-block preferences +csharp_prefer_braces = true:warning +csharp_prefer_simple_using_statement = false:warning + +# Expression-level preferences +csharp_prefer_simple_default_expression = true:warning +csharp_style_pattern_local_over_anonymous_function = true:warning +csharp_style_prefer_index_operator = true:suggestion +csharp_style_prefer_range_operator = true:suggestion +csharp_style_unused_value_assignment_preference = discard_variable:suggestion +csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion + +# 'using' directive preferences +csharp_using_directive_placement = inside_namespace:warning + +#### C# Formatting Rules #### + +# New line preferences +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_open_brace = all +csharp_new_line_between_query_expression_clauses = true + +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = false +csharp_indent_labels = one_less_than_current +csharp_indent_switch_labels = true + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# Wrapping preferences +csharp_preserve_single_line_blocks = true +csharp_preserve_single_line_statements = false + +#### Naming styles #### + +# Naming rules + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal +dotnet_naming_symbols.non_field_members.required_modifiers = + +# Naming styles + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +#### Diagnostic configuration #### + +dotnet_diagnostic.CA1028.severity = none +dotnet_diagnostic.CA1031.severity = none +dotnet_diagnostic.CA1054.severity = none +dotnet_diagnostic.CA1056.severity = none +dotnet_diagnostic.CA1060.severity = none +dotnet_diagnostic.CA1303.severity = none +dotnet_diagnostic.CA1308.severity = none +dotnet_diagnostic.CA1716.severity = none +dotnet_diagnostic.CA1720.severity = none +dotnet_diagnostic.CA2101.severity = none +dotnet_diagnostic.CA2234.severity = none +dotnet_diagnostic.CA5350.severity = none +dotnet_diagnostic.CA9998.severity = none + +dotnet_diagnostic.CS1591.severity = none + +dotnet_diagnostic.IDE0002.severity = none +dotnet_diagnostic.IDE0021.severity = warning +dotnet_diagnostic.IDE0022.severity = warning +dotnet_diagnostic.IDE0058.severity = none +dotnet_diagnostic.IDE0059.severity = none + +dotnet_diagnostic.SA1108.severity = none +dotnet_diagnostic.SA1117.severity = none +dotnet_diagnostic.SA1121.severity = none +dotnet_diagnostic.SA1122.severity = none +dotnet_diagnostic.SA1131.severity = none +dotnet_diagnostic.SA1201.severity = none +dotnet_diagnostic.SA1202.severity = none +dotnet_diagnostic.SA1203.severity = none +dotnet_diagnostic.SA1204.severity = none +dotnet_diagnostic.SA1214.severity = none +dotnet_diagnostic.SA1309.severity = none +dotnet_diagnostic.SA1512.severity = none +dotnet_diagnostic.SA1513.severity = none +dotnet_diagnostic.SA1600.severity = none +dotnet_diagnostic.SA1601.severity = none +dotnet_diagnostic.SA1602.severity = none +dotnet_diagnostic.SA1629.severity = none +dotnet_diagnostic.SA1633.severity = none + +dotnet_diagnostic.SX1309.severity = warning +dotnet_diagnostic.SX1309S.severity = warning diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000..51879ab --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,5 @@ + + + 7.3 + + diff --git a/VoCPUPlugin.sln b/VoCPUPlugin.sln new file mode 100644 index 0000000..03bf758 --- /dev/null +++ b/VoCPUPlugin.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30128.74 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VoCPUPlugin", "VoCPUPlugin\VoCPUPlugin.csproj", "{03022F04-C091-4614-9CBC-7579C1FCA3EE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {03022F04-C091-4614-9CBC-7579C1FCA3EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03022F04-C091-4614-9CBC-7579C1FCA3EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03022F04-C091-4614-9CBC-7579C1FCA3EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03022F04-C091-4614-9CBC-7579C1FCA3EE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C024C357-17B4-49BD-8871-658BC4148938} + EndGlobalSection +EndGlobal diff --git a/VoCPUPlugin/Actions/DisplayCPU.cs b/VoCPUPlugin/Actions/DisplayCPU.cs new file mode 100644 index 0000000..f638179 --- /dev/null +++ b/VoCPUPlugin/Actions/DisplayCPU.cs @@ -0,0 +1,59 @@ +namespace Loupedeck.VoCPUPlugin.Actions +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Linq; + using System.Text; + using System.Threading; + using System.Threading.Tasks; + + internal class DisplayCPU: PluginDynamicCommand{ + private readonly System.Timers.Timer _timer; + private readonly PerformanceCounter _perfCounter = new System.Diagnostics.PerformanceCounter(); + private readonly Queue _cpuavg = new Queue(); + private readonly BitmapImage _background; + + public DisplayCPU() + : base(displayName: "Display CPU %", description: "Displays the CPU utilization.", groupName: "") + { + this._background = BitmapImage.FromFile("assets\\CPU-xxsmallc.png"); + this._timer = new System.Timers.Timer(1000); + this._timer.Elapsed += (sender, e) => + { + this.ActionImageChanged(); + }; + this._timer.AutoReset = true; + this._timer.Start(); + } + + protected override String GetCommandDisplayName(String actionParameter, PluginImageSize imageSize) + { + this._perfCounter.CategoryName = "Processor"; + this._perfCounter.CounterName = "% Processor Time"; + this._perfCounter.InstanceName = "_Total"; + var cpuval = this._perfCounter.NextValue(); + Thread.Sleep(100); + + this._cpuavg.Enqueue(cpuval); + if (this._cpuavg.Count < 10) + { + return "CPU\n\n" + cpuval.ToString("F2") + "%"; + } + else + { + this._cpuavg.Dequeue(); + return "CPU\n\n" + (_cpuavg.Sum(x => x) / 10).ToString("F2") + "%"; + } + } + + protected override BitmapImage GetCommandImage(String actionParameter, PluginImageSize imageSize) + { + var bitmap = new BitmapBuilder(imageSize); + bitmap.FillRectangle(0, 0, 90, 90, BitmapColor.Black); + bitmap.DrawImage(this._background, 0, 0); + bitmap.DrawText(this.GetCommandDisplayName(actionParameter, imageSize), BitmapColor.White, 16); + return bitmap.ToImage(); + } + } +} diff --git a/VoCPUPlugin/App.config b/VoCPUPlugin/App.config new file mode 100644 index 0000000..25b52c3 --- /dev/null +++ b/VoCPUPlugin/App.config @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/VoCPUPlugin/BuildEvents/postbuild b/VoCPUPlugin/BuildEvents/postbuild new file mode 100644 index 0000000..1fb4724 --- /dev/null +++ b/VoCPUPlugin/BuildEvents/postbuild @@ -0,0 +1,26 @@ +#!/bin/bash + +# Project post-build event for macOS + +PROJECT_DIR=$1 +TARGET_DIR=$2 + +assert() { + if eval $1 ; then + echo "$0: Error: $2" + exit 1 + fi +} + +assert "[ -z \"$PROJECT_DIR\" ]" "Project directory was not given" +assert "[ -z \"$TARGET_DIR\" ]" "Target directory was not given" +assert "[ ! -d \"$TARGET_DIR\" ]" "Target directory does not exist: '$TARGET_DIR'" + +METADATA_DIR=${PROJECT_DIR}metadata +assert "[ ! -d \"$METADATA_DIR\" ]" "metadata directory does not exist: '$METADATA_DIR'" + +echo Copying "$METADATA_DIR" to "${TARGET_DIR}../metadata" +cp -R "$METADATA_DIR" "${TARGET_DIR}../metadata" +assert "[ $? -ne 0 ]" "Copying metadata failed" + +exit 0 diff --git a/VoCPUPlugin/BuildEvents/postbuild.cmd b/VoCPUPlugin/BuildEvents/postbuild.cmd new file mode 100644 index 0000000..29ebf46 --- /dev/null +++ b/VoCPUPlugin/BuildEvents/postbuild.cmd @@ -0,0 +1,31 @@ +@echo off + +:: Project post-build event for Windows + +set PROJECT_DIR=%~1 +set TARGET_DIR=%~2 + +if "%PROJECT_DIR%" == "" ( + echo %~0: Error: Project directory was not given + exit /b 1 +) + +if "%TARGET_DIR%" == "" ( + echo %~0: Error: Target directory was not given + exit /b 1 +) + +if not exist "%TARGET_DIR%" ( + echo %~0: Error: Target directory does not exist: '%TARGET_DIR%'" + exit /b 1 +) + +set METADATA_DIR=%PROJECT_DIR%metadata\ + +if not exist "%METADATA_DIR%" ( + echo %~0: "Error: metadata directory does not exist: '%METADATA_DIR%'" + exit /b 1 +) + +echo Copying "%METADATA_DIR%" to "%TARGET_DIR%..\metadata\" +xcopy /s /y "%METADATA_DIR%" "%TARGET_DIR%..\metadata\" diff --git a/VoCPUPlugin/Properties/AssemblyInfo.cs b/VoCPUPlugin/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1bf8bfa --- /dev/null +++ b/VoCPUPlugin/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("VoCPU plugin for Loupedeck")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("LoupeDeck Oy")] +[assembly: AssemblyProduct("Loupedeck2")] +[assembly: AssemblyCopyright("Copyright (c) 2018 LoupeDeck Oy. All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("03022F04-C091-4614-9CBC-7579C1FCA3EE")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("5.3.1.14222")] +[assembly: AssemblyVersion("5.3.1.14222")] diff --git a/VoCPUPlugin/VoCPUApplication.cs b/VoCPUPlugin/VoCPUApplication.cs new file mode 100644 index 0000000..ca48de5 --- /dev/null +++ b/VoCPUPlugin/VoCPUApplication.cs @@ -0,0 +1,22 @@ +namespace Loupedeck.VoCPUPlugin +{ + using System; + + // This class can be used to connect the Loupedeck plugin to an application. + + public class VoCPUApplication : ClientApplication + { + public VoCPUApplication() + { + } + + // This method can be used to link the plugin to a Windows application. + protected override String GetProcessName() => ""; + + // This method can be used to link the plugin to a macOS application. + protected override String GetBundleName() => ""; + + // This method can be used to check whether the application is installed or not. + public override ClientApplicationStatus GetApplicationStatus() => ClientApplicationStatus.Unknown; + } +} diff --git a/VoCPUPlugin/VoCPUPlugin.cs b/VoCPUPlugin/VoCPUPlugin.cs new file mode 100644 index 0000000..799d5f7 --- /dev/null +++ b/VoCPUPlugin/VoCPUPlugin.cs @@ -0,0 +1,25 @@ +namespace Loupedeck.VoCPUPlugin +{ + using System; + + // This class contains the plugin-level logic of the Loupedeck plugin. + + public class VoCPUPlugin : Plugin + { + // Gets a value indicating whether this is an Universal plugin or an Application plugin. + public override Boolean UsesApplicationApiOnly => true; + + // Gets a value indicating whether this is an API-only plugin. + public override Boolean HasNoApplication => true; + + // This method is called when the plugin is loaded during the Loupedeck service start-up. + public override void Load() + { + } + + // This method is called when the plugin is unloaded during the Loupedeck service shutdown. + public override void Unload() + { + } + } +} diff --git a/VoCPUPlugin/VoCPUPlugin.csproj b/VoCPUPlugin/VoCPUPlugin.csproj new file mode 100644 index 0000000..4010410 --- /dev/null +++ b/VoCPUPlugin/VoCPUPlugin.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + {03022F04-C091-4614-9CBC-7579C1FCA3EE} + Library + Properties + Loupedeck.VoCPUPlugin + VoCPUPlugin + v4.7.2 + 512 + + + $(SolutionDir)..\obj\ + $(SolutionDir)..\bin\ + + + true + full + false + $(LocalAppData)\Loupedeck\Plugins\VoCPU\win\ + $(HOME)/.local/share/Loupedeck/Plugins/VoCPU/mac/ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + $(BaseOutputPath)$(Configuration)\win\ + $(BaseOutputPath)$(Configuration)/mac/ + TRACE + prompt + 4 + + + + False + C:\Program Files (x86)\Loupedeck\Loupedeck2\PluginApi.dll + /Applications/Loupedeck.app/Contents/MonoBundle/PluginApi.dll + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + call "$(ProjectDir)BuildEvents\postbuild.cmd" "$(ProjectDir)" "$(TargetDir)" + sh "$(ProjectDir)BuildEvents\postbuild" "$(ProjectDir)" "$(TargetDir)" + + \ No newline at end of file diff --git a/VoCPUPlugin/assets/CPU-big.png b/VoCPUPlugin/assets/CPU-big.png new file mode 100644 index 0000000000000000000000000000000000000000..ddc632373e2718cf85609fc9daad86cf8dfc2af0 GIT binary patch literal 13645 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 E1#$R7RsaA1 literal 0 HcmV?d00001 diff --git a/VoCPUPlugin/assets/CPU-xxsmallc.png b/VoCPUPlugin/assets/CPU-xxsmallc.png new file mode 100644 index 0000000000000000000000000000000000000000..2ae86d1686344136ad99d5b8f3f4c341fa3e9ef7 GIT binary patch literal 4366 zcmV+p5%KPcP)NYl%b@~WmbeO3 zS?WSjyU3PX(zX{mf*#`*ru%-LKz!{rV9R@$=I@5Xi~N8F1&FcjowOZRgINQ}4U) zz7b}grs%xw-kF1~n$s1Pyv==uo5y?Kq?{J>FNIl#~>X5_XXfl5HnQo*t1^`3UZ#J7TFifuwHK!sN9Imcxs?oCL3!8T%bXdWdqd}h>qoP57lUUR?N|FFlmiU)7oq-_v)ttPGcq1 z1}M*bA$`IDDrv?$oz6s)mUb}sT^C<@Ah4%19Wg*H@z-Zdy6PNpMGv;&{jbLY-oxNY0EBm6BtKffA-<^pXO z@)y_O*|>4zKP+|HPv(&E)U|8Ze$cUF#~uw04Yg?S(Wt1X$bka~4o^r(NIZW0cwS{? zWjWdqS6^T61gIB~8npkYuayFs&QJa+6@E&!>;EX}~**U`~Kx8dp4tJhtik+N^! zzWp6KbjYZvsAxpGpOMolo=Nn7mrR~z^AIg#Gtb=C=-V~y)ZLNo0^*HAe58Ok>8R= z3)BXDJcYvSRdI(5NN0J$dqKMa0~~?6DnP?b>CnO?=uEfYetRaC=UK51ZSnwo*9$Ma@TZ_bX-PpW z?cP{IHi6Q+8!K0?TpKJtK`;L=zW5?2;8J8c^^@g2#U5EkmglD@El*4YJ5uUX|Bl9nRST13=IGI*(`3OBBSwrm za^%RtV8PWYH+b;iPRxkSBmsO$3@>+2Y$jP+1lmES_uhMNr<}J-moEKlFio~3ryf3h z_!NO9)5oSD>H|-`gpK@SFqOB(GGBiA<-cURVq;@PCn0TJ>EFM9hHiT;fr=4Kglw0D z%G~9!iH1xp(`|G(^FeTM+juFdq@|^0pwAT3sCsKXrl3N^h{P*&<8Ix$bpgLj1h5oU zR9+l3U)E~jEzZQHuU3gao#=N8Mic`Xt{6qs zjU(h%9^J;@f_$zUH*QoyxrhdvJLZ8AH8%N*q$Nw1yvjC-rTgu--yYw*dGo&^SQjIW zyD!0(0(>+C;+pjI^o(bodFBa>STZ)L8l^*a22~i*vGgOhY}t|vt?f7_7WpgJh^L*K4|YMBLqW96t}^D44Ts0|l*{PD-1m3>>WV#UYcsgdY+S)V?A z%nU>~^~lmjMa>Qsa+K8B8FJHED`T$i5zSC*T~MQ&(f9Cx`pGAstcQiC7RNe;-jeE}Emp81@Y%^&o!WiY1{Dqtk+f4nW|KO$?3mqVsybj|zc7S}V;ykk6p1{^zJdDpI8yWu!Qbw0EG z^2dn=C7wQk@R8}-Je38&Pvx}t8cp2_+d)2GGPtF)D@&l_6!QRd;WFsL>d~>?W~y76 z!IBo|X*iADVP!H{0(HlZ9lKyysfAFiY8Q6XsNDTA^!$jeTeqGF8>l$DUyie>E|37O z8ygwxvKy#w%?YcL7P*Lp3l~~4!dsfD5DcPdQ$;;$IlFE>__-8{R2Cc$lCcw3aL-aIup6jewqh7l?uJW!zxUsN|C}#iAAb1Z zNSxdC-LPT9d3QRD)W25@uB!2s-L z4xQnRqI&e%ZTI&w7Qsk=_UWgeo(5klhbO3DhlTiUk@~v;6&C+Wyrx!b_#KtdPs-4& z>|U*Nt4Edwv1aIuvv1YFJUiex9)i^~F=D;>R#ah-lFGmr` z>FcbJ6reu$+;elK-02~&QbwgS1z#uZ)EVHZG*YXe+R8)4*QNyn(pdDLJ`poL!NqU0 z@%|TY0p!#fOcx>*+{yEI?b@{;c2YXy(+EwlsZDX(H-NX)z>azw1Y@32#nRKy%E+~| zyk0Yv6Kdzqo&WsdhaWC~_~D1W(I4_!x&ifuTRvIDMtDBvz?)QPTmsZRd-m++8>sV8 z0>(j`%A_x+lGhRo2~1kSFVD$s&|jHX;^7kTgVH0YAV}-YeGU^)qS)9!P0NWs(0{U z5c;myXzEtj4)VG83)xTjIcVb~X10}1PMbDudXFAGx-% zK7EXpwrB%_zKoz_H#EBDswP?|zSK)kCWEe~c6h$g( zPEKeRO}I7J1;?}-X{biU@w+T>TBh5x+oZRd=RbJ(hS#1w0gr2wu9(dp(&Of}qj_Cy! zxY9XTci8B{rcn$Dj;uWgyr293&fOZ95T)!Rt0G|;d{D1V(M}Na53T>OJHmKME zo%80+TL5PYx>NG*zFi;pOohTjr;!K*aCilqdFXxqjbmH#PlnO3+gZQA2_pB41omHd z7P+rL;`Z<$LtJtnO@jytMe)iDOn!rT#Sm9b$;7>lu;gc?JKC+44>sc` z6=#YyYzHG^7>^eoDp(My{>=Phrou^LQ+auLDP|;{DL4z&;Dk|(RRW#A|KIV@I|Xq} z)ax(We7UuNvRJQ|e=0nvtDk@V`FXfX`4##vBNRy`fS=L0#MTiv{=Ra9ifKzZERd1< zARMk&(Y+9$szC>B1?tTPIN_epnOeVQ&6;;~2ged1;HeyyYEjiPq?WKi$ z1W;zD7|HLDSJk_?0jXI6b@AfGvv8b6vmbA)2;#W2nGHjW&p4<7Yj1-Y5T*Do*(^pX z;`e3CmQA(N)Sy+&ufP5}f7GZ^16kSr{rmG_#o20ju1M)Yb#xOuq`|M{ryBo6rpr&Y ztn3e0311oZ$n#UCOP=WEXr`2vdEK;O*C>Z2E)9-o&l=ZyBF2pyckk}qyAN9dv_*Nx zj~_oq-TCbH{nJlB-P$66f-O9C>eLB}xM3SyalzLeMtTgtbnL z*8-Q%YgnEv=MJ@m(QL*hO0gytDs-80j^<_wpwS55g-k|cgY@*4BYv~MZh*O9g1Pb=s6rPOZ?`sS{mz9;3iS%g5)s3KA1^Kx% z?Gn%i%R#dm`J-W-PXu_8DB}R1PlRk42O13s^5}rIDH8QEz)l=ah8?_b3#Yqu)YS+% zQ`>0L6415FqCpQ~#+0Cub!aeE5Moe^&r*#12ap_ogYOrS#%Pd@Oy?)^)Zn{g_3G8j z;o-3d-|Hx*8QL6a)Zu&0`t|ESMxMXmdo|NN>Zk&shu?hj%{c(`KdjTJy9xOk@SPzn zuOh1D?-0s?T<%GZGy0lI9pzw0mfR$DFbE5%2B2o=wwYHemQ_$inN(sXFcFpDT5LXJVm2^y{Ed5)P3EWtDbg@Bm-XE96*bOOQtnay_6 z2&t^j{)Y=xvyQM{Pu~GwGfBA9n9Q<3fXbp~G;~;q&WgV&Pq;uerAs3LTEWOWHXwxX3d&zmj39Yk4}W? z?HB&?AUJN;%$YMMnbAPN$0^9y*w{Pg65kTz14KzAL>?M6#Gu|gvoEj}q9!)k-I;U0 z^WAgK{mz-`s_24wlO{}?;BvVpg=<1F_*;rTwv7mM)NFM@NUd!{gSB1WEHePf`rYFa$&pW~XY28A3J7attA0N`|6ail$mG)5Hx^jX-0#lrE=Pd=3>Kw^&D2-sHn2mVcvkMl*NOP zXn_FEQ1J9=nqd45j7RX&0?XZq1VuT}h$buX&eNcL144KNkN*@X6tOH?;@N;B5h1La zmZ(Y~917qtD7T`>0>}6{MwY!$?X5h)uq+^WUn@fZ-Y-dvOfhoYW5)&kLz>iv&II{8 zjU;Ol}4@k%!;CtAtTRt zd4{1m-`r3YO;>Y%Z#Bz%d>)45Lm_WvHIB)W5Z8>f2!*Gl#RMRAHGyM=NP=2QGhiuU zyrmx8$#s0rIn z`Ez#r;Nd(m6e+A)z|akNEU1CuQDf!K&>2hAL$D6g=VKjvlc$|)plc()t zuQeC1pkn0w*VWl8z}Z{-H!33YN!2JOZ0FAG7_SFQvsWnv#t6roAWF^|nIg;`1&)mW zCUNB7kpxI2xp@GaoDyhCpy*taJKLCA-0BbwP?>B3(iK8UZ zljJX{NSfLX46BfiE*c`#F_cjNkE7#tI_pjyBrr?M-l0All~Q)Jk*iNJVSYF4pHZK& z@P5|QD*9xW5E%{-oQM<$d~t&H`Mth4O@lbLGfQ{h(scC zI)ij3L7{01^R)qFtXi=XYA7qaDlt(IU;$@i7C^ZL@E{h&78cKFdkqog){68tBEurB z-efdN8-*mljCkxcoS?`8*(qV$letQ<(7bjgcQ%9KxiH7?P^FZ7dS@~fS8&8VY(UW) zU@lzvT8S?6@3ZhG|3(Z{*yRR%-+i(4m%T1m$+~c;vZ4Hg<$b#b-i%({`(^scrK>&+ z?q}%IGIMI(zOk?N4pWD|da3N9mhUI;+*vlhf66uLv-`UjZt9u(!nj#a?H&4j$i3yK z%XY`t{d%H%=9E>xom?^aHS@^(2aIo*&%SE=7Zq>F<@XJL_sYQHZF^GOGGYDgdx%R{ z|90~A+ucXn2TPYt{P>_Xw0GO0ts7$Vr#bAL*X6BRxHqe&N<@4&i>Mas9CS-WkJ{yGzIHy}G9^xpuhh86m zPuui0<938L&)@jg&HG}TKka&LV9%kZ{@R&;Y`f&5T?hI~jy}5cVX^s#9&^I;iwDOX WzhcHiGwaa*GU4h4p@FKFm45Uf=(_uFv)0dG7n%=RW7$zwqMJNWlnKnn@}@zD0!F(8Oni1o_`#a|T#H@hfSwoF?SV;q6%sfZ_1 zok@y*o-`m0LF!t5G(5qb#DqDM$P_OP_{f6_IE+HnfZM2=AWUewBv;D506NJsz|@Km z;7-62;aZw7bw3A<#HwEbPY*9PCCXy5KDI^ndIH zo;2XDOePJdq~z=CtLUq&NTrjNkXS5M34u~Vp%j3G0>j^niT6|RVr>7ZL65{B&?z(~ zh3W-kX~a8Iy_p(tVCk|8p0pLUUW^}M0s&LcDxlP?P|7$}Bu)h_ z#{v{$S=59|q`3J1izwELB>^tfpF{zOiFhXdp9q_n;0(MNOuQF?WT2-32SzDUC`23v zjX+{ul+_fJRS;+eWr7M?L5=9Fsz5|xl~q;IM2rg7WyvnEUXM!fW}OLZ{c<7^sRW>7 zCG0pP2JMV@CXy6T1R_=efmcyhz^mZ#3Iu{0#@R&`LvVIc`>D;0P64@$_xN2a%PJz! zh()PlQ79xDqpzofMD9VWsqRt1Dr1yUXsn)|>h3*o7?FT;q0&9^0C*HnJej0K^CH7x zzbw(EdQj;glpx;9zmFT}>YCH3E))+i!LZn?12fp8i$-G6Xa$ra5)NY_0%yQdXhR_~ zT{YlHEDD^EHpM&?y81FD8jjql05%B``SZA4@Iqo-_{9?7jX^2>G{Np~#(xbT@S*_U!3Hd3;`V?))+9P(X;*+Rpl4}( zDGZi?Jb}AtRaIrxALC1A*y>ThaW1b}_H${?(wyDzb1Yw3eCkPKp@2lE_>hSDbgCz8 zi8pYRzrqz#nTRJL2?|649-%-$16<*W1ZM>-K@Ei=sHmx_5D4%e>j8>ZaP`j-u)H_* zKS7bwic|Y243N(LKWN;NbmYgK2L;#&=naP_ET0hr4}51C&Kmqr9A~ZfbtSPt@{UV1{H}0iH`xD9^}h|g znu@YB9z#@7z@yM41vH+8I1KmYLvJ(){9GE0Q1681D}-^aFM}c=9g*{*qggF$Hkbfa}7{VF!Na=%qQ9 zqMviW;q5OqSW_(-C@O;bH%eBfS$dY-ST;)Om$E;Zy~NBq6ef$Wmzn#A2fy=zrrNS9 z56X&r|8D5_2>#_BO9H=jfIrOzZ6)h=rJn^4D;+V(3uHMR^t%`O67nHPXwg7#x0T^#ABVf&fuvO3B6@>O^8AIxiZm5rBmk*^ECs198MAt(5o4Hk0 zRYKCH+NL_n&X2hZTHB`_MHK8mL=@K58Fn^3l{h{WktM#%XEeR>D)xOuR+>@VSo*$? zU%!6!N-#7s8Z2<`EcH(k&M7I0#}s-GT5EZ4qrg6=WM|9eo9yrE>gZ^AAtq;;n3yO4 zLH{>bu+6!BJ9_0~t#(#R36Zn7LJxiDi>W2Pua0_uso*Zw`(tBbeZBFZnX|LAg@uKn zprA*&!ST-KX7Azl;+Ls=rKP0a<(+=>`ZWO|deKnwdxU=KCLGf>AfTj-_d?;TR~ER0 z#Kex5FY!vT?k%}?aXp=7M~UQ`bKB^}o}RCjEV6LBc1fEh4bf_gvTgFB#Z>D`uG-nz z`Hpl(ojG%7CS51x{*m`w3lk@Jgg%82WoM_QNlHtHf2TS+IvzT7$j$BMf_)@2#OlWQ z$LC}s@x{rvHXEB`Yl+t#KWL?7Gprq~L{WVeMo(vw2@Q(I>xph4?tvU(jE!V+?c}3Jk5;>$$vv;$*4nCY@Sgd@fx$tIyxg%dI;xQT zeCzY<$lSmWHRnay+QWDHYTLkly%m}|IWSMW#~T~z?D-?kiR(o~`g`SDd+MY{RZGxM zHsLKC%0$j_OskcD_`_WL$xaQY4U;Io!A*y^lTRFIh{WoShApsFM~iP37uTrltl1_^ zxO?y3o2I54_M^lD#4$dx*UytQj11UMHYMdW8|RvZ>5@p2PoBm|nOrxMxkPKT2UvG- z=(u&TDAUTV@ZF<<>+=J>Pa-K4%0)|m3kQ`(a|4-0;c?hfo(OoHR#}~lU^Zp$e|AZM zm!Dr%l&`qBn6F5gtt#1EMrH&h7S$Ag^xF{j_@cTm2md^;QrU!suCA^GxBSiQ?BcEb zTZb>+xUpj}aX`EK$jn$D<#l?*(>`LaY+dLoUehFX+5U`El?-PBq4-Gh{rjTq(-L{5 zV|AFWV_{#B`!3_WZyKiIe1=3hM`Fz%<L=b!bpZ_atRi{1FD+SiHCuW2Wp zTxu^!b{+p-_FV5%Tcl(8vEs-AkSl{Nd0O5BRsfT=#L&EHht&W)*Af!uYNfBas)%jW z?AB$QzWgjsY1ae%vHto^h4%cIHPH3c)X2!lL{*ivs@mGxhqg+D>OYQreN1e>e}tA8 z+!L~TEA8bQWtV#Hw*oTq@*Zz;?9QJ*zkdDtzP`SuzVVFy`YZ2;@}jqD*xT9hRPcx{ z&JN}QYA7vL4=0lwuln~s<{7?R)p48fbbwisnVEUv!Ue!J73(;uou#!r3uRNC1)7C^ zU!BPgIzd62SEVX1@AAzp=s#TOw&A-fU2s^JzPV)_eWiP{Em=SHr4vF;om6p*Wz}eko#3P=gqW3z@yis0MRyTVRwQg#`7R~VUauJJK$Dm^@MZUIsY zYfsP2teLF48Kwh2&nKZd-)!Spm=x7&1|2zaWXewa3&*w8m#!`i@lV=^UZm)r=U{!0 zaS~#Wjf)#;FOIqHV?E+@xxppTbn2aZ-Zp+HEUm08aB8@ttgI~O6;#It00d||aZPf0 zdC-$H8|w2u%zV5S4pll)JUk8+xR}6BX!8mA3#fCyN7t}H7n~pf@1NHxCr1I8ebLtv z=mXtfPmeQRh);yRneEcEjn0(Et9V6D*ySG<=7z$DIvy0=yjkaj_%s>7#>JM$8{D?# zW>Jw1{5(vA{kvh=Ndf)2rbzhe%e!GIV-REDUH;7(H;yf#%71R)~3V@j-^~5OcRdscB zP0c2|SB$M495e!Fnf-GNhhqAZ9z|E^esW3*9#qAuliE@-5j%RL z;__cEaQKD_6$=y;&Musa8!iO}*8uUS3dE)qoS7+;W>G6HC%mRfO%%2>_RQ6%Z56$f z2XCdMq-@4`@vU1IS4+$=P1Je7-m*n2=<0lVYN~F=Yo2_Sb1kcqo85fByn8bL8O3c? zC;uYE{+39kXK5}%@axR@$KteT>%7BJTwJ;S@1rm^2Qufre<|wXv^9J&$c_+;60Se; z^cV^XR#p+?kHcA1zin;(JjD)GYRFK8yKP|5@302QcH+<8R1M2?DpZSgpVi=Ltf{Ga z_UyG=Va`@<+R-he&)FbRHN!M|^UVVmSr?nF{RJa-;BY1R`T2m7Z$orCz4W&5ddLgm z{P;8|lGV@i;9uB{PZ~8gM*AEKv?SuIF`8_>7 zFLLA?9wedc+}#I1y-aO(^M?E?rh?Y4bpx%+b5N3Yh+G!E!GvS6#i^-}vLMhD5S*Pa zI~q7RBuem9R?p46Bd4ti=SpEanz^g7zJ9`od_urA86aYHAD{C$jeNPGU)xXoof(ID z&oe&B=^H$>jogZ&%Xz(f6O(Pn!_)U+5RAQI@03LTHUZUJh?rgL=Q%|`pxK-LXxR%D z9}4QO3<2z3XzyTW7vXdA!GrYl^!}-?<1KE5$G)`g?rZfup|GpZV)JdKr8*3`W9=%JOUpseUj(TWE zeZU<*f&M9ESmef2=V_77oWWe2qkE=t`ajcNZwC}pd*TdNFEb&?VD$9*?NY{>;eu znhYD=XJoX?e~jqor*^QwC{D4X;&=stjp^&FT*24B5entBmV?82xSX7@P=$-Rnc2E* zgsD^v�jgcg>E=y=1Y~wq;jzQq+pCo9OQ>iar32QbQ-2OX!S=n;@^W&U(H^4q z!hCBC4?I09k=N|DDfgy+2Xf{Hf$iM8eG<(0wW5cso3m}&+S;~32wR!$o^Ebq7H$J- zoMW%<<1Z|K6!PNr;=5@Z|C1rsn3)lL2WK{_m^# z@5<3kEG;cN>wQ*Zlw^&Mw-_4G{CIEtQPZW_0KSTS~7L`Qy(lQ&;Iyk(U( zN9&tg2V-JlQd3j4K;Hx`PmT)VP4erFn4dp3fRS~3dzTW^#al^4DcIkYk(4|c{j9DI z26e|r2uUm2-P!SYOt1l*{DLM=`hGr3c*tg_vxpU%X5Gx2LT}fuKmEpYR%5k!c5_x% zR*uVKAqNMC%WJvXr4$qzh$va%HP&2@s;Y7wD{^0d-oo1rO85NmgORs~!-_Cij*z;V z^V>nGxRST_gBxC+3acN}hmBTN*+SfM(5aUdg(htGa2&zA1&>X9dRZGIZTYTl;EQkxJ#Fn>S~h%YarWPHSGx*`Cj)L- z&%HmZHCqOqHc3E()|cTN3{cBu|Dp;|9Cp6)B$UqP*+A31!x?s5@+?u0roG9 z2fKdxs8}h+DIZ&%`ryH?$GaF`c2_=nU;>JxT!LW4iF*4khcD8>8P|el!zF?M zB1nbNy0*4&K~LG++xz0GQ~tTOL-%RhWMv}`tlk-GSlbUmv~H{VCtK)4-nL7D;+qbi z(ofxekbR1?J1SRMU407{f}%OKc_24VPKu!M%x((h^H|?ASvIH1Z+A>Hj7&{C?~o!b zvh*CncE5b}>WN+%MH*-1RB}q%8u&i`oVAC+Aey-5^~|n%CB1;O|Gh~UppX~ zQS`b0%aOpk)|MeN{!$b1fU0xbbZh+Q%d0_g@bXf0z*}2iYItB$Kz=^V&;gkX-ooZp zoj{YPa&wpaFz6^36L@%d&T7tn0+;}dCm=2^UK1-QA<^~fRd0?(4u-L6vGJZ~+w9fx zn(b$&J@!p_mI;f9l#f>NHa0HKk3Y|=SPTdZ)Nm1=-fod~x40N9CFL^GS;qL-=>4tm z`gQo3RqR+EpNBnX`)GU;@7G#>X|AM;+M^ynENBK5S(%<71PXs`y4wrG$kKl`svMeZmY$!!(P6 zR^v(0ty>lAAA|(o;>v8hF7n~s`VF8rh3|!s5c*wWGtu z)z$iD#^RdC{6O;sI>F9-e3FWv6|-hMyS#mYVK9VusizECD8GjDs(qxCN3^)wa0-XX>O?cFVf zlHN1IPA?wLjZ~PWTwE9m?eFi;vdp-k+BrtP7Wk&4!&7U_Ji~A3EfOaqBa^(p4}2X! zJ0_cDas+)$^!0O`AA6=GJA3C^kKvJLlY=dvy8%17QK?i4<@OAFY)oB#z~sQii^9V( z9IMxYjy1y&ObkjK8)bW<^$mlRRf*RO z#A(IePDu%ID=#W)DKBxQrLu3QPKXF=j6W9xZ`*?rSpW}X={4dS5%A3B$p8)Nmn-C? zuQ#01($Y$^qBdg!oa+MIoDB>jq|-&@Z7UN>7$2jr4WAG+cMn7Tp&Dx_`DpV-K3;us zpGupJoDlS%T|ZxJD#8ygUgAMr`J>0sjE`5!-ZH2JajCs4vHaGpTi_+Wyj&BByj@z_ zE@Wwc>sxiyW(5TW@M6krfBCZKp6ngka62|iKec5LG?ijvV(PMQ!FvU02x_?(27Ay4 z!DpAgo9@%2Js<n#;-%#pIi?njQ_N52I|1@PVFZu7R|4?Q`q73h YO2jpAmH2c%v1L6Q>@n5L)o}{_FXXrs{r~^~ literal 0 HcmV?d00001 diff --git a/VoCPUPlugin/metadata/Icon32x32.png b/VoCPUPlugin/metadata/Icon32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..9e908ce7682fbe3eb1f7985c913c3d261be9b8e9 GIT binary patch literal 4116 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 literal 0 HcmV?d00001 diff --git a/VoCPUPlugin/metadata/LoupedeckPackage.yaml b/VoCPUPlugin/metadata/LoupedeckPackage.yaml new file mode 100644 index 0000000..434ed59 --- /dev/null +++ b/VoCPUPlugin/metadata/LoupedeckPackage.yaml @@ -0,0 +1,73 @@ +# ================================================================================================== +# GENERAL SETTINGS +# ================================================================================================== + +# Package type. Must be plugin4 for plugins. +type: plugin4 + +# Name of the plugin. +name: VoCPU + +# Name that is displayed in the Loupedeck configuration application. +displayName: VoCPU + +# Name of the plugin library file. +pluginFileName: VoCPUPlugin.dll + +# Plugin version. +version: 1.0.0 + +# Author of the plugin. The author can be a company or an individual developer. +author: VoSs2o0o + +# Copyright information. +copyright: Copyright © 2022 VoSs2o0o. All rights reserved. + + +# ================================================================================================== +# PLUGIN PROPERTIES +# ================================================================================================== + +# Location of plugin files on Windows (relative to the plugin base directory). +# This parameter is required to support Windows. +pluginFolderWin: win + +# Location of plugin files on macOS (relative to the plugin base directory). +# This parameter is required to support Mac. +#pluginFolderMac: mac + +# List of supported devices. +supportedDevices: + # LoupedeckCtFamily covers the following devices: Loupedeck CT, Live and Live S, and Razer Stream Controller. + - LoupedeckCtFamily + + # LoupedeckPlusFamily covers Loupedeck+ device. Uncomment the following line to support Loupedeck+. + #- LoupedeckPlusFamily + +# List of plugin capabilities. +pluginCapabilities: + # Uncomment the following line if this plugin is an application plugin. + #- HasApplication + + # Uncomment the following line if the plugin sends keyboard shortcuts to the target application. + #- ActivatesApplication + + +# ================================================================================================== +# LOUPEDECK MARKETPLACE SETTINGS +# ================================================================================================== + +# Name of the license that the plugin is licensed under. Select the one that you prefer. +# NOTE: GPL license is not compatible with Loupedeck Marketplace. +license: MIT + +# URL of the plugin license. +licenseUrl: https://opensource.org/licenses/MIT + +# URL of the support page where the users can send improvement suggestions and report bugs. +# The URL is shown in Loupedeck Marketplace. The page can be for example a GitHub issues page. +# NOTE: This setting is recommended when publishing the plugin in Loupedeck Marketplace. +#supportPageUrl: https://github.com/myusername/myplugin/issues + +# URL of the plugin homepage. The URL is shown in Loupedeck Marketplace. +#homePageUrl: https://github.com/myusername/myplugin