The following script can be used to adjust screen brightness in Windows (using Gamma, not actual monitor / display driver).
I'm using this on my ducky which has keys for mute, vol up, vol down and calc.
Press CTRL+one of the keys above.
; Screendimmer.ahk
;----------------------------------------------------------
; Author : Appbyfex
; Date : 2014-11-10
;----------------------------------------------------------
MinValue = -100
MaxValue = 128
Value := 64
Menu, Tray, Icon, Shell32.dll, 44
Menu, Tray, Add, Show Dimmer, ShowWindow
Menu, Tray, Default, Show Dimmer
Menu, Tray, Click, 1
Gui +AlwaysOnTop
Gui, Add, Text, vDim x0 y0, 0`%
Gui, Add, Text, vBright x0 y0, 100`%
Options := "Range-100-128 NoTicks Buddy1Dim Buddy2Bright vMySlider gDimmer"
Gui, Add, Slider, W235 x25 y5 AltSubmit Tooltip Reverse %options% , %Value%
Gui, Add, StatusBar, , Default Brightness 64
Gui, Show, W300 Hide, Screen Brightness
DisplaySetBrightness(Value)
^Volume_Mute::Off()
^Volume_Down::Decrease()
^Volume_Up::Increase()
^Launch_App2::Reset()
Off() {
global Value
Value := -100
UpdateUI()
}
Reset() {
global Value, MaxValue
Value := MaxValue
UpdateUI()
}
Decrease() {
global Value, MinValue
Value -= 10
if (Value < MinValue)
Value := MinValue
UpdateUI()
}
Increase() {
Global Value, MaxValue
Value += 10
if (Value > MaxValue)
Value := MaxValue
UpdateUI()
}
UpdateUI() {
global Value
DisplaySetBrightness(Value)
GuiControl, , MySlider, %Value%
SB_SetText("Brightness level is " . Value)
}
DisplaySetBrightness( Br=128 ) {
Loop, % VarSetCapacity( GR,1536 ) / 6
NumPut( ( n := (Br+128)*(A_Index-1)) > 65535 ? 65535 : n, GR, 2*(A_Index-1), "UShort" )
DllCall( "RtlMoveMemory", UInt,&GR+512, UInt,&GR, UInt,512 )
DllCall( "RtlMoveMemory", UInt,&GR+1024, UInt,&GR, UInt,512 )
Return DllCall( "SetDeviceGammaRamp", UInt, hDC := DllCall( "GetDC", UInt,0 ), UInt,&GR ),
DllCall( "ReleaseDC", UInt,0, UInt,hDC )
}
Dimmer:
DisplaySetBrightness( MySlider )
Value = MySlider
SB_SetText("Brightness level is " . %Value%)
Return
ShowWindow:
DetectHiddenWindows, on
WinRestore, Screen Brightness
WinActivate, Screen Brightness
Return