AutoHotkeyで無変換+数字をファンクションキー(F1-F10)にする方法
「AutoHotkeyで修飾キー(Ctrl,Shift,Alt,Win)の状態(^!+#)を取得する関数を作る方法」で作成したget_modifiers関数と、「AutoHotkeyで変数名を組み立てて変数の中身を取得するちょっと不思議な方法」で作成したget_postfix_key関数を利用して、無変換+数字をF1-F10に割り当ててみます。
無変換+数字をFキーに割り当てるAutoHotkeyスクリプト(.ahk)
コードは以下の通りです。
~vk1Dsc07B & 1:: ~vk1Dsc07B & 2:: ~vk1Dsc07B & 3:: ~vk1Dsc07B & 4:: ~vk1Dsc07B & 5:: ~vk1Dsc07B & 6:: ~vk1Dsc07B & 7:: ~vk1Dsc07B & 8:: ~vk1Dsc07B & 9:: ~vk1Dsc07B & 0:: postfix_key := get_postfix_key() if postfix_key = 0 postfix_key := 10 modifiers := get_modifiers() Send, %modifiers%{F%postfix_key%} return get_modifiers() { modifiers := "" if GetKeyState("Ctrl", "P") modifiers = %modifiers%^ if GetKeyState("Shift", "P") modifiers = %modifiers%+ if GetKeyState("Alt", "P") modifiers = %modifiers%! if GetKeyState("Win", "P") modifiers = %modifiers%`# return %modifiers% } get_postfix_key() { StringSplit, hotkey_array, A_ThisHotkey, %A_Space%&%A_Space% StringTrimLeft, postfix_key, hotkey_array%hotkey_array0%, 0 Return postfix_key }
「vk1Dsc07B」は無変換キーを表していますここでは仮想キーコードとスキャンキーを両方書いていますが、片方で良いかもしれないです
get_postfix_key()では、prefixkey(無変換キー)と同時に押したキー(0,1,...,10)を検出しています。これにより、無変換+数字に対して一貫したコードを記述できています。
また、このようなコンビネーションキーを記述した場合、CtrlやShiftを表す^や+などの修飾キーを「::」の前に含めることが出来ないので、get_modifiers()を利用してCtrlやShiftの状態を取得しています。
このようにして、get_postfix_keyとget_modifiersを使用することできれいに「無変換+数字→ファンクションキー」を実現できています。
Windowsダンプの極意 エラーが発生したら、まずダンプ解析!
Advanced Windows 第5版 上 (マイクロソフト公式解説書)
インサイド Microsoft Windows 第4版〈上〉 (マイクロソフト公式解説書)
APIで学ぶWindows徹底理解
| HOME |
[さくらのVPSにUbuntu 10.04 64bitをインストールしてSSHで接続するまでのメモ] OLD>>