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

Started work on Corsair mouse support

This commit is contained in:
Robert Beekman 2016-05-19 23:21:34 +02:00
parent a9373012a8
commit 3a18ce4a5a
20 changed files with 1029 additions and 952 deletions

View File

@ -278,22 +278,23 @@
</Compile> </Compile>
<Compile Include="ArtemisBootstrapper.cs" /> <Compile Include="ArtemisBootstrapper.cs" />
<Compile Include="DAL\ProfileProvider.cs" /> <Compile Include="DAL\ProfileProvider.cs" />
<Compile Include="DeviceProviders\Corsair\CorsairMice.cs" />
<Compile Include="DeviceProviders\DeviceProvider.cs" />
<Compile Include="Events\ActiveKeyboardChanged.cs" /> <Compile Include="Events\ActiveKeyboardChanged.cs" />
<Compile Include="Events\ToggleEnabled.cs" /> <Compile Include="Events\ToggleEnabled.cs" />
<Compile Include="Events\ActiveEffectChanged.cs" /> <Compile Include="Events\ActiveEffectChanged.cs" />
<Compile Include="Events\ChangeBitmap.cs" /> <Compile Include="Events\ChangeBitmap.cs" />
<Compile Include="InjectionFactories\IProfileEditorViewModelFactory.cs" /> <Compile Include="InjectionFactories\IProfileEditorViewModelFactory.cs" />
<Compile Include="ItemBehaviours\BindableSelectedItemBehavior.cs" /> <Compile Include="ItemBehaviours\BindableSelectedItemBehavior.cs" />
<Compile Include="KeyboardProviders\Corsair\CorsairRGB.cs" /> <Compile Include="DeviceProviders\Corsair\CorsairRGB.cs" />
<Compile Include="KeyboardProviders\KeyboardProvider.cs" /> <Compile Include="DeviceProviders\KeyboardProvider.cs" />
<Compile Include="KeyboardProviders\KeyboardRegion.cs" /> <Compile Include="DeviceProviders\Logitech\Orion.cs" />
<Compile Include="KeyboardProviders\Logitech\Orion.cs" /> <Compile Include="DeviceProviders\Logitech\Utilities\KeyboardNames.cs" />
<Compile Include="KeyboardProviders\Logitech\Utilities\KeyboardNames.cs" /> <Compile Include="DeviceProviders\Logitech\Utilities\KeyMap.cs" />
<Compile Include="KeyboardProviders\Logitech\Utilities\KeyMap.cs" /> <Compile Include="DeviceProviders\Logitech\Utilities\LogitechGSDK.cs" />
<Compile Include="KeyboardProviders\Logitech\Utilities\LogitechGSDK.cs" /> <Compile Include="DeviceProviders\Logitech\Utilities\OrionUtilities.cs" />
<Compile Include="KeyboardProviders\Logitech\Utilities\OrionUtilities.cs" /> <Compile Include="DeviceProviders\Razer\BlackWidow.cs" />
<Compile Include="KeyboardProviders\Razer\BlackWidow.cs" /> <Compile Include="DeviceProviders\Razer\Utilities\RazerUtilities.cs" />
<Compile Include="KeyboardProviders\Razer\Utilities\RazerUtilities.cs" />
<Compile Include="Managers\EffectManager.cs" /> <Compile Include="Managers\EffectManager.cs" />
<Compile Include="Managers\KeyboardManager.cs" /> <Compile Include="Managers\KeyboardManager.cs" />
<Compile Include="Managers\LoopManager.cs" /> <Compile Include="Managers\LoopManager.cs" />

View File

@ -4,7 +4,7 @@ using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Xml.Serialization; using System.Xml.Serialization;
using Artemis.KeyboardProviders; using Artemis.DeviceProviders;
using Artemis.Models; using Artemis.Models;
using Artemis.Models.Profiles; using Artemis.Models.Profiles;

View File

