LenovoLegionToolkit

Форк
0
50 строк · 1.6 Кб
1
using System;
2
using System.Threading.Tasks;
3
using LenovoLegionToolkit.Lib.System;
4

5
namespace LenovoLegionToolkit.Lib.Features.WhiteKeyboardBacklight;
6

7
public class WhiteKeyboardDriverBacklightFeature : AbstractDriverFeature<WhiteKeyboardBacklightState>
8
{
9
    public WhiteKeyboardDriverBacklightFeature() : base(Drivers.GetEnergy, Drivers.IOCTL_ENERGY_KEYBOARD) { }
10

11
    public override async Task<bool> IsSupportedAsync()
12
    {
13
        try
14
        {
15
            var outBuffer = await SendCodeAsync(DriverHandle(), ControlCode, 0x1).ConfigureAwait(false);
16
            outBuffer >>= 1;
17
            return outBuffer == 0x2;
18
        }
19
        catch
20
        {
21
            return false;
22
        }
23
    }
24

25
    protected override uint GetInBufferValue() => 0x22;
26

27
    protected override Task<uint[]> ToInternalAsync(WhiteKeyboardBacklightState state)
28
    {
29
        var result = state switch
30
        {
31
            WhiteKeyboardBacklightState.Off => new uint[] { 0x00023 },
32
            WhiteKeyboardBacklightState.Low => new uint[] { 0x10023 },
33
            WhiteKeyboardBacklightState.High => new uint[] { 0x20023 },
34
            _ => throw new InvalidOperationException("Invalid state"),
35
        };
36
        return Task.FromResult(result);
37
    }
38

39
    protected override Task<WhiteKeyboardBacklightState> FromInternalAsync(uint state)
40
    {
41
        var result = state switch
42
        {
43
            0x1 => WhiteKeyboardBacklightState.Off,
44
            0x3 => WhiteKeyboardBacklightState.Low,
45
            0x5 => WhiteKeyboardBacklightState.High,
46
            _ => throw new InvalidOperationException("Invalid state"),
47
        };
48
        return Task.FromResult(result);
49
    }
50
}
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.