CapsLockを押すだけでスクリーンショットを撮れるようにする
Windows 11のスクリーンショット(Snipping Tool)は Win+Shift+S で起動する。便利だけど、3キー同時押しは地味に面倒くさい。CapsLockなんてほぼ使わないキーなので、ここにSnipping Toolを割り当てた。
結論
AutoHotkey v2で、たった1行書くだけでいい。
#Requires AutoHotkey v2.0
#SingleInstance Force
CapsLock::Send "#+s"
# がWinキー、+ がShift、s がSキーを表す。CapsLockを押すとSnipping Toolが起動する。CapsLock本来の機能は無効化される。
PowerToysという選択肢もある
Microsoft公式のPowerToysにもKeyboard Managerというキーリマップ機能がある。GUIで設定できるので、AutoHotkeyに馴染みがなければこちらのほうが直感的かもしれない。
今回はAutoHotkeyのスクリプトが既にいくつか動いていたので、同じ仕組みに乗せた。
ハマったポイント:v1とv2の構文の違い
AutoHotkey v1とv2は構文が違う。ランチャーがスクリプトの内容を見てバージョンを自動判定するので、どちらで動いているか意識しないとハマる。
v1構文(動かなかった)
; v1スタイル
#NoEnv
CapsLock::Send #+s
#NoEnv はv1専用ディレクティブなので、ランチャーはv1で実行しようとする。ところが手元の環境ではv1がうまく動作しなかった。
v2構文(動いた)
; v2スタイル
#Requires AutoHotkey v2.0
CapsLock::Send "#+s"
v2では Send の引数を文字列リテラル(ダブルクォートで囲む)にする必要がある。#Requires AutoHotkey v2.0 を明示すると確実にv2で実行される。
スタートアップに登録する
毎回手動で起動するのは面倒なので、Windowsのスタートアップフォルダにショートカットを置く。
スタートアップフォルダの場所は Win+R → shell:startup で開ける。フルパスは以下の通り。
C:\Users\{ユーザー名}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
PowerShellでショートカットを作成する場合はこう書く。
$ws = New-Object -ComObject WScript.Shell
$sc = $ws.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\capslock-screenshot.ahk.lnk")
$sc.TargetPath = "C:\path\to\capslock-screenshot.ahk" # 自分のスクリプトのパスに変更
$sc.Save()
これでPC起動時に自動でCapsLockがスクリーンショットキーになる。
スクリプト全文
; =====================================
; CapsLock → スクリーンショット (Snipping Tool)
; =====================================
#Requires AutoHotkey v2.0
#SingleInstance Force
CapsLock::Send "#+s"
ファイルを capslock-screenshot.ahk として保存し、ダブルクリックで動作を確認する。タスクトレイにAutoHotkeyのアイコンが出れば起動している。