@ -0,0 +1,74 @@
using System.Threading;
using System.Windows.Media;
using CUE.NET;
using CUE.NET.Devices.Generic.Enums;
using CUE.NET.Devices.Mouse;
using CUE.NET.Exceptions;
namespace Artemis.DeviceProviders.Corsair
{
internal class CorsairMice : DeviceProvider
{
private readonly CorsairRGB _corsairRgb;
private CorsairMouse _mouse;
public CorsairMice(CorsairRGB corsairRgb)
{
_corsairRgb = corsairRgb;
UpdateCanUse();
}
private void UpdateCanUse()
{
if (!CanInitializeSdk())
{
CanUse = false;
return;
}
if (CueSDK.ProtocolDetails == null)
CueSDK.Initialize(true);
_mouse = CueSDK.MouseSDK;
}
private static bool CanInitializeSdk()
{
// Try for about 10 seconds, in case CUE isn't started yet
var tries = 0;
while (tries < 9)
{
try
{
if (CueSDK.ProtocolDetails == null)
CueSDK.Initialize();
}
catch (CUEException e)
{
if (e.Error == CorsairError.ServerNotFound)
{
tries++;
Thread.Sleep(1000);
continue;
}
}
catch (WrapperException)
{
CueSDK.Reinitialize();
return true;
}
return true;
}
return false;
}
public override void UpdateDevice(Brush brush)
{
if (!CanUse)
return;
}
}
}

View File

