Autohotkey でFキーを拡張してmediaキーを追加した


最近ずーど使っていたBluetoothのキーボードがおかしい挙動を繰り返していたため、安い有線キーボードを買い替えました。こんな感じです(Amazon ロジクール K120 商品ページより)

そこで2つの問題がありました。

  • 前のキーボードではFキーに便器な機能(音量調整やPlay&Stopなど)がついていたが、これにはなかった。(安いものだから)
  • 英語のOS環境下、JIS配列には使わないキーがいくつあります。
    • 「変換」、「無変換」など

今回はその使わないキーをFnキーをCombiにして、Fキーに機能を拡張してみました。

環境

Solution

今回解決したいことの本質は、「キーマップの変更」です。

しかし、「変換」「無変換」など、Autohotkeyでは既存のリストにはありませんでした。例えば

Symbol Description
# Win (Windows logo key)
! Alt
^ Ctrl
+ Shift

リストの一覧はこちらで確認できます

特殊キー(Special keys)を見つけ出す

ここで一番の問題は、Symbolのないキーをどうやって私のものになるのか。
そして使ったのは、AutohotkeyにあるKey historyという機能です。

まず任意のスクリプトに以下の行を追加して、強制的にkeyboard hookを動かせます。

#InstallKeybdHook

一度スクリプトをリロードして、
次にView=>Key history and script infoをクリックする。

中身は大体こんな感じになります。

ここで注目してほしいのは、VK(Virtual Key)&SC(Scan Code)です。

この場合、F5キーのVKは74、SCは03Fになります。

次に記録されているVK:EB, SC:07Bというのは、「無変換」を押した時の記録です。これにより、Autohotkeyのスクリプトで「無変換」を指せます。

vkEBcs07Bであることを分かりました。(v1.1.27前のバージョンでは、vkEBsc07Bという表記も可能です。)

※リフレッシュしても反応がない場合、スクリプトの中身を確認したり、リロードしたりして、再度確認してみましょう。

公式サイトにSpecial Keysに関する説明はこちらで確認可能です。

拡張していきます

「無変換」+「Fキー」にmediaをコントロール機能(Multimedia keys)を拡張させれば良いのです。最終的に出来上がったスクリプトはこんな感じです。

sc07B & F9::Media_Play_Pause
sc07B & F10::Mute the volume
sc07B & F11::Increase the volume
sc07B & F12::Lower the volume

参考

Autohotkey公式ドキュメント
Understanding AutoHotkey Keyboard ScanCodes and Virtual Key Codes

おわりに

既製の機能をものを慣れていくのではなく、主導的に自分の習慣などを合わせていくのも面白かったです。
皆さんも自分の使わないボタンを活用して、Hotkeyを作ってみませんか。