NumLockが解除されるのでAutoHotkeyで常時ON状態に固定する

会社支給のPCのNumLockが、意図せず解除されてしまう。

テンキーありのラップトップPCだが、BackSpaceとNumLockの間隔がほとんどなく、キーが小さいうえにキーストロークが浅い。理由としては何かのトラブルで勝手に解除されているとかではなく、単純にBackSpaceと一緒にNumLockを押下してしまっている模様。

タイピングの癖は変えられないし、NumLockを強制的にONで固定する方法も調べたが、PC起動時のON/OFF設定や、レジストリをいじる方法しか見つからなかった。

仕方なく、AutoHotkeyで無理矢理どうにかしてみたのでメモ。

環境

AutoHotkeyのインストールと初期設定

導入済みなら不要だが、とりあえずインストールと初期設定の方法を書いておく。

インストール

Chocolateyを使って cinst -y autohotkey.portable でインストールするのが手っ取り早い。

初期設定

スクリプトファイルを作成し、プログラムと関連付けしてスタートアップで起動できるようにする。

  1. スクリプトファイル autohotkey.ahk を任意の場所に作成する(実際は、名前も拡張子も任意でいい)。
  2. スクリプトファイルをダブルクリックして、 C:\ProgramData\chocolatey\bin\AutoHotkey.exe と関連付ける
  3. スクリプトファイルのショートカットをスタートアップに登録する
    • Windows +R で「ファイル名を指定して実行」を開き、 shell:startup で開くのが手っ取り早い

NumLockのON固定AutoHotkeyスクリプト

さて本題。

やることは単純で、NumLockがOFFの場合のテンキー入力にフックをかけて、NumLockがONの場合と同じキー入力をさせればいい。

NumLockのON/OFFで操作が変わるのは、テンキーの0...9および.(ドット)。

キーリスト - AutoHotkey Wiki で確認し、以下をAutoHotkeyスクリプトに記述すると、NumLockのON/OFFにかかわらず数字およびドットが入力できるようになった。

; NumLock OFF Remap
NumpadDel::.
NumpadIns::0
NumpadEnd::1
NumpadDown::2
NumpadPgDn::3
NumpadLeft::4
NumpadClear::5
NumpadRight::6
NumpadHome::7
NumpadUp::8
NumpadPgUp::9

振り返り

力技だが何とかなった。だいぶストレス軽減。

PowerToysにKeyboard Managerが追加され、そちらでもキーボードの再マップができる模様。

github.com

とはいえまだPowerToysは正式版ではないので、とりあえずは使い慣れたAutoHotkeyで対応しておく。

備忘

環境によってキー名が異なるかもしれない。キー名は以下をAutoHotkeyスクリプトに追加することで確認できる。

#InstallKeybdHook
KeyHistory