LoginSignup
2

More than 5 years have passed since last update.

GPD WINの画面輝度をあれこれするAutoHotkeyスクリプト

Posted at

はじめに

GPD WINという小型ノートPCがあります。小型故に持ち運ぶ頻度が高いのですが、そうすると困るのが画面の明るさ。
もちろんWindowsのチャームから変更できますが、わざわざチャームを出す1動作が手間な上に、明るさが25%刻みで非常に大雑把です。

また、GPD WINにはスリープ周りに不具合が多く、スリープを使わないこともあります。
その場合、蓋を閉じた場合にはバッテリー持ちを良くするために輝度を0%にしておきたい。

なのでそんなスクリプトを書きました。

機能

  • Win+Volume Up: 輝度を10%上げます。
  • Win+Volume Down: 輝度を10%下げます。
  • 蓋閉じ: 輝度を0%にします。
  • 蓋開け: 輝度をもとに戻します。

スクリプト

蓋の開閉を検出するために、こちらのライブラリを使用しました。
リンク先のLidWatcher.ahkをダウンロードし、次のスクリプトと同じフォルダに保存してください。

GPDWINBrightness.ahk
#Include LidWatcher.ahk

prev_brightness := GetBrightness()
r := Start_LidWatcher()
OnExit, cleanup

Return

cleanup:
  Stop_LidWatcher(r)
  ExitApp
Return


GetBrightness()
{
    WMI := "winmgmts:{impersonationLevel=impersonate}!\\.\root\WMI"
    MonitorBrightness := ComObjGet(WMI).ExecQuery("SELECT * FROM WmiMonitorBrightness WHERE Active=TRUE")

    for i in MonitorBrightness {
        brightness := i.CurrentBrightness
        break
    }

    Return, %brightness%
}

SetBrightness(value)
{
    WMI := "winmgmts:{impersonationLevel=impersonate}!\\.\root\WMI"
    MonitorBrightnessMethods := ComObjGet(WMI).ExecQuery("SELECT * FROM wmiMonitorBrightNessMethods WHERE Active=TRUE")

    if value < 0
        value := 0
    for i in MonitorBrightnessMethods {
        i.WmiSetBrightness(5, value)
        break
    }
}


; 蓋の開閉で明るさの変更
LidStateChange(newstate)
{
    global prev_brightness
    if(newstate == "opened")
    {
        SetBrightness(Round(prev_brightness, -1))
    }
    else if(newstate == "closed")
    {
        prev_brightness := GetBrightness()
        SetBrightness(0)
    }
}


; キーボードで明るさの変更
#VOLUME_DOWN::SetBrightness(Round(GetBrightness()-10, -1)) ; 0%でもGetBrightness()で返ってくるのが何故か1なので適当に丸める
#VOLUME_UP::SetBrightness(Round(GetBrightness()+10, -1))

おわりに

私自身はスリープを普通に使うので、キーボードによる輝度変更しか使ってませんが、2ch見てるとどうやらこういうスクリプトに需要がありそうだったので公開します。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2