mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
180 lines
4.7 KiB
C#
180 lines
4.7 KiB
C#
namespace GHelper.Peripherals.Mouse.Models
|
|
{
|
|
//P508
|
|
public class StrixCarry : AsusMouse
|
|
{
|
|
public StrixCarry() : base(0x0B05, 0x18B4, "mi_01", true)
|
|
{
|
|
}
|
|
|
|
public override int DPIProfileCount()
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
public override string GetDisplayName()
|
|
{
|
|
return "ROG Strix Carry (Wireless)";
|
|
}
|
|
|
|
public override PollingRate[] SupportedPollingrates()
|
|
{
|
|
return new PollingRate[] {
|
|
PollingRate.PR125Hz,
|
|
PollingRate.PR250Hz,
|
|
PollingRate.PR500Hz,
|
|
PollingRate.PR1000Hz
|
|
};
|
|
}
|
|
|
|
public override int ProfileCount()
|
|
{
|
|
return 3;
|
|
}
|
|
public override int MaxDPI()
|
|
{
|
|
return 7_200;
|
|
}
|
|
public override int DPIIncrements()
|
|
{
|
|
return 100;
|
|
}
|
|
|
|
public override bool HasDebounceSetting()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public override bool HasLiftOffSetting()
|
|
{
|
|
//Potentially does nothing. AC does not show the setting, but the mouse responds to it and stores it.
|
|
return true;
|
|
}
|
|
|
|
public override bool HasRGB()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public override bool HasAutoPowerOff()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public override bool HasAngleSnapping()
|
|
{
|
|
return true;
|
|
}
|
|
public override bool HasXYDPI()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public override bool CanChangeDPIProfile()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//Has 25% increments only.
|
|
protected override int ParseBattery(byte[] packet)
|
|
{
|
|
if (packet[1] == 0x12 && packet[2] == 0x07)
|
|
{
|
|
return packet[7] * 25;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
protected override PowerOffSetting ParsePowerOffSetting(byte[] packet)
|
|
{
|
|
if (packet[1] == 0x12 && packet[2] == 0x07)
|
|
{
|
|
return (PowerOffSetting)packet[5];
|
|
}
|
|
|
|
return PowerOffSetting.Never;
|
|
}
|
|
|
|
protected override PollingRate ParsePollingRate(byte[] packet)
|
|
{
|
|
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
|
|
{
|
|
return (PollingRate)packet[9];
|
|
}
|
|
|
|
return PollingRate.PR125Hz;
|
|
}
|
|
|
|
protected override byte[] GetUpdatePollingRatePacket(PollingRate pollingRate)
|
|
{
|
|
return new byte[] { reportId, 0x51, 0x31, 0x02, 0x00, (byte)pollingRate };
|
|
}
|
|
|
|
protected override bool ParseAngleSnapping(byte[] packet)
|
|
{
|
|
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
|
|
{
|
|
return packet[13] == 0x01;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
protected override byte[] GetUpdateAngleSnappingPacket(bool angleSnapping)
|
|
{
|
|
return new byte[] { reportId, 0x51, 0x31, 0x04, 0x00, (byte)(angleSnapping ? 0x01 : 0x00) };
|
|
}
|
|
|
|
protected override DebounceTime ParseDebounce(byte[] packet)
|
|
{
|
|
if (packet[1] != 0x12 || packet[2] != 0x04 || packet[3] != 0x00)
|
|
{
|
|
return DebounceTime.MS12;
|
|
}
|
|
|
|
if (packet[11] < 0x02)
|
|
{
|
|
return DebounceTime.MS12;
|
|
}
|
|
|
|
if (packet[11] > 0x07)
|
|
{
|
|
return DebounceTime.MS32;
|
|
}
|
|
|
|
return (DebounceTime)packet[11];
|
|
}
|
|
|
|
protected override byte[] GetUpdateDebouncePacket(DebounceTime debounce)
|
|
{
|
|
return new byte[] { reportId, 0x51, 0x31, 0x03, 0x00, ((byte)debounce) };
|
|
}
|
|
|
|
protected override int ParseProfile(byte[] packet)
|
|
{
|
|
if (packet[1] == 0x12 && packet[2] == 0x00 && packet[3] == 0x00)
|
|
{
|
|
return packet[10];
|
|
}
|
|
Logger.WriteLine(GetDisplayName() + ": Failed to decode active profile");
|
|
return 0;
|
|
}
|
|
|
|
protected override int ParseDPIProfile(byte[] packet)
|
|
{
|
|
if (packet[1] == 0x12 && packet[2] == 0x00 && packet[3] == 0x00)
|
|
{
|
|
return packet[11];
|
|
}
|
|
Logger.WriteLine(GetDisplayName() + ": Failed to decode active profile");
|
|
return 1;
|
|
}
|
|
|
|
protected override byte[] GetUpdateEnergySettingsPacket(int lowBatteryWarning, PowerOffSetting powerOff)
|
|
{
|
|
return new byte[] { 0x00, 0x51, 0x37, 0x00, 0x00, (byte)powerOff, 0x00, (byte)lowBatteryWarning };
|
|
}
|
|
}
|
|
}
|