ChangeKeyを使用してWindowsキーをF13キーに変更する方法
ChangeKey
今回は、ChangeKeyを使用して、WindowsキーをF13キーに変更する方法をメモしておきます。これは、AutoHotkeyでホットキーを設定するに当たって、Windowsキーをそのまま利用するのと、いろいろな条件下ではまることが分かったからです。Ctrlキーなども、F14-F24キーに割り当てると便利かもしれません。それに必要な情報(F13-F24の仮想キーコードとスキャンコードの一覧もメモしておきます。この記事は基本的にはAutoHotkeyユーザー向けになります
スキャンキー調査
ChangeKeyでは、CapsLockキーをCtrlキーに置き換えるなどの操作が、GUIで簡単にできるのですが、F13-F24キーはそういう訳にはいきません。というのも、GUIに表示されるキーボードにそんなキーが無いからです。まず、その無いキーを指定するための識別子「スキャンコード」を調べます。
結果だけを書くと次の通りです。
キー | 仮想キーコード(Vk) | スキャンコード(Sc) |
---|---|---|
F13 | 0x007C | 0x0064 |
F14 | 0x007D | 0x0065 |
F15 | 0x007E | 0x0066 |
F16 | 0x007F | 0x0067 |
F17 | 0x0080 | 0x0068 |
F18 | 0x0081 | 0x0069 |
F19 | 0x0082 | 0x006A |
F20 | 0x0083 | 0x006B |
F21 | 0x0084 | 0x006C |
F22 | 0x0085 | 0x006D |
F23 | 0x0086 | 0x006E |
F24 | 0x0087 | 0x0076 |
調査環境:Windows 7 64bit |
調査には、下のようなAutoHotkeyスクリプトを使ったあと、キーの入力履歴をAutoHotkeyのKey historyから見ただけです。
#KeyHistory 100 ^a:: Send, {F13} Send, {F14} Send, {F15} Send, {F16} Send, {F17} Send, {F18} Send, {F19} Send, {F20} Send, {F21} Send, {F22} Send, {F23} Send, {F24} return
ChangeKeyでWindowsキーをF13にする
管理者権限でChangeKeyを起動して、変更したいキー(Win左)をクリックします。すると、「【Win左】キーをどのキーに変更しますか?」と聞かれます。ここで、「F13」キーは存在しないので、一番右上にある「Scan code」をクリックします。
すると、スキャンコードが入力できるので、ここでF13キーのスキャンコードである「0x0064」を入力します実際に入力するのは「0x」を除いた「0064」そして、最後にOKを押します。メニューの「登録」を押して、マシンを再起動します。
Winキーの機能をAutoHotkeyで引き継ぐ
再起動すると、当然ながらWindowsキーがF13キーになってしまい、Windowsキー本来の動作が行われなくなります。そこで、その機能をAutoHotkeyの.ahkスクリプトで補います。たとえば、次のスクリプトでは、「Winキー単独押し」と「Win+R」を復活させています。
~F13 Up::Send, {Blind}{LWin} F13 & r::Send, #r
これで、Winキーをあげたときにスタートメニューが表示され、Winキーを押しながらrを押したときに、ファイル名を指定して実行」が動作します。
Winキー(現F13)にHotkeyを割り当てる1 Chromeにフォーカスして検索する直前へ
では、次に「Win+c」で起動中のChromeにフォーカスを合わせ、検索直前の状態(アドレスバーに?を入力)になるようにしてみます。
#IfWinExist - Google Chrome ahk_class Chrome_WidgetWin_0 F13 & c:: WinActivate ; フォーカス WinGetPos, X, Y, Width, Height MouseMove, Width/2, Height/2 ; マウスカーソルを移動(マルチモニタ向け) Send, ^e ; 検索状態へ return
Winキー(現F13)にHotkeyを割り当てる2 英辞郎on the webで検索する直前へ
ここまでは、別にF13にする意味がそんなに無かったのですが、次のWin+eでChromeにフォーカスして、英辞郎 on the webでの検索直前の状態に移行するスクリプトはそうは行きません。次に示すのは、うまくいく方式です。
#IfWinExist - Google Chrome ahk_class Chrome_WidgetWin_0 F13 & e:: WinActivate ;Send, ^1 ; 1番目のタブで開くとき Send, ^t ; 新しいタブで開くとき Send, ^l ; アドレスバーにフォーカス Send, {vk1Dsc07B} ; 日本語入力をOFF Send, eow.alc.co.jp/ ; アドレスを入力 return
このスクリプトは、Ctrl+Lに何も割り当てられておらず、かつ、無変換で日本語入力がOFFになるようにIME(MS-IMEやATOK)を設定している場合用のスクリプトです。Ctrl+Lとの衝突回避がうまくできないのでどなたかご存じの方はヒントください。。。
もしこのとき、Winキーそのままで利用すると、Winキーを離すのが遅れるとeow.alc.co.jpを入力するときにWin+Lが発動してログアウトしてしまうのです。うまく書けば防げるのかもしれませんが、他にもWinキーのOSデフォルトの機能をうまく上書き出来ないなどの問題が起こったので、現状ではWinキーのF13化おすすめです。OSデフォルトの動作を気にせずに書けるので。
まとめ
AutoHotkeyを使いこなせないのが悪いのかもしれませんが、とりあえず細かいこと考えずに済むのでF13-F24化おすすめです。
おすすめキーボード Realforce
プログラマ御用達キーボード PFU Happly Hacking Keyboard