1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Updated CM SDK

Added Mastermouse Pro L and S for #325
This commit is contained in:
SpoinkyNL 2017-03-19 14:08:45 +01:00
parent ec490155fd
commit 99762a5ce2
14 changed files with 144 additions and 12 deletions

View File

@ -329,6 +329,8 @@
<Compile Include="DeviceProviders\Artemis\NoneKeyboard.cs" />
<Compile Include="DeviceProviders\CoolerMaster\MasterkeysProL.cs" />
<Compile Include="DeviceProviders\CoolerMaster\MasterkeysProS.cs" />
<Compile Include="DeviceProviders\CoolerMaster\MastermouseProL.cs" />
<Compile Include="DeviceProviders\CoolerMaster\MastermouseProS.cs" />
<Compile Include="DeviceProviders\CoolerMaster\Utilities\CmSdk.cs" />
<Compile Include="DeviceProviders\Corsair\CorsairMouse.cs" />
<Compile Include="DeviceProviders\Corsair\CorsairHeadset.cs" />

View File

@ -72,6 +72,7 @@ namespace Artemis.DeviceProviders.CoolerMaster
}
// Send the matrix to the keyboard
CmSdk.SetControlDevice(DEVICE_INDEX.DEV_MKeys_L);
CmSdk.SetAllLedColor(matrix);
}
}

View File

@ -72,6 +72,7 @@ namespace Artemis.DeviceProviders.CoolerMaster
}
// Send the matrix to the keyboard
CmSdk.SetControlDevice(DEVICE_INDEX.DEV_MKeys_S);
CmSdk.SetAllLedColor(matrix);
}
}

View File

@ -0,0 +1,58 @@
using System;
using System.Drawing;
using Artemis.DeviceProviders.CoolerMaster.Utilities;
using Ninject.Extensions.Logging;
namespace Artemis.DeviceProviders.CoolerMaster
{
public class MastermouseProL : DeviceProvider
{
public MastermouseProL(ILogger logger)
{
Logger = logger;
Type = DeviceType.Mouse;
}
public ILogger Logger { get; }
public override void UpdateDevice(Bitmap bitmap)
{
// Create an empty matrix
var matrix = new COLOR_MATRIX { KeyColor = new KEY_COLOR[6, 22] };
// Get colors from the bitmap's center X and on 2/5th, 3/5th and 4/5th Y
var x = bitmap.Width / 2;
var y = bitmap.Width / 5;
var led1Color = bitmap.GetPixel(x, y);
var led2Color = bitmap.GetPixel(x, y * 2);
var led3Color = bitmap.GetPixel(x, y * 3);
var led4Color = bitmap.GetPixel(x, y * 4);
matrix.KeyColor[0, 0] = new KEY_COLOR(led1Color.R, led1Color.G, led1Color.B);
matrix.KeyColor[0, 1] = new KEY_COLOR(led2Color.R, led2Color.G, led2Color.B);
matrix.KeyColor[0, 2] = new KEY_COLOR(led3Color.R, led3Color.G, led3Color.B);
matrix.KeyColor[0, 3] = new KEY_COLOR(led4Color.R, led4Color.G, led4Color.B);
// Send the matrix to the mouse
CmSdk.SetControlDevice(DEVICE_INDEX.DEV_MMouse_L);
CmSdk.SetAllLedColor(matrix);
}
public override bool TryEnable()
{
CmSdk.SetControlDevice(DEVICE_INDEX.DEV_MMouse_L);
// Doesn't seem reliable but better than nothing I suppose
CanUse = CmSdk.IsDevicePlug();
if (CanUse)
CmSdk.EnableLedControl(true);
Logger.Debug("Attempted to enable Mastermouse Pro L. CanUse: {0}", CanUse);
return CanUse;
}
public override void Disable()
{
throw new NotSupportedException("Can only disable a keyboard");
}
}
}

View File