@ -9,7 +9,7 @@ using CUE.NET.Devices.Generic.Enums;
using CUE.NET.Devices.Keyboard; using CUE.NET.Devices.Keyboard;
using CUE.NET.Exceptions; using CUE.NET.Exceptions;
namespace Artemis.KeyboardProviders.Corsair namespace Artemis.DeviceProviders.Corsair
{ {
public class CorsairRGB : KeyboardProvider public class CorsairRGB : KeyboardProvider
{ {

View File

@ -0,0 +1,30 @@
using System.Windows.Media;
namespace Artemis.DeviceProviders
{
public abstract class DeviceProvider
{
/// <summary>
/// Indicates the device type
/// </summary>
public DeviceType Type { get; set; }
/// <summary>
/// Indicates whether or not the device can be updated
/// </summary>
public bool CanUse { get; set; }
/// <summary>
/// Updates a non-keyboard to take the colours of the provided brush
/// </summary>
/// <param name="brush"></param>
public abstract void UpdateDevice(Brush brush);
}
public enum DeviceType
{
Keyboard,
Mouse,
Headset
}
}

View File

@ -1,8 +1,10 @@
using System.Drawing; using System;
using System.Drawing;
using System.Windows; using System.Windows;
using Brush = System.Windows.Media.Brush;
using Size = System.Windows.Size; using Size = System.Windows.Size;
namespace Artemis.KeyboardProviders namespace Artemis.DeviceProviders
{ {
public abstract class KeyboardProvider : DeviceProvider public abstract class KeyboardProvider : DeviceProvider
{ {
@ -37,18 +39,11 @@ namespace Artemis.KeyboardProviders
public Bitmap KeyboardBitmap(int scale) => new Bitmap(Width*scale, Height*scale); public Bitmap KeyboardBitmap(int scale) => new Bitmap(Width*scale, Height*scale);
public Rect KeyboardRectangle(int scale) => new Rect(new Size(Width*scale, Height*scale)); public Rect KeyboardRectangle(int scale) => new Rect(new Size(Width*scale, Height*scale));
}
public class DeviceProvider public override void UpdateDevice(Brush brush)
{ {
public DeviceType Type { get; set; } throw new NotImplementedException("KeyboardProvider doesn't implement UpdateDevice, use DrawBitmap instead.");
} }
public enum DeviceType
{
Keyboard,
Mouse,
Headset
} }
public struct PreviewSettings public struct PreviewSettings

View File

@ -1,13 +1,11 @@
using System.Collections.Generic; using System.Drawing;
using System.Drawing;
using System.Threading; using System.Threading;
using System.Windows; using System.Windows;
using Artemis.KeyboardProviders.Logitech.Utilities; using Artemis.DeviceProviders.Logitech.Utilities;
using Artemis.Properties; using Artemis.Properties;
using Artemis.Utilities; using Artemis.Utilities;
using Point = System.Drawing.Point;
namespace Artemis.KeyboardProviders.Logitech namespace Artemis.DeviceProviders.Logitech
{ {
internal class Orion : KeyboardProvider internal class Orion : KeyboardProvider
{ {

View File

@ -2,7 +2,7 @@
using System.Windows.Forms; using System.Windows.Forms;
using Artemis.Utilities.Keyboard; using Artemis.Utilities.Keyboard;
namespace Artemis.KeyboardProviders.Logitech.Utilities namespace Artemis.DeviceProviders.Logitech.Utilities
{ {
public static class KeyMap public static class KeyMap
{ {

View File

@ -1,4 +1,4 @@
namespace Artemis.KeyboardProviders.Logitech.Utilities namespace Artemis.DeviceProviders.Logitech.Utilities
{ {
public enum KeyboardNames public enum KeyboardNames
{ {

View File

@ -2,7 +2,7 @@
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace Artemis.KeyboardProviders.Logitech.Utilities namespace Artemis.DeviceProviders.Logitech.Utilities
{ {
public class LogitechGSDK public class LogitechGSDK
{ {

View File

@ -3,7 +3,7 @@ using System.Drawing.Drawing2D;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
namespace Artemis.KeyboardProviders.Logitech.Utilities namespace Artemis.DeviceProviders.Logitech.Utilities
{ {
public static class OrionUtilities public static class OrionUtilities
{ {

View File

@ -1,10 +1,10 @@
using System.Drawing; using System.Drawing;
using Artemis.KeyboardProviders.Razer.Utilities; using Artemis.DeviceProviders.Razer.Utilities;
using Corale.Colore.Core; using Corale.Colore.Core;
using Corale.Colore.Razer; using Corale.Colore.Razer;
using Constants = Corale.Colore.Razer.Keyboard.Constants; using Constants = Corale.Colore.Razer.Keyboard.Constants;
namespace Artemis.KeyboardProviders.Razer namespace Artemis.DeviceProviders.Razer
{ {
public class BlackWidow : KeyboardProvider public class BlackWidow : KeyboardProvider
{ {

View File

@ -2,7 +2,7 @@
using Artemis.Utilities; using Artemis.Utilities;
using Corale.Colore.Razer.Keyboard.Effects; using Corale.Colore.Razer.Keyboard.Effects;
namespace Artemis.KeyboardProviders.Razer.Utilities namespace Artemis.DeviceProviders.Razer.Utilities
{ {
public static class RazerUtilities public static class RazerUtilities
{ {

View File

@ -1,4 +1,4 @@
using Artemis.KeyboardProviders; using Artemis.DeviceProviders;
namespace Artemis.Events namespace Artemis.Events
{ {

View File

@ -1,7 +1,7 @@
using Artemis.KeyboardProviders; using Artemis.DeviceProviders;
using Artemis.KeyboardProviders.Corsair; using Artemis.DeviceProviders.Corsair;
using Artemis.KeyboardProviders.Logitech; using Artemis.DeviceProviders.Logitech;
using Artemis.KeyboardProviders.Razer; using Artemis.DeviceProviders.Razer;
using Artemis.Modules.Effects.AudioVisualizer; using Artemis.Modules.Effects.AudioVisualizer;
using Artemis.Modules.Effects.Debug; using Artemis.Modules.Effects.Debug;
using Artemis.Modules.Effects.TypeWave; using Artemis.Modules.Effects.TypeWave;

View File

@ -1,21 +0,0 @@
using System.Drawing;
namespace Artemis.KeyboardProviders
{
public class KeyboardRegion
{
public KeyboardRegion(string regionName, Point topLeft, Point bottomRight)
{
RegionName = regionName;
TopLeft = topLeft;
BottomRight = bottomRight;
}
public string RegionName { get; set; }
public Point TopLeft { get; set; }
public Point BottomRight { get; set; }
public Rectangle GetRectangle()
=> new Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X - TopLeft.X, BottomRight.Y - TopLeft.Y);
}
}

View File

@ -1,8 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Artemis.DeviceProviders;
using Artemis.Events; using Artemis.Events;
using Artemis.KeyboardProviders;
using Artemis.Services; using Artemis.Services;
using Artemis.Settings; using Artemis.Settings;
using Caliburn.Micro; using Caliburn.Micro;

View File

@ -3,8 +3,8 @@ using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using Artemis.KeyboardProviders.Corsair; using Artemis.DeviceProviders.Corsair;
using Artemis.KeyboardProviders.Logitech.Utilities; using Artemis.DeviceProviders.Logitech.Utilities;
using Artemis.Managers; using Artemis.Managers;
using Artemis.Models; using Artemis.Models;
using Artemis.Utilities; using Artemis.Utilities;

View File

@ -5,7 +5,7 @@ using System.Drawing.Drawing2D;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Artemis.KeyboardProviders; using Artemis.DeviceProviders;
namespace Artemis.Utilities.Keyboard namespace Artemis.Utilities.Keyboard
{ {

View File

@ -9,8 +9,8 @@ using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Threading; using System.Windows.Threading;
using Artemis.DAL; using Artemis.DAL;
using Artemis.DeviceProviders;
using Artemis.Events; using Artemis.Events;
using Artemis.KeyboardProviders;
using Artemis.Managers; using Artemis.Managers;
using Artemis.Models; using Artemis.Models;
using Artemis.Models.Profiles; using Artemis.Models.Profiles;