Вы можете использовать команду 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
(д, х, J или к) нажат. RemapKey
принимает последнюю горячую клавишу, обращаясь к A_ThisHotkey
, узнает, к чему она привязана, и отправляет этот ключ. #UseHook
имеет важное значение для того, чтобы предотвратить Send
команду, чтобы вызвать другую горячую клавишу (в нашем случае, нажав ** F вызовет ** J, J затем вызвать K и так далее). Обратите внимание, что использование ассоциативных объектов, если AutoHotkey_L только. Если вы используете другую версию, вам нужно будет определить вашу карту другим способом (например, псевдо-массив, такой как keyMapd:="SPACE"
).
Вы используете AutoHotKey_L? – MCL