@ -0,0 +1,54 @@
using System;
using System.Drawing;
using Artemis.DeviceProviders.CoolerMaster.Utilities;
using Ninject.Extensions.Logging;
namespace Artemis.DeviceProviders.CoolerMaster
{
public class MastermouseProS : DeviceProvider
{
public MastermouseProS(ILogger logger)
{
Logger = logger;
Type = DeviceType.Mouse;
}
public ILogger Logger { get; }
public override void UpdateDevice(Bitmap bitmap)
{
// Create an empty matrix
var matrix = new COLOR_MATRIX {KeyColor = new KEY_COLOR[6, 22]};
// Get colors from the bitmap's center X and on 1/3rd and 2/3rd Y
var x = bitmap.Width / 2;
var y = bitmap.Width / 3;
var led1Color = bitmap.GetPixel(x, y);
var led2Color = bitmap.GetPixel(x, y * 2);
matrix.KeyColor[0, 0] = new KEY_COLOR(led1Color.R, led1Color.G, led1Color.B);
matrix.KeyColor[0, 1] = new KEY_COLOR(led2Color.R, led2Color.G, led2Color.B);
// Send the matrix to the mouse
CmSdk.SetControlDevice(DEVICE_INDEX.DEV_MMouse_S);
CmSdk.SetAllLedColor(matrix);
}
public override bool TryEnable()
{
CmSdk.SetControlDevice(DEVICE_INDEX.DEV_MMouse_S);
// Doesn't seem reliable but better than nothing I suppose
CanUse = CmSdk.IsDevicePlug();
if (CanUse)
CmSdk.EnableLedControl(true);
Logger.Debug("Attempted to enable Mastermouse Pro S. CanUse: {0}", CanUse);
return CanUse;
}
public override void Disable()
{
throw new NotSupportedException("Can only disable a keyboard");
}
}
}

View File

