目的
今使ってるキーボードのBackSpaceとNumLockキーが近いのでNumLockキーの誤タイプが頻発してしまい、おまけにキーボードにNumLockのランプも無い。だもんで気付かぬうちにNumLock切り替えてしまい、いざテンキーで数字打とうとしたときにカーソル移動したりInsertキー誤爆したりしてイラっとする、ので対策したい。
Power ToysのKeyboard ManagerとかでNumLockキーを完全に別のものに置き換えてしまう手もあるけど、完全に機能を殺してしまうこともしたくない。
そのへんをどうにかしたくてAutoHotKey v2でスクリプトを書いたので備忘録としてメモ。
(CapsLockキーとかにも応用は効くはず)
要件
- NumLockキーを短く押した時は":"を入力(時刻をよく入力するので)
- NumLockキー長押しでNumLockオンオフ切り替え
- NumLockオンオフ切り替え時には、切り替え結果をトースト通知
前提
- Windows11
- AutoHotKey v2を使用
スクリプト
#Requires AutoHotkey v2.0
#SingleInstance Force
NumLock::
{
t := A_TickCount ; 押した時刻を記録
; キーが離されるまで待つ
KeyWait "NumLock"
; 押していた時間を計算
duration := A_TickCount - t
if (duration < 300) {
; 300ms 未満 → 短押しとして ":" を送信
Send ":"
} else {
; 300ms 以上 → 長押しとして NumLock を送信(KeyState反転)
NumLKSt := not GetKeyState("NumLock", "T")
SetNumLockState NumLKSt
; 切り替え結果をトースト通知(ToolTipでは気付きにくいので)
if NumLKSt{
TrayTip()
TrayTip("NumLock ON")
} else {
TrayTip()
TrayTip("NumLock OFF")
}
}
}
感想
これですっきりした。AutoHotKeyは今回初めて使ったけど便利ですね。