#autohotkey #global-hotkey
#автоотключение #глобальная горячая клавиша
Вопрос:
У меня есть скрипт, который назначает F1 глобальную задачу:
f1::Run D:Download
Программе необходимо использовать эту клавишу, поэтому я поместил это:
#IfWinActive, ahk_exe inkscape.exe
F1::send {f1}
return
Однако, когда я нажимаю ее, появляется эта ошибка:
Если да, то ничего не происходит. Если нет, сценарий завершается.
Вы знаете, что происходит?
Комментарии:
1. Проблема в том, что ваша горячая клавиша продолжает срабатывать снова и снова в цикле,
$
модификатор исправит это, но я действительно не знаю, что вы пытаетесь сделать. Не могли бы вы попытаться лучше объяснить, что вы пытаетесь сделать? Почему у вас есть две горячие клавиши для F1 (по умолчанию будет работать только одна одновременно) и что это за команда запуска глобальной задачи ?2. Клавиша F1 довольно бесполезна, поэтому я хочу назначить ее глобальной горячей клавише. Однако в одной программе эта клавиша полезна, поэтому я хочу сохранить функцию F1 по умолчанию в этой конкретной программе. То есть, если эта программа открыта и находится на переднем плане, скрипт запускаться не будет. Так лучше?
3. А, понятно, да, это не проблема. Я напишу ответ прямо сейчас.
Ответ №1:
Проблема в том, что ваша горячая клавиша продолжает запускаться снова и снова в цикле. $
Модификатор исправит это. Таким образом, горячая клавиша не будет активирована, когда источником нажатия клавиши является Send
команда.
Однако на самом деле вам это вообще не нужно.
Вы должны использовать #IfWinNotActive
директиву.
#IfWinNotActive, ahk_exe inkscape.exe
F1::Run, D:Download
#IfWinNotActive
В качестве альтернативы, вы могли бы просто не создавать контекстно-зависимую горячую клавишу и использовать ~
модификатор. Таким образом, горячая клавиша всегда будет сохранять свою обычную функциональность при ее нажатии.
~F1::Run, D:Download