@ -28,7 +28,10 @@ namespace Artemis.DeviceProviders.CoolerMaster.Utilities
DEV_MKeys_S = 1,
DEV_MKeys_L_White = 2,
DEV_MKeys_M_White = 3,
DEV_MMouse_L = 4
DEV_MMouse_L = 4,
DEV_MMouse_S = 5,
DEV_MKeys_M = 6,
DEV_MKeys_S_White = 7
}
//Enumeration of device layout
@ -53,6 +56,7 @@ namespace Artemis.DeviceProviders.CoolerMaster.Utilities
/// </summary>
/// <returns></returns>
[DllImport("lib\\SDKDLL ", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern LAYOUT_KEYBOARD GetDeviceLayout();
/// <summary>
@ -60,6 +64,7 @@ namespace Artemis.DeviceProviders.CoolerMaster.Utilities
/// </summary>
/// <returns></returns>
[DllImport("lib\\SDKDLL ", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool IsDevicePlug();
/// <summary>
@ -68,6 +73,7 @@ namespace Artemis.DeviceProviders.CoolerMaster.Utilities
/// <param name="bEnable"></param>
/// <returns></returns>
[DllImport("lib\\SDKDLL ", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool EnableLedControl(bool bEnable);
/// <summary>
@ -80,6 +86,7 @@ namespace Artemis.DeviceProviders.CoolerMaster.Utilities
/// <param name="b"></param>
/// <returns></returns>
[DllImport("lib\\SDKDLL ", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool SetLedColor(int iRow, int iColumn, byte r, byte g, byte b);
/// <summary>
@ -88,6 +95,7 @@ namespace Artemis.DeviceProviders.CoolerMaster.Utilities
/// <param name="colorMatrix"></param>
/// <returns></returns>
[DllImport("lib\\SDKDLL ", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool SetAllLedColor(COLOR_MATRIX colorMatrix);
}
}
}

View File

@ -1,4 +1,5 @@
using System;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@ -62,9 +63,9 @@ namespace Artemis.Managers
}
catch (Exception e)
{
#if DEBUG
throw e;
#endif
if (Debugger.IsAttached)
throw;
_logger.Warn(e, "Exception in render loop");
}
}

View File

@ -15,11 +15,12 @@ namespace Artemis.Profiles.Layers.Animations
public void Update(LayerModel layerModel, bool updateAnimations)
{
var animationSpeed = 3.1 - layerModel.Properties.AnimationSpeed;
// TODO: Generic implementation
// Reset animation progress if layer wasn't drawn for 100ms
if (new TimeSpan(0, 0, 0, 0, 100) < DateTime.Now - layerModel.LastRender && updateAnimations || MustExpire(layerModel))
{
_opacityTweener = new Tweener<float>(0, 1000, 1000, Ease.Quad.InOut, LerpFuncFloat);
_opacityTweener = new Tweener<float>(0, 1000, animationSpeed * 1000, Ease.Quad.InOut, LerpFuncFloat);
_increase = true;
}
@ -29,7 +30,7 @@ namespace Artemis.Profiles.Layers.Animations
if (!_opacityTweener.Running && _increase)
{
_opacityTweener = new Tweener<float>(1000, 0, 1000, Ease.Quad.InOut, LerpFuncFloat);
_opacityTweener = new Tweener<float>(1000, 0, animationSpeed * 1000, Ease.Quad.InOut, LerpFuncFloat);
_increase = false;
}

View File

@ -88,6 +88,7 @@ namespace Artemis.Profiles.Layers.Models
switch (ToggleType)
{
case ToggleType.EnableHeldDown:
layerModel.RenderAllowed = false;
downAction = () => layerModel.RenderAllowed = true;
upAction = () => layerModel.RenderAllowed = false;
break;

View File

@ -21,6 +21,7 @@ namespace Artemis.Profiles.Layers.Models
{
Children = new ChildItemCollection<LayerModel, LayerModel>(this);
TweenModel = new TweenModel(this);
RenderAllowed = true;
var model = Properties as KeyboardPropertiesModel;
if (model != null)
@ -284,6 +285,8 @@ namespace Artemis.Profiles.Layers.Models
public void SetupKeybinds()
{
RenderAllowed = true;
// Clean up old keybinds
RemoveKeybinds();
@ -315,7 +318,7 @@ namespace Artemis.Profiles.Layers.Models
public string Name { get; set; }
public int Order { get; set; }
public bool Enabled { get; set; }
public bool RenderAllowed { get; set; } = true;
public bool RenderAllowed { get; set; }
public bool Expanded { get; set; }
public bool IsEvent { get; set; }
public LayerPropertiesModel Properties { get; set; }

View File

@ -12,7 +12,7 @@ using System.Windows;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("SpoinkyNL")]
[assembly: AssemblyProduct("Artemis")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -53,7 +53,7 @@ using System.Windows;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.8.2.0")]
[assembly: AssemblyFileVersion("1.8.2.0")]
[assembly: AssemblyVersion("1.9.0.0")]
[assembly: AssemblyFileVersion("1.9.0.0")]
[assembly: InternalsVisibleTo("Artemis.Explorables")]

View File

@ -14,7 +14,8 @@ namespace Artemis.ViewModels
{
DisplayName = "General";
_vms = moduleViewModels.Where(m => !m.ModuleModel.IsOverlay && !m.ModuleModel.IsBoundToProcess)
.OrderBy(m => m.DisplayName).ToList();
.OrderByDescending(m => m.DisplayName == "General profile")
.ThenBy(m => m.DisplayName).ToList();
previewManager.PreviewViewModules.Clear();
previewManager.PreviewViewModules.AddRange(moduleViewModels.Where(m => m.UsesProfileEditor));

View File

@ -19,6 +19,7 @@ namespace Artemis.ViewModels.Profiles
{
_editorViewModel = editorViewModel;
LayerKeybindModel = layerKeybindModel;
CanToggleType = !editorViewModel.ProposedLayer.IsEvent;
PropertyChanged += MapViewToModel;
editorViewModel.PropertyChanged += EditorViewModelOnPropertyChanged;

Binary file not shown.