// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable UnusedMember.Global
using RGB.NET.Core;
using RGB.NET.Devices.CorsairLegacy.Native;
namespace RGB.NET.Devices.CorsairLegacy;
///
/// Represents a generic information for a .
///
public class CorsairKeyboardRGBDeviceInfo : CorsairRGBDeviceInfo, IKeyboardDeviceInfo
{
#region Properties & Fields
///
public KeyboardLayoutType Layout { get; }
///
/// Gets the physical layout of the keyboard.
///
public CorsairPhysicalKeyboardLayout PhysicalLayout { get; }
///
/// Gets the logical layout of the keyboard as set in CUE settings.
///
public CorsairLogicalKeyboardLayout LogicalLayout { get; }
#endregion
#region Constructors
///
///
/// Internal constructor of managed .
///
/// The index of the .
/// The native -struct
internal CorsairKeyboardRGBDeviceInfo(int deviceIndex, _CorsairDeviceInfo nativeInfo)
: base(deviceIndex, RGBDeviceType.Keyboard, nativeInfo)
{
this.PhysicalLayout = (CorsairPhysicalKeyboardLayout)nativeInfo.physicalLayout;
this.LogicalLayout = (CorsairLogicalKeyboardLayout)nativeInfo.logicalLayout;
this.Layout = PhysicalLayout switch
{
CorsairPhysicalKeyboardLayout.US => KeyboardLayoutType.ANSI,
CorsairPhysicalKeyboardLayout.UK => KeyboardLayoutType.ISO,
CorsairPhysicalKeyboardLayout.BR => KeyboardLayoutType.ABNT,
CorsairPhysicalKeyboardLayout.JP => KeyboardLayoutType.JIS,
CorsairPhysicalKeyboardLayout.KR => KeyboardLayoutType.KS,
_ => KeyboardLayoutType.Unknown
};
}
#endregion
}