Hotkeyコマンドを使用して、ホットキーを動的に変更できます。キーを再マップする方法の小さな例を次に示します。
#Persistent
#UseHook
keyMap := {d: "SPACE", f: "j", j: "k", k: "l"}
; Associative objects are AHK_L only!
; for a pseudo array, do something like this:
; keyMapd := "SPACE"
; keymapf := "j"
; ...
Exit
F4::
for orig, new in keyMap
{
Hotkey, %orig%, RemapKey
}
return
RemapKey:
newKey := keyMap[A_ThisHotkey]
; to retrieve from a pseudo array, do this:
; newKey := keyMap%A_ThisHotkey%
Send, {%newKey%}
return
keyMap
元のキーを新しいターゲットにマッピングする連想配列です。を押すF4
と、 で定義されたすべてのキーが取得され、keyMap
と呼ばれるサブルーチンが割り当てられますRemapKey
。したがって、keyMap
( d、f、jまたはk ) のいずれかのキーが押されたときに呼び出されます。RemapKey
にアクセスして最新のホットキーを取得しA_ThisHotkey
、マッピング先を見つけてそのキーを送信します。これは、コマンドが別のホットキーをトリガー#UseHook
するのを防ぐために不可欠です(この場合、 **F を押すと **J がトリガーされ、JはKなどをトリガーします)。AutoHotkey_L のみの場合の連想オブジェクトの使用に注意してください。Send
. 別のバージョンを使用している場合は、マップを別の方法で定義する必要があります (たとえば、 のような疑似配列keyMapd:="SPACE"
)。