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