// ReSharper disable MemberCanBePrivate.Global // ReSharper disable UnusedMember.Global using RGB.NET.Core; using RGB.NET.Devices.Corsair.Native; namespace RGB.NET.Devices.Corsair; /// /// Represents a generic information for a . /// public sealed 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(_CorsairDeviceInfo nativeInfo, int ledCount, int ledOffset) : base(RGBDeviceType.Keyboard, nativeInfo, ledCount, ledOffset) { PhysicalLayout = (CorsairPhysicalKeyboardLayout)_CUESDK.ReadDevicePropertySimpleInt32(nativeInfo.id!, CorsairDevicePropertyId.PhysicalLayout); LogicalLayout = (CorsairLogicalKeyboardLayout)_CUESDK.ReadDevicePropertySimpleInt32(nativeInfo.id!, CorsairDevicePropertyId.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 }