見出し画像

キーボードでスリープしよう

キーボードをやっすいやつから数千円の安いやつにしてなかなか快適だが電源ボタンがない。これが意外に不便で、なんとかしようというお話。

ショートカットでなんとかならないか

C:\Windows\System32\schtasks.exe /run /tn SLEEP

という内容のショートカットではどうか。設定にかかわらずPINの入力が求められてしまう。それにショートカットではマウス操作だ。それもあって細かな追求はしていない。

キーボードショートカットではどうなるか

Win+X > U > S、というストロークになる。うん、動くね。思ったより操作が面倒でもないね、ということで数日これでやっていた。
ここで唐突だがノベルタイプのゲームの操作をだらっとした姿勢でやりたくなった。コントローラでもまだだるい。というわけでワイヤレステンキーを買った。もっとオサレなデバイスもあるが価格とのからみもある。
で、テンキーにはスペースキーがない。これはなんとかしたい。別にそれだけならpowertoysでもいいのだが、autohotkeyを思い出してしまった。そうだ、これでスリープもしよう。

ではautohotkeyならどうなるのか

インストールとか設定とかはばっさり省略。誰でもできるって感じでもないけど日本語での資料はwikiもある。

試行錯誤の結果、次の内容で…うまくいかない。

Insert::
{
WinActivate "ahk_class Shell_TrayWnd"
Send "#x"
Sleep 100
Send "us"
}

WinActivateはネットでひろってきたおまじない。Win+Xを入力し、0.1秒待ってUSと押す。しかしなぜなのか、キーボードで手打ちなら問題ないのにautohotkeyを経由するとサインアウトしてしまう。なんぞ。

という感じで途方に暮れつつgoogleを彷徨っていたらこんな答えが見つかった。

#SingleInstance
Insert::
{
DllCall("PowrProf\SetSuspendState", "Int", 0, "Int", 0, "Int", 0)
}

dllを直接たたけるのかー。流石にこれはうまく行ったようで、PINの要求もなくスリープ>復帰とできた。さすがにinsertキーは誤爆があるかなー。いまのうちにscroll rockにするか迷うところ。
#SingleInstanceはなんかつけないと警告が出る。よくわかっていない。


この記事が気に入ったらサポートをしてみませんか?