Home

Awesome

BrightnessKeys

Build Status Scan Status

Automatic handling of brightness keys based on ACPI Specification, Appendix B: Video Extensions.
Requires Lilu 1.2.0 or newer.

Boot arguments

Special cases

Typically no DSDT patches are required. Please remove old _Qxx to XQxx ones.
On some models, may be required add ACPI patch _OSI to XOSI and SSDT-XOSI.

<details> <summary>Spoiler: On some old ThinkPad models, additional handling may be required.</summary> <br> Here is an example for their "brightness up" EC event.
Method (_Q14, 0, NotSerialized)
{
    If (^HKEY.MHKK (0x8000))
    {
        ^HKEY.MHKQ (0x1010)                // Vendor-specific event: TP_HKEY_EV_BRGHT_UP
    }

    If (NBCF) // Whether
    {
        If (VIGD)
        {
            Notify (^^^VID.LCD0, 0x86)     // Send 0x86 "Increase Brightness" to integrated graphics
        }
        Else
        {
            Notify (^^^PEG.VID.LCD0, 0x86) // Send 0x86 "Increase Brightness" to discrete graphics
        }
    }
    Else
    {
        Local0 = BRLV                      // Local variable to store current brightness level
        If ((Local0 != 0x0F))
        {
            Local0++
            BRLV = Local0
        }

        If (VIGD)
        {
            UCMS (0x16)                    // SMI access for integrated graphics
            BRNS ()
        }
        Else
        {
            VBRC (Local0)                  // SMI access for discrete graphics
        }

        ^HKEY.MHKQ (0x6050)                // Vendor-specific event: TP_HKEY_EV_BACKLIGHT_CHANGED
    }
}

When NBCF is set to zero by default, the method will not notify graphics devices and try to adjust brightness directly. To override that, set NBCF = 0x01 in SSDT hotpatch, or just replace its declaration using a simple patch.

</details>

Credits